1 // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512f -emit-llvm -o - -Wall -Werror -Wsign-conversion | FileCheck %s
2 // RUN: %clang_cc1 -flax-vector-conversions=none -fms-extensions -fms-compatibility -ffreestanding %s -triple=x86_64-windows-msvc -target-feature +avx512f -emit-llvm -o - -Wall -Werror -Wsign-conversion | FileCheck %s
6 __m512d
test_mm512_sqrt_pd(__m512d a
)
8 // CHECK-LABEL: @test_mm512_sqrt_pd
9 // CHECK: call <8 x double> @llvm.sqrt.v8f64(<8 x double> %{{.*}})
10 return _mm512_sqrt_pd(a
);
13 __m512d
test_mm512_mask_sqrt_pd (__m512d __W
, __mmask8 __U
, __m512d __A
)
15 // CHECK-LABEL: @test_mm512_mask_sqrt_pd
16 // CHECK: call <8 x double> @llvm.sqrt.v8f64(<8 x double> %{{.*}})
17 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
18 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
19 return _mm512_mask_sqrt_pd (__W
,__U
,__A
);
22 __m512d
test_mm512_maskz_sqrt_pd (__mmask8 __U
, __m512d __A
)
24 // CHECK-LABEL: @test_mm512_maskz_sqrt_pd
25 // CHECK: call <8 x double> @llvm.sqrt.v8f64(<8 x double> %{{.*}})
26 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
27 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> {{.*}}
28 return _mm512_maskz_sqrt_pd (__U
,__A
);
31 __m512d
test_mm512_mask_sqrt_round_pd(__m512d __W
,__mmask8 __U
,__m512d __A
)
33 // CHECK-LABEL: @test_mm512_mask_sqrt_round_pd
34 // CHECK: call <8 x double> @llvm.x86.avx512.sqrt.pd.512(<8 x double> %{{.*}}, i32 11)
35 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
36 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
37 return _mm512_mask_sqrt_round_pd(__W
,__U
,__A
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
40 __m512d
test_mm512_maskz_sqrt_round_pd(__mmask8 __U
,__m512d __A
)
42 // CHECK-LABEL: @test_mm512_maskz_sqrt_round_pd
43 // CHECK: call <8 x double> @llvm.x86.avx512.sqrt.pd.512(<8 x double> %{{.*}}, i32 11)
44 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
45 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> {{.*}}
46 return _mm512_maskz_sqrt_round_pd(__U
,__A
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
49 __m512d
test_mm512_sqrt_round_pd(__m512d __A
)
51 // CHECK-LABEL: @test_mm512_sqrt_round_pd
52 // CHECK: call <8 x double> @llvm.x86.avx512.sqrt.pd.512(<8 x double> %{{.*}}, i32 11)
53 return _mm512_sqrt_round_pd(__A
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
56 __m512
test_mm512_sqrt_ps(__m512 a
)
58 // CHECK-LABEL: @test_mm512_sqrt_ps
59 // CHECK: call <16 x float> @llvm.sqrt.v16f32(<16 x float> %{{.*}})
60 return _mm512_sqrt_ps(a
);
63 __m512
test_mm512_mask_sqrt_ps(__m512 __W
, __mmask16 __U
, __m512 __A
)
65 // CHECK-LABEL: @test_mm512_mask_sqrt_ps
66 // CHECK: call <16 x float> @llvm.sqrt.v16f32(<16 x float> %{{.*}})
67 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
68 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
69 return _mm512_mask_sqrt_ps( __W
, __U
, __A
);
72 __m512
test_mm512_maskz_sqrt_ps( __mmask16 __U
, __m512 __A
)
74 // CHECK-LABEL: @test_mm512_maskz_sqrt_ps
75 // CHECK: call <16 x float> @llvm.sqrt.v16f32(<16 x float> %{{.*}})
76 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
77 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> {{.*}}
78 return _mm512_maskz_sqrt_ps(__U
,__A
);
81 __m512
test_mm512_mask_sqrt_round_ps(__m512 __W
,__mmask16 __U
,__m512 __A
)
83 // CHECK-LABEL: @test_mm512_mask_sqrt_round_ps
84 // CHECK: call <16 x float> @llvm.x86.avx512.sqrt.ps.512(<16 x float> %{{.*}}, i32 11)
85 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
86 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
87 return _mm512_mask_sqrt_round_ps(__W
,__U
,__A
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
90 __m512
test_mm512_maskz_sqrt_round_ps(__mmask16 __U
,__m512 __A
)
92 // CHECK-LABEL: @test_mm512_maskz_sqrt_round_ps
93 // CHECK: call <16 x float> @llvm.x86.avx512.sqrt.ps.512(<16 x float> %{{.*}}, i32 11)
94 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
95 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> {{.*}}
96 return _mm512_maskz_sqrt_round_ps(__U
,__A
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
99 __m512
test_mm512_sqrt_round_ps(__m512 __A
)
101 // CHECK-LABEL: @test_mm512_sqrt_round_ps
102 // CHECK: call <16 x float> @llvm.x86.avx512.sqrt.ps.512(<16 x float> %{{.*}}, i32 11)
103 return _mm512_sqrt_round_ps(__A
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
106 __m512d
test_mm512_rsqrt14_pd(__m512d a
)
108 // CHECK-LABEL: @test_mm512_rsqrt14_pd
109 // CHECK: @llvm.x86.avx512.rsqrt14.pd.512
110 return _mm512_rsqrt14_pd(a
);
113 __m512d
test_mm512_mask_rsqrt14_pd (__m512d __W
, __mmask8 __U
, __m512d __A
)
115 // CHECK-LABEL: @test_mm512_mask_rsqrt14_pd
116 // CHECK: @llvm.x86.avx512.rsqrt14.pd.512
117 return _mm512_mask_rsqrt14_pd (__W
,__U
,__A
);
120 __m512d
test_mm512_maskz_rsqrt14_pd (__mmask8 __U
, __m512d __A
)
122 // CHECK-LABEL: @test_mm512_maskz_rsqrt14_pd
123 // CHECK: @llvm.x86.avx512.rsqrt14.pd.512
124 return _mm512_maskz_rsqrt14_pd (__U
,__A
);
127 __m512
test_mm512_rsqrt14_ps(__m512 a
)
129 // CHECK-LABEL: @test_mm512_rsqrt14_ps
130 // CHECK: @llvm.x86.avx512.rsqrt14.ps.512
131 return _mm512_rsqrt14_ps(a
);
134 __m512
test_mm512_mask_rsqrt14_ps (__m512 __W
, __mmask16 __U
, __m512 __A
)
136 // CHECK-LABEL: @test_mm512_mask_rsqrt14_ps
137 // CHECK: @llvm.x86.avx512.rsqrt14.ps.512
138 return _mm512_mask_rsqrt14_ps (__W
,__U
,__A
);
141 __m512
test_mm512_maskz_rsqrt14_ps (__mmask16 __U
, __m512 __A
)
143 // CHECK-LABEL: @test_mm512_maskz_rsqrt14_ps
144 // CHECK: @llvm.x86.avx512.rsqrt14.ps.512
145 return _mm512_maskz_rsqrt14_ps (__U
,__A
);
148 __m512
test_mm512_add_ps(__m512 a
, __m512 b
)
150 // CHECK-LABEL: @test_mm512_add_ps
151 // CHECK: fadd <16 x float>
152 return _mm512_add_ps(a
, b
);
155 __m512d
test_mm512_add_pd(__m512d a
, __m512d b
)
157 // CHECK-LABEL: @test_mm512_add_pd
158 // CHECK: fadd <8 x double>
159 return _mm512_add_pd(a
, b
);
162 __m512
test_mm512_mul_ps(__m512 a
, __m512 b
)
164 // CHECK-LABEL: @test_mm512_mul_ps
165 // CHECK: fmul <16 x float>
166 return _mm512_mul_ps(a
, b
);
169 __m512d
test_mm512_mul_pd(__m512d a
, __m512d b
)
171 // CHECK-LABEL: @test_mm512_mul_pd
172 // CHECK: fmul <8 x double>
173 return _mm512_mul_pd(a
, b
);
176 void test_mm512_storeu_si512 (void *__P
, __m512i __A
)
178 // CHECK-LABEL: @test_mm512_storeu_si512
179 // CHECK: store <8 x i64> %{{.*}}, ptr %{{.*}}, align 1{{$}}
180 // CHECK-NEXT: ret void
181 _mm512_storeu_si512 ( __P
,__A
);
184 void test_mm512_storeu_ps(void *p
, __m512 a
)
186 // CHECK-LABEL: @test_mm512_storeu_ps
187 // CHECK: store <16 x float> %{{.*}}, ptr %{{.*}}, align 1{{$}}
188 // CHECK-NEXT: ret void
189 _mm512_storeu_ps(p
, a
);
192 void test_mm512_storeu_pd(void *p
, __m512d a
)
194 // CHECK-LABEL: @test_mm512_storeu_pd
195 // CHECK: store <8 x double> %{{.*}}, ptr %{{.*}}, align 1{{$}}
196 // CHECK-NEXT: ret void
197 _mm512_storeu_pd(p
, a
);
200 void test_mm512_mask_store_ps(void *p
, __m512 a
, __mmask16 m
)
202 // CHECK-LABEL: @test_mm512_mask_store_ps
203 // CHECK: @llvm.masked.store.v16f32.p0(<16 x float> %{{.*}}, ptr %{{.*}}, i32 64, <16 x i1> %{{.*}})
204 _mm512_mask_store_ps(p
, m
, a
);
207 void test_mm512_store_si512 (void *__P
, __m512i __A
)
209 // CHECK-LABEL: @test_mm512_store_si512
210 // CHECK: load <8 x i64>, ptr %__A.addr.i, align 64{{$}}
211 // CHECK: [[SI512_3:%.+]] = load ptr, ptr %__P.addr.i, align 8{{$}}
212 // CHECK: store <8 x i64>
213 _mm512_store_si512 ( __P
,__A
);
216 void test_mm512_store_epi32 (void *__P
, __m512i __A
)
218 // CHECK-LABEL: @test_mm512_store_epi32
219 // CHECK: load <8 x i64>, ptr %__A.addr.i, align 64{{$}}
220 // CHECK: [[Si32_3:%.+]] = load ptr, ptr %__P.addr.i, align 8{{$}}
221 // CHECK: store <8 x i64>
222 _mm512_store_epi32 ( __P
,__A
);
225 void test_mm512_store_epi64 (void *__P
, __m512i __A
)
227 // CHECK-LABEL: @test_mm512_store_epi64
228 // CHECK: load <8 x i64>, ptr %__A.addr.i, align 64{{$}}
229 // CHECK: [[SI64_3:%.+]] = load ptr, ptr %__P.addr.i, align 8{{$}}
230 // CHECK: store <8 x i64>
231 _mm512_store_epi64 ( __P
,__A
);
234 void test_mm512_store_ps(void *p
, __m512 a
)
236 // CHECK-LABEL: @test_mm512_store_ps
237 // CHECK: store <16 x float>
238 _mm512_store_ps(p
, a
);
241 void test_mm512_store_pd(void *p
, __m512d a
)
243 // CHECK-LABEL: @test_mm512_store_pd
244 // CHECK: store <8 x double>
245 _mm512_store_pd(p
, a
);
248 void test_mm512_mask_store_pd(void *p
, __m512d a
, __mmask8 m
)
250 // CHECK-LABEL: @test_mm512_mask_store_pd
251 // CHECK: @llvm.masked.store.v8f64.p0(<8 x double> %{{.*}}, ptr %{{.*}}, i32 64, <8 x i1> %{{.*}})
252 _mm512_mask_store_pd(p
, m
, a
);
255 void test_mm512_storeu_epi32(void *__P
, __m512i __A
) {
256 // CHECK-LABEL: @test_mm512_storeu_epi32
257 // CHECK: store <8 x i64> %{{.*}}, ptr %{{.*}}, align 1{{$}}
258 return _mm512_storeu_epi32(__P
, __A
);
261 void test_mm512_mask_storeu_epi32(void *__P
, __mmask16 __U
, __m512i __A
) {
262 // CHECK-LABEL: @test_mm512_mask_storeu_epi32
263 // CHECK: @llvm.masked.store.v16i32.p0(<16 x i32> %{{.*}}, ptr %{{.*}}, i32 1, <16 x i1> %{{.*}})
264 return _mm512_mask_storeu_epi32(__P
, __U
, __A
);
267 void test_mm512_storeu_epi64(void *__P
, __m512i __A
) {
268 // CHECK-LABEL: @test_mm512_storeu_epi64
269 // CHECK: store <8 x i64> %{{.*}}, ptr %{{.*}}, align 1{{$}}
270 return _mm512_storeu_epi64(__P
, __A
);
273 void test_mm512_mask_storeu_epi64(void *__P
, __mmask8 __U
, __m512i __A
) {
274 // CHECK-LABEL: @test_mm512_mask_storeu_epi64
275 // CHECK: @llvm.masked.store.v8i64.p0(<8 x i64> %{{.*}}, ptr %{{.*}}, i32 1, <8 x i1> %{{.*}})
276 return _mm512_mask_storeu_epi64(__P
, __U
, __A
);
279 __m512i
test_mm512_loadu_si512 (void *__P
)
281 // CHECK-LABEL: @test_mm512_loadu_si512
282 // CHECK: load <8 x i64>, ptr %{{.*}}, align 1{{$}}
283 return _mm512_loadu_si512 ( __P
);
286 __m512i
test_mm512_loadu_epi32 (void *__P
)
288 // CHECK-LABEL: @test_mm512_loadu_epi32
289 // CHECK: load <8 x i64>, ptr %{{.*}}, align 1{{$}}
290 return _mm512_loadu_epi32 (__P
);
293 __m512i
test_mm512_mask_loadu_epi32 (__m512i __W
, __mmask16 __U
, void *__P
)
295 // CHECK-LABEL: @test_mm512_mask_loadu_epi32
296 // CHECK: @llvm.masked.load.v16i32.p0(ptr %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
297 return _mm512_mask_loadu_epi32 (__W
,__U
, __P
);
300 __m512i
test_mm512_maskz_loadu_epi32 (__mmask16 __U
, void *__P
)
302 // CHECK-LABEL: @test_mm512_maskz_loadu_epi32
303 // CHECK: @llvm.masked.load.v16i32.p0(ptr %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
304 return _mm512_maskz_loadu_epi32 (__U
, __P
);
307 __m512i
test_mm512_loadu_epi64 (void *__P
)
309 // CHECK-LABEL: @test_mm512_loadu_epi64
310 // CHECK: load <8 x i64>, ptr %{{.*}}, align 1{{$}}
311 return _mm512_loadu_epi64 (__P
);
314 __m512i
test_mm512_mask_loadu_epi64 (__m512i __W
, __mmask8 __U
, void *__P
)
316 // CHECK-LABEL: @test_mm512_mask_loadu_epi64
317 // CHECK: @llvm.masked.load.v8i64.p0(ptr %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
318 return _mm512_mask_loadu_epi64 (__W
,__U
, __P
);
321 __m512i
test_mm512_maskz_loadu_epi64 (__mmask16 __U
, void *__P
)
323 // CHECK-LABEL: @test_mm512_maskz_loadu_epi64
324 // CHECK: @llvm.masked.load.v8i64.p0(ptr %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
325 return _mm512_maskz_loadu_epi64 (__U
, __P
);
328 __m512
test_mm512_loadu_ps(void *p
)
330 // CHECK-LABEL: @test_mm512_loadu_ps
331 // CHECK: load <16 x float>, ptr {{.*}}, align 1{{$}}
332 return _mm512_loadu_ps(p
);
335 __m512
test_mm512_mask_loadu_ps (__m512 __W
, __mmask16 __U
, void *__P
)
337 // CHECK-LABEL: @test_mm512_mask_loadu_ps
338 // CHECK: @llvm.masked.load.v16f32.p0(ptr %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
339 return _mm512_mask_loadu_ps (__W
,__U
, __P
);
342 __m512d
test_mm512_loadu_pd(void *p
)
344 // CHECK-LABEL: @test_mm512_loadu_pd
345 // CHECK: load <8 x double>, ptr {{.*}}, align 1{{$}}
346 return _mm512_loadu_pd(p
);
349 __m512d
test_mm512_mask_loadu_pd (__m512d __W
, __mmask8 __U
, void *__P
)
351 // CHECK-LABEL: @test_mm512_mask_loadu_pd
352 // CHECK: @llvm.masked.load.v8f64.p0(ptr %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
353 return _mm512_mask_loadu_pd (__W
,__U
, __P
);
356 __m512i
test_mm512_load_si512 (void *__P
)
358 // CHECK-LABEL: @test_mm512_load_si512
359 // CHECK: [[LI512_1:%.+]] = load ptr, ptr %__P.addr.i, align 8{{$}}
360 // CHECK: load <8 x i64>, ptr [[LI512_1]], align 64{{$}}
361 return _mm512_load_si512 ( __P
);
364 __m512i
test_mm512_load_epi32 (void *__P
)
366 // CHECK-LABEL: @test_mm512_load_epi32
367 // CHECK: [[LI32_1:%.+]] = load ptr, ptr %__P.addr.i, align 8{{$}}
368 // CHECK: load <8 x i64>, ptr [[LI32_1]], align 64{{$}}
369 return _mm512_load_epi32 ( __P
);
372 __m512i
test_mm512_load_epi64 (void *__P
)
374 // CHECK-LABEL: @test_mm512_load_epi64
375 // CHECK: [[LI64_1:%.+]] = load ptr, ptr %__P.addr.i, align 8{{$}}
376 // CHECK: load <8 x i64>, ptr [[LI64_1]], align 64{{$}}
377 return _mm512_load_epi64 ( __P
);
380 __m512
test_mm512_load_ps(void *p
)
382 // CHECK-LABEL: @test_mm512_load_ps
383 // CHECK: load <16 x float>, ptr %{{.*}}, align 64{{$}}
384 return _mm512_load_ps(p
);
387 __m512
test_mm512_mask_load_ps (__m512 __W
, __mmask16 __U
, void *__P
)
389 // CHECK-LABEL: @test_mm512_mask_load_ps
390 // CHECK: @llvm.masked.load.v16f32.p0(ptr %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
391 return _mm512_mask_load_ps (__W
,__U
, __P
);
394 __m512
test_mm512_maskz_load_ps(__mmask16 __U
, void *__P
)
396 // CHECK-LABEL: @test_mm512_maskz_load_ps
397 // CHECK: @llvm.masked.load.v16f32.p0(ptr %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
398 return _mm512_maskz_load_ps(__U
, __P
);
401 __m512d
test_mm512_load_pd(void *p
)
403 // CHECK-LABEL: @test_mm512_load_pd
404 // CHECK: load <8 x double>, ptr %{{.*}}, align 64{{$}}
405 return _mm512_load_pd(p
);
408 __m512d
test_mm512_mask_load_pd (__m512d __W
, __mmask8 __U
, void *__P
)
410 // CHECK-LABEL: @test_mm512_mask_load_pd
411 // CHECK: @llvm.masked.load.v8f64.p0(ptr %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
412 return _mm512_mask_load_pd (__W
,__U
, __P
);
415 __m512d
test_mm512_maskz_load_pd(__mmask8 __U
, void *__P
)
417 // CHECK-LABEL: @test_mm512_maskz_load_pd
418 // CHECK: @llvm.masked.load.v8f64.p0(ptr %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
419 return _mm512_maskz_load_pd(__U
, __P
);
422 __m512d
test_mm512_set1_pd(double d
)
424 // CHECK-LABEL: @test_mm512_set1_pd
425 // CHECK: insertelement <8 x double> {{.*}}, i32 0
426 // CHECK: insertelement <8 x double> {{.*}}, i32 1
427 // CHECK: insertelement <8 x double> {{.*}}, i32 2
428 // CHECK: insertelement <8 x double> {{.*}}, i32 3
429 // CHECK: insertelement <8 x double> {{.*}}, i32 4
430 // CHECK: insertelement <8 x double> {{.*}}, i32 5
431 // CHECK: insertelement <8 x double> {{.*}}, i32 6
432 // CHECK: insertelement <8 x double> {{.*}}, i32 7
433 return _mm512_set1_pd(d
);
436 __mmask16
test_mm512_knot(__mmask16 a
)
438 // CHECK-LABEL: @test_mm512_knot
439 // CHECK: [[IN:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
440 // 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>
441 // CHECK: bitcast <16 x i1> [[NOT]] to i16
442 return _mm512_knot(a
);
445 __m512i
test_mm512_alignr_epi32(__m512i a
, __m512i b
)
447 // CHECK-LABEL: @test_mm512_alignr_epi32
448 // 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>
449 return _mm512_alignr_epi32(a
, b
, 2);
452 __m512i
test_mm512_mask_alignr_epi32(__m512i w
, __mmask16 u
, __m512i a
, __m512i b
)
454 // CHECK-LABEL: @test_mm512_mask_alignr_epi32
455 // 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>
456 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> {{.*}}
457 return _mm512_mask_alignr_epi32(w
, u
, a
, b
, 2);
460 __m512i
test_mm512_maskz_alignr_epi32( __mmask16 u
, __m512i a
, __m512i b
)
462 // CHECK-LABEL: @test_mm512_maskz_alignr_epi32
463 // 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>
464 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> {{.*}}
465 return _mm512_maskz_alignr_epi32(u
, a
, b
, 2);
468 __m512i
test_mm512_alignr_epi64(__m512i a
, __m512i b
)
470 // CHECK-LABEL: @test_mm512_alignr_epi64
471 // 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>
472 return _mm512_alignr_epi64(a
, b
, 2);
475 __m512i
test_mm512_mask_alignr_epi64(__m512i w
, __mmask8 u
, __m512i a
, __m512i b
)
477 // CHECK-LABEL: @test_mm512_mask_alignr_epi64
478 // 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>
479 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> {{.*}}
480 return _mm512_mask_alignr_epi64(w
, u
, a
, b
, 2);
483 __m512i
test_mm512_maskz_alignr_epi64( __mmask8 u
, __m512i a
, __m512i b
)
485 // CHECK-LABEL: @test_mm512_maskz_alignr_epi64
486 // 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>
487 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> {{.*}}
488 return _mm512_maskz_alignr_epi64(u
, a
, b
, 2);
491 __m512d
test_mm512_fmadd_round_pd(__m512d __A
, __m512d __B
, __m512d __C
) {
492 // CHECK-LABEL: @test_mm512_fmadd_round_pd
493 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
494 return _mm512_fmadd_round_pd(__A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
497 __m512d
test_mm512_mask_fmadd_round_pd(__m512d __A
, __mmask8 __U
, __m512d __B
, __m512d __C
) {
498 // CHECK-LABEL: @test_mm512_mask_fmadd_round_pd
499 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
500 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
501 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
502 return _mm512_mask_fmadd_round_pd(__A
, __U
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
504 __m512d
test_mm512_mask3_fmadd_round_pd(__m512d __A
, __m512d __B
, __m512d __C
, __mmask8 __U
) {
505 // CHECK-LABEL: @test_mm512_mask3_fmadd_round_pd
506 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
507 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
508 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
509 return _mm512_mask3_fmadd_round_pd(__A
, __B
, __C
, __U
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
511 __m512d
test_mm512_maskz_fmadd_round_pd(__mmask8 __U
, __m512d __A
, __m512d __B
, __m512d __C
) {
512 // CHECK-LABEL: @test_mm512_maskz_fmadd_round_pd
513 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
514 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
515 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
516 return _mm512_maskz_fmadd_round_pd(__U
, __A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
518 __m512d
test_mm512_fmsub_round_pd(__m512d __A
, __m512d __B
, __m512d __C
) {
519 // CHECK-LABEL: @test_mm512_fmsub_round_pd
520 // CHECK: fneg <8 x double>
521 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
522 return _mm512_fmsub_round_pd(__A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
524 __m512d
test_mm512_mask_fmsub_round_pd(__m512d __A
, __mmask8 __U
, __m512d __B
, __m512d __C
) {
525 // CHECK-LABEL: @test_mm512_mask_fmsub_round_pd
526 // CHECK: fneg <8 x double>
527 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
528 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
529 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
530 return _mm512_mask_fmsub_round_pd(__A
, __U
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
532 __m512d
test_mm512_maskz_fmsub_round_pd(__mmask8 __U
, __m512d __A
, __m512d __B
, __m512d __C
) {
533 // CHECK-LABEL: @test_mm512_maskz_fmsub_round_pd
534 // CHECK: fneg <8 x double>
535 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
536 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
537 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
538 return _mm512_maskz_fmsub_round_pd(__U
, __A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
540 __m512d
test_mm512_fnmadd_round_pd(__m512d __A
, __m512d __B
, __m512d __C
) {
541 // CHECK-LABEL: @test_mm512_fnmadd_round_pd
542 // CHECK: fneg <8 x double>
543 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
544 return _mm512_fnmadd_round_pd(__A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
546 __m512d
test_mm512_mask3_fnmadd_round_pd(__m512d __A
, __m512d __B
, __m512d __C
, __mmask8 __U
) {
547 // CHECK-LABEL: @test_mm512_mask3_fnmadd_round_pd
548 // CHECK: fneg <8 x double>
549 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
550 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
551 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
552 return _mm512_mask3_fnmadd_round_pd(__A
, __B
, __C
, __U
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
554 __m512d
test_mm512_maskz_fnmadd_round_pd(__mmask8 __U
, __m512d __A
, __m512d __B
, __m512d __C
) {
555 // CHECK-LABEL: @test_mm512_maskz_fnmadd_round_pd
556 // CHECK: fneg <8 x double>
557 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
558 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
559 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
560 return _mm512_maskz_fnmadd_round_pd(__U
, __A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
562 __m512d
test_mm512_fnmsub_round_pd(__m512d __A
, __m512d __B
, __m512d __C
) {
563 // CHECK-LABEL: @test_mm512_fnmsub_round_pd
564 // CHECK: fneg <8 x double>
565 // CHECK: fneg <8 x double>
566 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
567 return _mm512_fnmsub_round_pd(__A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
569 __m512d
test_mm512_maskz_fnmsub_round_pd(__mmask8 __U
, __m512d __A
, __m512d __B
, __m512d __C
) {
570 // CHECK-LABEL: @test_mm512_maskz_fnmsub_round_pd
571 // CHECK: fneg <8 x double>
572 // CHECK: fneg <8 x double>
573 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
574 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
575 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
576 return _mm512_maskz_fnmsub_round_pd(__U
, __A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
578 __m512d
test_mm512_fmadd_pd(__m512d __A
, __m512d __B
, __m512d __C
) {
579 // CHECK-LABEL: @test_mm512_fmadd_pd
580 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
581 return _mm512_fmadd_pd(__A
, __B
, __C
);
583 __m512d
test_mm512_mask_fmadd_pd(__m512d __A
, __mmask8 __U
, __m512d __B
, __m512d __C
) {
584 // CHECK-LABEL: @test_mm512_mask_fmadd_pd
585 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
586 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
587 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
588 return _mm512_mask_fmadd_pd(__A
, __U
, __B
, __C
);
590 __m512d
test_mm512_mask3_fmadd_pd(__m512d __A
, __m512d __B
, __m512d __C
, __mmask8 __U
) {
591 // CHECK-LABEL: @test_mm512_mask3_fmadd_pd
592 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
593 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
594 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
595 return _mm512_mask3_fmadd_pd(__A
, __B
, __C
, __U
);
597 __m512d
test_mm512_maskz_fmadd_pd(__mmask8 __U
, __m512d __A
, __m512d __B
, __m512d __C
) {
598 // CHECK-LABEL: @test_mm512_maskz_fmadd_pd
599 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
600 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
601 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
602 return _mm512_maskz_fmadd_pd(__U
, __A
, __B
, __C
);
604 __m512d
test_mm512_fmsub_pd(__m512d __A
, __m512d __B
, __m512d __C
) {
605 // CHECK-LABEL: @test_mm512_fmsub_pd
606 // CHECK: fneg <8 x double> %{{.*}}
607 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
608 return _mm512_fmsub_pd(__A
, __B
, __C
);
610 __m512d
test_mm512_mask_fmsub_pd(__m512d __A
, __mmask8 __U
, __m512d __B
, __m512d __C
) {
611 // CHECK-LABEL: @test_mm512_mask_fmsub_pd
612 // CHECK: fneg <8 x double> %{{.*}}
613 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
614 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
615 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
616 return _mm512_mask_fmsub_pd(__A
, __U
, __B
, __C
);
618 __m512d
test_mm512_maskz_fmsub_pd(__mmask8 __U
, __m512d __A
, __m512d __B
, __m512d __C
) {
619 // CHECK-LABEL: @test_mm512_maskz_fmsub_pd
620 // CHECK: fneg <8 x double> %{{.*}}
621 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
622 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
623 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
624 return _mm512_maskz_fmsub_pd(__U
, __A
, __B
, __C
);
626 __m512d
test_mm512_fnmadd_pd(__m512d __A
, __m512d __B
, __m512d __C
) {
627 // CHECK-LABEL: @test_mm512_fnmadd_pd
628 // CHECK: fneg <8 x double> %{{.*}}
629 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
630 return _mm512_fnmadd_pd(__A
, __B
, __C
);
632 __m512d
test_mm512_mask3_fnmadd_pd(__m512d __A
, __m512d __B
, __m512d __C
, __mmask8 __U
) {
633 // CHECK-LABEL: @test_mm512_mask3_fnmadd_pd
634 // CHECK: fneg <8 x double> %{{.*}}
635 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
636 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
637 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
638 return _mm512_mask3_fnmadd_pd(__A
, __B
, __C
, __U
);
640 __m512d
test_mm512_maskz_fnmadd_pd(__mmask8 __U
, __m512d __A
, __m512d __B
, __m512d __C
) {
641 // CHECK-LABEL: @test_mm512_maskz_fnmadd_pd
642 // CHECK: fneg <8 x double> %{{.*}}
643 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
644 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
645 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
646 return _mm512_maskz_fnmadd_pd(__U
, __A
, __B
, __C
);
648 __m512d
test_mm512_fnmsub_pd(__m512d __A
, __m512d __B
, __m512d __C
) {
649 // CHECK-LABEL: @test_mm512_fnmsub_pd
650 // CHECK: fneg <8 x double> %{{.*}}
651 // CHECK: fneg <8 x double> %{{.*}}
652 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
653 return _mm512_fnmsub_pd(__A
, __B
, __C
);
655 __m512d
test_mm512_maskz_fnmsub_pd(__mmask8 __U
, __m512d __A
, __m512d __B
, __m512d __C
) {
656 // CHECK-LABEL: @test_mm512_maskz_fnmsub_pd
657 // CHECK: fneg <8 x double> %{{.*}}
658 // CHECK: fneg <8 x double> %{{.*}}
659 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
660 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
661 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
662 return _mm512_maskz_fnmsub_pd(__U
, __A
, __B
, __C
);
664 __m512
test_mm512_fmadd_round_ps(__m512 __A
, __m512 __B
, __m512 __C
) {
665 // CHECK-LABEL: @test_mm512_fmadd_round_ps
666 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
667 return _mm512_fmadd_round_ps(__A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
669 __m512
test_mm512_mask_fmadd_round_ps(__m512 __A
, __mmask16 __U
, __m512 __B
, __m512 __C
) {
670 // CHECK-LABEL: @test_mm512_mask_fmadd_round_ps
671 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
672 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
673 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
674 return _mm512_mask_fmadd_round_ps(__A
, __U
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
676 __m512
test_mm512_mask3_fmadd_round_ps(__m512 __A
, __m512 __B
, __m512 __C
, __mmask16 __U
) {
677 // CHECK-LABEL: @test_mm512_mask3_fmadd_round_ps
678 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
679 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
680 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
681 return _mm512_mask3_fmadd_round_ps(__A
, __B
, __C
, __U
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
683 __m512
test_mm512_maskz_fmadd_round_ps(__mmask16 __U
, __m512 __A
, __m512 __B
, __m512 __C
) {
684 // CHECK-LABEL: @test_mm512_maskz_fmadd_round_ps
685 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
686 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
687 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
688 return _mm512_maskz_fmadd_round_ps(__U
, __A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
690 __m512
test_mm512_fmsub_round_ps(__m512 __A
, __m512 __B
, __m512 __C
) {
691 // CHECK-LABEL: @test_mm512_fmsub_round_ps
692 // CHECK: fneg <16 x float> %{{.*}}
693 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
694 return _mm512_fmsub_round_ps(__A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
696 __m512
test_mm512_mask_fmsub_round_ps(__m512 __A
, __mmask16 __U
, __m512 __B
, __m512 __C
) {
697 // CHECK-LABEL: @test_mm512_mask_fmsub_round_ps
698 // CHECK: fneg <16 x float> %{{.*}}
699 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
700 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
701 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
702 return _mm512_mask_fmsub_round_ps(__A
, __U
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
704 __m512
test_mm512_maskz_fmsub_round_ps(__mmask16 __U
, __m512 __A
, __m512 __B
, __m512 __C
) {
705 // CHECK-LABEL: @test_mm512_maskz_fmsub_round_ps
706 // CHECK: fneg <16 x float> %{{.*}}
707 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
708 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
709 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
710 return _mm512_maskz_fmsub_round_ps(__U
, __A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
712 __m512
test_mm512_fnmadd_round_ps(__m512 __A
, __m512 __B
, __m512 __C
) {
713 // CHECK-LABEL: @test_mm512_fnmadd_round_ps
714 // CHECK: fneg <16 x float> %{{.*}}
715 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
716 return _mm512_fnmadd_round_ps(__A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
718 __m512
test_mm512_mask3_fnmadd_round_ps(__m512 __A
, __m512 __B
, __m512 __C
, __mmask16 __U
) {
719 // CHECK-LABEL: @test_mm512_mask3_fnmadd_round_ps
720 // CHECK: fneg <16 x float> %{{.*}}
721 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
722 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
723 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
724 return _mm512_mask3_fnmadd_round_ps(__A
, __B
, __C
, __U
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
726 __m512
test_mm512_maskz_fnmadd_round_ps(__mmask16 __U
, __m512 __A
, __m512 __B
, __m512 __C
) {
727 // CHECK-LABEL: @test_mm512_maskz_fnmadd_round_ps
728 // CHECK: fneg <16 x float> %{{.*}}
729 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
730 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
731 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
732 return _mm512_maskz_fnmadd_round_ps(__U
, __A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
734 __m512
test_mm512_fnmsub_round_ps(__m512 __A
, __m512 __B
, __m512 __C
) {
735 // CHECK-LABEL: @test_mm512_fnmsub_round_ps
736 // CHECK: fneg <16 x float> %{{.*}}
737 // CHECK: fneg <16 x float> %{{.*}}
738 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
739 return _mm512_fnmsub_round_ps(__A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
741 __m512
test_mm512_maskz_fnmsub_round_ps(__mmask16 __U
, __m512 __A
, __m512 __B
, __m512 __C
) {
742 // CHECK-LABEL: @test_mm512_maskz_fnmsub_round_ps
743 // CHECK: fneg <16 x float> %{{.*}}
744 // CHECK: fneg <16 x float> %{{.*}}
745 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
746 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
747 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
748 return _mm512_maskz_fnmsub_round_ps(__U
, __A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
750 __m512
test_mm512_fmadd_ps(__m512 __A
, __m512 __B
, __m512 __C
) {
751 // CHECK-LABEL: @test_mm512_fmadd_ps
752 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
753 return _mm512_fmadd_ps(__A
, __B
, __C
);
755 __m512
test_mm512_mask_fmadd_ps(__m512 __A
, __mmask16 __U
, __m512 __B
, __m512 __C
) {
756 // CHECK-LABEL: @test_mm512_mask_fmadd_ps
757 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
758 return _mm512_mask_fmadd_ps(__A
, __U
, __B
, __C
);
760 __m512
test_mm512_mask3_fmadd_ps(__m512 __A
, __m512 __B
, __m512 __C
, __mmask16 __U
) {
761 // CHECK-LABEL: @test_mm512_mask3_fmadd_ps
762 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
763 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
764 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
765 return _mm512_mask3_fmadd_ps(__A
, __B
, __C
, __U
);
767 __m512
test_mm512_maskz_fmadd_ps(__mmask16 __U
, __m512 __A
, __m512 __B
, __m512 __C
) {
768 // CHECK-LABEL: @test_mm512_maskz_fmadd_ps
769 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
770 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
771 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
772 return _mm512_maskz_fmadd_ps(__U
, __A
, __B
, __C
);
774 __m512
test_mm512_fmsub_ps(__m512 __A
, __m512 __B
, __m512 __C
) {
775 // CHECK-LABEL: @test_mm512_fmsub_ps
776 // CHECK: fneg <16 x float> %{{.*}}
777 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
778 return _mm512_fmsub_ps(__A
, __B
, __C
);
780 __m512
test_mm512_mask_fmsub_ps(__m512 __A
, __mmask16 __U
, __m512 __B
, __m512 __C
) {
781 // CHECK-LABEL: @test_mm512_mask_fmsub_ps
782 // CHECK: fneg <16 x float> %{{.*}}
783 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
784 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
785 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
786 return _mm512_mask_fmsub_ps(__A
, __U
, __B
, __C
);
788 __m512
test_mm512_maskz_fmsub_ps(__mmask16 __U
, __m512 __A
, __m512 __B
, __m512 __C
) {
789 // CHECK-LABEL: @test_mm512_maskz_fmsub_ps
790 // CHECK: fneg <16 x float> %{{.*}}
791 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
792 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
793 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
794 return _mm512_maskz_fmsub_ps(__U
, __A
, __B
, __C
);
796 __m512
test_mm512_fnmadd_ps(__m512 __A
, __m512 __B
, __m512 __C
) {
797 // CHECK-LABEL: @test_mm512_fnmadd_ps
798 // CHECK: fneg <16 x float> %{{.*}}
799 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
800 return _mm512_fnmadd_ps(__A
, __B
, __C
);
802 __m512
test_mm512_mask3_fnmadd_ps(__m512 __A
, __m512 __B
, __m512 __C
, __mmask16 __U
) {
803 // CHECK-LABEL: @test_mm512_mask3_fnmadd_ps
804 // CHECK: fneg <16 x float> %{{.*}}
805 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
806 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
807 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
808 return _mm512_mask3_fnmadd_ps(__A
, __B
, __C
, __U
);
810 __m512
test_mm512_maskz_fnmadd_ps(__mmask16 __U
, __m512 __A
, __m512 __B
, __m512 __C
) {
811 // CHECK-LABEL: @test_mm512_maskz_fnmadd_ps
812 // CHECK: fneg <16 x float> %{{.*}}
813 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
814 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
815 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
816 return _mm512_maskz_fnmadd_ps(__U
, __A
, __B
, __C
);
818 __m512
test_mm512_fnmsub_ps(__m512 __A
, __m512 __B
, __m512 __C
) {
819 // CHECK-LABEL: @test_mm512_fnmsub_ps
820 // CHECK: fneg <16 x float> %{{.*}}
821 // CHECK: fneg <16 x float> %{{.*}}
822 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
823 return _mm512_fnmsub_ps(__A
, __B
, __C
);
825 __m512
test_mm512_maskz_fnmsub_ps(__mmask16 __U
, __m512 __A
, __m512 __B
, __m512 __C
) {
826 // CHECK-LABEL: @test_mm512_maskz_fnmsub_ps
827 // CHECK: fneg <16 x float> %{{.*}}
828 // CHECK: fneg <16 x float> %{{.*}}
829 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
830 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
831 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
832 return _mm512_maskz_fnmsub_ps(__U
, __A
, __B
, __C
);
834 __m512d
test_mm512_fmaddsub_round_pd(__m512d __A
, __m512d __B
, __m512d __C
) {
835 // CHECK-LABEL: @test_mm512_fmaddsub_round_pd
836 // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
837 return _mm512_fmaddsub_round_pd(__A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
839 __m512d
test_mm512_mask_fmaddsub_round_pd(__m512d __A
, __mmask8 __U
, __m512d __B
, __m512d __C
) {
840 // CHECK-LABEL: @test_mm512_mask_fmaddsub_round_pd
841 // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
842 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
843 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
844 return _mm512_mask_fmaddsub_round_pd(__A
, __U
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
846 __m512d
test_mm512_mask3_fmaddsub_round_pd(__m512d __A
, __m512d __B
, __m512d __C
, __mmask8 __U
) {
847 // CHECK-LABEL: @test_mm512_mask3_fmaddsub_round_pd
848 // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
849 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
850 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
851 return _mm512_mask3_fmaddsub_round_pd(__A
, __B
, __C
, __U
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
853 __m512d
test_mm512_maskz_fmaddsub_round_pd(__mmask8 __U
, __m512d __A
, __m512d __B
, __m512d __C
) {
854 // CHECK-LABEL: @test_mm512_maskz_fmaddsub_round_pd
855 // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
856 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
857 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
858 return _mm512_maskz_fmaddsub_round_pd(__U
, __A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
860 __m512d
test_mm512_fmsubadd_round_pd(__m512d __A
, __m512d __B
, __m512d __C
) {
861 // CHECK-LABEL: @test_mm512_fmsubadd_round_pd
862 // CHECK: fneg <8 x double> %{{.*}}
863 // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
864 return _mm512_fmsubadd_round_pd(__A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
866 __m512d
test_mm512_mask_fmsubadd_round_pd(__m512d __A
, __mmask8 __U
, __m512d __B
, __m512d __C
) {
867 // CHECK-LABEL: @test_mm512_mask_fmsubadd_round_pd
868 // CHECK: fneg <8 x double> %{{.*}}
869 // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
870 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
871 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
872 return _mm512_mask_fmsubadd_round_pd(__A
, __U
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
874 __m512d
test_mm512_maskz_fmsubadd_round_pd(__mmask8 __U
, __m512d __A
, __m512d __B
, __m512d __C
) {
875 // CHECK-LABEL: @test_mm512_maskz_fmsubadd_round_pd
876 // CHECK: fneg <8 x double> %{{.*}}
877 // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
878 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
879 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
880 return _mm512_maskz_fmsubadd_round_pd(__U
, __A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
882 __m512d
test_mm512_fmaddsub_pd(__m512d __A
, __m512d __B
, __m512d __C
) {
883 // CHECK-LABEL: @test_mm512_fmaddsub_pd
885 // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}, i32 4)
886 return _mm512_fmaddsub_pd(__A
, __B
, __C
);
888 __m512d
test_mm512_mask_fmaddsub_pd(__m512d __A
, __mmask8 __U
, __m512d __B
, __m512d __C
) {
889 // CHECK-LABEL: @test_mm512_mask_fmaddsub_pd
891 // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}, i32 4)
892 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
893 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
894 return _mm512_mask_fmaddsub_pd(__A
, __U
, __B
, __C
);
896 __m512d
test_mm512_mask3_fmaddsub_pd(__m512d __A
, __m512d __B
, __m512d __C
, __mmask8 __U
) {
897 // CHECK-LABEL: @test_mm512_mask3_fmaddsub_pd
899 // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}, i32 4)
900 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
901 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
902 return _mm512_mask3_fmaddsub_pd(__A
, __B
, __C
, __U
);
904 __m512d
test_mm512_maskz_fmaddsub_pd(__mmask8 __U
, __m512d __A
, __m512d __B
, __m512d __C
) {
905 // CHECK-LABEL: @test_mm512_maskz_fmaddsub_pd
907 // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}, i32 4)
908 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
909 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
910 return _mm512_maskz_fmaddsub_pd(__U
, __A
, __B
, __C
);
912 __m512d
test_mm512_fmsubadd_pd(__m512d __A
, __m512d __B
, __m512d __C
) {
913 // CHECK-LABEL: @test_mm512_fmsubadd_pd
914 // CHECK: [[NEG:%.+]] = fneg <8 x double> %{{.*}}
915 // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]], i32 4)
916 return _mm512_fmsubadd_pd(__A
, __B
, __C
);
918 __m512d
test_mm512_mask_fmsubadd_pd(__m512d __A
, __mmask8 __U
, __m512d __B
, __m512d __C
) {
919 // CHECK-LABEL: @test_mm512_mask_fmsubadd_pd
920 // CHECK: [[NEG:%.+]] = fneg <8 x double> %{{.*}}
921 // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]], i32 4)
922 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
923 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
924 return _mm512_mask_fmsubadd_pd(__A
, __U
, __B
, __C
);
926 __m512d
test_mm512_maskz_fmsubadd_pd(__mmask8 __U
, __m512d __A
, __m512d __B
, __m512d __C
) {
927 // CHECK-LABEL: @test_mm512_maskz_fmsubadd_pd
928 // CHECK: [[NEG:%.+]] = fneg <8 x double> %{{.*}}
929 // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]], i32 4)
930 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
931 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
932 return _mm512_maskz_fmsubadd_pd(__U
, __A
, __B
, __C
);
934 __m512
test_mm512_fmaddsub_round_ps(__m512 __A
, __m512 __B
, __m512 __C
) {
935 // CHECK-LABEL: @test_mm512_fmaddsub_round_ps
936 // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
937 return _mm512_fmaddsub_round_ps(__A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
939 __m512
test_mm512_mask_fmaddsub_round_ps(__m512 __A
, __mmask16 __U
, __m512 __B
, __m512 __C
) {
940 // CHECK-LABEL: @test_mm512_mask_fmaddsub_round_ps
941 // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
942 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
943 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
944 return _mm512_mask_fmaddsub_round_ps(__A
, __U
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
946 __m512
test_mm512_mask3_fmaddsub_round_ps(__m512 __A
, __m512 __B
, __m512 __C
, __mmask16 __U
) {
947 // CHECK-LABEL: @test_mm512_mask3_fmaddsub_round_ps
948 // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
949 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
950 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
951 return _mm512_mask3_fmaddsub_round_ps(__A
, __B
, __C
, __U
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
953 __m512
test_mm512_maskz_fmaddsub_round_ps(__mmask16 __U
, __m512 __A
, __m512 __B
, __m512 __C
) {
954 // CHECK-LABEL: @test_mm512_maskz_fmaddsub_round_ps
955 // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
956 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
957 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
958 return _mm512_maskz_fmaddsub_round_ps(__U
, __A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
960 __m512
test_mm512_fmsubadd_round_ps(__m512 __A
, __m512 __B
, __m512 __C
) {
961 // CHECK-LABEL: @test_mm512_fmsubadd_round_ps
962 // CHECK: fneg <16 x float> %{{.*}}
963 // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
964 return _mm512_fmsubadd_round_ps(__A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
966 __m512
test_mm512_mask_fmsubadd_round_ps(__m512 __A
, __mmask16 __U
, __m512 __B
, __m512 __C
) {
967 // CHECK-LABEL: @test_mm512_mask_fmsubadd_round_ps
968 // CHECK: fneg <16 x float> %{{.*}}
969 // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
970 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
971 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
972 return _mm512_mask_fmsubadd_round_ps(__A
, __U
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
974 __m512
test_mm512_maskz_fmsubadd_round_ps(__mmask16 __U
, __m512 __A
, __m512 __B
, __m512 __C
) {
975 // CHECK-LABEL: @test_mm512_maskz_fmsubadd_round_ps
976 // CHECK: fneg <16 x float> %{{.*}}
977 // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
978 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
979 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
980 return _mm512_maskz_fmsubadd_round_ps(__U
, __A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
982 __m512
test_mm512_fmaddsub_ps(__m512 __A
, __m512 __B
, __m512 __C
) {
983 // CHECK-LABEL: @test_mm512_fmaddsub_ps
985 // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}, i32 4)
986 return _mm512_fmaddsub_ps(__A
, __B
, __C
);
988 __m512
test_mm512_mask_fmaddsub_ps(__m512 __A
, __mmask16 __U
, __m512 __B
, __m512 __C
) {
989 // CHECK-LABEL: @test_mm512_mask_fmaddsub_ps
991 // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}, i32 4)
992 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
993 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
994 return _mm512_mask_fmaddsub_ps(__A
, __U
, __B
, __C
);
996 __m512
test_mm512_mask3_fmaddsub_ps(__m512 __A
, __m512 __B
, __m512 __C
, __mmask16 __U
) {
997 // CHECK-LABEL: @test_mm512_mask3_fmaddsub_ps
999 // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}, i32 4)
1000 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1001 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1002 return _mm512_mask3_fmaddsub_ps(__A
, __B
, __C
, __U
);
1004 __m512
test_mm512_maskz_fmaddsub_ps(__mmask16 __U
, __m512 __A
, __m512 __B
, __m512 __C
) {
1005 // CHECK-LABEL: @test_mm512_maskz_fmaddsub_ps
1007 // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}, i32 4)
1008 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1009 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
1010 return _mm512_maskz_fmaddsub_ps(__U
, __A
, __B
, __C
);
1012 __m512
test_mm512_fmsubadd_ps(__m512 __A
, __m512 __B
, __m512 __C
) {
1013 // CHECK-LABEL: @test_mm512_fmsubadd_ps
1014 // CHECK: [[NEG:%.+]] = fneg <16 x float> %{{.*}}
1015 // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]], i32 4)
1016 return _mm512_fmsubadd_ps(__A
, __B
, __C
);
1018 __m512
test_mm512_mask_fmsubadd_ps(__m512 __A
, __mmask16 __U
, __m512 __B
, __m512 __C
) {
1019 // CHECK-LABEL: @test_mm512_mask_fmsubadd_ps
1020 // CHECK: [[NEG:%.+]] = fneg <16 x float> %{{.*}}
1021 // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]], i32 4)
1022 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1023 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1024 return _mm512_mask_fmsubadd_ps(__A
, __U
, __B
, __C
);
1026 __m512
test_mm512_maskz_fmsubadd_ps(__mmask16 __U
, __m512 __A
, __m512 __B
, __m512 __C
) {
1027 // CHECK-LABEL: @test_mm512_maskz_fmsubadd_ps
1028 // CHECK: [[NEG:%.+]] = fneg <16 x float> %{{.*}}
1029 // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]], i32 4)
1030 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1031 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
1032 return _mm512_maskz_fmsubadd_ps(__U
, __A
, __B
, __C
);
1034 __m512d
test_mm512_mask3_fmsub_round_pd(__m512d __A
, __m512d __B
, __m512d __C
, __mmask8 __U
) {
1035 // CHECK-LABEL: @test_mm512_mask3_fmsub_round_pd
1036 // CHECK: fneg <8 x double> %{{.*}}
1037 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
1038 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1039 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1040 return _mm512_mask3_fmsub_round_pd(__A
, __B
, __C
, __U
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
1042 __m512d
test_mm512_mask3_fmsub_pd(__m512d __A
, __m512d __B
, __m512d __C
, __mmask8 __U
) {
1043 // CHECK-LABEL: @test_mm512_mask3_fmsub_pd
1044 // CHECK: fneg <8 x double> %{{.*}}
1045 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
1046 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1047 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1048 return _mm512_mask3_fmsub_pd(__A
, __B
, __C
, __U
);
1050 __m512
test_mm512_mask3_fmsub_round_ps(__m512 __A
, __m512 __B
, __m512 __C
, __mmask16 __U
) {
1051 // CHECK-LABEL: @test_mm512_mask3_fmsub_round_ps
1052 // CHECK: fneg <16 x float> %{{.*}}
1053 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
1054 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1055 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1056 return _mm512_mask3_fmsub_round_ps(__A
, __B
, __C
, __U
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
1058 __m512
test_mm512_mask3_fmsub_ps(__m512 __A
, __m512 __B
, __m512 __C
, __mmask16 __U
) {
1059 // CHECK-LABEL: @test_mm512_mask3_fmsub_ps
1060 // CHECK: fneg <16 x float> %{{.*}}
1061 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1062 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1063 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1064 return _mm512_mask3_fmsub_ps(__A
, __B
, __C
, __U
);
1066 __m512d
test_mm512_mask3_fmsubadd_round_pd(__m512d __A
, __m512d __B
, __m512d __C
, __mmask8 __U
) {
1067 // CHECK-LABEL: @test_mm512_mask3_fmsubadd_round_pd
1068 // CHECK: fneg <8 x double> %{{.*}}
1069 // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
1070 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1071 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1072 return _mm512_mask3_fmsubadd_round_pd(__A
, __B
, __C
, __U
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
1074 __m512d
test_mm512_mask3_fmsubadd_pd(__m512d __A
, __m512d __B
, __m512d __C
, __mmask8 __U
) {
1075 // CHECK-LABEL: @test_mm512_mask3_fmsubadd_pd
1076 // CHECK: [[NEG:%.+]] = fneg <8 x double> %{{.*}}
1077 // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]], i32 4)
1078 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1079 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1080 return _mm512_mask3_fmsubadd_pd(__A
, __B
, __C
, __U
);
1082 __m512
test_mm512_mask3_fmsubadd_round_ps(__m512 __A
, __m512 __B
, __m512 __C
, __mmask16 __U
) {
1083 // CHECK-LABEL: @test_mm512_mask3_fmsubadd_round_ps
1084 // CHECK: fneg <16 x float> %{{.*}}
1085 // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
1086 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1087 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1088 return _mm512_mask3_fmsubadd_round_ps(__A
, __B
, __C
, __U
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
1090 __m512
test_mm512_mask3_fmsubadd_ps(__m512 __A
, __m512 __B
, __m512 __C
, __mmask16 __U
) {
1091 // CHECK-LABEL: @test_mm512_mask3_fmsubadd_ps
1092 // CHECK: [[NEG:%.+]] = fneg <16 x float> %{{.*}}
1093 // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]], i32 4)
1094 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1095 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1096 return _mm512_mask3_fmsubadd_ps(__A
, __B
, __C
, __U
);
1098 __m512d
test_mm512_mask_fnmadd_round_pd(__m512d __A
, __mmask8 __U
, __m512d __B
, __m512d __C
) {
1099 // CHECK-LABEL: @test_mm512_mask_fnmadd_round_pd
1100 // CHECK: fneg <8 x double>
1101 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
1102 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1103 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1104 return _mm512_mask_fnmadd_round_pd(__A
, __U
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
1106 __m512d
test_mm512_mask_fnmadd_pd(__m512d __A
, __mmask8 __U
, __m512d __B
, __m512d __C
) {
1107 // CHECK-LABEL: @test_mm512_mask_fnmadd_pd
1108 // CHECK: fneg <8 x double> %{{.*}}
1109 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
1110 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1111 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1112 return _mm512_mask_fnmadd_pd(__A
, __U
, __B
, __C
);
1114 __m512
test_mm512_mask_fnmadd_round_ps(__m512 __A
, __mmask16 __U
, __m512 __B
, __m512 __C
) {
1115 // CHECK-LABEL: @test_mm512_mask_fnmadd_round_ps
1116 // CHECK: fneg <16 x float> %{{.*}}
1117 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
1118 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1119 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1120 return _mm512_mask_fnmadd_round_ps(__A
, __U
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
1122 __m512
test_mm512_mask_fnmadd_ps(__m512 __A
, __mmask16 __U
, __m512 __B
, __m512 __C
) {
1123 // CHECK-LABEL: @test_mm512_mask_fnmadd_ps
1124 // CHECK: fneg <16 x float> %{{.*}}
1125 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1126 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1127 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1128 return _mm512_mask_fnmadd_ps(__A
, __U
, __B
, __C
);
1130 __m512d
test_mm512_mask_fnmsub_round_pd(__m512d __A
, __mmask8 __U
, __m512d __B
, __m512d __C
) {
1131 // CHECK-LABEL: @test_mm512_mask_fnmsub_round_pd
1132 // CHECK: fneg <8 x double>
1133 // CHECK: fneg <8 x double>
1134 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
1135 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1136 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1137 return _mm512_mask_fnmsub_round_pd(__A
, __U
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
1139 __m512d
test_mm512_mask3_fnmsub_round_pd(__m512d __A
, __m512d __B
, __m512d __C
, __mmask8 __U
) {
1140 // CHECK-LABEL: @test_mm512_mask3_fnmsub_round_pd
1141 // CHECK: fneg <8 x double>
1142 // CHECK: fneg <8 x double>
1143 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
1144 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1145 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1146 return _mm512_mask3_fnmsub_round_pd(__A
, __B
, __C
, __U
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
1148 __m512d
test_mm512_mask_fnmsub_pd(__m512d __A
, __mmask8 __U
, __m512d __B
, __m512d __C
) {
1149 // CHECK-LABEL: @test_mm512_mask_fnmsub_pd
1150 // CHECK: fneg <8 x double> %{{.*}}
1151 // CHECK: fneg <8 x double> %{{.*}}
1152 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
1153 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1154 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1155 return _mm512_mask_fnmsub_pd(__A
, __U
, __B
, __C
);
1157 __m512d
test_mm512_mask3_fnmsub_pd(__m512d __A
, __m512d __B
, __m512d __C
, __mmask8 __U
) {
1158 // CHECK-LABEL: @test_mm512_mask3_fnmsub_pd
1159 // CHECK: fneg <8 x double> %{{.*}}
1160 // CHECK: fneg <8 x double> %{{.*}}
1161 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
1162 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1163 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1164 return _mm512_mask3_fnmsub_pd(__A
, __B
, __C
, __U
);
1166 __m512
test_mm512_mask_fnmsub_round_ps(__m512 __A
, __mmask16 __U
, __m512 __B
, __m512 __C
) {
1167 // CHECK-LABEL: @test_mm512_mask_fnmsub_round_ps
1168 // CHECK: fneg <16 x float> %{{.*}}
1169 // CHECK: fneg <16 x float> %{{.*}}
1170 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
1171 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1172 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1173 return _mm512_mask_fnmsub_round_ps(__A
, __U
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
1175 __m512
test_mm512_mask3_fnmsub_round_ps(__m512 __A
, __m512 __B
, __m512 __C
, __mmask16 __U
) {
1176 // CHECK-LABEL: @test_mm512_mask3_fnmsub_round_ps
1177 // CHECK: fneg <16 x float> %{{.*}}
1178 // CHECK: fneg <16 x float> %{{.*}}
1179 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
1180 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1181 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1182 return _mm512_mask3_fnmsub_round_ps(__A
, __B
, __C
, __U
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
1184 __m512
test_mm512_mask_fnmsub_ps(__m512 __A
, __mmask16 __U
, __m512 __B
, __m512 __C
) {
1185 // CHECK-LABEL: @test_mm512_mask_fnmsub_ps
1186 // CHECK: fneg <16 x float> %{{.*}}
1187 // CHECK: fneg <16 x float> %{{.*}}
1188 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1189 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1190 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1191 return _mm512_mask_fnmsub_ps(__A
, __U
, __B
, __C
);
1193 __m512
test_mm512_mask3_fnmsub_ps(__m512 __A
, __m512 __B
, __m512 __C
, __mmask16 __U
) {
1194 // CHECK-LABEL: @test_mm512_mask3_fnmsub_ps
1195 // CHECK: fneg <16 x float> %{{.*}}
1196 // CHECK: fneg <16 x float> %{{.*}}
1197 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1198 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1199 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1200 return _mm512_mask3_fnmsub_ps(__A
, __B
, __C
, __U
);
1203 __mmask16
test_mm512_cmpeq_epi32_mask(__m512i __a
, __m512i __b
) {
1204 // CHECK-LABEL: @test_mm512_cmpeq_epi32_mask
1205 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
1206 return (__mmask16
)_mm512_cmpeq_epi32_mask(__a
, __b
);
1209 __mmask16
test_mm512_mask_cmpeq_epi32_mask(__mmask16 __u
, __m512i __a
, __m512i __b
) {
1210 // CHECK-LABEL: @test_mm512_mask_cmpeq_epi32_mask
1211 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
1212 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
1213 return (__mmask16
)_mm512_mask_cmpeq_epi32_mask(__u
, __a
, __b
);
1216 __mmask8
test_mm512_mask_cmpeq_epi64_mask(__mmask8 __u
, __m512i __a
, __m512i __b
) {
1217 // CHECK-LABEL: @test_mm512_mask_cmpeq_epi64_mask
1218 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
1219 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
1220 return (__mmask8
)_mm512_mask_cmpeq_epi64_mask(__u
, __a
, __b
);
1223 __mmask8
test_mm512_cmpeq_epi64_mask(__m512i __a
, __m512i __b
) {
1224 // CHECK-LABEL: @test_mm512_cmpeq_epi64_mask
1225 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
1226 return (__mmask8
)_mm512_cmpeq_epi64_mask(__a
, __b
);
1229 __mmask16
test_mm512_cmpgt_epi32_mask(__m512i __a
, __m512i __b
) {
1230 // CHECK-LABEL: @test_mm512_cmpgt_epi32_mask
1231 // CHECK: icmp sgt <16 x i32> %{{.*}}, %{{.*}}
1232 return (__mmask16
)_mm512_cmpgt_epi32_mask(__a
, __b
);
1235 __mmask16
test_mm512_mask_cmpgt_epi32_mask(__mmask16 __u
, __m512i __a
, __m512i __b
) {
1236 // CHECK-LABEL: @test_mm512_mask_cmpgt_epi32_mask
1237 // CHECK: icmp sgt <16 x i32> %{{.*}}, %{{.*}}
1238 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
1239 return (__mmask16
)_mm512_mask_cmpgt_epi32_mask(__u
, __a
, __b
);
1242 __mmask8
test_mm512_mask_cmpgt_epi64_mask(__mmask8 __u
, __m512i __a
, __m512i __b
) {
1243 // CHECK-LABEL: @test_mm512_mask_cmpgt_epi64_mask
1244 // CHECK: icmp sgt <8 x i64> %{{.*}}, %{{.*}}
1245 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
1246 return (__mmask8
)_mm512_mask_cmpgt_epi64_mask(__u
, __a
, __b
);
1249 __mmask8
test_mm512_cmpgt_epi64_mask(__m512i __a
, __m512i __b
) {
1250 // CHECK-LABEL: @test_mm512_cmpgt_epi64_mask
1251 // CHECK: icmp sgt <8 x i64> %{{.*}}, %{{.*}}
1252 return (__mmask8
)_mm512_cmpgt_epi64_mask(__a
, __b
);
1255 __m512d
test_mm512_unpackhi_pd(__m512d a
, __m512d b
)
1257 // CHECK-LABEL: @test_mm512_unpackhi_pd
1258 // CHECK: shufflevector <8 x double> {{.*}} <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
1259 return _mm512_unpackhi_pd(a
, b
);
1262 __m512d
test_mm512_unpacklo_pd(__m512d a
, __m512d b
)
1264 // CHECK-LABEL: @test_mm512_unpacklo_pd
1265 // CHECK: shufflevector <8 x double> {{.*}} <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
1266 return _mm512_unpacklo_pd(a
, b
);
1269 __m512
test_mm512_unpackhi_ps(__m512 a
, __m512 b
)
1271 // CHECK-LABEL: @test_mm512_unpackhi_ps
1272 // 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>
1273 return _mm512_unpackhi_ps(a
, b
);
1276 __m512
test_mm512_unpacklo_ps(__m512 a
, __m512 b
)
1278 // CHECK-LABEL: @test_mm512_unpacklo_ps
1279 // 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>
1280 return _mm512_unpacklo_ps(a
, b
);
1283 __mmask16
test_mm512_cmp_round_ps_mask(__m512 a
, __m512 b
) {
1284 // CHECK-LABEL: @test_mm512_cmp_round_ps_mask
1285 // CHECK: fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1286 return _mm512_cmp_round_ps_mask(a
, b
, _CMP_EQ_OQ
, _MM_FROUND_NO_EXC
);
1289 __mmask16
test_mm512_mask_cmp_round_ps_mask(__mmask16 m
, __m512 a
, __m512 b
) {
1290 // CHECK-LABEL: @test_mm512_mask_cmp_round_ps_mask
1291 // CHECK: [[CMP:%.*]] = fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1292 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1293 return _mm512_mask_cmp_round_ps_mask(m
, a
, b
, _CMP_EQ_OQ
, _MM_FROUND_NO_EXC
);
1296 __mmask16
test_mm512_cmp_ps_mask_eq_oq(__m512 a
, __m512 b
) {
1297 // CHECK-LABEL: @test_mm512_cmp_ps_mask_eq_oq
1298 // CHECK: fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1299 return _mm512_cmp_ps_mask(a
, b
, _CMP_EQ_OQ
);
1302 __mmask16
test_mm512_cmp_ps_mask_lt_os(__m512 a
, __m512 b
) {
1303 // CHECK-LABEL: test_mm512_cmp_ps_mask_lt_os
1304 // CHECK: fcmp olt <16 x float> %{{.*}}, %{{.*}}
1305 return _mm512_cmp_ps_mask(a
, b
, _CMP_LT_OS
);
1308 __mmask16
test_mm512_cmp_ps_mask_le_os(__m512 a
, __m512 b
) {
1309 // CHECK-LABEL: test_mm512_cmp_ps_mask_le_os
1310 // CHECK: fcmp ole <16 x float> %{{.*}}, %{{.*}}
1311 return _mm512_cmp_ps_mask(a
, b
, _CMP_LE_OS
);
1314 __mmask16
test_mm512_cmp_ps_mask_unord_q(__m512 a
, __m512 b
) {
1315 // CHECK-LABEL: test_mm512_cmp_ps_mask_unord_q
1316 // CHECK: fcmp uno <16 x float> %{{.*}}, %{{.*}}
1317 return _mm512_cmp_ps_mask(a
, b
, _CMP_UNORD_Q
);
1320 __mmask16
test_mm512_cmp_ps_mask_neq_uq(__m512 a
, __m512 b
) {
1321 // CHECK-LABEL: test_mm512_cmp_ps_mask_neq_uq
1322 // CHECK: fcmp une <16 x float> %{{.*}}, %{{.*}}
1323 return _mm512_cmp_ps_mask(a
, b
, _CMP_NEQ_UQ
);
1326 __mmask16
test_mm512_cmp_ps_mask_nlt_us(__m512 a
, __m512 b
) {
1327 // CHECK-LABEL: test_mm512_cmp_ps_mask_nlt_us
1328 // CHECK: fcmp uge <16 x float> %{{.*}}, %{{.*}}
1329 return _mm512_cmp_ps_mask(a
, b
, _CMP_NLT_US
);
1332 __mmask16
test_mm512_cmp_ps_mask_nle_us(__m512 a
, __m512 b
) {
1333 // CHECK-LABEL: test_mm512_cmp_ps_mask_nle_us
1334 // CHECK: fcmp ugt <16 x float> %{{.*}}, %{{.*}}
1335 return _mm512_cmp_ps_mask(a
, b
, _CMP_NLE_US
);
1338 __mmask16
test_mm512_cmp_ps_mask_ord_q(__m512 a
, __m512 b
) {
1339 // CHECK-LABEL: test_mm512_cmp_ps_mask_ord_q
1340 // CHECK: fcmp ord <16 x float> %{{.*}}, %{{.*}}
1341 return _mm512_cmp_ps_mask(a
, b
, _CMP_ORD_Q
);
1344 __mmask16
test_mm512_cmp_ps_mask_eq_uq(__m512 a
, __m512 b
) {
1345 // CHECK-LABEL: test_mm512_cmp_ps_mask_eq_uq
1346 // CHECK: fcmp ueq <16 x float> %{{.*}}, %{{.*}}
1347 return _mm512_cmp_ps_mask(a
, b
, _CMP_EQ_UQ
);
1350 __mmask16
test_mm512_cmp_ps_mask_nge_us(__m512 a
, __m512 b
) {
1351 // CHECK-LABEL: test_mm512_cmp_ps_mask_nge_us
1352 // CHECK: fcmp ult <16 x float> %{{.*}}, %{{.*}}
1353 return _mm512_cmp_ps_mask(a
, b
, _CMP_NGE_US
);
1356 __mmask16
test_mm512_cmp_ps_mask_ngt_us(__m512 a
, __m512 b
) {
1357 // CHECK-LABEL: test_mm512_cmp_ps_mask_ngt_us
1358 // CHECK: fcmp ule <16 x float> %{{.*}}, %{{.*}}
1359 return _mm512_cmp_ps_mask(a
, b
, _CMP_NGT_US
);
1362 __mmask16
test_mm512_cmp_ps_mask_false_oq(__m512 a
, __m512 b
) {
1363 // CHECK-LABEL: test_mm512_cmp_ps_mask_false_oq
1364 // CHECK: fcmp false <16 x float> %{{.*}}, %{{.*}}
1365 return _mm512_cmp_ps_mask(a
, b
, _CMP_FALSE_OQ
);
1368 __mmask16
test_mm512_cmp_ps_mask_neq_oq(__m512 a
, __m512 b
) {
1369 // CHECK-LABEL: test_mm512_cmp_ps_mask_neq_oq
1370 // CHECK: fcmp one <16 x float> %{{.*}}, %{{.*}}
1371 return _mm512_cmp_ps_mask(a
, b
, _CMP_NEQ_OQ
);
1374 __mmask16
test_mm512_cmp_ps_mask_ge_os(__m512 a
, __m512 b
) {
1375 // CHECK-LABEL: test_mm512_cmp_ps_mask_ge_os
1376 // CHECK: fcmp oge <16 x float> %{{.*}}, %{{.*}}
1377 return _mm512_cmp_ps_mask(a
, b
, _CMP_GE_OS
);
1380 __mmask16
test_mm512_cmp_ps_mask_gt_os(__m512 a
, __m512 b
) {
1381 // CHECK-LABEL: test_mm512_cmp_ps_mask_gt_os
1382 // CHECK: fcmp ogt <16 x float> %{{.*}}, %{{.*}}
1383 return _mm512_cmp_ps_mask(a
, b
, _CMP_GT_OS
);
1386 __mmask16
test_mm512_cmp_ps_mask_true_uq(__m512 a
, __m512 b
) {
1387 // CHECK-LABEL: test_mm512_cmp_ps_mask_true_uq
1388 // CHECK: fcmp true <16 x float> %{{.*}}, %{{.*}}
1389 return _mm512_cmp_ps_mask(a
, b
, _CMP_TRUE_UQ
);
1392 __mmask16
test_mm512_cmp_ps_mask_eq_os(__m512 a
, __m512 b
) {
1393 // CHECK-LABEL: test_mm512_cmp_ps_mask_eq_os
1394 // CHECK: fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1395 return _mm512_cmp_ps_mask(a
, b
, _CMP_EQ_OS
);
1398 __mmask16
test_mm512_cmp_ps_mask_lt_oq(__m512 a
, __m512 b
) {
1399 // CHECK-LABEL: test_mm512_cmp_ps_mask_lt_oq
1400 // CHECK: fcmp olt <16 x float> %{{.*}}, %{{.*}}
1401 return _mm512_cmp_ps_mask(a
, b
, _CMP_LT_OQ
);
1404 __mmask16
test_mm512_cmp_ps_mask_le_oq(__m512 a
, __m512 b
) {
1405 // CHECK-LABEL: test_mm512_cmp_ps_mask_le_oq
1406 // CHECK: fcmp ole <16 x float> %{{.*}}, %{{.*}}
1407 return _mm512_cmp_ps_mask(a
, b
, _CMP_LE_OQ
);
1410 __mmask16
test_mm512_cmp_ps_mask_unord_s(__m512 a
, __m512 b
) {
1411 // CHECK-LABEL: test_mm512_cmp_ps_mask_unord_s
1412 // CHECK: fcmp uno <16 x float> %{{.*}}, %{{.*}}
1413 return _mm512_cmp_ps_mask(a
, b
, _CMP_UNORD_S
);
1416 __mmask16
test_mm512_cmp_ps_mask_neq_us(__m512 a
, __m512 b
) {
1417 // CHECK-LABEL: test_mm512_cmp_ps_mask_neq_us
1418 // CHECK: fcmp une <16 x float> %{{.*}}, %{{.*}}
1419 return _mm512_cmp_ps_mask(a
, b
, _CMP_NEQ_US
);
1422 __mmask16
test_mm512_cmp_ps_mask_nlt_uq(__m512 a
, __m512 b
) {
1423 // CHECK-LABEL: test_mm512_cmp_ps_mask_nlt_uq
1424 // CHECK: fcmp uge <16 x float> %{{.*}}, %{{.*}}
1425 return _mm512_cmp_ps_mask(a
, b
, _CMP_NLT_UQ
);
1428 __mmask16
test_mm512_cmp_ps_mask_nle_uq(__m512 a
, __m512 b
) {
1429 // CHECK-LABEL: test_mm512_cmp_ps_mask_nle_uq
1430 // CHECK: fcmp ugt <16 x float> %{{.*}}, %{{.*}}
1431 return _mm512_cmp_ps_mask(a
, b
, _CMP_NLE_UQ
);
1434 __mmask16
test_mm512_cmp_ps_mask_ord_s(__m512 a
, __m512 b
) {
1435 // CHECK-LABEL: test_mm512_cmp_ps_mask_ord_s
1436 // CHECK: fcmp ord <16 x float> %{{.*}}, %{{.*}}
1437 return _mm512_cmp_ps_mask(a
, b
, _CMP_ORD_S
);
1440 __mmask16
test_mm512_cmp_ps_mask_eq_us(__m512 a
, __m512 b
) {
1441 // CHECK-LABEL: test_mm512_cmp_ps_mask_eq_us
1442 // CHECK: fcmp ueq <16 x float> %{{.*}}, %{{.*}}
1443 return _mm512_cmp_ps_mask(a
, b
, _CMP_EQ_US
);
1446 __mmask16
test_mm512_cmp_ps_mask_nge_uq(__m512 a
, __m512 b
) {
1447 // CHECK-LABEL: test_mm512_cmp_ps_mask_nge_uq
1448 // CHECK: fcmp ult <16 x float> %{{.*}}, %{{.*}}
1449 return _mm512_cmp_ps_mask(a
, b
, _CMP_NGE_UQ
);
1452 __mmask16
test_mm512_cmp_ps_mask_ngt_uq(__m512 a
, __m512 b
) {
1453 // CHECK-LABEL: test_mm512_cmp_ps_mask_ngt_uq
1454 // CHECK: fcmp ule <16 x float> %{{.*}}, %{{.*}}
1455 return _mm512_cmp_ps_mask(a
, b
, _CMP_NGT_UQ
);
1458 __mmask16
test_mm512_cmp_ps_mask_false_os(__m512 a
, __m512 b
) {
1459 // CHECK-LABEL: test_mm512_cmp_ps_mask_false_os
1460 // CHECK: fcmp false <16 x float> %{{.*}}, %{{.*}}
1461 return _mm512_cmp_ps_mask(a
, b
, _CMP_FALSE_OS
);
1464 __mmask16
test_mm512_cmp_ps_mask_neq_os(__m512 a
, __m512 b
) {
1465 // CHECK-LABEL: test_mm512_cmp_ps_mask_neq_os
1466 // CHECK: fcmp one <16 x float> %{{.*}}, %{{.*}}
1467 return _mm512_cmp_ps_mask(a
, b
, _CMP_NEQ_OS
);
1470 __mmask16
test_mm512_cmp_ps_mask_ge_oq(__m512 a
, __m512 b
) {
1471 // CHECK-LABEL: test_mm512_cmp_ps_mask_ge_oq
1472 // CHECK: fcmp oge <16 x float> %{{.*}}, %{{.*}}
1473 return _mm512_cmp_ps_mask(a
, b
, _CMP_GE_OQ
);
1476 __mmask16
test_mm512_cmp_ps_mask_gt_oq(__m512 a
, __m512 b
) {
1477 // CHECK-LABEL: test_mm512_cmp_ps_mask_gt_oq
1478 // CHECK: fcmp ogt <16 x float> %{{.*}}, %{{.*}}
1479 return _mm512_cmp_ps_mask(a
, b
, _CMP_GT_OQ
);
1482 __mmask16
test_mm512_cmp_ps_mask_true_us(__m512 a
, __m512 b
) {
1483 // CHECK-LABEL: test_mm512_cmp_ps_mask_true_us
1484 // CHECK: fcmp true <16 x float> %{{.*}}, %{{.*}}
1485 return _mm512_cmp_ps_mask(a
, b
, _CMP_TRUE_US
);
1488 __mmask16
test_mm512_mask_cmp_ps_mask_eq_oq(__mmask16 m
, __m512 a
, __m512 b
) {
1489 // CHECK-LABEL: @test_mm512_mask_cmp_ps_mask_eq_oq
1490 // CHECK: [[CMP:%.*]] = fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1491 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1492 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_EQ_OQ
);
1495 __mmask16
test_mm512_mask_cmp_ps_mask_lt_os(__mmask16 m
, __m512 a
, __m512 b
) {
1496 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_lt_os
1497 // CHECK: [[CMP:%.*]] = fcmp olt <16 x float> %{{.*}}, %{{.*}}
1498 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1499 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_LT_OS
);
1502 __mmask16
test_mm512_mask_cmp_ps_mask_le_os(__mmask16 m
, __m512 a
, __m512 b
) {
1503 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_le_os
1504 // CHECK: [[CMP:%.*]] = fcmp ole <16 x float> %{{.*}}, %{{.*}}
1505 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1506 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_LE_OS
);
1509 __mmask16
test_mm512_mask_cmp_ps_mask_unord_q(__mmask16 m
, __m512 a
, __m512 b
) {
1510 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_unord_q
1511 // CHECK: [[CMP:%.*]] = fcmp uno <16 x float> %{{.*}}, %{{.*}}
1512 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1513 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_UNORD_Q
);
1516 __mmask16
test_mm512_mask_cmp_ps_mask_neq_uq(__mmask16 m
, __m512 a
, __m512 b
) {
1517 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_neq_uq
1518 // CHECK: [[CMP:%.*]] = fcmp une <16 x float> %{{.*}}, %{{.*}}
1519 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1520 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_NEQ_UQ
);
1523 __mmask16
test_mm512_mask_cmp_ps_mask_nlt_us(__mmask16 m
, __m512 a
, __m512 b
) {
1524 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nlt_us
1525 // CHECK: [[CMP:%.*]] = fcmp uge <16 x float> %{{.*}}, %{{.*}}
1526 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1527 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_NLT_US
);
1530 __mmask16
test_mm512_mask_cmp_ps_mask_nle_us(__mmask16 m
, __m512 a
, __m512 b
) {
1531 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nle_us
1532 // CHECK: [[CMP:%.*]] = fcmp ugt <16 x float> %{{.*}}, %{{.*}}
1533 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1534 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_NLE_US
);
1537 __mmask16
test_mm512_mask_cmp_ps_mask_ord_q(__mmask16 m
, __m512 a
, __m512 b
) {
1538 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ord_q
1539 // CHECK: [[CMP:%.*]] = fcmp ord <16 x float> %{{.*}}, %{{.*}}
1540 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1541 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_ORD_Q
);
1544 __mmask16
test_mm512_mask_cmp_ps_mask_eq_uq(__mmask16 m
, __m512 a
, __m512 b
) {
1545 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_eq_uq
1546 // CHECK: [[CMP:%.*]] = fcmp ueq <16 x float> %{{.*}}, %{{.*}}
1547 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1548 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_EQ_UQ
);
1551 __mmask16
test_mm512_mask_cmp_ps_mask_nge_us(__mmask16 m
, __m512 a
, __m512 b
) {
1552 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nge_us
1553 // CHECK: [[CMP:%.*]] = fcmp ult <16 x float> %{{.*}}, %{{.*}}
1554 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1555 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_NGE_US
);
1558 __mmask16
test_mm512_mask_cmp_ps_mask_ngt_us(__mmask16 m
, __m512 a
, __m512 b
) {
1559 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ngt_us
1560 // CHECK: [[CMP:%.*]] = fcmp ule <16 x float> %{{.*}}, %{{.*}}
1561 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1562 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_NGT_US
);
1565 __mmask16
test_mm512_mask_cmp_ps_mask_false_oq(__mmask16 m
, __m512 a
, __m512 b
) {
1566 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_false_oq
1567 // CHECK: [[CMP:%.*]] = fcmp false <16 x float> %{{.*}}, %{{.*}}
1568 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1569 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_FALSE_OQ
);
1572 __mmask16
test_mm512_mask_cmp_ps_mask_neq_oq(__mmask16 m
, __m512 a
, __m512 b
) {
1573 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_neq_oq
1574 // CHECK: [[CMP:%.*]] = fcmp one <16 x float> %{{.*}}, %{{.*}}
1575 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1576 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_NEQ_OQ
);
1579 __mmask16
test_mm512_mask_cmp_ps_mask_ge_os(__mmask16 m
, __m512 a
, __m512 b
) {
1580 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ge_os
1581 // CHECK: [[CMP:%.*]] = fcmp oge <16 x float> %{{.*}}, %{{.*}}
1582 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1583 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_GE_OS
);
1586 __mmask16
test_mm512_mask_cmp_ps_mask_gt_os(__mmask16 m
, __m512 a
, __m512 b
) {
1587 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_gt_os
1588 // CHECK: [[CMP:%.*]] = fcmp ogt <16 x float> %{{.*}}, %{{.*}}
1589 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1590 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_GT_OS
);
1593 __mmask16
test_mm512_mask_cmp_ps_mask_true_uq(__mmask16 m
, __m512 a
, __m512 b
) {
1594 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_true_uq
1595 // CHECK: [[CMP:%.*]] = fcmp true <16 x float> %{{.*}}, %{{.*}}
1596 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1597 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_TRUE_UQ
);
1600 __mmask16
test_mm512_mask_cmp_ps_mask_eq_os(__mmask16 m
, __m512 a
, __m512 b
) {
1601 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_eq_os
1602 // CHECK: [[CMP:%.*]] = fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1603 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1604 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_EQ_OS
);
1607 __mmask16
test_mm512_mask_cmp_ps_mask_lt_oq(__mmask16 m
, __m512 a
, __m512 b
) {
1608 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_lt_oq
1609 // CHECK: [[CMP:%.*]] = fcmp olt <16 x float> %{{.*}}, %{{.*}}
1610 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1611 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_LT_OQ
);
1614 __mmask16
test_mm512_mask_cmp_ps_mask_le_oq(__mmask16 m
, __m512 a
, __m512 b
) {
1615 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_le_oq
1616 // CHECK: [[CMP:%.*]] = fcmp ole <16 x float> %{{.*}}, %{{.*}}
1617 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1618 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_LE_OQ
);
1621 __mmask16
test_mm512_mask_cmp_ps_mask_unord_s(__mmask16 m
, __m512 a
, __m512 b
) {
1622 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_unord_s
1623 // CHECK: [[CMP:%.*]] = fcmp uno <16 x float> %{{.*}}, %{{.*}}
1624 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1625 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_UNORD_S
);
1628 __mmask16
test_mm512_mask_cmp_ps_mask_neq_us(__mmask16 m
, __m512 a
, __m512 b
) {
1629 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_neq_us
1630 // CHECK: [[CMP:%.*]] = fcmp une <16 x float> %{{.*}}, %{{.*}}
1631 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1632 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_NEQ_US
);
1635 __mmask16
test_mm512_mask_cmp_ps_mask_nlt_uq(__mmask16 m
, __m512 a
, __m512 b
) {
1636 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nlt_uq
1637 // CHECK: [[CMP:%.*]] = fcmp uge <16 x float> %{{.*}}, %{{.*}}
1638 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1639 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_NLT_UQ
);
1642 __mmask16
test_mm512_mask_cmp_ps_mask_nle_uq(__mmask16 m
, __m512 a
, __m512 b
) {
1643 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nle_uq
1644 // CHECK: [[CMP:%.*]] = fcmp ugt <16 x float> %{{.*}}, %{{.*}}
1645 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1646 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_NLE_UQ
);
1649 __mmask16
test_mm512_mask_cmp_ps_mask_ord_s(__mmask16 m
, __m512 a
, __m512 b
) {
1650 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ord_s
1651 // CHECK: [[CMP:%.*]] = fcmp ord <16 x float> %{{.*}}, %{{.*}}
1652 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1653 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_ORD_S
);
1656 __mmask16
test_mm512_mask_cmp_ps_mask_eq_us(__mmask16 m
, __m512 a
, __m512 b
) {
1657 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_eq_us
1658 // CHECK: [[CMP:%.*]] = fcmp ueq <16 x float> %{{.*}}, %{{.*}}
1659 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1660 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_EQ_US
);
1663 __mmask16
test_mm512_mask_cmp_ps_mask_nge_uq(__mmask16 m
, __m512 a
, __m512 b
) {
1664 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nge_uq
1665 // CHECK: [[CMP:%.*]] = fcmp ult <16 x float> %{{.*}}, %{{.*}}
1666 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1667 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_NGE_UQ
);
1670 __mmask16
test_mm512_mask_cmp_ps_mask_ngt_uq(__mmask16 m
, __m512 a
, __m512 b
) {
1671 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ngt_uq
1672 // CHECK: [[CMP:%.*]] = fcmp ule <16 x float> %{{.*}}, %{{.*}}
1673 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1674 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_NGT_UQ
);
1677 __mmask16
test_mm512_mask_cmp_ps_mask_false_os(__mmask16 m
, __m512 a
, __m512 b
) {
1678 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_false_os
1679 // CHECK: [[CMP:%.*]] = fcmp false <16 x float> %{{.*}}, %{{.*}}
1680 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1681 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_FALSE_OS
);
1684 __mmask16
test_mm512_mask_cmp_ps_mask_neq_os(__mmask16 m
, __m512 a
, __m512 b
) {
1685 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_neq_os
1686 // CHECK: [[CMP:%.*]] = fcmp one <16 x float> %{{.*}}, %{{.*}}
1687 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1688 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_NEQ_OS
);
1691 __mmask16
test_mm512_mask_cmp_ps_mask_ge_oq(__mmask16 m
, __m512 a
, __m512 b
) {
1692 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ge_oq
1693 // CHECK: [[CMP:%.*]] = fcmp oge <16 x float> %{{.*}}, %{{.*}}
1694 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1695 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_GE_OQ
);
1698 __mmask16
test_mm512_mask_cmp_ps_mask_gt_oq(__mmask16 m
, __m512 a
, __m512 b
) {
1699 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_gt_oq
1700 // CHECK: [[CMP:%.*]] = fcmp ogt <16 x float> %{{.*}}, %{{.*}}
1701 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1702 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_GT_OQ
);
1705 __mmask16
test_mm512_mask_cmp_ps_mask_true_us(__mmask16 m
, __m512 a
, __m512 b
) {
1706 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_true_us
1707 // CHECK: [[CMP:%.*]] = fcmp true <16 x float> %{{.*}}, %{{.*}}
1708 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1709 return _mm512_mask_cmp_ps_mask(m
, a
, b
, _CMP_TRUE_US
);
1712 __mmask8
test_mm512_cmp_round_pd_mask(__m512d a
, __m512d b
) {
1713 // CHECK-LABEL: @test_mm512_cmp_round_pd_mask
1714 // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
1715 return _mm512_cmp_round_pd_mask(a
, b
, _CMP_EQ_OQ
, _MM_FROUND_NO_EXC
);
1718 __mmask8
test_mm512_mask_cmp_round_pd_mask(__mmask8 m
, __m512d a
, __m512d b
) {
1719 // CHECK-LABEL: @test_mm512_mask_cmp_round_pd_mask
1720 // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
1721 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1722 return _mm512_mask_cmp_round_pd_mask(m
, a
, b
, _CMP_EQ_OQ
, _MM_FROUND_NO_EXC
);
1725 __mmask8
test_mm512_cmp_pd_mask_eq_oq(__m512d a
, __m512d b
) {
1726 // CHECK-LABEL: @test_mm512_cmp_pd_mask_eq_oq
1727 // CHECK: fcmp oeq <8 x double> %{{.*}}, %{{.*}}
1728 return _mm512_cmp_pd_mask(a
, b
, _CMP_EQ_OQ
);
1731 __mmask8
test_mm512_cmp_pd_mask_lt_os(__m512d a
, __m512d b
) {
1732 // CHECK-LABEL: test_mm512_cmp_pd_mask_lt_os
1733 // CHECK: fcmp olt <8 x double> %{{.*}}, %{{.*}}
1734 return _mm512_cmp_pd_mask(a
, b
, _CMP_LT_OS
);
1737 __mmask8
test_mm512_cmp_pd_mask_le_os(__m512d a
, __m512d b
) {
1738 // CHECK-LABEL: test_mm512_cmp_pd_mask_le_os
1739 // CHECK: fcmp ole <8 x double> %{{.*}}, %{{.*}}
1740 return _mm512_cmp_pd_mask(a
, b
, _CMP_LE_OS
);
1743 __mmask8
test_mm512_cmp_pd_mask_unord_q(__m512d a
, __m512d b
) {
1744 // CHECK-LABEL: test_mm512_cmp_pd_mask_unord_q
1745 // CHECK: fcmp uno <8 x double> %{{.*}}, %{{.*}}
1746 return _mm512_cmp_pd_mask(a
, b
, _CMP_UNORD_Q
);
1749 __mmask8
test_mm512_cmp_pd_mask_neq_uq(__m512d a
, __m512d b
) {
1750 // CHECK-LABEL: test_mm512_cmp_pd_mask_neq_uq
1751 // CHECK: fcmp une <8 x double> %{{.*}}, %{{.*}}
1752 return _mm512_cmp_pd_mask(a
, b
, _CMP_NEQ_UQ
);
1755 __mmask8
test_mm512_cmp_pd_mask_nlt_us(__m512d a
, __m512d b
) {
1756 // CHECK-LABEL: test_mm512_cmp_pd_mask_nlt_us
1757 // CHECK: fcmp uge <8 x double> %{{.*}}, %{{.*}}
1758 return _mm512_cmp_pd_mask(a
, b
, _CMP_NLT_US
);
1761 __mmask8
test_mm512_cmp_pd_mask_nle_us(__m512d a
, __m512d b
) {
1762 // CHECK-LABEL: test_mm512_cmp_pd_mask_nle_us
1763 // CHECK: fcmp ugt <8 x double> %{{.*}}, %{{.*}}
1764 return _mm512_cmp_pd_mask(a
, b
, _CMP_NLE_US
);
1767 __mmask8
test_mm512_cmp_pd_mask_ord_q(__m512d a
, __m512d b
) {
1768 // CHECK-LABEL: test_mm512_cmp_pd_mask_ord_q
1769 // CHECK: fcmp ord <8 x double> %{{.*}}, %{{.*}}
1770 return _mm512_cmp_pd_mask(a
, b
, _CMP_ORD_Q
);
1773 __mmask8
test_mm512_cmp_pd_mask_eq_uq(__m512d a
, __m512d b
) {
1774 // CHECK-LABEL: test_mm512_cmp_pd_mask_eq_uq
1775 // CHECK: fcmp ueq <8 x double> %{{.*}}, %{{.*}}
1776 return _mm512_cmp_pd_mask(a
, b
, _CMP_EQ_UQ
);
1779 __mmask8
test_mm512_cmp_pd_mask_nge_us(__m512d a
, __m512d b
) {
1780 // CHECK-LABEL: test_mm512_cmp_pd_mask_nge_us
1781 // CHECK: fcmp ult <8 x double> %{{.*}}, %{{.*}}
1782 return _mm512_cmp_pd_mask(a
, b
, _CMP_NGE_US
);
1785 __mmask8
test_mm512_cmp_pd_mask_ngt_us(__m512d a
, __m512d b
) {
1786 // CHECK-LABEL: test_mm512_cmp_pd_mask_ngt_us
1787 // CHECK: fcmp ule <8 x double> %{{.*}}, %{{.*}}
1788 return _mm512_cmp_pd_mask(a
, b
, _CMP_NGT_US
);
1791 __mmask8
test_mm512_cmp_pd_mask_false_oq(__m512d a
, __m512d b
) {
1792 // CHECK-LABEL: test_mm512_cmp_pd_mask_false_oq
1793 // CHECK: fcmp false <8 x double> %{{.*}}, %{{.*}}
1794 return _mm512_cmp_pd_mask(a
, b
, _CMP_FALSE_OQ
);
1797 __mmask8
test_mm512_cmp_pd_mask_neq_oq(__m512d a
, __m512d b
) {
1798 // CHECK-LABEL: test_mm512_cmp_pd_mask_neq_oq
1799 // CHECK: fcmp one <8 x double> %{{.*}}, %{{.*}}
1800 return _mm512_cmp_pd_mask(a
, b
, _CMP_NEQ_OQ
);
1803 __mmask8
test_mm512_cmp_pd_mask_ge_os(__m512d a
, __m512d b
) {
1804 // CHECK-LABEL: test_mm512_cmp_pd_mask_ge_os
1805 // CHECK: fcmp oge <8 x double> %{{.*}}, %{{.*}}
1806 return _mm512_cmp_pd_mask(a
, b
, _CMP_GE_OS
);
1809 __mmask8
test_mm512_cmp_pd_mask_gt_os(__m512d a
, __m512d b
) {
1810 // CHECK-LABEL: test_mm512_cmp_pd_mask_gt_os
1811 // CHECK: fcmp ogt <8 x double> %{{.*}}, %{{.*}}
1812 return _mm512_cmp_pd_mask(a
, b
, _CMP_GT_OS
);
1815 __mmask8
test_mm512_cmp_pd_mask_true_uq(__m512d a
, __m512d b
) {
1816 // CHECK-LABEL: test_mm512_cmp_pd_mask_true_uq
1817 // CHECK: fcmp true <8 x double> %{{.*}}, %{{.*}}
1818 return _mm512_cmp_pd_mask(a
, b
, _CMP_TRUE_UQ
);
1821 __mmask8
test_mm512_cmp_pd_mask_eq_os(__m512d a
, __m512d b
) {
1822 // CHECK-LABEL: test_mm512_cmp_pd_mask_eq_os
1823 // CHECK: fcmp oeq <8 x double> %{{.*}}, %{{.*}}
1824 return _mm512_cmp_pd_mask(a
, b
, _CMP_EQ_OS
);
1827 __mmask8
test_mm512_cmp_pd_mask_lt_oq(__m512d a
, __m512d b
) {
1828 // CHECK-LABEL: test_mm512_cmp_pd_mask_lt_oq
1829 // CHECK: fcmp olt <8 x double> %{{.*}}, %{{.*}}
1830 return _mm512_cmp_pd_mask(a
, b
, _CMP_LT_OQ
);
1833 __mmask8
test_mm512_cmp_pd_mask_le_oq(__m512d a
, __m512d b
) {
1834 // CHECK-LABEL: test_mm512_cmp_pd_mask_le_oq
1835 // CHECK: fcmp ole <8 x double> %{{.*}}, %{{.*}}
1836 return _mm512_cmp_pd_mask(a
, b
, _CMP_LE_OQ
);
1839 __mmask8
test_mm512_cmp_pd_mask_unord_s(__m512d a
, __m512d b
) {
1840 // CHECK-LABEL: test_mm512_cmp_pd_mask_unord_s
1841 // CHECK: fcmp uno <8 x double> %{{.*}}, %{{.*}}
1842 return _mm512_cmp_pd_mask(a
, b
, _CMP_UNORD_S
);
1845 __mmask8
test_mm512_cmp_pd_mask_neq_us(__m512d a
, __m512d b
) {
1846 // CHECK-LABEL: test_mm512_cmp_pd_mask_neq_us
1847 // CHECK: fcmp une <8 x double> %{{.*}}, %{{.*}}
1848 return _mm512_cmp_pd_mask(a
, b
, _CMP_NEQ_US
);
1851 __mmask8
test_mm512_cmp_pd_mask_nlt_uq(__m512d a
, __m512d b
) {
1852 // CHECK-LABEL: test_mm512_cmp_pd_mask_nlt_uq
1853 // CHECK: fcmp uge <8 x double> %{{.*}}, %{{.*}}
1854 return _mm512_cmp_pd_mask(a
, b
, _CMP_NLT_UQ
);
1857 __mmask8
test_mm512_cmp_pd_mask_nle_uq(__m512d a
, __m512d b
) {
1858 // CHECK-LABEL: test_mm512_cmp_pd_mask_nle_uq
1859 // CHECK: fcmp ugt <8 x double> %{{.*}}, %{{.*}}
1860 return _mm512_cmp_pd_mask(a
, b
, _CMP_NLE_UQ
);
1863 __mmask8
test_mm512_cmp_pd_mask_ord_s(__m512d a
, __m512d b
) {
1864 // CHECK-LABEL: test_mm512_cmp_pd_mask_ord_s
1865 // CHECK: fcmp ord <8 x double> %{{.*}}, %{{.*}}
1866 return _mm512_cmp_pd_mask(a
, b
, _CMP_ORD_S
);
1869 __mmask8
test_mm512_cmp_pd_mask_eq_us(__m512d a
, __m512d b
) {
1870 // CHECK-LABEL: test_mm512_cmp_pd_mask_eq_us
1871 // CHECK: fcmp ueq <8 x double> %{{.*}}, %{{.*}}
1872 return _mm512_cmp_pd_mask(a
, b
, _CMP_EQ_US
);
1875 __mmask8
test_mm512_cmp_pd_mask_nge_uq(__m512d a
, __m512d b
) {
1876 // CHECK-LABEL: test_mm512_cmp_pd_mask_nge_uq
1877 // CHECK: fcmp ult <8 x double> %{{.*}}, %{{.*}}
1878 return _mm512_cmp_pd_mask(a
, b
, _CMP_NGE_UQ
);
1881 __mmask8
test_mm512_cmp_pd_mask_ngt_uq(__m512d a
, __m512d b
) {
1882 // CHECK-LABEL: test_mm512_cmp_pd_mask_ngt_uq
1883 // CHECK: fcmp ule <8 x double> %{{.*}}, %{{.*}}
1884 return _mm512_cmp_pd_mask(a
, b
, _CMP_NGT_UQ
);
1887 __mmask8
test_mm512_cmp_pd_mask_false_os(__m512d a
, __m512d b
) {
1888 // CHECK-LABEL: test_mm512_cmp_pd_mask_false_os
1889 // CHECK: fcmp false <8 x double> %{{.*}}, %{{.*}}
1890 return _mm512_cmp_pd_mask(a
, b
, _CMP_FALSE_OS
);
1893 __mmask8
test_mm512_cmp_pd_mask_neq_os(__m512d a
, __m512d b
) {
1894 // CHECK-LABEL: test_mm512_cmp_pd_mask_neq_os
1895 // CHECK: fcmp one <8 x double> %{{.*}}, %{{.*}}
1896 return _mm512_cmp_pd_mask(a
, b
, _CMP_NEQ_OS
);
1899 __mmask8
test_mm512_cmp_pd_mask_ge_oq(__m512d a
, __m512d b
) {
1900 // CHECK-LABEL: test_mm512_cmp_pd_mask_ge_oq
1901 // CHECK: fcmp oge <8 x double> %{{.*}}, %{{.*}}
1902 return _mm512_cmp_pd_mask(a
, b
, _CMP_GE_OQ
);
1905 __mmask8
test_mm512_cmp_pd_mask_gt_oq(__m512d a
, __m512d b
) {
1906 // CHECK-LABEL: test_mm512_cmp_pd_mask_gt_oq
1907 // CHECK: fcmp ogt <8 x double> %{{.*}}, %{{.*}}
1908 return _mm512_cmp_pd_mask(a
, b
, _CMP_GT_OQ
);
1911 __mmask8
test_mm512_cmp_pd_mask_true_us(__m512d a
, __m512d b
) {
1912 // CHECK-LABEL: test_mm512_cmp_pd_mask_true_us
1913 // CHECK: fcmp true <8 x double> %{{.*}}, %{{.*}}
1914 return _mm512_cmp_pd_mask(a
, b
, _CMP_TRUE_US
);
1917 __mmask8
test_mm512_mask_cmp_pd_mask_eq_oq(__mmask8 m
, __m512d a
, __m512d b
) {
1918 // CHECK-LABEL: @test_mm512_mask_cmp_pd_mask_eq_oq
1919 // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
1920 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1921 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_EQ_OQ
);
1924 __mmask8
test_mm512_mask_cmp_pd_mask_lt_os(__mmask8 m
, __m512d a
, __m512d b
) {
1925 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_lt_os
1926 // CHECK: [[CMP:%.*]] = fcmp olt <8 x double> %{{.*}}, %{{.*}}
1927 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1928 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_LT_OS
);
1931 __mmask8
test_mm512_mask_cmp_pd_mask_le_os(__mmask8 m
, __m512d a
, __m512d b
) {
1932 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_le_os
1933 // CHECK: [[CMP:%.*]] = fcmp ole <8 x double> %{{.*}}, %{{.*}}
1934 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1935 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_LE_OS
);
1938 __mmask8
test_mm512_mask_cmp_pd_mask_unord_q(__mmask8 m
, __m512d a
, __m512d b
) {
1939 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_unord_q
1940 // CHECK: [[CMP:%.*]] = fcmp uno <8 x double> %{{.*}}, %{{.*}}
1941 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1942 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_UNORD_Q
);
1945 __mmask8
test_mm512_mask_cmp_pd_mask_neq_uq(__mmask8 m
, __m512d a
, __m512d b
) {
1946 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_neq_uq
1947 // CHECK: [[CMP:%.*]] = fcmp une <8 x double> %{{.*}}, %{{.*}}
1948 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1949 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_NEQ_UQ
);
1952 __mmask8
test_mm512_mask_cmp_pd_mask_nlt_us(__mmask8 m
, __m512d a
, __m512d b
) {
1953 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nlt_us
1954 // CHECK: [[CMP:%.*]] = fcmp uge <8 x double> %{{.*}}, %{{.*}}
1955 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1956 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_NLT_US
);
1959 __mmask8
test_mm512_mask_cmp_pd_mask_nle_us(__mmask8 m
, __m512d a
, __m512d b
) {
1960 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nle_us
1961 // CHECK: [[CMP:%.*]] = fcmp ugt <8 x double> %{{.*}}, %{{.*}}
1962 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1963 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_NLE_US
);
1966 __mmask8
test_mm512_mask_cmp_pd_mask_ord_q(__mmask8 m
, __m512d a
, __m512d b
) {
1967 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ord_q
1968 // CHECK: [[CMP:%.*]] = fcmp ord <8 x double> %{{.*}}, %{{.*}}
1969 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1970 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_ORD_Q
);
1973 __mmask8
test_mm512_mask_cmp_pd_mask_eq_uq(__mmask8 m
, __m512d a
, __m512d b
) {
1974 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_eq_uq
1975 // CHECK: [[CMP:%.*]] = fcmp ueq <8 x double> %{{.*}}, %{{.*}}
1976 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1977 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_EQ_UQ
);
1980 __mmask8
test_mm512_mask_cmp_pd_mask_nge_us(__mmask8 m
, __m512d a
, __m512d b
) {
1981 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nge_us
1982 // CHECK: [[CMP:%.*]] = fcmp ult <8 x double> %{{.*}}, %{{.*}}
1983 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1984 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_NGE_US
);
1987 __mmask8
test_mm512_mask_cmp_pd_mask_ngt_us(__mmask8 m
, __m512d a
, __m512d b
) {
1988 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ngt_us
1989 // CHECK: [[CMP:%.*]] = fcmp ule <8 x double> %{{.*}}, %{{.*}}
1990 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1991 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_NGT_US
);
1994 __mmask8
test_mm512_mask_cmp_pd_mask_false_oq(__mmask8 m
, __m512d a
, __m512d b
) {
1995 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_false_oq
1996 // CHECK: [[CMP:%.*]] = fcmp false <8 x double> %{{.*}}, %{{.*}}
1997 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1998 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_FALSE_OQ
);
2001 __mmask8
test_mm512_mask_cmp_pd_mask_neq_oq(__mmask8 m
, __m512d a
, __m512d b
) {
2002 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_neq_oq
2003 // CHECK: [[CMP:%.*]] = fcmp one <8 x double> %{{.*}}, %{{.*}}
2004 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2005 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_NEQ_OQ
);
2008 __mmask8
test_mm512_mask_cmp_pd_mask_ge_os(__mmask8 m
, __m512d a
, __m512d b
) {
2009 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ge_os
2010 // CHECK: [[CMP:%.*]] = fcmp oge <8 x double> %{{.*}}, %{{.*}}
2011 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2012 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_GE_OS
);
2015 __mmask8
test_mm512_mask_cmp_pd_mask_gt_os(__mmask8 m
, __m512d a
, __m512d b
) {
2016 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_gt_os
2017 // CHECK: [[CMP:%.*]] = fcmp ogt <8 x double> %{{.*}}, %{{.*}}
2018 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2019 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_GT_OS
);
2022 __mmask8
test_mm512_mask_cmp_pd_mask_true_uq(__mmask8 m
, __m512d a
, __m512d b
) {
2023 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_true_uq
2024 // CHECK: [[CMP:%.*]] = fcmp true <8 x double> %{{.*}}, %{{.*}}
2025 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2026 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_TRUE_UQ
);
2029 __mmask8
test_mm512_mask_cmp_pd_mask_eq_os(__mmask8 m
, __m512d a
, __m512d b
) {
2030 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_eq_os
2031 // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
2032 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2033 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_EQ_OS
);
2036 __mmask8
test_mm512_mask_cmp_pd_mask_lt_oq(__mmask8 m
, __m512d a
, __m512d b
) {
2037 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_lt_oq
2038 // CHECK: [[CMP:%.*]] = fcmp olt <8 x double> %{{.*}}, %{{.*}}
2039 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2040 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_LT_OQ
);
2043 __mmask8
test_mm512_mask_cmp_pd_mask_le_oq(__mmask8 m
, __m512d a
, __m512d b
) {
2044 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_le_oq
2045 // CHECK: [[CMP:%.*]] = fcmp ole <8 x double> %{{.*}}, %{{.*}}
2046 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2047 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_LE_OQ
);
2050 __mmask8
test_mm512_mask_cmp_pd_mask_unord_s(__mmask8 m
, __m512d a
, __m512d b
) {
2051 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_unord_s
2052 // CHECK: [[CMP:%.*]] = fcmp uno <8 x double> %{{.*}}, %{{.*}}
2053 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2054 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_UNORD_S
);
2057 __mmask8
test_mm512_mask_cmp_pd_mask_neq_us(__mmask8 m
, __m512d a
, __m512d b
) {
2058 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_neq_us
2059 // CHECK: [[CMP:%.*]] = fcmp une <8 x double> %{{.*}}, %{{.*}}
2060 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2061 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_NEQ_US
);
2064 __mmask8
test_mm512_mask_cmp_pd_mask_nlt_uq(__mmask8 m
, __m512d a
, __m512d b
) {
2065 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nlt_uq
2066 // CHECK: [[CMP:%.*]] = fcmp uge <8 x double> %{{.*}}, %{{.*}}
2067 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2068 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_NLT_UQ
);
2071 __mmask8
test_mm512_mask_cmp_pd_mask_nle_uq(__mmask8 m
, __m512d a
, __m512d b
) {
2072 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nle_uq
2073 // CHECK: [[CMP:%.*]] = fcmp ugt <8 x double> %{{.*}}, %{{.*}}
2074 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2075 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_NLE_UQ
);
2078 __mmask8
test_mm512_mask_cmp_pd_mask_ord_s(__mmask8 m
, __m512d a
, __m512d b
) {
2079 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ord_s
2080 // CHECK: [[CMP:%.*]] = fcmp ord <8 x double> %{{.*}}, %{{.*}}
2081 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2082 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_ORD_S
);
2085 __mmask8
test_mm512_mask_cmp_pd_mask_eq_us(__mmask8 m
, __m512d a
, __m512d b
) {
2086 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_eq_us
2087 // CHECK: [[CMP:%.*]] = fcmp ueq <8 x double> %{{.*}}, %{{.*}}
2088 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2089 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_EQ_US
);
2092 __mmask8
test_mm512_mask_cmp_pd_mask_nge_uq(__mmask8 m
, __m512d a
, __m512d b
) {
2093 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nge_uq
2094 // CHECK: [[CMP:%.*]] = fcmp ult <8 x double> %{{.*}}, %{{.*}}
2095 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2096 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_NGE_UQ
);
2099 __mmask8
test_mm512_mask_cmp_pd_mask_ngt_uq(__mmask8 m
, __m512d a
, __m512d b
) {
2100 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ngt_uq
2101 // CHECK: [[CMP:%.*]] = fcmp ule <8 x double> %{{.*}}, %{{.*}}
2102 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2103 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_NGT_UQ
);
2106 __mmask8
test_mm512_mask_cmp_pd_mask_false_os(__mmask8 m
, __m512d a
, __m512d b
) {
2107 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_false_os
2108 // CHECK: [[CMP:%.*]] = fcmp false <8 x double> %{{.*}}, %{{.*}}
2109 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2110 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_FALSE_OS
);
2113 __mmask8
test_mm512_mask_cmp_pd_mask_neq_os(__mmask8 m
, __m512d a
, __m512d b
) {
2114 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_neq_os
2115 // CHECK: [[CMP:%.*]] = fcmp one <8 x double> %{{.*}}, %{{.*}}
2116 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2117 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_NEQ_OS
);
2120 __mmask8
test_mm512_mask_cmp_pd_mask_ge_oq(__mmask8 m
, __m512d a
, __m512d b
) {
2121 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ge_oq
2122 // CHECK: [[CMP:%.*]] = fcmp oge <8 x double> %{{.*}}, %{{.*}}
2123 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2124 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_GE_OQ
);
2127 __mmask8
test_mm512_mask_cmp_pd_mask_gt_oq(__mmask8 m
, __m512d a
, __m512d b
) {
2128 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_gt_oq
2129 // CHECK: [[CMP:%.*]] = fcmp ogt <8 x double> %{{.*}}, %{{.*}}
2130 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2131 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_GT_OQ
);
2134 __mmask8
test_mm512_mask_cmp_pd_mask_true_us(__mmask8 m
, __m512d a
, __m512d b
) {
2135 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_true_us
2136 // CHECK: [[CMP:%.*]] = fcmp true <8 x double> %{{.*}}, %{{.*}}
2137 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2138 return _mm512_mask_cmp_pd_mask(m
, a
, b
, _CMP_TRUE_US
);
2141 __mmask8
test_mm512_mask_cmp_pd_mask(__mmask8 m
, __m512d a
, __m512d b
) {
2142 // CHECK-LABEL: @test_mm512_mask_cmp_pd_mask
2143 // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
2144 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2145 return _mm512_mask_cmp_pd_mask(m
, a
, b
, 0);
2148 __mmask8
test_mm512_cmpeq_pd_mask(__m512d a
, __m512d b
) {
2149 // CHECK-LABEL: @test_mm512_cmpeq_pd_mask
2150 // CHECK: fcmp oeq <8 x double> %{{.*}}, %{{.*}}
2151 return _mm512_cmpeq_pd_mask(a
, b
);
2154 __mmask16
test_mm512_cmpeq_ps_mask(__m512 a
, __m512 b
) {
2155 // CHECK-LABEL: @test_mm512_cmpeq_ps_mask
2156 // CHECK: fcmp oeq <16 x float> %{{.*}}, %{{.*}}
2157 return _mm512_cmpeq_ps_mask(a
, b
);
2160 __mmask8
test_mm512_mask_cmpeq_pd_mask(__mmask8 k
, __m512d a
, __m512d b
) {
2161 // CHECK-LABEL: @test_mm512_mask_cmpeq_pd_mask
2162 // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
2163 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2164 return _mm512_mask_cmpeq_pd_mask(k
, a
, b
);
2167 __mmask16
test_mm512_mask_cmpeq_ps_mask(__mmask16 k
, __m512 a
, __m512 b
) {
2168 // CHECK-LABEL: @test_mm512_mask_cmpeq_ps_mask
2169 // CHECK: [[CMP:%.*]] = fcmp oeq <16 x float> %{{.*}}, %{{.*}}
2170 // CHECK: and <16 x i1> [[CMP]], {{.*}}
2171 return _mm512_mask_cmpeq_ps_mask(k
, a
, b
);
2174 __mmask8
test_mm512_cmple_pd_mask(__m512d a
, __m512d b
) {
2175 // CHECK-LABEL: @test_mm512_cmple_pd_mask
2176 // CHECK: fcmp ole <8 x double> %{{.*}}, %{{.*}}
2177 return _mm512_cmple_pd_mask(a
, b
);
2180 __mmask16
test_mm512_cmple_ps_mask(__m512 a
, __m512 b
) {
2181 // CHECK-LABEL: @test_mm512_cmple_ps_mask
2182 // CHECK: fcmp ole <16 x float> %{{.*}}, %{{.*}}
2183 return _mm512_cmple_ps_mask(a
, b
);
2186 __mmask8
test_mm512_mask_cmple_pd_mask(__mmask8 k
, __m512d a
, __m512d b
) {
2187 // CHECK-LABEL: @test_mm512_mask_cmple_pd_mask
2188 // CHECK: [[CMP:%.*]] = fcmp ole <8 x double> %{{.*}}, %{{.*}}
2189 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2190 return _mm512_mask_cmple_pd_mask(k
, a
, b
);
2193 __mmask16
test_mm512_mask_cmple_ps_mask(__mmask16 k
, __m512 a
, __m512 b
) {
2194 // CHECK-LABEL: @test_mm512_mask_cmple_ps_mask
2195 // CHECK: [[CMP:%.*]] = fcmp ole <16 x float> %{{.*}}, %{{.*}}
2196 // CHECK: and <16 x i1> [[CMP]], {{.*}}
2197 return _mm512_mask_cmple_ps_mask(k
, a
, b
);
2200 __mmask8
test_mm512_cmplt_pd_mask(__m512d a
, __m512d b
) {
2201 // CHECK-LABEL: @test_mm512_cmplt_pd_mask
2202 // CHECK: fcmp olt <8 x double> %{{.*}}, %{{.*}}
2203 return _mm512_cmplt_pd_mask(a
, b
);
2206 __mmask16
test_mm512_cmplt_ps_mask(__m512 a
, __m512 b
) {
2207 // CHECK-LABEL: @test_mm512_cmplt_ps_mask
2208 // CHECK: fcmp olt <16 x float> %{{.*}}, %{{.*}}
2209 return _mm512_cmplt_ps_mask(a
, b
);
2212 __mmask8
test_mm512_mask_cmplt_pd_mask(__mmask8 k
, __m512d a
, __m512d b
) {
2213 // CHECK-LABEL: @test_mm512_mask_cmplt_pd_mask
2214 // CHECK: [[CMP:%.*]] = fcmp olt <8 x double> %{{.*}}, %{{.*}}
2215 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2216 return _mm512_mask_cmplt_pd_mask(k
, a
, b
);
2219 __mmask16
test_mm512_mask_cmplt_ps_mask(__mmask16 k
, __m512 a
, __m512 b
) {
2220 // CHECK-LABEL: @test_mm512_mask_cmplt_ps_mask
2221 // CHECK: [[CMP:%.*]] = fcmp olt <16 x float> %{{.*}}, %{{.*}}
2222 // CHECK: and <16 x i1> [[CMP]], {{.*}}
2223 return _mm512_mask_cmplt_ps_mask(k
, a
, b
);
2226 __mmask8
test_mm512_cmpneq_pd_mask(__m512d a
, __m512d b
) {
2227 // CHECK-LABEL: @test_mm512_cmpneq_pd_mask
2228 // CHECK: fcmp une <8 x double> %{{.*}}, %{{.*}}
2229 return _mm512_cmpneq_pd_mask(a
, b
);
2232 __mmask16
test_mm512_cmpneq_ps_mask(__m512 a
, __m512 b
) {
2233 // CHECK-LABEL: @test_mm512_cmpneq_ps_mask
2234 // CHECK: fcmp une <16 x float> %{{.*}}, %{{.*}}
2235 return _mm512_cmpneq_ps_mask(a
, b
);
2238 __mmask8
test_mm512_mask_cmpneq_pd_mask(__mmask8 k
, __m512d a
, __m512d b
) {
2239 // CHECK-LABEL: @test_mm512_mask_cmpneq_pd_mask
2240 // CHECK: [[CMP:%.*]] = fcmp une <8 x double> %{{.*}}, %{{.*}}
2241 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2242 return _mm512_mask_cmpneq_pd_mask(k
, a
, b
);
2245 __mmask16
test_mm512_mask_cmpneq_ps_mask(__mmask16 k
, __m512 a
, __m512 b
) {
2246 // CHECK-LABEL: @test_mm512_mask_cmpneq_ps_mask
2247 // CHECK: [[CMP:%.*]] = fcmp une <16 x float> %{{.*}}, %{{.*}}
2248 // CHECK: and <16 x i1> [[CMP]], {{.*}}
2249 return _mm512_mask_cmpneq_ps_mask(k
, a
, b
);
2252 __mmask8
test_mm512_cmpnle_pd_mask(__m512d a
, __m512d b
) {
2253 // CHECK-LABEL: @test_mm512_cmpnle_pd_mask
2254 // CHECK: fcmp ugt <8 x double> %{{.*}}, %{{.*}}
2255 return _mm512_cmpnle_pd_mask(a
, b
);
2258 __mmask16
test_mm512_cmpnle_ps_mask(__m512 a
, __m512 b
) {
2259 // CHECK-LABEL: @test_mm512_cmpnle_ps_mask
2260 // CHECK: fcmp ugt <16 x float> %{{.*}}, %{{.*}}
2261 return _mm512_cmpnle_ps_mask(a
, b
);
2264 __mmask8
test_mm512_mask_cmpnle_pd_mask(__mmask8 k
, __m512d a
, __m512d b
) {
2265 // CHECK-LABEL: @test_mm512_mask_cmpnle_pd_mask
2266 // CHECK: [[CMP:%.*]] = fcmp ugt <8 x double> %{{.*}}, %{{.*}}
2267 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2268 return _mm512_mask_cmpnle_pd_mask(k
, a
, b
);
2271 __mmask16
test_mm512_mask_cmpnle_ps_mask(__mmask16 k
, __m512 a
, __m512 b
) {
2272 // CHECK-LABEL: @test_mm512_mask_cmpnle_ps_mask
2273 // CHECK: [[CMP:%.*]] = fcmp ugt <16 x float> %{{.*}}, %{{.*}}
2274 // CHECK: and <16 x i1> [[CMP]], {{.*}}
2275 return _mm512_mask_cmpnle_ps_mask(k
, a
, b
);
2278 __mmask8
test_mm512_cmpnlt_pd_mask(__m512d a
, __m512d b
) {
2279 // CHECK-LABEL: @test_mm512_cmpnlt_pd_mask
2280 // CHECK: fcmp uge <8 x double> %{{.*}}, %{{.*}}
2281 return _mm512_cmpnlt_pd_mask(a
, b
);
2284 __mmask16
test_mm512_cmpnlt_ps_mask(__m512 a
, __m512 b
) {
2285 // CHECK-LABEL: @test_mm512_cmpnlt_ps_mask
2286 // CHECK: fcmp uge <16 x float> %{{.*}}, %{{.*}}
2287 return _mm512_cmpnlt_ps_mask(a
, b
);
2290 __mmask8
test_mm512_mask_cmpnlt_pd_mask(__mmask8 k
, __m512d a
, __m512d b
) {
2291 // CHECK-LABEL: @test_mm512_mask_cmpnlt_pd_mask
2292 // CHECK: [[CMP:%.*]] = fcmp uge <8 x double> %{{.*}}, %{{.*}}
2293 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2294 return _mm512_mask_cmpnlt_pd_mask(k
, a
, b
);
2297 __mmask16
test_mm512_mask_cmpnlt_ps_mask(__mmask16 k
, __m512 a
, __m512 b
) {
2298 // CHECK-LABEL: @test_mm512_mask_cmpnlt_ps_mask
2299 // CHECK: [[CMP:%.*]] = fcmp uge <16 x float> %{{.*}}, %{{.*}}
2300 // CHECK: and <16 x i1> [[CMP]], {{.*}}
2301 return _mm512_mask_cmpnlt_ps_mask(k
, a
, b
);
2304 __mmask8
test_mm512_cmpord_pd_mask(__m512d a
, __m512d b
) {
2305 // CHECK-LABEL: @test_mm512_cmpord_pd_mask
2306 // CHECK: fcmp ord <8 x double> %{{.*}}, %{{.*}}
2307 return _mm512_cmpord_pd_mask(a
, b
);
2310 __mmask16
test_mm512_cmpord_ps_mask(__m512 a
, __m512 b
) {
2311 // CHECK-LABEL: @test_mm512_cmpord_ps_mask
2312 // CHECK: fcmp ord <16 x float> %{{.*}}, %{{.*}}
2313 return _mm512_cmpord_ps_mask(a
, b
);
2316 __mmask8
test_mm512_mask_cmpord_pd_mask(__mmask8 k
, __m512d a
, __m512d b
) {
2317 // CHECK-LABEL: @test_mm512_mask_cmpord_pd_mask
2318 // CHECK: [[CMP:%.*]] = fcmp ord <8 x double> %{{.*}}, %{{.*}}
2319 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2320 return _mm512_mask_cmpord_pd_mask(k
, a
, b
);
2323 __mmask16
test_mm512_mask_cmpord_ps_mask(__mmask16 k
, __m512 a
, __m512 b
) {
2324 // CHECK-LABEL: @test_mm512_mask_cmpord_ps_mask
2325 // CHECK: [[CMP:%.*]] = fcmp ord <16 x float> %{{.*}}, %{{.*}}
2326 // CHECK: and <16 x i1> [[CMP]], {{.*}}
2327 return _mm512_mask_cmpord_ps_mask(k
, a
, b
);
2330 __mmask8
test_mm512_cmpunord_pd_mask(__m512d a
, __m512d b
) {
2331 // CHECK-LABEL: @test_mm512_cmpunord_pd_mask
2332 // CHECK: fcmp uno <8 x double> %{{.*}}, %{{.*}}
2333 return _mm512_cmpunord_pd_mask(a
, b
);
2336 __mmask16
test_mm512_cmpunord_ps_mask(__m512 a
, __m512 b
) {
2337 // CHECK-LABEL: @test_mm512_cmpunord_ps_mask
2338 // CHECK: fcmp uno <16 x float> %{{.*}}, %{{.*}}
2339 return _mm512_cmpunord_ps_mask(a
, b
);
2342 __mmask8
test_mm512_mask_cmpunord_pd_mask(__mmask8 k
, __m512d a
, __m512d b
) {
2343 // CHECK-LABEL: @test_mm512_mask_cmpunord_pd_mask
2344 // CHECK: [[CMP:%.*]] = fcmp uno <8 x double> %{{.*}}, %{{.*}}
2345 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2346 return _mm512_mask_cmpunord_pd_mask(k
, a
, b
);
2349 __mmask16
test_mm512_mask_cmpunord_ps_mask(__mmask16 k
, __m512 a
, __m512 b
) {
2350 // CHECK-LABEL: @test_mm512_mask_cmpunord_ps_mask
2351 // CHECK: [[CMP:%.*]] = fcmp uno <16 x float> %{{.*}}, %{{.*}}
2352 // CHECK: and <16 x i1> [[CMP]], {{.*}}
2353 return _mm512_mask_cmpunord_ps_mask(k
, a
, b
);
2356 __m256d
test_mm512_extractf64x4_pd(__m512d a
)
2358 // CHECK-LABEL: @test_mm512_extractf64x4_pd
2359 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> poison, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2360 return _mm512_extractf64x4_pd(a
, 1);
2363 __m256d
test_mm512_mask_extractf64x4_pd(__m256d __W
,__mmask8 __U
,__m512d __A
){
2364 // CHECK-LABEL:@test_mm512_mask_extractf64x4_pd
2365 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> poison, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2366 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2367 return _mm512_mask_extractf64x4_pd( __W
, __U
, __A
, 1);
2370 __m256d
test_mm512_maskz_extractf64x4_pd(__mmask8 __U
,__m512d __A
){
2371 // CHECK-LABEL:@test_mm512_maskz_extractf64x4_pd
2372 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> poison, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2373 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2374 return _mm512_maskz_extractf64x4_pd( __U
, __A
, 1);
2377 __m128
test_mm512_extractf32x4_ps(__m512 a
)
2379 // CHECK-LABEL: @test_mm512_extractf32x4_ps
2380 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> poison, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2381 return _mm512_extractf32x4_ps(a
, 1);
2384 __m128
test_mm512_mask_extractf32x4_ps(__m128 __W
, __mmask8 __U
,__m512 __A
){
2385 // CHECK-LABEL:@test_mm512_mask_extractf32x4_ps
2386 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> poison, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2387 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
2388 return _mm512_mask_extractf32x4_ps( __W
, __U
, __A
, 1);
2391 __m128
test_mm512_maskz_extractf32x4_ps( __mmask8 __U
,__m512 __A
){
2392 // CHECK-LABEL:@test_mm512_maskz_extractf32x4_ps
2393 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> poison, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2394 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
2395 return _mm512_maskz_extractf32x4_ps(__U
, __A
, 1);
2398 __mmask16
test_mm512_cmpeq_epu32_mask(__m512i __a
, __m512i __b
) {
2399 // CHECK-LABEL: @test_mm512_cmpeq_epu32_mask
2400 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2401 return (__mmask16
)_mm512_cmpeq_epu32_mask(__a
, __b
);
2404 __mmask16
test_mm512_mask_cmpeq_epu32_mask(__mmask16 __u
, __m512i __a
, __m512i __b
) {
2405 // CHECK-LABEL: @test_mm512_mask_cmpeq_epu32_mask
2406 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2407 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2408 return (__mmask16
)_mm512_mask_cmpeq_epu32_mask(__u
, __a
, __b
);
2411 __mmask8
test_mm512_cmpeq_epu64_mask(__m512i __a
, __m512i __b
) {
2412 // CHECK-LABEL: @test_mm512_cmpeq_epu64_mask
2413 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2414 return (__mmask8
)_mm512_cmpeq_epu64_mask(__a
, __b
);
2417 __mmask8
test_mm512_mask_cmpeq_epu64_mask(__mmask8 __u
, __m512i __a
, __m512i __b
) {
2418 // CHECK-LABEL: @test_mm512_mask_cmpeq_epu64_mask
2419 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2420 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2421 return (__mmask8
)_mm512_mask_cmpeq_epu64_mask(__u
, __a
, __b
);
2424 __mmask16
test_mm512_cmpge_epi32_mask(__m512i __a
, __m512i __b
) {
2425 // CHECK-LABEL: @test_mm512_cmpge_epi32_mask
2426 // CHECK: icmp sge <16 x i32> %{{.*}}, %{{.*}}
2427 return (__mmask16
)_mm512_cmpge_epi32_mask(__a
, __b
);
2430 __mmask16
test_mm512_mask_cmpge_epi32_mask(__mmask16 __u
, __m512i __a
, __m512i __b
) {
2431 // CHECK-LABEL: @test_mm512_mask_cmpge_epi32_mask
2432 // CHECK: icmp sge <16 x i32> %{{.*}}, %{{.*}}
2433 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2434 return (__mmask16
)_mm512_mask_cmpge_epi32_mask(__u
, __a
, __b
);
2437 __mmask8
test_mm512_cmpge_epi64_mask(__m512i __a
, __m512i __b
) {
2438 // CHECK-LABEL: @test_mm512_cmpge_epi64_mask
2439 // CHECK: icmp sge <8 x i64> %{{.*}}, %{{.*}}
2440 return (__mmask8
)_mm512_cmpge_epi64_mask(__a
, __b
);
2443 __mmask8
test_mm512_mask_cmpge_epi64_mask(__mmask8 __u
, __m512i __a
, __m512i __b
) {
2444 // CHECK-LABEL: @test_mm512_mask_cmpge_epi64_mask
2445 // CHECK: icmp sge <8 x i64> %{{.*}}, %{{.*}}
2446 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2447 return (__mmask8
)_mm512_mask_cmpge_epi64_mask(__u
, __a
, __b
);
2450 __mmask16
test_mm512_cmpge_epu32_mask(__m512i __a
, __m512i __b
) {
2451 // CHECK-LABEL: @test_mm512_cmpge_epu32_mask
2452 // CHECK: icmp uge <16 x i32> %{{.*}}, %{{.*}}
2453 return (__mmask16
)_mm512_cmpge_epu32_mask(__a
, __b
);
2456 __mmask16
test_mm512_mask_cmpge_epu32_mask(__mmask16 __u
, __m512i __a
, __m512i __b
) {
2457 // CHECK-LABEL: @test_mm512_mask_cmpge_epu32_mask
2458 // CHECK: icmp uge <16 x i32> %{{.*}}, %{{.*}}
2459 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2460 return (__mmask16
)_mm512_mask_cmpge_epu32_mask(__u
, __a
, __b
);
2463 __mmask8
test_mm512_cmpge_epu64_mask(__m512i __a
, __m512i __b
) {
2464 // CHECK-LABEL: @test_mm512_cmpge_epu64_mask
2465 // CHECK: icmp uge <8 x i64> %{{.*}}, %{{.*}}
2466 return (__mmask8
)_mm512_cmpge_epu64_mask(__a
, __b
);
2469 __mmask8
test_mm512_mask_cmpge_epu64_mask(__mmask8 __u
, __m512i __a
, __m512i __b
) {
2470 // CHECK-LABEL: @test_mm512_mask_cmpge_epu64_mask
2471 // CHECK: icmp uge <8 x i64> %{{.*}}, %{{.*}}
2472 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2473 return (__mmask8
)_mm512_mask_cmpge_epu64_mask(__u
, __a
, __b
);
2476 __mmask16
test_mm512_cmpgt_epu32_mask(__m512i __a
, __m512i __b
) {
2477 // CHECK-LABEL: @test_mm512_cmpgt_epu32_mask
2478 // CHECK: icmp ugt <16 x i32> %{{.*}}, %{{.*}}
2479 return (__mmask16
)_mm512_cmpgt_epu32_mask(__a
, __b
);
2482 __mmask16
test_mm512_mask_cmpgt_epu32_mask(__mmask16 __u
, __m512i __a
, __m512i __b
) {
2483 // CHECK-LABEL: @test_mm512_mask_cmpgt_epu32_mask
2484 // CHECK: icmp ugt <16 x i32> %{{.*}}, %{{.*}}
2485 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2486 return (__mmask16
)_mm512_mask_cmpgt_epu32_mask(__u
, __a
, __b
);
2489 __mmask8
test_mm512_cmpgt_epu64_mask(__m512i __a
, __m512i __b
) {
2490 // CHECK-LABEL: @test_mm512_cmpgt_epu64_mask
2491 // CHECK: icmp ugt <8 x i64> %{{.*}}, %{{.*}}
2492 return (__mmask8
)_mm512_cmpgt_epu64_mask(__a
, __b
);
2495 __mmask8
test_mm512_mask_cmpgt_epu64_mask(__mmask8 __u
, __m512i __a
, __m512i __b
) {
2496 // CHECK-LABEL: @test_mm512_mask_cmpgt_epu64_mask
2497 // CHECK: icmp ugt <8 x i64> %{{.*}}, %{{.*}}
2498 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2499 return (__mmask8
)_mm512_mask_cmpgt_epu64_mask(__u
, __a
, __b
);
2502 __mmask16
test_mm512_cmple_epi32_mask(__m512i __a
, __m512i __b
) {
2503 // CHECK-LABEL: @test_mm512_cmple_epi32_mask
2504 // CHECK: icmp sle <16 x i32> %{{.*}}, %{{.*}}
2505 return (__mmask16
)_mm512_cmple_epi32_mask(__a
, __b
);
2508 __mmask16
test_mm512_mask_cmple_epi32_mask(__mmask16 __u
, __m512i __a
, __m512i __b
) {
2509 // CHECK-LABEL: @test_mm512_mask_cmple_epi32_mask
2510 // CHECK: icmp sle <16 x i32> %{{.*}}, %{{.*}}
2511 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2512 return (__mmask16
)_mm512_mask_cmple_epi32_mask(__u
, __a
, __b
);
2515 __mmask8
test_mm512_cmple_epi64_mask(__m512i __a
, __m512i __b
) {
2516 // CHECK-LABEL: @test_mm512_cmple_epi64_mask
2517 // CHECK: icmp sle <8 x i64> %{{.*}}, %{{.*}}
2518 return (__mmask8
)_mm512_cmple_epi64_mask(__a
, __b
);
2521 __mmask8
test_mm512_mask_cmple_epi64_mask(__mmask8 __u
, __m512i __a
, __m512i __b
) {
2522 // CHECK-LABEL: @test_mm512_mask_cmple_epi64_mask
2523 // CHECK: icmp sle <8 x i64> %{{.*}}, %{{.*}}
2524 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2525 return (__mmask8
)_mm512_mask_cmple_epi64_mask(__u
, __a
, __b
);
2528 __mmask16
test_mm512_cmple_epu32_mask(__m512i __a
, __m512i __b
) {
2529 // CHECK-LABEL: @test_mm512_cmple_epu32_mask
2530 // CHECK: icmp ule <16 x i32> %{{.*}}, %{{.*}}
2531 return (__mmask16
)_mm512_cmple_epu32_mask(__a
, __b
);
2534 __mmask16
test_mm512_mask_cmple_epu32_mask(__mmask16 __u
, __m512i __a
, __m512i __b
) {
2535 // CHECK-LABEL: @test_mm512_mask_cmple_epu32_mask
2536 // CHECK: icmp ule <16 x i32> %{{.*}}, %{{.*}}
2537 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2538 return (__mmask16
)_mm512_mask_cmple_epu32_mask(__u
, __a
, __b
);
2541 __mmask8
test_mm512_cmple_epu64_mask(__m512i __a
, __m512i __b
) {
2542 // CHECK-LABEL: @test_mm512_cmple_epu64_mask
2543 // CHECK: icmp ule <8 x i64> %{{.*}}, %{{.*}}
2544 return (__mmask8
)_mm512_cmple_epu64_mask(__a
, __b
);
2547 __mmask8
test_mm512_mask_cmple_epu64_mask(__mmask8 __u
, __m512i __a
, __m512i __b
) {
2548 // CHECK-LABEL: @test_mm512_mask_cmple_epu64_mask
2549 // CHECK: icmp ule <8 x i64> %{{.*}}, %{{.*}}
2550 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2551 return (__mmask8
)_mm512_mask_cmple_epu64_mask(__u
, __a
, __b
);
2554 __mmask16
test_mm512_cmplt_epi32_mask(__m512i __a
, __m512i __b
) {
2555 // CHECK-LABEL: @test_mm512_cmplt_epi32_mask
2556 // CHECK: icmp slt <16 x i32> %{{.*}}, %{{.*}}
2557 return (__mmask16
)_mm512_cmplt_epi32_mask(__a
, __b
);
2560 __mmask16
test_mm512_mask_cmplt_epi32_mask(__mmask16 __u
, __m512i __a
, __m512i __b
) {
2561 // CHECK-LABEL: @test_mm512_mask_cmplt_epi32_mask
2562 // CHECK: icmp slt <16 x i32> %{{.*}}, %{{.*}}
2563 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2564 return (__mmask16
)_mm512_mask_cmplt_epi32_mask(__u
, __a
, __b
);
2567 __mmask8
test_mm512_cmplt_epi64_mask(__m512i __a
, __m512i __b
) {
2568 // CHECK-LABEL: @test_mm512_cmplt_epi64_mask
2569 // CHECK: icmp slt <8 x i64> %{{.*}}, %{{.*}}
2570 return (__mmask8
)_mm512_cmplt_epi64_mask(__a
, __b
);
2573 __mmask8
test_mm512_mask_cmplt_epi64_mask(__mmask8 __u
, __m512i __a
, __m512i __b
) {
2574 // CHECK-LABEL: @test_mm512_mask_cmplt_epi64_mask
2575 // CHECK: icmp slt <8 x i64> %{{.*}}, %{{.*}}
2576 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2577 return (__mmask8
)_mm512_mask_cmplt_epi64_mask(__u
, __a
, __b
);
2580 __mmask16
test_mm512_cmplt_epu32_mask(__m512i __a
, __m512i __b
) {
2581 // CHECK-LABEL: @test_mm512_cmplt_epu32_mask
2582 // CHECK: icmp ult <16 x i32> %{{.*}}, %{{.*}}
2583 return (__mmask16
)_mm512_cmplt_epu32_mask(__a
, __b
);
2586 __mmask16
test_mm512_mask_cmplt_epu32_mask(__mmask16 __u
, __m512i __a
, __m512i __b
) {
2587 // CHECK-LABEL: @test_mm512_mask_cmplt_epu32_mask
2588 // CHECK: icmp ult <16 x i32> %{{.*}}, %{{.*}}
2589 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2590 return (__mmask16
)_mm512_mask_cmplt_epu32_mask(__u
, __a
, __b
);
2593 __mmask8
test_mm512_cmplt_epu64_mask(__m512i __a
, __m512i __b
) {
2594 // CHECK-LABEL: @test_mm512_cmplt_epu64_mask
2595 // CHECK: icmp ult <8 x i64> %{{.*}}, %{{.*}}
2596 return (__mmask8
)_mm512_cmplt_epu64_mask(__a
, __b
);
2599 __mmask8
test_mm512_mask_cmplt_epu64_mask(__mmask8 __u
, __m512i __a
, __m512i __b
) {
2600 // CHECK-LABEL: @test_mm512_mask_cmplt_epu64_mask
2601 // CHECK: icmp ult <8 x i64> %{{.*}}, %{{.*}}
2602 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2603 return (__mmask8
)_mm512_mask_cmplt_epu64_mask(__u
, __a
, __b
);
2606 __mmask16
test_mm512_cmpneq_epi32_mask(__m512i __a
, __m512i __b
) {
2607 // CHECK-LABEL: @test_mm512_cmpneq_epi32_mask
2608 // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
2609 return (__mmask16
)_mm512_cmpneq_epi32_mask(__a
, __b
);
2612 __mmask16
test_mm512_mask_cmpneq_epi32_mask(__mmask16 __u
, __m512i __a
, __m512i __b
) {
2613 // CHECK-LABEL: @test_mm512_mask_cmpneq_epi32_mask
2614 // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
2615 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2616 return (__mmask16
)_mm512_mask_cmpneq_epi32_mask(__u
, __a
, __b
);
2619 __mmask8
test_mm512_cmpneq_epi64_mask(__m512i __a
, __m512i __b
) {
2620 // CHECK-LABEL: @test_mm512_cmpneq_epi64_mask
2621 // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
2622 return (__mmask8
)_mm512_cmpneq_epi64_mask(__a
, __b
);
2625 __mmask8
test_mm512_mask_cmpneq_epi64_mask(__mmask8 __u
, __m512i __a
, __m512i __b
) {
2626 // CHECK-LABEL: @test_mm512_mask_cmpneq_epi64_mask
2627 // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
2628 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2629 return (__mmask8
)_mm512_mask_cmpneq_epi64_mask(__u
, __a
, __b
);
2632 __mmask16
test_mm512_cmpneq_epu32_mask(__m512i __a
, __m512i __b
) {
2633 // CHECK-LABEL: @test_mm512_cmpneq_epu32_mask
2634 // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
2635 return (__mmask16
)_mm512_cmpneq_epu32_mask(__a
, __b
);
2638 __mmask16
test_mm512_mask_cmpneq_epu32_mask(__mmask16 __u
, __m512i __a
, __m512i __b
) {
2639 // CHECK-LABEL: @test_mm512_mask_cmpneq_epu32_mask
2640 // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
2641 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2642 return (__mmask16
)_mm512_mask_cmpneq_epu32_mask(__u
, __a
, __b
);
2645 __mmask8
test_mm512_cmpneq_epu64_mask(__m512i __a
, __m512i __b
) {
2646 // CHECK-LABEL: @test_mm512_cmpneq_epu64_mask
2647 // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
2648 return (__mmask8
)_mm512_cmpneq_epu64_mask(__a
, __b
);
2651 __mmask8
test_mm512_mask_cmpneq_epu64_mask(__mmask8 __u
, __m512i __a
, __m512i __b
) {
2652 // CHECK-LABEL: @test_mm512_mask_cmpneq_epu64_mask
2653 // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
2654 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2655 return (__mmask8
)_mm512_mask_cmpneq_epu64_mask(__u
, __a
, __b
);
2658 __mmask16
test_mm512_cmp_eq_epi32_mask(__m512i __a
, __m512i __b
) {
2659 // CHECK-LABEL: @test_mm512_cmp_eq_epi32_mask
2660 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2661 return (__mmask16
)_mm512_cmp_epi32_mask(__a
, __b
, _MM_CMPINT_EQ
);
2664 __mmask16
test_mm512_mask_cmp_eq_epi32_mask(__mmask16 __u
, __m512i __a
, __m512i __b
) {
2665 // CHECK-LABEL: @test_mm512_mask_cmp_eq_epi32_mask
2666 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2667 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2668 return (__mmask16
)_mm512_mask_cmp_epi32_mask(__u
, __a
, __b
, _MM_CMPINT_EQ
);
2671 __mmask8
test_mm512_cmp_eq_epi64_mask(__m512i __a
, __m512i __b
) {
2672 // CHECK-LABEL: @test_mm512_cmp_eq_epi64_mask
2673 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2674 return (__mmask8
)_mm512_cmp_epi64_mask(__a
, __b
, _MM_CMPINT_EQ
);
2677 __mmask8
test_mm512_mask_cmp_eq_epi64_mask(__mmask8 __u
, __m512i __a
, __m512i __b
) {
2678 // CHECK-LABEL: @test_mm512_mask_cmp_eq_epi64_mask
2679 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2680 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2681 return (__mmask8
)_mm512_mask_cmp_epi64_mask(__u
, __a
, __b
, _MM_CMPINT_EQ
);
2684 __mmask16
test_mm512_cmp_epu32_mask(__m512i __a
, __m512i __b
) {
2685 // CHECK-LABEL: @test_mm512_cmp_epu32_mask
2686 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2687 return (__mmask16
)_mm512_cmp_epu32_mask(__a
, __b
, 0);
2690 __mmask16
test_mm512_mask_cmp_epu32_mask(__mmask16 __u
, __m512i __a
, __m512i __b
) {
2691 // CHECK-LABEL: @test_mm512_mask_cmp_epu32_mask
2692 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2693 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2694 return (__mmask16
)_mm512_mask_cmp_epu32_mask(__u
, __a
, __b
, 0);
2697 __mmask8
test_mm512_cmp_epu64_mask(__m512i __a
, __m512i __b
) {
2698 // CHECK-LABEL: @test_mm512_cmp_epu64_mask
2699 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2700 return (__mmask8
)_mm512_cmp_epu64_mask(__a
, __b
, 0);
2703 __mmask8
test_mm512_mask_cmp_epu64_mask(__mmask8 __u
, __m512i __a
, __m512i __b
) {
2704 // CHECK-LABEL: @test_mm512_mask_cmp_epu64_mask
2705 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2706 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2707 return (__mmask8
)_mm512_mask_cmp_epu64_mask(__u
, __a
, __b
, 0);
2710 __m512i
test_mm512_mask_and_epi32(__m512i __src
,__mmask16 __k
, __m512i __a
, __m512i __b
) {
2711 // CHECK-LABEL: @test_mm512_mask_and_epi32
2712 // CHECK: and <16 x i32>
2713 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2714 // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2715 return _mm512_mask_and_epi32(__src
, __k
,__a
, __b
);
2718 __m512i
test_mm512_maskz_and_epi32(__mmask16 __k
, __m512i __a
, __m512i __b
) {
2719 // CHECK-LABEL: @test_mm512_maskz_and_epi32
2720 // CHECK: and <16 x i32>
2721 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2722 // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2723 return _mm512_maskz_and_epi32(__k
,__a
, __b
);
2726 __m512i
test_mm512_mask_and_epi64(__m512i __src
,__mmask8 __k
, __m512i __a
, __m512i __b
) {
2727 // CHECK-LABEL: @test_mm512_mask_and_epi64
2728 // CHECK: %[[AND_RES:.*]] = and <8 x i64>
2729 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2730 // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[AND_RES]], <8 x i64> %{{.*}}
2731 return _mm512_mask_and_epi64(__src
, __k
,__a
, __b
);
2734 __m512i
test_mm512_maskz_and_epi64(__mmask8 __k
, __m512i __a
, __m512i __b
) {
2735 // CHECK-LABEL: @test_mm512_maskz_and_epi64
2736 // CHECK: %[[AND_RES:.*]] = and <8 x i64>
2737 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2738 // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[AND_RES]], <8 x i64> %{{.*}}
2739 return _mm512_maskz_and_epi64(__k
,__a
, __b
);
2742 __m512i
test_mm512_mask_or_epi32(__m512i __src
,__mmask16 __k
, __m512i __a
, __m512i __b
) {
2743 // CHECK-LABEL: @test_mm512_mask_or_epi32
2744 // CHECK: or <16 x i32>
2745 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2746 // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2747 return _mm512_mask_or_epi32(__src
, __k
,__a
, __b
);
2750 __m512i
test_mm512_maskz_or_epi32(__mmask16 __k
, __m512i __a
, __m512i __b
) {
2751 // CHECK-LABEL: @test_mm512_maskz_or_epi32
2752 // CHECK: or <16 x i32>
2753 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2754 // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2755 return _mm512_maskz_or_epi32(__k
,__a
, __b
);
2758 __m512i
test_mm512_mask_or_epi64(__m512i __src
,__mmask8 __k
, __m512i __a
, __m512i __b
) {
2759 // CHECK-LABEL: @test_mm512_mask_or_epi64
2760 // CHECK: %[[OR_RES:.*]] = or <8 x i64>
2761 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2762 // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[OR_RES]], <8 x i64> %{{.*}}
2763 return _mm512_mask_or_epi64(__src
, __k
,__a
, __b
);
2766 __m512i
test_mm512_maskz_or_epi64(__mmask8 __k
, __m512i __a
, __m512i __b
) {
2767 // CHECK-LABEL: @test_mm512_maskz_or_epi64
2768 // CHECK: %[[OR_RES:.*]] = or <8 x i64>
2769 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2770 // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[OR_RES]], <8 x i64> %{{.*}}
2771 return _mm512_maskz_or_epi64(__k
,__a
, __b
);
2774 __m512i
test_mm512_mask_xor_epi32(__m512i __src
,__mmask16 __k
, __m512i __a
, __m512i __b
) {
2775 // CHECK-LABEL: @test_mm512_mask_xor_epi32
2776 // CHECK: xor <16 x i32>
2777 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2778 // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2779 return _mm512_mask_xor_epi32(__src
, __k
,__a
, __b
);
2782 __m512i
test_mm512_maskz_xor_epi32(__mmask16 __k
, __m512i __a
, __m512i __b
) {
2783 // CHECK-LABEL: @test_mm512_maskz_xor_epi32
2784 // CHECK: xor <16 x i32>
2785 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2786 // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2787 return _mm512_maskz_xor_epi32(__k
,__a
, __b
);
2790 __m512i
test_mm512_mask_xor_epi64(__m512i __src
,__mmask8 __k
, __m512i __a
, __m512i __b
) {
2791 // CHECK-LABEL: @test_mm512_mask_xor_epi64
2792 // CHECK: %[[XOR_RES:.*]] = xor <8 x i64>
2793 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2794 // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[XOR_RES]], <8 x i64> %{{.*}}
2795 return _mm512_mask_xor_epi64(__src
, __k
,__a
, __b
);
2798 __m512i
test_mm512_maskz_xor_epi64(__mmask8 __k
, __m512i __a
, __m512i __b
) {
2799 // CHECK-LABEL: @test_mm512_maskz_xor_epi64
2800 // CHECK: %[[XOR_RES:.*]] = xor <8 x i64>
2801 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2802 // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[XOR_RES]], <8 x i64> %{{.*}}
2803 return _mm512_maskz_xor_epi64(__k
,__a
, __b
);
2806 __m512i
test_mm512_and_epi32(__m512i __src
,__mmask16 __k
, __m512i __a
, __m512i __b
) {
2807 // CHECK-LABEL: @test_mm512_and_epi32
2808 // CHECK: and <16 x i32>
2809 return _mm512_and_epi32(__a
, __b
);
2812 __m512i
test_mm512_and_epi64(__m512i __src
,__mmask8 __k
, __m512i __a
, __m512i __b
) {
2813 // CHECK-LABEL: @test_mm512_and_epi64
2814 // CHECK: and <8 x i64>
2815 return _mm512_and_epi64(__a
, __b
);
2818 __m512i
test_mm512_or_epi32(__m512i __src
,__mmask16 __k
, __m512i __a
, __m512i __b
) {
2819 // CHECK-LABEL: @test_mm512_or_epi32
2820 // CHECK: or <16 x i32>
2821 return _mm512_or_epi32(__a
, __b
);
2824 __m512i
test_mm512_or_epi64(__m512i __src
,__mmask8 __k
, __m512i __a
, __m512i __b
) {
2825 // CHECK-LABEL: @test_mm512_or_epi64
2826 // CHECK: or <8 x i64>
2827 return _mm512_or_epi64(__a
, __b
);
2830 __m512i
test_mm512_xor_epi32(__m512i __src
,__mmask16 __k
, __m512i __a
, __m512i __b
) {
2831 // CHECK-LABEL: @test_mm512_xor_epi32
2832 // CHECK: xor <16 x i32>
2833 return _mm512_xor_epi32(__a
, __b
);
2836 __m512i
test_mm512_xor_epi64(__m512i __src
,__mmask8 __k
, __m512i __a
, __m512i __b
) {
2837 // CHECK-LABEL: @test_mm512_xor_epi64
2838 // CHECK: xor <8 x i64>
2839 return _mm512_xor_epi64(__a
, __b
);
2842 __m512i
test_mm512_maskz_andnot_epi32 (__mmask16 __k
,__m512i __A
, __m512i __B
){
2843 // CHECK-LABEL: @test_mm512_maskz_andnot_epi32
2844 // 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>
2845 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2846 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2847 return _mm512_maskz_andnot_epi32(__k
,__A
,__B
);
2850 __m512i
test_mm512_mask_andnot_epi32 (__mmask16 __k
,__m512i __A
, __m512i __B
,
2852 // CHECK-LABEL: @test_mm512_mask_andnot_epi32
2853 // 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>
2854 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2855 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2856 return _mm512_mask_andnot_epi32(__src
,__k
,__A
,__B
);
2859 __m512i
test_mm512_andnot_si512(__m512i __A
, __m512i __B
)
2861 //CHECK-LABEL: @test_mm512_andnot_si512
2862 //CHECK: load {{.*}}%__A.addr.i, align 64
2863 //CHECK: %not.i = xor{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
2864 //CHECK: load {{.*}}%__B.addr.i, align 64
2865 //CHECK: and <8 x i64> %not.i,{{.*}}
2867 return _mm512_andnot_si512(__A
, __B
);
2870 __m512i
test_mm512_andnot_epi32(__m512i __A
, __m512i __B
) {
2871 // CHECK-LABEL: @test_mm512_andnot_epi32
2872 // 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>
2873 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2874 return _mm512_andnot_epi32(__A
,__B
);
2877 __m512i
test_mm512_maskz_andnot_epi64 (__mmask8 __k
,__m512i __A
, __m512i __B
) {
2878 // CHECK-LABEL: @test_mm512_maskz_andnot_epi64
2879 // CHECK: xor <8 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
2880 // CHECK: and <8 x i64> %{{.*}}, %{{.*}}
2881 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2882 return _mm512_maskz_andnot_epi64(__k
,__A
,__B
);
2885 __m512i
test_mm512_mask_andnot_epi64 (__mmask8 __k
,__m512i __A
, __m512i __B
,
2887 //CHECK-LABEL: @test_mm512_mask_andnot_epi64
2888 // CHECK: xor <8 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
2889 // CHECK: and <8 x i64> %{{.*}}, %{{.*}}
2890 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2891 return _mm512_mask_andnot_epi64(__src
,__k
,__A
,__B
);
2894 __m512i
test_mm512_andnot_epi64(__m512i __A
, __m512i __B
) {
2895 //CHECK-LABEL: @test_mm512_andnot_epi64
2896 // CHECK: xor <8 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
2897 // CHECK: and <8 x i64> %{{.*}}, %{{.*}}
2898 return _mm512_andnot_epi64(__A
,__B
);
2901 __m512i
test_mm512_maskz_sub_epi32 (__mmask16 __k
,__m512i __A
, __m512i __B
) {
2902 //CHECK-LABEL: @test_mm512_maskz_sub_epi32
2903 //CHECK: sub <16 x i32> %{{.*}}, %{{.*}}
2904 //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2905 return _mm512_maskz_sub_epi32(__k
,__A
,__B
);
2908 __m512i
test_mm512_mask_sub_epi32 (__mmask16 __k
,__m512i __A
, __m512i __B
,
2910 //CHECK-LABEL: @test_mm512_mask_sub_epi32
2911 //CHECK: sub <16 x i32> %{{.*}}, %{{.*}}
2912 //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2913 return _mm512_mask_sub_epi32(__src
,__k
,__A
,__B
);
2916 __m512i
test_mm512_sub_epi32(__m512i __A
, __m512i __B
) {
2917 //CHECK-LABEL: @test_mm512_sub_epi32
2918 //CHECK: sub <16 x i32>
2919 return _mm512_sub_epi32(__A
,__B
);
2922 __m512i
test_mm512_maskz_sub_epi64 (__mmask8 __k
,__m512i __A
, __m512i __B
) {
2923 //CHECK-LABEL: @test_mm512_maskz_sub_epi64
2924 //CHECK: sub <8 x i64> %{{.*}}, %{{.*}}
2925 //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2926 return _mm512_maskz_sub_epi64(__k
,__A
,__B
);
2929 __m512i
test_mm512_mask_sub_epi64 (__mmask8 __k
,__m512i __A
, __m512i __B
,
2931 //CHECK-LABEL: @test_mm512_mask_sub_epi64
2932 //CHECK: sub <8 x i64> %{{.*}}, %{{.*}}
2933 //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2934 return _mm512_mask_sub_epi64(__src
,__k
,__A
,__B
);
2937 __m512i
test_mm512_sub_epi64(__m512i __A
, __m512i __B
) {
2938 //CHECK-LABEL: @test_mm512_sub_epi64
2939 //CHECK: sub <8 x i64>
2940 return _mm512_sub_epi64(__A
,__B
);
2943 __m512i
test_mm512_maskz_add_epi32 (__mmask16 __k
,__m512i __A
, __m512i __B
) {
2944 //CHECK-LABEL: @test_mm512_maskz_add_epi32
2945 //CHECK: add <16 x i32> %{{.*}}, %{{.*}}
2946 //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2947 return _mm512_maskz_add_epi32(__k
,__A
,__B
);
2950 __m512i
test_mm512_mask_add_epi32 (__mmask16 __k
,__m512i __A
, __m512i __B
,
2952 //CHECK-LABEL: @test_mm512_mask_add_epi32
2953 //CHECK: add <16 x i32> %{{.*}}, %{{.*}}
2954 //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2955 return _mm512_mask_add_epi32(__src
,__k
,__A
,__B
);
2958 __m512i
test_mm512_add_epi32(__m512i __A
, __m512i __B
) {
2959 //CHECK-LABEL: @test_mm512_add_epi32
2960 //CHECK: add <16 x i32>
2961 return _mm512_add_epi32(__A
,__B
);
2964 __m512i
test_mm512_maskz_add_epi64 (__mmask8 __k
,__m512i __A
, __m512i __B
) {
2965 //CHECK-LABEL: @test_mm512_maskz_add_epi64
2966 //CHECK: add <8 x i64> %{{.*}}, %{{.*}}
2967 //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2968 return _mm512_maskz_add_epi64(__k
,__A
,__B
);
2971 __m512i
test_mm512_mask_add_epi64 (__mmask8 __k
,__m512i __A
, __m512i __B
,
2973 //CHECK-LABEL: @test_mm512_mask_add_epi64
2974 //CHECK: add <8 x i64> %{{.*}}, %{{.*}}
2975 //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2976 return _mm512_mask_add_epi64(__src
,__k
,__A
,__B
);
2979 __m512i
test_mm512_add_epi64(__m512i __A
, __m512i __B
) {
2980 //CHECK-LABEL: @test_mm512_add_epi64
2981 //CHECK: add <8 x i64>
2982 return _mm512_add_epi64(__A
,__B
);
2985 __m512i
test_mm512_mul_epi32(__m512i __A
, __m512i __B
) {
2986 //CHECK-LABEL: @test_mm512_mul_epi32
2987 //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
2988 //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
2989 //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
2990 //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
2991 //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
2992 return _mm512_mul_epi32(__A
,__B
);
2995 __m512i
test_mm512_maskz_mul_epi32 (__mmask8 __k
,__m512i __A
, __m512i __B
) {
2996 //CHECK-LABEL: @test_mm512_maskz_mul_epi32
2997 //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
2998 //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
2999 //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3000 //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3001 //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3002 //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3003 return _mm512_maskz_mul_epi32(__k
,__A
,__B
);
3006 __m512i
test_mm512_mask_mul_epi32 (__mmask8 __k
,__m512i __A
, __m512i __B
, __m512i __src
) {
3007 //CHECK-LABEL: @test_mm512_mask_mul_epi32
3008 //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3009 //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3010 //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3011 //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3012 //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3013 //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3014 return _mm512_mask_mul_epi32(__src
,__k
,__A
,__B
);
3017 __m512i
test_mm512_mul_epu32 (__m512i __A
, __m512i __B
) {
3018 //CHECK-LABEL: @test_mm512_mul_epu32
3019 //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3020 //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3021 //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3022 return _mm512_mul_epu32(__A
,__B
);
3025 __m512i
test_mm512_maskz_mul_epu32 (__mmask8 __k
,__m512i __A
, __m512i __B
) {
3026 //CHECK-LABEL: @test_mm512_maskz_mul_epu32
3027 //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3028 //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3029 //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3030 //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3031 return _mm512_maskz_mul_epu32(__k
,__A
,__B
);
3034 __m512i
test_mm512_mask_mul_epu32 (__mmask8 __k
,__m512i __A
, __m512i __B
, __m512i __src
) {
3035 //CHECK-LABEL: @test_mm512_mask_mul_epu32
3036 //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3037 //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3038 //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3039 //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3040 return _mm512_mask_mul_epu32(__src
,__k
,__A
,__B
);
3043 __m512i
test_mm512_maskz_mullo_epi32 (__mmask16 __k
,__m512i __A
, __m512i __B
) {
3044 //CHECK-LABEL: @test_mm512_maskz_mullo_epi32
3045 //CHECK: mul <16 x i32> %{{.*}}, %{{.*}}
3046 //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3047 return _mm512_maskz_mullo_epi32(__k
,__A
,__B
);
3050 __m512i
test_mm512_mask_mullo_epi32 (__mmask16 __k
,__m512i __A
, __m512i __B
, __m512i __src
) {
3051 //CHECK-LABEL: @test_mm512_mask_mullo_epi32
3052 //CHECK: mul <16 x i32> %{{.*}}, %{{.*}}
3053 //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3054 return _mm512_mask_mullo_epi32(__src
,__k
,__A
,__B
);
3057 __m512i
test_mm512_mullo_epi32(__m512i __A
, __m512i __B
) {
3058 //CHECK-LABEL: @test_mm512_mullo_epi32
3059 //CHECK: mul <16 x i32>
3060 return _mm512_mullo_epi32(__A
,__B
);
3063 __m512i
test_mm512_mullox_epi64 (__m512i __A
, __m512i __B
) {
3064 // CHECK-LABEL: @test_mm512_mullox_epi64
3065 // CHECK: mul <8 x i64>
3066 return (__m512i
) _mm512_mullox_epi64(__A
, __B
);
3069 __m512i
test_mm512_mask_mullox_epi64 (__m512i __W
, __mmask8 __U
, __m512i __A
, __m512i __B
) {
3070 // CHECK-LABEL: @test_mm512_mask_mullox_epi64
3071 // CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3072 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3073 return (__m512i
) _mm512_mask_mullox_epi64(__W
, __U
, __A
, __B
);
3076 __m512d
test_mm512_add_round_pd(__m512d __A
, __m512d __B
) {
3077 // CHECK-LABEL: @test_mm512_add_round_pd
3078 // CHECK: @llvm.x86.avx512.add.pd.512
3079 return _mm512_add_round_pd(__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3081 __m512d
test_mm512_mask_add_round_pd(__m512d __W
, __mmask8 __U
, __m512d __A
, __m512d __B
) {
3082 // CHECK-LABEL: @test_mm512_mask_add_round_pd
3083 // CHECK: @llvm.x86.avx512.add.pd.512
3084 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3085 return _mm512_mask_add_round_pd(__W
,__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3087 __m512d
test_mm512_maskz_add_round_pd(__mmask8 __U
, __m512d __A
, __m512d __B
) {
3088 // CHECK-LABEL: @test_mm512_maskz_add_round_pd
3089 // CHECK: @llvm.x86.avx512.add.pd.512
3090 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3091 return _mm512_maskz_add_round_pd(__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3093 __m512d
test_mm512_mask_add_pd(__m512d __W
, __mmask8 __U
, __m512d __A
, __m512d __B
) {
3094 // CHECK-LABEL: @test_mm512_mask_add_pd
3095 // CHECK: fadd <8 x double> %{{.*}}, %{{.*}}
3096 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3097 return _mm512_mask_add_pd(__W
,__U
,__A
,__B
);
3099 __m512d
test_mm512_maskz_add_pd(__mmask8 __U
, __m512d __A
, __m512d __B
) {
3100 // CHECK-LABEL: @test_mm512_maskz_add_pd
3101 // CHECK: fadd <8 x double> %{{.*}}, %{{.*}}
3102 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3103 return _mm512_maskz_add_pd(__U
,__A
,__B
);
3105 __m512
test_mm512_add_round_ps(__m512 __A
, __m512 __B
) {
3106 // CHECK-LABEL: @test_mm512_add_round_ps
3107 // CHECK: @llvm.x86.avx512.add.ps.512
3108 return _mm512_add_round_ps(__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3110 __m512
test_mm512_mask_add_round_ps(__m512 __W
, __mmask16 __U
, __m512 __A
, __m512 __B
) {
3111 // CHECK-LABEL: @test_mm512_mask_add_round_ps
3112 // CHECK: @llvm.x86.avx512.add.ps.512
3113 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3114 return _mm512_mask_add_round_ps(__W
,__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3116 __m512
test_mm512_maskz_add_round_ps(__mmask16 __U
, __m512 __A
, __m512 __B
) {
3117 // CHECK-LABEL: @test_mm512_maskz_add_round_ps
3118 // CHECK: @llvm.x86.avx512.add.ps.512
3119 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3120 return _mm512_maskz_add_round_ps(__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3122 __m512
test_mm512_mask_add_ps(__m512 __W
, __mmask16 __U
, __m512 __A
, __m512 __B
) {
3123 // CHECK-LABEL: @test_mm512_mask_add_ps
3124 // CHECK: fadd <16 x float> %{{.*}}, %{{.*}}
3125 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3126 return _mm512_mask_add_ps(__W
,__U
,__A
,__B
);
3128 __m512
test_mm512_maskz_add_ps(__mmask16 __U
, __m512 __A
, __m512 __B
) {
3129 // CHECK-LABEL: @test_mm512_maskz_add_ps
3130 // CHECK: fadd <16 x float> %{{.*}}, %{{.*}}
3131 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3132 return _mm512_maskz_add_ps(__U
,__A
,__B
);
3134 __m128
test_mm_add_round_ss(__m128 __A
, __m128 __B
) {
3135 // CHECK-LABEL: @test_mm_add_round_ss
3136 // CHECK: @llvm.x86.avx512.mask.add.ss.round
3137 return _mm_add_round_ss(__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3139 __m128
test_mm_mask_add_round_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
) {
3140 // CHECK-LABEL: @test_mm_mask_add_round_ss
3141 // CHECK: @llvm.x86.avx512.mask.add.ss.round
3142 return _mm_mask_add_round_ss(__W
,__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3144 __m128
test_mm_maskz_add_round_ss(__mmask8 __U
, __m128 __A
, __m128 __B
) {
3145 // CHECK-LABEL: @test_mm_maskz_add_round_ss
3146 // CHECK: @llvm.x86.avx512.mask.add.ss.round
3147 return _mm_maskz_add_round_ss(__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3149 __m128
test_mm_mask_add_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
) {
3150 // CHECK-LABEL: @test_mm_mask_add_ss
3151 // CHECK-NOT: @llvm.x86.avx512.mask.add.ss.round
3152 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3153 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3154 // CHECK: fadd float %{{.*}}, %{{.*}}
3155 // CHECK: insertelement <4 x float> %{{.*}}, i32 0
3156 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3157 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3158 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3159 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3160 // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3161 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3162 return _mm_mask_add_ss(__W
,__U
,__A
,__B
);
3164 __m128
test_mm_maskz_add_ss(__mmask8 __U
, __m128 __A
, __m128 __B
) {
3165 // CHECK-LABEL: @test_mm_maskz_add_ss
3166 // CHECK-NOT: @llvm.x86.avx512.mask.add.ss.round
3167 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3168 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3169 // CHECK: fadd float %{{.*}}, %{{.*}}
3170 // CHECK: insertelement <4 x float> %{{.*}}, i32 0
3171 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3172 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3173 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3174 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3175 // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3176 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3177 return _mm_maskz_add_ss(__U
,__A
,__B
);
3179 __m128d
test_mm_add_round_sd(__m128d __A
, __m128d __B
) {
3180 // CHECK-LABEL: @test_mm_add_round_sd
3181 // CHECK: @llvm.x86.avx512.mask.add.sd.round
3182 return _mm_add_round_sd(__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3184 __m128d
test_mm_mask_add_round_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
) {
3185 // CHECK-LABEL: @test_mm_mask_add_round_sd
3186 // CHECK: @llvm.x86.avx512.mask.add.sd.round
3187 return _mm_mask_add_round_sd(__W
,__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3189 __m128d
test_mm_maskz_add_round_sd(__mmask8 __U
, __m128d __A
, __m128d __B
) {
3190 // CHECK-LABEL: @test_mm_maskz_add_round_sd
3191 // CHECK: @llvm.x86.avx512.mask.add.sd.round
3192 return _mm_maskz_add_round_sd(__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3194 __m128d
test_mm_mask_add_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
) {
3195 // CHECK-LABEL: @test_mm_mask_add_sd
3196 // CHECK-NOT: @llvm.x86.avx512.mask.add.sd.round
3197 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3198 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3199 // CHECK: fadd double %{{.*}}, %{{.*}}
3200 // CHECK: insertelement <2 x double> {{.*}}, i32 0
3201 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3202 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3203 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3204 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3205 // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3206 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3207 return _mm_mask_add_sd(__W
,__U
,__A
,__B
);
3209 __m128d
test_mm_maskz_add_sd(__mmask8 __U
, __m128d __A
, __m128d __B
) {
3210 // CHECK-LABEL: @test_mm_maskz_add_sd
3211 // CHECK-NOT: @llvm.x86.avx512.mask.add.sd.round
3212 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3213 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3214 // CHECK: fadd double %{{.*}}, %{{.*}}
3215 // CHECK: insertelement <2 x double> {{.*}}, i32 0
3216 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3217 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3218 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3219 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3220 // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3221 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3222 return _mm_maskz_add_sd(__U
,__A
,__B
);
3224 __m512d
test_mm512_sub_round_pd(__m512d __A
, __m512d __B
) {
3225 // CHECK-LABEL: @test_mm512_sub_round_pd
3226 // CHECK: @llvm.x86.avx512.sub.pd.512
3227 return _mm512_sub_round_pd(__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3229 __m512d
test_mm512_mask_sub_round_pd(__m512d __W
, __mmask8 __U
, __m512d __A
, __m512d __B
) {
3230 // CHECK-LABEL: @test_mm512_mask_sub_round_pd
3231 // CHECK: @llvm.x86.avx512.sub.pd.512
3232 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3233 return _mm512_mask_sub_round_pd(__W
,__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3235 __m512d
test_mm512_maskz_sub_round_pd(__mmask8 __U
, __m512d __A
, __m512d __B
) {
3236 // CHECK-LABEL: @test_mm512_maskz_sub_round_pd
3237 // CHECK: @llvm.x86.avx512.sub.pd.512
3238 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3239 return _mm512_maskz_sub_round_pd(__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3241 __m512d
test_mm512_mask_sub_pd(__m512d __W
, __mmask8 __U
, __m512d __A
, __m512d __B
) {
3242 // CHECK-LABEL: @test_mm512_mask_sub_pd
3243 // CHECK: fsub <8 x double> %{{.*}}, %{{.*}}
3244 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3245 return _mm512_mask_sub_pd(__W
,__U
,__A
,__B
);
3247 __m512d
test_mm512_maskz_sub_pd(__mmask8 __U
, __m512d __A
, __m512d __B
) {
3248 // CHECK-LABEL: @test_mm512_maskz_sub_pd
3249 // CHECK: fsub <8 x double> %{{.*}}, %{{.*}}
3250 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3251 return _mm512_maskz_sub_pd(__U
,__A
,__B
);
3253 __m512
test_mm512_sub_round_ps(__m512 __A
, __m512 __B
) {
3254 // CHECK-LABEL: @test_mm512_sub_round_ps
3255 // CHECK: @llvm.x86.avx512.sub.ps.512
3256 return _mm512_sub_round_ps(__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3258 __m512
test_mm512_mask_sub_round_ps(__m512 __W
, __mmask16 __U
, __m512 __A
, __m512 __B
) {
3259 // CHECK-LABEL: @test_mm512_mask_sub_round_ps
3260 // CHECK: @llvm.x86.avx512.sub.ps.512
3261 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3262 return _mm512_mask_sub_round_ps(__W
,__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3264 __m512
test_mm512_maskz_sub_round_ps(__mmask16 __U
, __m512 __A
, __m512 __B
) {
3265 // CHECK-LABEL: @test_mm512_maskz_sub_round_ps
3266 // CHECK: @llvm.x86.avx512.sub.ps.512
3267 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3268 return _mm512_maskz_sub_round_ps(__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3270 __m512
test_mm512_mask_sub_ps(__m512 __W
, __mmask16 __U
, __m512 __A
, __m512 __B
) {
3271 // CHECK-LABEL: @test_mm512_mask_sub_ps
3272 // CHECK: fsub <16 x float> %{{.*}}, %{{.*}}
3273 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3274 return _mm512_mask_sub_ps(__W
,__U
,__A
,__B
);
3276 __m512
test_mm512_maskz_sub_ps(__mmask16 __U
, __m512 __A
, __m512 __B
) {
3277 // CHECK-LABEL: @test_mm512_maskz_sub_ps
3278 // CHECK: fsub <16 x float> %{{.*}}, %{{.*}}
3279 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3280 return _mm512_maskz_sub_ps(__U
,__A
,__B
);
3282 __m128
test_mm_sub_round_ss(__m128 __A
, __m128 __B
) {
3283 // CHECK-LABEL: @test_mm_sub_round_ss
3284 // CHECK: @llvm.x86.avx512.mask.sub.ss.round
3285 return _mm_sub_round_ss(__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3287 __m128
test_mm_mask_sub_round_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
) {
3288 // CHECK-LABEL: @test_mm_mask_sub_round_ss
3289 // CHECK: @llvm.x86.avx512.mask.sub.ss.round
3290 return _mm_mask_sub_round_ss(__W
,__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3292 __m128
test_mm_maskz_sub_round_ss(__mmask8 __U
, __m128 __A
, __m128 __B
) {
3293 // CHECK-LABEL: @test_mm_maskz_sub_round_ss
3294 // CHECK: @llvm.x86.avx512.mask.sub.ss.round
3295 return _mm_maskz_sub_round_ss(__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3297 __m128
test_mm_mask_sub_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
) {
3298 // CHECK-LABEL: @test_mm_mask_sub_ss
3299 // CHECK-NOT: @llvm.x86.avx512.mask.sub.ss.round
3300 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3301 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3302 // CHECK: fsub float %{{.*}}, %{{.*}}
3303 // CHECK: insertelement <4 x float> {{.*}}, i32 0
3304 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3305 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3306 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3307 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3308 // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3309 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3310 return _mm_mask_sub_ss(__W
,__U
,__A
,__B
);
3312 __m128
test_mm_maskz_sub_ss(__mmask8 __U
, __m128 __A
, __m128 __B
) {
3313 // CHECK-LABEL: @test_mm_maskz_sub_ss
3314 // CHECK-NOT: @llvm.x86.avx512.mask.sub.ss.round
3315 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3316 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3317 // CHECK: fsub float %{{.*}}, %{{.*}}
3318 // CHECK: insertelement <4 x float> {{.*}}, i32 0
3319 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3320 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3321 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3322 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3323 // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3324 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3325 return _mm_maskz_sub_ss(__U
,__A
,__B
);
3327 __m128d
test_mm_sub_round_sd(__m128d __A
, __m128d __B
) {
3328 // CHECK-LABEL: @test_mm_sub_round_sd
3329 // CHECK: @llvm.x86.avx512.mask.sub.sd.round
3330 return _mm_sub_round_sd(__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3332 __m128d
test_mm_mask_sub_round_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
) {
3333 // CHECK-LABEL: @test_mm_mask_sub_round_sd
3334 // CHECK: @llvm.x86.avx512.mask.sub.sd.round
3335 return _mm_mask_sub_round_sd(__W
,__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3337 __m128d
test_mm_maskz_sub_round_sd(__mmask8 __U
, __m128d __A
, __m128d __B
) {
3338 // CHECK-LABEL: @test_mm_maskz_sub_round_sd
3339 // CHECK: @llvm.x86.avx512.mask.sub.sd.round
3340 return _mm_maskz_sub_round_sd(__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3342 __m128d
test_mm_mask_sub_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
) {
3343 // CHECK-LABEL: @test_mm_mask_sub_sd
3344 // CHECK-NOT: @llvm.x86.avx512.mask.sub.sd.round
3345 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3346 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3347 // CHECK: fsub double %{{.*}}, %{{.*}}
3348 // CHECK: insertelement <2 x double> {{.*}}, i32 0
3349 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3350 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3351 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3352 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3353 // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3354 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3355 return _mm_mask_sub_sd(__W
,__U
,__A
,__B
);
3357 __m128d
test_mm_maskz_sub_sd(__mmask8 __U
, __m128d __A
, __m128d __B
) {
3358 // CHECK-LABEL: @test_mm_maskz_sub_sd
3359 // CHECK-NOT: @llvm.x86.avx512.mask.sub.sd.round
3360 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3361 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3362 // CHECK: fsub double %{{.*}}, %{{.*}}
3363 // CHECK: insertelement <2 x double> {{.*}}, i32 0
3364 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3365 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3366 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3367 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3368 // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3369 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3370 return _mm_maskz_sub_sd(__U
,__A
,__B
);
3372 __m512d
test_mm512_mul_round_pd(__m512d __A
, __m512d __B
) {
3373 // CHECK-LABEL: @test_mm512_mul_round_pd
3374 // CHECK: @llvm.x86.avx512.mul.pd.512
3375 return _mm512_mul_round_pd(__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3377 __m512d
test_mm512_mask_mul_round_pd(__m512d __W
, __mmask8 __U
, __m512d __A
, __m512d __B
) {
3378 // CHECK-LABEL: @test_mm512_mask_mul_round_pd
3379 // CHECK: @llvm.x86.avx512.mul.pd.512
3380 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3381 return _mm512_mask_mul_round_pd(__W
,__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3383 __m512d
test_mm512_maskz_mul_round_pd(__mmask8 __U
, __m512d __A
, __m512d __B
) {
3384 // CHECK-LABEL: @test_mm512_maskz_mul_round_pd
3385 // CHECK: @llvm.x86.avx512.mul.pd.512
3386 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3387 return _mm512_maskz_mul_round_pd(__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3389 __m512d
test_mm512_mask_mul_pd(__m512d __W
, __mmask8 __U
, __m512d __A
, __m512d __B
) {
3390 // CHECK-LABEL: @test_mm512_mask_mul_pd
3391 // CHECK: fmul <8 x double> %{{.*}}, %{{.*}}
3392 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3393 return _mm512_mask_mul_pd(__W
,__U
,__A
,__B
);
3395 __m512d
test_mm512_maskz_mul_pd(__mmask8 __U
, __m512d __A
, __m512d __B
) {
3396 // CHECK-LABEL: @test_mm512_maskz_mul_pd
3397 // CHECK: fmul <8 x double> %{{.*}}, %{{.*}}
3398 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3399 return _mm512_maskz_mul_pd(__U
,__A
,__B
);
3401 __m512
test_mm512_mul_round_ps(__m512 __A
, __m512 __B
) {
3402 // CHECK-LABEL: @test_mm512_mul_round_ps
3403 // CHECK: @llvm.x86.avx512.mul.ps.512
3404 return _mm512_mul_round_ps(__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3406 __m512
test_mm512_mask_mul_round_ps(__m512 __W
, __mmask16 __U
, __m512 __A
, __m512 __B
) {
3407 // CHECK-LABEL: @test_mm512_mask_mul_round_ps
3408 // CHECK: @llvm.x86.avx512.mul.ps.512
3409 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3410 return _mm512_mask_mul_round_ps(__W
,__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3412 __m512
test_mm512_maskz_mul_round_ps(__mmask16 __U
, __m512 __A
, __m512 __B
) {
3413 // CHECK-LABEL: @test_mm512_maskz_mul_round_ps
3414 // CHECK: @llvm.x86.avx512.mul.ps.512
3415 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3416 return _mm512_maskz_mul_round_ps(__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3418 __m512
test_mm512_mask_mul_ps(__m512 __W
, __mmask16 __U
, __m512 __A
, __m512 __B
) {
3419 // CHECK-LABEL: @test_mm512_mask_mul_ps
3420 // CHECK: fmul <16 x float> %{{.*}}, %{{.*}}
3421 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3422 return _mm512_mask_mul_ps(__W
,__U
,__A
,__B
);
3424 __m512
test_mm512_maskz_mul_ps(__mmask16 __U
, __m512 __A
, __m512 __B
) {
3425 // CHECK-LABEL: @test_mm512_maskz_mul_ps
3426 // CHECK: fmul <16 x float> %{{.*}}, %{{.*}}
3427 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3428 return _mm512_maskz_mul_ps(__U
,__A
,__B
);
3430 __m128
test_mm_mul_round_ss(__m128 __A
, __m128 __B
) {
3431 // CHECK-LABEL: @test_mm_mul_round_ss
3432 // CHECK: @llvm.x86.avx512.mask.mul.ss.round
3433 return _mm_mul_round_ss(__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3435 __m128
test_mm_mask_mul_round_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
) {
3436 // CHECK-LABEL: @test_mm_mask_mul_round_ss
3437 // CHECK: @llvm.x86.avx512.mask.mul.ss.round
3438 return _mm_mask_mul_round_ss(__W
,__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3440 __m128
test_mm_maskz_mul_round_ss(__mmask8 __U
, __m128 __A
, __m128 __B
) {
3441 // CHECK-LABEL: @test_mm_maskz_mul_round_ss
3442 // CHECK: @llvm.x86.avx512.mask.mul.ss.round
3443 return _mm_maskz_mul_round_ss(__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3445 __m128
test_mm_mask_mul_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
) {
3446 // CHECK-LABEL: @test_mm_mask_mul_ss
3447 // CHECK-NOT: @llvm.x86.avx512.mask.mul.ss.round
3448 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3449 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3450 // CHECK: fmul float %{{.*}}, %{{.*}}
3451 // CHECK: insertelement <4 x float> {{.*}}, i32 0
3452 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3453 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3454 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3455 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3456 // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3457 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3458 return _mm_mask_mul_ss(__W
,__U
,__A
,__B
);
3460 __m128
test_mm_maskz_mul_ss(__mmask8 __U
, __m128 __A
, __m128 __B
) {
3461 // CHECK-LABEL: @test_mm_maskz_mul_ss
3462 // CHECK-NOT: @llvm.x86.avx512.mask.mul.ss.round
3463 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3464 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3465 // CHECK: fmul float %{{.*}}, %{{.*}}
3466 // CHECK: insertelement <4 x float> {{.*}}, i32 0
3467 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3468 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3469 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3470 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3471 // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3472 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3473 return _mm_maskz_mul_ss(__U
,__A
,__B
);
3475 __m128d
test_mm_mul_round_sd(__m128d __A
, __m128d __B
) {
3476 // CHECK-LABEL: @test_mm_mul_round_sd
3477 // CHECK: @llvm.x86.avx512.mask.mul.sd.round
3478 return _mm_mul_round_sd(__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3480 __m128d
test_mm_mask_mul_round_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
) {
3481 // CHECK-LABEL: @test_mm_mask_mul_round_sd
3482 // CHECK: @llvm.x86.avx512.mask.mul.sd.round
3483 return _mm_mask_mul_round_sd(__W
,__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3485 __m128d
test_mm_maskz_mul_round_sd(__mmask8 __U
, __m128d __A
, __m128d __B
) {
3486 // CHECK-LABEL: @test_mm_maskz_mul_round_sd
3487 // CHECK: @llvm.x86.avx512.mask.mul.sd.round
3488 return _mm_maskz_mul_round_sd(__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3490 __m128d
test_mm_mask_mul_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
) {
3491 // CHECK-LABEL: @test_mm_mask_mul_sd
3492 // CHECK-NOT: @llvm.x86.avx512.mask.mul.sd.round
3493 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3494 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3495 // CHECK: fmul double %{{.*}}, %{{.*}}
3496 // CHECK: insertelement <2 x double> {{.*}}, i32 0
3497 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3498 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3499 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3500 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3501 // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3502 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3503 return _mm_mask_mul_sd(__W
,__U
,__A
,__B
);
3505 __m128d
test_mm_maskz_mul_sd(__mmask8 __U
, __m128d __A
, __m128d __B
) {
3506 // CHECK-LABEL: @test_mm_maskz_mul_sd
3507 // CHECK-NOT: @llvm.x86.avx512.mask.mul.sd.round
3508 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3509 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3510 // CHECK: fmul double %{{.*}}, %{{.*}}
3511 // CHECK: insertelement <2 x double> {{.*}}, i32 0
3512 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3513 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3514 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3515 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3516 // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3517 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3518 return _mm_maskz_mul_sd(__U
,__A
,__B
);
3520 __m512d
test_mm512_div_round_pd(__m512d __A
, __m512d __B
) {
3521 // CHECK-LABEL: @test_mm512_div_round_pd
3522 // CHECK: @llvm.x86.avx512.div.pd.512
3523 return _mm512_div_round_pd(__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3525 __m512d
test_mm512_mask_div_round_pd(__m512d __W
, __mmask8 __U
, __m512d __A
, __m512d __B
) {
3526 // CHECK-LABEL: @test_mm512_mask_div_round_pd
3527 // CHECK: @llvm.x86.avx512.div.pd.512
3528 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3529 return _mm512_mask_div_round_pd(__W
,__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3531 __m512d
test_mm512_maskz_div_round_pd(__mmask8 __U
, __m512d __A
, __m512d __B
) {
3532 // CHECK-LABEL: @test_mm512_maskz_div_round_pd
3533 // CHECK: @llvm.x86.avx512.div.pd.512
3534 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3535 return _mm512_maskz_div_round_pd(__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3537 __m512d
test_mm512_div_pd(__m512d __a
, __m512d __b
) {
3538 // CHECK-LABEL: @test_mm512_div_pd
3539 // CHECK: fdiv <8 x double>
3540 return _mm512_div_pd(__a
,__b
);
3542 __m512d
test_mm512_mask_div_pd(__m512d __w
, __mmask8 __u
, __m512d __a
, __m512d __b
) {
3543 // CHECK-LABEL: @test_mm512_mask_div_pd
3544 // CHECK: fdiv <8 x double> %{{.*}}, %{{.*}}
3545 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3546 return _mm512_mask_div_pd(__w
,__u
,__a
,__b
);
3548 __m512d
test_mm512_maskz_div_pd(__mmask8 __U
, __m512d __A
, __m512d __B
) {
3549 // CHECK-LABEL: @test_mm512_maskz_div_pd
3550 // CHECK: fdiv <8 x double> %{{.*}}, %{{.*}}
3551 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3552 return _mm512_maskz_div_pd(__U
,__A
,__B
);
3554 __m512
test_mm512_div_round_ps(__m512 __A
, __m512 __B
) {
3555 // CHECK-LABEL: @test_mm512_div_round_ps
3556 // CHECK: @llvm.x86.avx512.div.ps.512
3557 return _mm512_div_round_ps(__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3559 __m512
test_mm512_mask_div_round_ps(__m512 __W
, __mmask16 __U
, __m512 __A
, __m512 __B
) {
3560 // CHECK-LABEL: @test_mm512_mask_div_round_ps
3561 // CHECK: @llvm.x86.avx512.div.ps.512
3562 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3563 return _mm512_mask_div_round_ps(__W
,__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3565 __m512
test_mm512_maskz_div_round_ps(__mmask16 __U
, __m512 __A
, __m512 __B
) {
3566 // CHECK-LABEL: @test_mm512_maskz_div_round_ps
3567 // CHECK: @llvm.x86.avx512.div.ps.512
3568 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3569 return _mm512_maskz_div_round_ps(__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3571 __m512
test_mm512_div_ps(__m512 __A
, __m512 __B
) {
3572 // CHECK-LABEL: @test_mm512_div_ps
3573 // CHECK: fdiv <16 x float>
3574 return _mm512_div_ps(__A
,__B
);
3576 __m512
test_mm512_mask_div_ps(__m512 __W
, __mmask16 __U
, __m512 __A
, __m512 __B
) {
3577 // CHECK-LABEL: @test_mm512_mask_div_ps
3578 // CHECK: fdiv <16 x float> %{{.*}}, %{{.*}}
3579 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3580 return _mm512_mask_div_ps(__W
,__U
,__A
,__B
);
3582 __m512
test_mm512_maskz_div_ps(__mmask16 __U
, __m512 __A
, __m512 __B
) {
3583 // CHECK-LABEL: @test_mm512_maskz_div_ps
3584 // CHECK: fdiv <16 x float> %{{.*}}, %{{.*}}
3585 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3586 return _mm512_maskz_div_ps(__U
,__A
,__B
);
3588 __m128
test_mm_div_round_ss(__m128 __A
, __m128 __B
) {
3589 // CHECK-LABEL: @test_mm_div_round_ss
3590 // CHECK: @llvm.x86.avx512.mask.div.ss.round
3591 return _mm_div_round_ss(__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3593 __m128
test_mm_mask_div_round_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
) {
3594 // CHECK-LABEL: @test_mm_mask_div_round_ss
3595 // CHECK: @llvm.x86.avx512.mask.div.ss.round
3596 return _mm_mask_div_round_ss(__W
,__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3598 __m128
test_mm_maskz_div_round_ss(__mmask8 __U
, __m128 __A
, __m128 __B
) {
3599 // CHECK-LABEL: @test_mm_maskz_div_round_ss
3600 // CHECK: @llvm.x86.avx512.mask.div.ss.round
3601 return _mm_maskz_div_round_ss(__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3603 __m128
test_mm_mask_div_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
) {
3604 // CHECK-LABEL: @test_mm_mask_div_ss
3605 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3606 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3607 // CHECK: fdiv float %{{.*}}, %{{.*}}
3608 // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
3609 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3610 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3611 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3612 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3613 // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3614 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3615 return _mm_mask_div_ss(__W
,__U
,__A
,__B
);
3617 __m128
test_mm_maskz_div_ss(__mmask8 __U
, __m128 __A
, __m128 __B
) {
3618 // CHECK-LABEL: @test_mm_maskz_div_ss
3619 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3620 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3621 // CHECK: fdiv float %{{.*}}, %{{.*}}
3622 // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
3623 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3624 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3625 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3626 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3627 // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3628 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3629 return _mm_maskz_div_ss(__U
,__A
,__B
);
3631 __m128d
test_mm_div_round_sd(__m128d __A
, __m128d __B
) {
3632 // CHECK-LABEL: @test_mm_div_round_sd
3633 // CHECK: @llvm.x86.avx512.mask.div.sd.round
3634 return _mm_div_round_sd(__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3636 __m128d
test_mm_mask_div_round_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
) {
3637 // CHECK-LABEL: @test_mm_mask_div_round_sd
3638 // CHECK: @llvm.x86.avx512.mask.div.sd.round
3639 return _mm_mask_div_round_sd(__W
,__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3641 __m128d
test_mm_maskz_div_round_sd(__mmask8 __U
, __m128d __A
, __m128d __B
) {
3642 // CHECK-LABEL: @test_mm_maskz_div_round_sd
3643 // CHECK: @llvm.x86.avx512.mask.div.sd.round
3644 return _mm_maskz_div_round_sd(__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
3646 __m128d
test_mm_mask_div_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
) {
3647 // CHECK-LABEL: @test_mm_mask_div_sd
3648 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3649 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3650 // CHECK: fdiv double %{{.*}}, %{{.*}}
3651 // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
3652 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3653 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3654 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3655 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3656 // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3657 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3658 return _mm_mask_div_sd(__W
,__U
,__A
,__B
);
3660 __m128d
test_mm_maskz_div_sd(__mmask8 __U
, __m128d __A
, __m128d __B
) {
3661 // CHECK-LABEL: @test_mm_maskz_div_sd
3662 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3663 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3664 // CHECK: fdiv double %{{.*}}, %{{.*}}
3665 // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
3666 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3667 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3668 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3669 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3670 // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3671 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3672 return _mm_maskz_div_sd(__U
,__A
,__B
);
3674 __m128
test_mm_max_round_ss(__m128 __A
, __m128 __B
) {
3675 // CHECK-LABEL: @test_mm_max_round_ss
3676 // CHECK: @llvm.x86.avx512.mask.max.ss.round
3677 return _mm_max_round_ss(__A
,__B
,0x08);
3679 __m128
test_mm_mask_max_round_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
) {
3680 // CHECK-LABEL: @test_mm_mask_max_round_ss
3681 // CHECK: @llvm.x86.avx512.mask.max.ss.round
3682 return _mm_mask_max_round_ss(__W
,__U
,__A
,__B
,0x08);
3684 __m128
test_mm_maskz_max_round_ss(__mmask8 __U
, __m128 __A
, __m128 __B
) {
3685 // CHECK-LABEL: @test_mm_maskz_max_round_ss
3686 // CHECK: @llvm.x86.avx512.mask.max.ss.round
3687 return _mm_maskz_max_round_ss(__U
,__A
,__B
,0x08);
3689 __m128
test_mm_mask_max_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
) {
3690 // CHECK-LABEL: @test_mm_mask_max_ss
3691 // CHECK: @llvm.x86.avx512.mask.max.ss.round
3692 return _mm_mask_max_ss(__W
,__U
,__A
,__B
);
3694 __m128
test_mm_maskz_max_ss(__mmask8 __U
, __m128 __A
, __m128 __B
) {
3695 // CHECK-LABEL: @test_mm_maskz_max_ss
3696 // CHECK: @llvm.x86.avx512.mask.max.ss.round
3697 return _mm_maskz_max_ss(__U
,__A
,__B
);
3699 __m128d
test_mm_max_round_sd(__m128d __A
, __m128d __B
) {
3700 // CHECK-LABEL: @test_mm_max_round_sd
3701 // CHECK: @llvm.x86.avx512.mask.max.sd.round
3702 return _mm_max_round_sd(__A
,__B
,0x08);
3704 __m128d
test_mm_mask_max_round_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
) {
3705 // CHECK-LABEL: @test_mm_mask_max_round_sd
3706 // CHECK: @llvm.x86.avx512.mask.max.sd.round
3707 return _mm_mask_max_round_sd(__W
,__U
,__A
,__B
,0x08);
3709 __m128d
test_mm_maskz_max_round_sd(__mmask8 __U
, __m128d __A
, __m128d __B
) {
3710 // CHECK-LABEL: @test_mm_maskz_max_round_sd
3711 // CHECK: @llvm.x86.avx512.mask.max.sd.round
3712 return _mm_maskz_max_round_sd(__U
,__A
,__B
,0x08);
3714 __m128d
test_mm_mask_max_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
) {
3715 // CHECK-LABEL: @test_mm_mask_max_sd
3716 // CHECK: @llvm.x86.avx512.mask.max.sd.round
3717 return _mm_mask_max_sd(__W
,__U
,__A
,__B
);
3719 __m128d
test_mm_maskz_max_sd(__mmask8 __U
, __m128d __A
, __m128d __B
) {
3720 // CHECK-LABEL: @test_mm_maskz_max_sd
3721 // CHECK: @llvm.x86.avx512.mask.max.sd.round
3722 return _mm_maskz_max_sd(__U
,__A
,__B
);
3724 __m128
test_mm_min_round_ss(__m128 __A
, __m128 __B
) {
3725 // CHECK-LABEL: @test_mm_min_round_ss
3726 // CHECK: @llvm.x86.avx512.mask.min.ss.round
3727 return _mm_min_round_ss(__A
,__B
,0x08);
3729 __m128
test_mm_mask_min_round_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
) {
3730 // CHECK-LABEL: @test_mm_mask_min_round_ss
3731 // CHECK: @llvm.x86.avx512.mask.min.ss.round
3732 return _mm_mask_min_round_ss(__W
,__U
,__A
,__B
,0x08);
3734 __m128
test_mm_maskz_min_round_ss(__mmask8 __U
, __m128 __A
, __m128 __B
) {
3735 // CHECK-LABEL: @test_mm_maskz_min_round_ss
3736 // CHECK: @llvm.x86.avx512.mask.min.ss.round
3737 return _mm_maskz_min_round_ss(__U
,__A
,__B
,0x08);
3739 __m128
test_mm_mask_min_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
) {
3740 // CHECK-LABEL: @test_mm_mask_min_ss
3741 // CHECK: @llvm.x86.avx512.mask.min.ss.round
3742 return _mm_mask_min_ss(__W
,__U
,__A
,__B
);
3744 __m128
test_mm_maskz_min_ss(__mmask8 __U
, __m128 __A
, __m128 __B
) {
3745 // CHECK-LABEL: @test_mm_maskz_min_ss
3746 // CHECK: @llvm.x86.avx512.mask.min.ss.round
3747 return _mm_maskz_min_ss(__U
,__A
,__B
);
3749 __m128d
test_mm_min_round_sd(__m128d __A
, __m128d __B
) {
3750 // CHECK-LABEL: @test_mm_min_round_sd
3751 // CHECK: @llvm.x86.avx512.mask.min.sd.round
3752 return _mm_min_round_sd(__A
,__B
,0x08);
3754 __m128d
test_mm_mask_min_round_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
) {
3755 // CHECK-LABEL: @test_mm_mask_min_round_sd
3756 // CHECK: @llvm.x86.avx512.mask.min.sd.round
3757 return _mm_mask_min_round_sd(__W
,__U
,__A
,__B
,0x08);
3759 __m128d
test_mm_maskz_min_round_sd(__mmask8 __U
, __m128d __A
, __m128d __B
) {
3760 // CHECK-LABEL: @test_mm_maskz_min_round_sd
3761 // CHECK: @llvm.x86.avx512.mask.min.sd.round
3762 return _mm_maskz_min_round_sd(__U
,__A
,__B
,0x08);
3764 __m128d
test_mm_mask_min_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
) {
3765 // CHECK-LABEL: @test_mm_mask_min_sd
3766 // CHECK: @llvm.x86.avx512.mask.min.sd.round
3767 return _mm_mask_min_sd(__W
,__U
,__A
,__B
);
3769 __m128d
test_mm_maskz_min_sd(__mmask8 __U
, __m128d __A
, __m128d __B
) {
3770 // CHECK-LABEL: @test_mm_maskz_min_sd
3771 // CHECK: @llvm.x86.avx512.mask.min.sd.round
3772 return _mm_maskz_min_sd(__U
,__A
,__B
);
3775 __m512
test_mm512_undefined(void) {
3776 // CHECK-LABEL: @test_mm512_undefined
3777 // CHECK: ret <16 x float> zeroinitializer
3778 return _mm512_undefined();
3781 __m512
test_mm512_undefined_ps(void) {
3782 // CHECK-LABEL: @test_mm512_undefined_ps
3783 // CHECK: ret <16 x float> zeroinitializer
3784 return _mm512_undefined_ps();
3787 __m512d
test_mm512_undefined_pd(void) {
3788 // CHECK-LABEL: @test_mm512_undefined_pd
3789 // CHECK: ret <8 x double> zeroinitializer
3790 return _mm512_undefined_pd();
3793 __m512i
test_mm512_undefined_epi32(void) {
3794 // CHECK-LABEL: @test_mm512_undefined_epi32
3795 // CHECK: ret <8 x i64> zeroinitializer
3796 return _mm512_undefined_epi32();
3799 __m512i
test_mm512_cvtepi8_epi32(__m128i __A
) {
3800 // CHECK-LABEL: @test_mm512_cvtepi8_epi32
3801 // CHECK: sext <16 x i8> %{{.*}} to <16 x i32>
3802 return _mm512_cvtepi8_epi32(__A
);
3805 __m512i
test_mm512_mask_cvtepi8_epi32(__m512i __W
, __mmask16 __U
, __m128i __A
) {
3806 // CHECK-LABEL: @test_mm512_mask_cvtepi8_epi32
3807 // CHECK: sext <16 x i8> %{{.*}} to <16 x i32>
3808 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3809 return _mm512_mask_cvtepi8_epi32(__W
, __U
, __A
);
3812 __m512i
test_mm512_maskz_cvtepi8_epi32(__mmask16 __U
, __m128i __A
) {
3813 // CHECK-LABEL: @test_mm512_maskz_cvtepi8_epi32
3814 // CHECK: sext <16 x i8> %{{.*}} to <16 x i32>
3815 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3816 return _mm512_maskz_cvtepi8_epi32(__U
, __A
);
3819 __m512i
test_mm512_cvtepi8_epi64(__m128i __A
) {
3820 // CHECK-LABEL: @test_mm512_cvtepi8_epi64
3821 // CHECK: sext <8 x i8> %{{.*}} to <8 x i64>
3822 return _mm512_cvtepi8_epi64(__A
);
3825 __m512i
test_mm512_mask_cvtepi8_epi64(__m512i __W
, __mmask8 __U
, __m128i __A
) {
3826 // CHECK-LABEL: @test_mm512_mask_cvtepi8_epi64
3827 // CHECK: sext <8 x i8> %{{.*}} to <8 x i64>
3828 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3829 return _mm512_mask_cvtepi8_epi64(__W
, __U
, __A
);
3832 __m512i
test_mm512_maskz_cvtepi8_epi64(__mmask8 __U
, __m128i __A
) {
3833 // CHECK-LABEL: @test_mm512_maskz_cvtepi8_epi64
3834 // CHECK: sext <8 x i8> %{{.*}} to <8 x i64>
3835 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3836 return _mm512_maskz_cvtepi8_epi64(__U
, __A
);
3839 __m512i
test_mm512_cvtepi32_epi64(__m256i __X
) {
3840 // CHECK-LABEL: @test_mm512_cvtepi32_epi64
3841 // CHECK: sext <8 x i32> %{{.*}} to <8 x i64>
3842 return _mm512_cvtepi32_epi64(__X
);
3845 __m512i
test_mm512_mask_cvtepi32_epi64(__m512i __W
, __mmask8 __U
, __m256i __X
) {
3846 // CHECK-LABEL: @test_mm512_mask_cvtepi32_epi64
3847 // CHECK: sext <8 x i32> %{{.*}} to <8 x i64>
3848 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3849 return _mm512_mask_cvtepi32_epi64(__W
, __U
, __X
);
3852 __m512i
test_mm512_maskz_cvtepi32_epi64(__mmask8 __U
, __m256i __X
) {
3853 // CHECK-LABEL: @test_mm512_maskz_cvtepi32_epi64
3854 // CHECK: sext <8 x i32> %{{.*}} to <8 x i64>
3855 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3856 return _mm512_maskz_cvtepi32_epi64(__U
, __X
);
3859 __m512i
test_mm512_cvtepi16_epi32(__m256i __A
) {
3860 // CHECK-LABEL: @test_mm512_cvtepi16_epi32
3861 // CHECK: sext <16 x i16> %{{.*}} to <16 x i32>
3862 return _mm512_cvtepi16_epi32(__A
);
3865 __m512i
test_mm512_mask_cvtepi16_epi32(__m512i __W
, __mmask16 __U
, __m256i __A
) {
3866 // CHECK-LABEL: @test_mm512_mask_cvtepi16_epi32
3867 // CHECK: sext <16 x i16> %{{.*}} to <16 x i32>
3868 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3869 return _mm512_mask_cvtepi16_epi32(__W
, __U
, __A
);
3872 __m512i
test_mm512_maskz_cvtepi16_epi32(__mmask16 __U
, __m256i __A
) {
3873 // CHECK-LABEL: @test_mm512_maskz_cvtepi16_epi32
3874 // CHECK: sext <16 x i16> %{{.*}} to <16 x i32>
3875 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3876 return _mm512_maskz_cvtepi16_epi32(__U
, __A
);
3879 __m512i
test_mm512_cvtepi16_epi64(__m128i __A
) {
3880 // CHECK-LABEL: @test_mm512_cvtepi16_epi64
3881 // CHECK: sext <8 x i16> %{{.*}} to <8 x i64>
3882 return _mm512_cvtepi16_epi64(__A
);
3885 __m512i
test_mm512_mask_cvtepi16_epi64(__m512i __W
, __mmask8 __U
, __m128i __A
) {
3886 // CHECK-LABEL: @test_mm512_mask_cvtepi16_epi64
3887 // CHECK: sext <8 x i16> %{{.*}} to <8 x i64>
3888 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3889 return _mm512_mask_cvtepi16_epi64(__W
, __U
, __A
);
3892 __m512i
test_mm512_maskz_cvtepi16_epi64(__mmask8 __U
, __m128i __A
) {
3893 // CHECK-LABEL: @test_mm512_maskz_cvtepi16_epi64
3894 // CHECK: sext <8 x i16> %{{.*}} to <8 x i64>
3895 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3896 return _mm512_maskz_cvtepi16_epi64(__U
, __A
);
3899 __m512i
test_mm512_cvtepu8_epi32(__m128i __A
) {
3900 // CHECK-LABEL: @test_mm512_cvtepu8_epi32
3901 // CHECK: zext <16 x i8> %{{.*}} to <16 x i32>
3902 return _mm512_cvtepu8_epi32(__A
);
3905 __m512i
test_mm512_mask_cvtepu8_epi32(__m512i __W
, __mmask16 __U
, __m128i __A
) {
3906 // CHECK-LABEL: @test_mm512_mask_cvtepu8_epi32
3907 // CHECK: zext <16 x i8> %{{.*}} to <16 x i32>
3908 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3909 return _mm512_mask_cvtepu8_epi32(__W
, __U
, __A
);
3912 __m512i
test_mm512_maskz_cvtepu8_epi32(__mmask16 __U
, __m128i __A
) {
3913 // CHECK-LABEL: @test_mm512_maskz_cvtepu8_epi32
3914 // CHECK: zext <16 x i8> %{{.*}} to <16 x i32>
3915 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3916 return _mm512_maskz_cvtepu8_epi32(__U
, __A
);
3919 __m512i
test_mm512_cvtepu8_epi64(__m128i __A
) {
3920 // CHECK-LABEL: @test_mm512_cvtepu8_epi64
3921 // CHECK: zext <8 x i8> %{{.*}} to <8 x i64>
3922 return _mm512_cvtepu8_epi64(__A
);
3925 __m512i
test_mm512_mask_cvtepu8_epi64(__m512i __W
, __mmask8 __U
, __m128i __A
) {
3926 // CHECK-LABEL: @test_mm512_mask_cvtepu8_epi64
3927 // CHECK: zext <8 x i8> %{{.*}} to <8 x i64>
3928 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3929 return _mm512_mask_cvtepu8_epi64(__W
, __U
, __A
);
3932 __m512i
test_mm512_maskz_cvtepu8_epi64(__mmask8 __U
, __m128i __A
) {
3933 // CHECK-LABEL: @test_mm512_maskz_cvtepu8_epi64
3934 // CHECK: zext <8 x i8> %{{.*}} to <8 x i64>
3935 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3936 return _mm512_maskz_cvtepu8_epi64(__U
, __A
);
3939 __m512i
test_mm512_cvtepu32_epi64(__m256i __X
) {
3940 // CHECK-LABEL: @test_mm512_cvtepu32_epi64
3941 // CHECK: zext <8 x i32> %{{.*}} to <8 x i64>
3942 return _mm512_cvtepu32_epi64(__X
);
3945 __m512i
test_mm512_mask_cvtepu32_epi64(__m512i __W
, __mmask8 __U
, __m256i __X
) {
3946 // CHECK-LABEL: @test_mm512_mask_cvtepu32_epi64
3947 // CHECK: zext <8 x i32> %{{.*}} to <8 x i64>
3948 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3949 return _mm512_mask_cvtepu32_epi64(__W
, __U
, __X
);
3952 __m512i
test_mm512_maskz_cvtepu32_epi64(__mmask8 __U
, __m256i __X
) {
3953 // CHECK-LABEL: @test_mm512_maskz_cvtepu32_epi64
3954 // CHECK: zext <8 x i32> %{{.*}} to <8 x i64>
3955 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3956 return _mm512_maskz_cvtepu32_epi64(__U
, __X
);
3959 __m512i
test_mm512_cvtepu16_epi32(__m256i __A
) {
3960 // CHECK-LABEL: @test_mm512_cvtepu16_epi32
3961 // CHECK: zext <16 x i16> %{{.*}} to <16 x i32>
3962 return _mm512_cvtepu16_epi32(__A
);
3965 __m512i
test_mm512_mask_cvtepu16_epi32(__m512i __W
, __mmask16 __U
, __m256i __A
) {
3966 // CHECK-LABEL: @test_mm512_mask_cvtepu16_epi32
3967 // CHECK: zext <16 x i16> %{{.*}} to <16 x i32>
3968 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3969 return _mm512_mask_cvtepu16_epi32(__W
, __U
, __A
);
3972 __m512i
test_mm512_maskz_cvtepu16_epi32(__mmask16 __U
, __m256i __A
) {
3973 // CHECK-LABEL: @test_mm512_maskz_cvtepu16_epi32
3974 // CHECK: zext <16 x i16> %{{.*}} to <16 x i32>
3975 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3976 return _mm512_maskz_cvtepu16_epi32(__U
, __A
);
3979 __m512i
test_mm512_cvtepu16_epi64(__m128i __A
) {
3980 // CHECK-LABEL: @test_mm512_cvtepu16_epi64
3981 // CHECK: zext <8 x i16> %{{.*}} to <8 x i64>
3982 return _mm512_cvtepu16_epi64(__A
);
3985 __m512i
test_mm512_mask_cvtepu16_epi64(__m512i __W
, __mmask8 __U
, __m128i __A
) {
3986 // CHECK-LABEL: @test_mm512_mask_cvtepu16_epi64
3987 // CHECK: zext <8 x i16> %{{.*}} to <8 x i64>
3988 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3989 return _mm512_mask_cvtepu16_epi64(__W
, __U
, __A
);
3992 __m512i
test_mm512_maskz_cvtepu16_epi64(__mmask8 __U
, __m128i __A
) {
3993 // CHECK-LABEL: @test_mm512_maskz_cvtepu16_epi64
3994 // CHECK: zext <8 x i16> %{{.*}} to <8 x i64>
3995 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3996 return _mm512_maskz_cvtepu16_epi64(__U
, __A
);
4000 __m512i
test_mm512_rol_epi32(__m512i __A
) {
4001 // CHECK-LABEL: @test_mm512_rol_epi32
4002 // CHECK: @llvm.fshl.v16i32
4003 return _mm512_rol_epi32(__A
, 5);
4006 __m512i
test_mm512_mask_rol_epi32(__m512i __W
, __mmask16 __U
, __m512i __A
) {
4007 // CHECK-LABEL: @test_mm512_mask_rol_epi32
4008 // CHECK: @llvm.fshl.v16i32
4009 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4010 return _mm512_mask_rol_epi32(__W
, __U
, __A
, 5);
4013 __m512i
test_mm512_maskz_rol_epi32(__mmask16 __U
, __m512i __A
) {
4014 // CHECK-LABEL: @test_mm512_maskz_rol_epi32
4015 // CHECK: @llvm.fshl.v16i32
4016 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4017 return _mm512_maskz_rol_epi32(__U
, __A
, 5);
4020 __m512i
test_mm512_rol_epi64(__m512i __A
) {
4021 // CHECK-LABEL: @test_mm512_rol_epi64
4022 // CHECK: @llvm.fshl.v8i64
4023 return _mm512_rol_epi64(__A
, 5);
4026 __m512i
test_mm512_mask_rol_epi64(__m512i __W
, __mmask8 __U
, __m512i __A
) {
4027 // CHECK-LABEL: @test_mm512_mask_rol_epi64
4028 // CHECK: @llvm.fshl.v8i64
4029 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4030 return _mm512_mask_rol_epi64(__W
, __U
, __A
, 5);
4033 __m512i
test_mm512_maskz_rol_epi64(__mmask8 __U
, __m512i __A
) {
4034 // CHECK-LABEL: @test_mm512_maskz_rol_epi64
4035 // CHECK: @llvm.fshl.v8i64
4036 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4037 return _mm512_maskz_rol_epi64(__U
, __A
, 5);
4040 __m512i
test_mm512_rolv_epi32(__m512i __A
, __m512i __B
) {
4041 // CHECK-LABEL: @test_mm512_rolv_epi32
4042 // CHECK: @llvm.fshl.v16i32
4043 return _mm512_rolv_epi32(__A
, __B
);
4046 __m512i
test_mm512_mask_rolv_epi32(__m512i __W
, __mmask16 __U
, __m512i __A
, __m512i __B
) {
4047 // CHECK-LABEL: @test_mm512_mask_rolv_epi32
4048 // CHECK: @llvm.fshl.v16i32
4049 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4050 return _mm512_mask_rolv_epi32(__W
, __U
, __A
, __B
);
4053 __m512i
test_mm512_maskz_rolv_epi32(__mmask16 __U
, __m512i __A
, __m512i __B
) {
4054 // CHECK-LABEL: @test_mm512_maskz_rolv_epi32
4055 // CHECK: @llvm.fshl.v16i32
4056 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4057 return _mm512_maskz_rolv_epi32(__U
, __A
, __B
);
4060 __m512i
test_mm512_rolv_epi64(__m512i __A
, __m512i __B
) {
4061 // CHECK-LABEL: @test_mm512_rolv_epi64
4062 // CHECK: @llvm.fshl.v8i64
4063 return _mm512_rolv_epi64(__A
, __B
);
4066 __m512i
test_mm512_mask_rolv_epi64(__m512i __W
, __mmask8 __U
, __m512i __A
, __m512i __B
) {
4067 // CHECK-LABEL: @test_mm512_mask_rolv_epi64
4068 // CHECK: @llvm.fshl.v8i64
4069 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4070 return _mm512_mask_rolv_epi64(__W
, __U
, __A
, __B
);
4073 __m512i
test_mm512_maskz_rolv_epi64(__mmask8 __U
, __m512i __A
, __m512i __B
) {
4074 // CHECK-LABEL: @test_mm512_maskz_rolv_epi64
4075 // CHECK: @llvm.fshl.v8i64
4076 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4077 return _mm512_maskz_rolv_epi64(__U
, __A
, __B
);
4080 __m512i
test_mm512_ror_epi32(__m512i __A
) {
4081 // CHECK-LABEL: @test_mm512_ror_epi32
4082 // CHECK: @llvm.fshr.v16i32
4083 return _mm512_ror_epi32(__A
, 5);
4086 __m512i
test_mm512_mask_ror_epi32(__m512i __W
, __mmask16 __U
, __m512i __A
) {
4087 // CHECK-LABEL: @test_mm512_mask_ror_epi32
4088 // CHECK: @llvm.fshr.v16i32
4089 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4090 return _mm512_mask_ror_epi32(__W
, __U
, __A
, 5);
4093 __m512i
test_mm512_maskz_ror_epi32(__mmask16 __U
, __m512i __A
) {
4094 // CHECK-LABEL: @test_mm512_maskz_ror_epi32
4095 // CHECK: @llvm.fshr.v16i32
4096 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4097 return _mm512_maskz_ror_epi32(__U
, __A
, 5);
4100 __m512i
test_mm512_ror_epi64(__m512i __A
) {
4101 // CHECK-LABEL: @test_mm512_ror_epi64
4102 // CHECK: @llvm.fshr.v8i64
4103 return _mm512_ror_epi64(__A
, 5);
4106 __m512i
test_mm512_mask_ror_epi64(__m512i __W
, __mmask8 __U
, __m512i __A
) {
4107 // CHECK-LABEL: @test_mm512_mask_ror_epi64
4108 // CHECK: @llvm.fshr.v8i64
4109 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4110 return _mm512_mask_ror_epi64(__W
, __U
, __A
, 5);
4113 __m512i
test_mm512_maskz_ror_epi64(__mmask8 __U
, __m512i __A
) {
4114 // CHECK-LABEL: @test_mm512_maskz_ror_epi64
4115 // CHECK: @llvm.fshr.v8i64
4116 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4117 return _mm512_maskz_ror_epi64(__U
, __A
, 5);
4121 __m512i
test_mm512_rorv_epi32(__m512i __A
, __m512i __B
) {
4122 // CHECK-LABEL: @test_mm512_rorv_epi32
4123 // CHECK: @llvm.fshr.v16i32
4124 return _mm512_rorv_epi32(__A
, __B
);
4127 __m512i
test_mm512_mask_rorv_epi32(__m512i __W
, __mmask16 __U
, __m512i __A
, __m512i __B
) {
4128 // CHECK-LABEL: @test_mm512_mask_rorv_epi32
4129 // CHECK: @llvm.fshr.v16i32
4130 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4131 return _mm512_mask_rorv_epi32(__W
, __U
, __A
, __B
);
4134 __m512i
test_mm512_maskz_rorv_epi32(__mmask16 __U
, __m512i __A
, __m512i __B
) {
4135 // CHECK-LABEL: @test_mm512_maskz_rorv_epi32
4136 // CHECK: @llvm.fshr.v16i32
4137 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4138 return _mm512_maskz_rorv_epi32(__U
, __A
, __B
);
4141 __m512i
test_mm512_rorv_epi64(__m512i __A
, __m512i __B
) {
4142 // CHECK-LABEL: @test_mm512_rorv_epi64
4143 // CHECK: @llvm.fshr.v8i64
4144 return _mm512_rorv_epi64(__A
, __B
);
4147 __m512i
test_mm512_mask_rorv_epi64(__m512i __W
, __mmask8 __U
, __m512i __A
, __m512i __B
) {
4148 // CHECK-LABEL: @test_mm512_mask_rorv_epi64
4149 // CHECK: @llvm.fshr.v8i64
4150 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4151 return _mm512_mask_rorv_epi64(__W
, __U
, __A
, __B
);
4154 __m512i
test_mm512_maskz_rorv_epi64(__mmask8 __U
, __m512i __A
, __m512i __B
) {
4155 // CHECK-LABEL: @test_mm512_maskz_rorv_epi64
4156 // CHECK: @llvm.fshr.v8i64
4157 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4158 return _mm512_maskz_rorv_epi64(__U
, __A
, __B
);
4161 __m512i
test_mm512_slli_epi32(__m512i __A
) {
4162 // CHECK-LABEL: @test_mm512_slli_epi32
4163 // CHECK: @llvm.x86.avx512.pslli.d.512
4164 return _mm512_slli_epi32(__A
, 5);
4167 __m512i
test_mm512_slli_epi32_2(__m512i __A
, unsigned int __B
) {
4168 // CHECK-LABEL: @test_mm512_slli_epi32_2
4169 // CHECK: @llvm.x86.avx512.pslli.d.512
4170 return _mm512_slli_epi32(__A
, __B
);
4173 __m512i
test_mm512_mask_slli_epi32(__m512i __W
, __mmask16 __U
, __m512i __A
) {
4174 // CHECK-LABEL: @test_mm512_mask_slli_epi32
4175 // CHECK: @llvm.x86.avx512.pslli.d.512
4176 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4177 return _mm512_mask_slli_epi32(__W
, __U
, __A
, 5);
4180 __m512i
test_mm512_mask_slli_epi32_2(__m512i __W
, __mmask16 __U
, __m512i __A
, unsigned int __B
) {
4181 // CHECK-LABEL: @test_mm512_mask_slli_epi32_2
4182 // CHECK: @llvm.x86.avx512.pslli.d.512
4183 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4184 return _mm512_mask_slli_epi32(__W
, __U
, __A
, __B
);
4187 __m512i
test_mm512_maskz_slli_epi32(__mmask16 __U
, __m512i __A
) {
4188 // CHECK-LABEL: @test_mm512_maskz_slli_epi32
4189 // CHECK: @llvm.x86.avx512.pslli.d.512
4190 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4191 return _mm512_maskz_slli_epi32(__U
, __A
, 5);
4194 __m512i
test_mm512_maskz_slli_epi32_2(__mmask16 __U
, __m512i __A
, unsigned int __B
) {
4195 // CHECK-LABEL: @test_mm512_maskz_slli_epi32_2
4196 // CHECK: @llvm.x86.avx512.pslli.d.512
4197 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4198 return _mm512_maskz_slli_epi32(__U
, __A
, __B
);
4201 __m512i
test_mm512_slli_epi64(__m512i __A
) {
4202 // CHECK-LABEL: @test_mm512_slli_epi64
4203 // CHECK: @llvm.x86.avx512.pslli.q.512
4204 return _mm512_slli_epi64(__A
, 5);
4207 __m512i
test_mm512_slli_epi64_2(__m512i __A
, unsigned int __B
) {
4208 // CHECK-LABEL: @test_mm512_slli_epi64_2
4209 // CHECK: @llvm.x86.avx512.pslli.q.512
4210 return _mm512_slli_epi64(__A
, __B
);
4213 __m512i
test_mm512_mask_slli_epi64(__m512i __W
, __mmask8 __U
, __m512i __A
) {
4214 // CHECK-LABEL: @test_mm512_mask_slli_epi64
4215 // CHECK: @llvm.x86.avx512.pslli.q.512
4216 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4217 return _mm512_mask_slli_epi64(__W
, __U
, __A
, 5);
4220 __m512i
test_mm512_mask_slli_epi64_2(__m512i __W
, __mmask8 __U
, __m512i __A
, unsigned int __B
) {
4221 // CHECK-LABEL: @test_mm512_mask_slli_epi64_2
4222 // CHECK: @llvm.x86.avx512.pslli.q.512
4223 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4224 return _mm512_mask_slli_epi64(__W
, __U
, __A
, __B
);
4227 __m512i
test_mm512_maskz_slli_epi64(__mmask8 __U
, __m512i __A
) {
4228 // CHECK-LABEL: @test_mm512_maskz_slli_epi64
4229 // CHECK: @llvm.x86.avx512.pslli.q.512
4230 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4231 return _mm512_maskz_slli_epi64(__U
, __A
, 5);
4234 __m512i
test_mm512_maskz_slli_epi64_2(__mmask8 __U
, __m512i __A
, unsigned int __B
) {
4235 // CHECK-LABEL: @test_mm512_maskz_slli_epi64_2
4236 // CHECK: @llvm.x86.avx512.pslli.q.512
4237 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4238 return _mm512_maskz_slli_epi64(__U
, __A
, __B
);
4241 __m512i
test_mm512_srli_epi32(__m512i __A
) {
4242 // CHECK-LABEL: @test_mm512_srli_epi32
4243 // CHECK: @llvm.x86.avx512.psrli.d.512
4244 return _mm512_srli_epi32(__A
, 5);
4247 __m512i
test_mm512_srli_epi32_2(__m512i __A
, unsigned int __B
) {
4248 // CHECK-LABEL: @test_mm512_srli_epi32_2
4249 // CHECK: @llvm.x86.avx512.psrli.d.512
4250 return _mm512_srli_epi32(__A
, __B
);
4253 __m512i
test_mm512_mask_srli_epi32(__m512i __W
, __mmask16 __U
, __m512i __A
) {
4254 // CHECK-LABEL: @test_mm512_mask_srli_epi32
4255 // CHECK: @llvm.x86.avx512.psrli.d.512
4256 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4257 return _mm512_mask_srli_epi32(__W
, __U
, __A
, 5);
4260 __m512i
test_mm512_mask_srli_epi32_2(__m512i __W
, __mmask16 __U
, __m512i __A
, unsigned int __B
) {
4261 // CHECK-LABEL: @test_mm512_mask_srli_epi32_2
4262 // CHECK: @llvm.x86.avx512.psrli.d.512
4263 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4264 return _mm512_mask_srli_epi32(__W
, __U
, __A
, __B
);
4267 __m512i
test_mm512_maskz_srli_epi32(__mmask16 __U
, __m512i __A
) {
4268 // CHECK-LABEL: @test_mm512_maskz_srli_epi32
4269 // CHECK: @llvm.x86.avx512.psrli.d.512
4270 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4271 return _mm512_maskz_srli_epi32(__U
, __A
, 5);
4274 __m512i
test_mm512_maskz_srli_epi32_2(__mmask16 __U
, __m512i __A
, unsigned int __B
) {
4275 // CHECK-LABEL: @test_mm512_maskz_srli_epi32_2
4276 // CHECK: @llvm.x86.avx512.psrli.d.512
4277 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4278 return _mm512_maskz_srli_epi32(__U
, __A
, __B
);
4281 __m512i
test_mm512_srli_epi64(__m512i __A
) {
4282 // CHECK-LABEL: @test_mm512_srli_epi64
4283 // CHECK: @llvm.x86.avx512.psrli.q.512
4284 return _mm512_srli_epi64(__A
, 5);
4287 __m512i
test_mm512_srli_epi64_2(__m512i __A
, unsigned int __B
) {
4288 // CHECK-LABEL: @test_mm512_srli_epi64_2
4289 // CHECK: @llvm.x86.avx512.psrli.q.512
4290 return _mm512_srli_epi64(__A
, __B
);
4293 __m512i
test_mm512_mask_srli_epi64(__m512i __W
, __mmask8 __U
, __m512i __A
) {
4294 // CHECK-LABEL: @test_mm512_mask_srli_epi64
4295 // CHECK: @llvm.x86.avx512.psrli.q.512
4296 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4297 return _mm512_mask_srli_epi64(__W
, __U
, __A
, 5);
4300 __m512i
test_mm512_mask_srli_epi64_2(__m512i __W
, __mmask8 __U
, __m512i __A
, unsigned int __B
) {
4301 // CHECK-LABEL: @test_mm512_mask_srli_epi64_2
4302 // CHECK: @llvm.x86.avx512.psrli.q.512
4303 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4304 return _mm512_mask_srli_epi64(__W
, __U
, __A
, __B
);
4307 __m512i
test_mm512_maskz_srli_epi64(__mmask8 __U
, __m512i __A
) {
4308 // CHECK-LABEL: @test_mm512_maskz_srli_epi64
4309 // CHECK: @llvm.x86.avx512.psrli.q.512
4310 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4311 return _mm512_maskz_srli_epi64(__U
, __A
, 5);
4314 __m512i
test_mm512_maskz_srli_epi64_2(__mmask8 __U
, __m512i __A
, unsigned int __B
) {
4315 // CHECK-LABEL: @test_mm512_maskz_srli_epi64_2
4316 // CHECK: @llvm.x86.avx512.psrli.q.512
4317 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4318 return _mm512_maskz_srli_epi64(__U
, __A
, __B
);
4321 __m512i
test_mm512_mask_load_epi32(__m512i __W
, __mmask16 __U
, void const *__P
) {
4322 // CHECK-LABEL: @test_mm512_mask_load_epi32
4323 // CHECK: @llvm.masked.load.v16i32.p0(ptr %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
4324 return _mm512_mask_load_epi32(__W
, __U
, __P
);
4327 __m512i
test_mm512_maskz_load_epi32(__mmask16 __U
, void const *__P
) {
4328 // CHECK-LABEL: @test_mm512_maskz_load_epi32
4329 // CHECK: @llvm.masked.load.v16i32.p0(ptr %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
4330 return _mm512_maskz_load_epi32(__U
, __P
);
4333 __m512i
test_mm512_mask_mov_epi32(__m512i __W
, __mmask16 __U
, __m512i __A
) {
4334 // CHECK-LABEL: @test_mm512_mask_mov_epi32
4335 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4336 return _mm512_mask_mov_epi32(__W
, __U
, __A
);
4339 __m512i
test_mm512_maskz_mov_epi32(__mmask16 __U
, __m512i __A
) {
4340 // CHECK-LABEL: @test_mm512_maskz_mov_epi32
4341 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4342 return _mm512_maskz_mov_epi32(__U
, __A
);
4345 __m512i
test_mm512_mask_mov_epi64(__m512i __W
, __mmask8 __U
, __m512i __A
) {
4346 // CHECK-LABEL: @test_mm512_mask_mov_epi64
4347 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4348 return _mm512_mask_mov_epi64(__W
, __U
, __A
);
4351 __m512i
test_mm512_maskz_mov_epi64(__mmask8 __U
, __m512i __A
) {
4352 // CHECK-LABEL: @test_mm512_maskz_mov_epi64
4353 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4354 return _mm512_maskz_mov_epi64(__U
, __A
);
4357 __m512i
test_mm512_mask_load_epi64(__m512i __W
, __mmask8 __U
, void const *__P
) {
4358 // CHECK-LABEL: @test_mm512_mask_load_epi64
4359 // CHECK: @llvm.masked.load.v8i64.p0(ptr %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
4360 return _mm512_mask_load_epi64(__W
, __U
, __P
);
4363 __m512i
test_mm512_maskz_load_epi64(__mmask8 __U
, void const *__P
) {
4364 // CHECK-LABEL: @test_mm512_maskz_load_epi64
4365 // CHECK: @llvm.masked.load.v8i64.p0(ptr %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
4366 return _mm512_maskz_load_epi64(__U
, __P
);
4369 void test_mm512_mask_store_epi32(void *__P
, __mmask16 __U
, __m512i __A
) {
4370 // CHECK-LABEL: @test_mm512_mask_store_epi32
4371 // CHECK: @llvm.masked.store.v16i32.p0(<16 x i32> %{{.*}}, ptr %{{.*}}, i32 64, <16 x i1> %{{.*}})
4372 return _mm512_mask_store_epi32(__P
, __U
, __A
);
4375 void test_mm512_mask_store_epi64(void *__P
, __mmask8 __U
, __m512i __A
) {
4376 // CHECK-LABEL: @test_mm512_mask_store_epi64
4377 // CHECK: @llvm.masked.store.v8i64.p0(<8 x i64> %{{.*}}, ptr %{{.*}}, i32 64, <8 x i1> %{{.*}})
4378 return _mm512_mask_store_epi64(__P
, __U
, __A
);
4381 __m512d
test_mm512_movedup_pd(__m512d __A
) {
4382 // CHECK-LABEL: @test_mm512_movedup_pd
4383 // 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>
4384 return _mm512_movedup_pd(__A
);
4387 __m512d
test_mm512_mask_movedup_pd(__m512d __W
, __mmask8 __U
, __m512d __A
) {
4388 // CHECK-LABEL: @test_mm512_mask_movedup_pd
4389 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
4390 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4391 return _mm512_mask_movedup_pd(__W
, __U
, __A
);
4394 __m512d
test_mm512_maskz_movedup_pd(__mmask8 __U
, __m512d __A
) {
4395 // CHECK-LABEL: @test_mm512_maskz_movedup_pd
4396 // 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>
4397 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4398 return _mm512_maskz_movedup_pd(__U
, __A
);
4401 int test_mm_comi_round_sd(__m128d __A
, __m128d __B
) {
4402 // CHECK-LABEL: @test_mm_comi_round_sd
4403 // CHECK: @llvm.x86.avx512.vcomi.sd
4404 return _mm_comi_round_sd(__A
, __B
, 5, _MM_FROUND_NO_EXC
);
4407 int test_mm_comi_round_ss(__m128 __A
, __m128 __B
) {
4408 // CHECK-LABEL: @test_mm_comi_round_ss
4409 // CHECK: @llvm.x86.avx512.vcomi.ss
4410 return _mm_comi_round_ss(__A
, __B
, 5, _MM_FROUND_NO_EXC
);
4413 __m512d
test_mm512_fixupimm_round_pd(__m512d __A
, __m512d __B
, __m512i __C
) {
4414 // CHECK-LABEL: @test_mm512_fixupimm_round_pd
4415 // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.512
4416 return _mm512_fixupimm_round_pd(__A
, __B
, __C
, 5, 8);
4419 __m512d
test_mm512_mask_fixupimm_round_pd(__m512d __A
, __mmask8 __U
, __m512d __B
, __m512i __C
) {
4420 // CHECK-LABEL: @test_mm512_mask_fixupimm_round_pd
4421 // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.512
4422 return _mm512_mask_fixupimm_round_pd(__A
, __U
, __B
, __C
, 5, 8);
4425 __m512d
test_mm512_fixupimm_pd(__m512d __A
, __m512d __B
, __m512i __C
) {
4426 // CHECK-LABEL: @test_mm512_fixupimm_pd
4427 // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.512
4428 return _mm512_fixupimm_pd(__A
, __B
, __C
, 5);
4431 __m512d
test_mm512_mask_fixupimm_pd(__m512d __A
, __mmask8 __U
, __m512d __B
, __m512i __C
) {
4432 // CHECK-LABEL: @test_mm512_mask_fixupimm_pd
4433 // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.512
4434 return _mm512_mask_fixupimm_pd(__A
, __U
, __B
, __C
, 5);
4437 __m512d
test_mm512_maskz_fixupimm_round_pd(__mmask8 __U
, __m512d __A
, __m512d __B
, __m512i __C
) {
4438 // CHECK-LABEL: @test_mm512_maskz_fixupimm_round_pd
4439 // CHECK: @llvm.x86.avx512.maskz.fixupimm.pd.512
4440 return _mm512_maskz_fixupimm_round_pd(__U
, __A
, __B
, __C
, 5, 8);
4443 __m512d
test_mm512_maskz_fixupimm_pd(__mmask8 __U
, __m512d __A
, __m512d __B
, __m512i __C
) {
4444 // CHECK-LABEL: @test_mm512_maskz_fixupimm_pd
4445 // CHECK: @llvm.x86.avx512.maskz.fixupimm.pd.512
4446 return _mm512_maskz_fixupimm_pd(__U
, __A
, __B
, __C
, 5);
4449 __m512
test_mm512_fixupimm_round_ps(__m512 __A
, __m512 __B
, __m512i __C
) {
4450 // CHECK-LABEL: @test_mm512_fixupimm_round_ps
4451 // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.512
4452 return _mm512_fixupimm_round_ps(__A
, __B
, __C
, 5, 8);
4455 __m512
test_mm512_mask_fixupimm_round_ps(__m512 __A
, __mmask16 __U
, __m512 __B
, __m512i __C
) {
4456 // CHECK-LABEL: @test_mm512_mask_fixupimm_round_ps
4457 // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.512
4458 return _mm512_mask_fixupimm_round_ps(__A
, __U
, __B
, __C
, 5, 8);
4461 __m512
test_mm512_fixupimm_ps(__m512 __A
, __m512 __B
, __m512i __C
) {
4462 // CHECK-LABEL: @test_mm512_fixupimm_ps
4463 // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.512
4464 return _mm512_fixupimm_ps(__A
, __B
, __C
, 5);
4467 __m512
test_mm512_mask_fixupimm_ps(__m512 __A
, __mmask16 __U
, __m512 __B
, __m512i __C
) {
4468 // CHECK-LABEL: @test_mm512_mask_fixupimm_ps
4469 // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.512
4470 return _mm512_mask_fixupimm_ps(__A
, __U
, __B
, __C
, 5);
4473 __m512
test_mm512_maskz_fixupimm_round_ps(__mmask16 __U
, __m512 __A
, __m512 __B
, __m512i __C
) {
4474 // CHECK-LABEL: @test_mm512_maskz_fixupimm_round_ps
4475 // CHECK: @llvm.x86.avx512.maskz.fixupimm.ps.512
4476 return _mm512_maskz_fixupimm_round_ps(__U
, __A
, __B
, __C
, 5, 8);
4479 __m512
test_mm512_maskz_fixupimm_ps(__mmask16 __U
, __m512 __A
, __m512 __B
, __m512i __C
) {
4480 // CHECK-LABEL: @test_mm512_maskz_fixupimm_ps
4481 // CHECK: @llvm.x86.avx512.maskz.fixupimm.ps.512
4482 return _mm512_maskz_fixupimm_ps(__U
, __A
, __B
, __C
, 5);
4485 __m128d
test_mm_fixupimm_round_sd(__m128d __A
, __m128d __B
, __m128i __C
) {
4486 // CHECK-LABEL: @test_mm_fixupimm_round_sd
4487 // CHECK: @llvm.x86.avx512.mask.fixupimm
4488 return _mm_fixupimm_round_sd(__A
, __B
, __C
, 5, 8);
4491 __m128d
test_mm_mask_fixupimm_round_sd(__m128d __A
, __mmask8 __U
, __m128d __B
, __m128i __C
) {
4492 // CHECK-LABEL: @test_mm_mask_fixupimm_round_sd
4493 // CHECK: @llvm.x86.avx512.mask.fixupimm
4494 return _mm_mask_fixupimm_round_sd(__A
, __U
, __B
, __C
, 5, 8);
4497 __m128d
test_mm_fixupimm_sd(__m128d __A
, __m128d __B
, __m128i __C
) {
4498 // CHECK-LABEL: @test_mm_fixupimm_sd
4499 // CHECK: @llvm.x86.avx512.mask.fixupimm
4500 return _mm_fixupimm_sd(__A
, __B
, __C
, 5);
4503 __m128d
test_mm_mask_fixupimm_sd(__m128d __A
, __mmask8 __U
, __m128d __B
, __m128i __C
) {
4504 // CHECK-LABEL: @test_mm_mask_fixupimm_sd
4505 // CHECK: @llvm.x86.avx512.mask.fixupimm
4506 return _mm_mask_fixupimm_sd(__A
, __U
, __B
, __C
, 5);
4509 __m128d
test_mm_maskz_fixupimm_round_sd(__mmask8 __U
, __m128d __A
, __m128d __B
, __m128i __C
) {
4510 // CHECK-LABEL: @test_mm_maskz_fixupimm_round_sd
4511 // CHECK: @llvm.x86.avx512.maskz.fixupimm
4512 return _mm_maskz_fixupimm_round_sd(__U
, __A
, __B
, __C
, 5, 8);
4515 __m128d
test_mm_maskz_fixupimm_sd(__mmask8 __U
, __m128d __A
, __m128d __B
, __m128i __C
) {
4516 // CHECK-LABEL: @test_mm_maskz_fixupimm_sd
4517 // CHECK: @llvm.x86.avx512.maskz.fixupimm
4518 return _mm_maskz_fixupimm_sd(__U
, __A
, __B
, __C
, 5);
4521 __m128
test_mm_fixupimm_round_ss(__m128 __A
, __m128 __B
, __m128i __C
) {
4522 // CHECK-LABEL: @test_mm_fixupimm_round_ss
4523 // CHECK: @llvm.x86.avx512.mask.fixupimm
4524 return _mm_fixupimm_round_ss(__A
, __B
, __C
, 5, 8);
4527 __m128
test_mm_mask_fixupimm_round_ss(__m128 __A
, __mmask8 __U
, __m128 __B
, __m128i __C
) {
4528 // CHECK-LABEL: @test_mm_mask_fixupimm_round_ss
4529 // CHECK: @llvm.x86.avx512.mask.fixupimm
4530 return _mm_mask_fixupimm_round_ss(__A
, __U
, __B
, __C
, 5, 8);
4533 __m128
test_mm_fixupimm_ss(__m128 __A
, __m128 __B
, __m128i __C
) {
4534 // CHECK-LABEL: @test_mm_fixupimm_ss
4535 // CHECK: @llvm.x86.avx512.mask.fixupimm
4536 return _mm_fixupimm_ss(__A
, __B
, __C
, 5);
4539 __m128
test_mm_mask_fixupimm_ss(__m128 __A
, __mmask8 __U
, __m128 __B
, __m128i __C
) {
4540 // CHECK-LABEL: @test_mm_mask_fixupimm_ss
4541 // CHECK: @llvm.x86.avx512.mask.fixupimm
4542 return _mm_mask_fixupimm_ss(__A
, __U
, __B
, __C
, 5);
4545 __m128
test_mm_maskz_fixupimm_round_ss(__mmask8 __U
, __m128 __A
, __m128 __B
, __m128i __C
) {
4546 // CHECK-LABEL: @test_mm_maskz_fixupimm_round_ss
4547 // CHECK: @llvm.x86.avx512.maskz.fixupimm
4548 return _mm_maskz_fixupimm_round_ss(__U
, __A
, __B
, __C
, 5, 8);
4551 __m128
test_mm_maskz_fixupimm_ss(__mmask8 __U
, __m128 __A
, __m128 __B
, __m128i __C
) {
4552 // CHECK-LABEL: @test_mm_maskz_fixupimm_ss
4553 // CHECK: @llvm.x86.avx512.maskz.fixupimm
4554 return _mm_maskz_fixupimm_ss(__U
, __A
, __B
, __C
, 5);
4557 __m128d
test_mm_getexp_round_sd(__m128d __A
, __m128d __B
) {
4558 // CHECK-LABEL: @test_mm_getexp_round_sd
4559 // CHECK: @llvm.x86.avx512.mask.getexp.sd
4560 return _mm_getexp_round_sd(__A
, __B
, 8);
4563 __m128d
test_mm_getexp_sd(__m128d __A
, __m128d __B
) {
4564 // CHECK-LABEL: @test_mm_getexp_sd
4565 // CHECK: @llvm.x86.avx512.mask.getexp.sd
4566 return _mm_getexp_sd(__A
, __B
);
4569 __m128
test_mm_getexp_round_ss(__m128 __A
, __m128 __B
) {
4570 // CHECK-LABEL: @test_mm_getexp_round_ss
4571 // CHECK: @llvm.x86.avx512.mask.getexp.ss
4572 return _mm_getexp_round_ss(__A
, __B
, 8);
4575 __m128
test_mm_getexp_ss(__m128 __A
, __m128 __B
) {
4576 // CHECK-LABEL: @test_mm_getexp_ss
4577 // CHECK: @llvm.x86.avx512.mask.getexp.ss
4578 return _mm_getexp_ss(__A
, __B
);
4581 __m128d
test_mm_getmant_round_sd(__m128d __A
, __m128d __B
) {
4582 // CHECK-LABEL: @test_mm_getmant_round_sd
4583 // CHECK: @llvm.x86.avx512.mask.getmant.sd
4584 return _mm_getmant_round_sd(__A
, __B
, _MM_MANT_NORM_1_2
, _MM_MANT_SIGN_src
, 8);
4587 __m128d
test_mm_getmant_sd(__m128d __A
, __m128d __B
) {
4588 // CHECK-LABEL: @test_mm_getmant_sd
4589 // CHECK: @llvm.x86.avx512.mask.getmant.sd
4590 return _mm_getmant_sd(__A
, __B
, _MM_MANT_NORM_1_2
, _MM_MANT_SIGN_src
);
4593 __m128
test_mm_getmant_round_ss(__m128 __A
, __m128 __B
) {
4594 // CHECK-LABEL: @test_mm_getmant_round_ss
4595 // CHECK: @llvm.x86.avx512.mask.getmant.ss
4596 return _mm_getmant_round_ss(__A
, __B
, _MM_MANT_NORM_1_2
, _MM_MANT_SIGN_src
, 8);
4599 __m128
test_mm_getmant_ss(__m128 __A
, __m128 __B
) {
4600 // CHECK-LABEL: @test_mm_getmant_ss
4601 // CHECK: @llvm.x86.avx512.mask.getmant.ss
4602 return _mm_getmant_ss(__A
, __B
, _MM_MANT_NORM_1_2
, _MM_MANT_SIGN_src
);
4605 __mmask16
test_mm512_kmov(__mmask16 __A
) {
4606 // CHECK-LABEL: @test_mm512_kmov
4607 // CHECK: load i16, ptr %__A.addr.i, align 2{{$}}
4608 return _mm512_kmov(__A
);
4611 __m512d
test_mm512_mask_unpackhi_pd(__m512d __W
, __mmask8 __U
, __m512d __A
, __m512d __B
) {
4612 // CHECK-LABEL: @test_mm512_mask_unpackhi_pd
4613 // 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>
4614 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4615 return _mm512_mask_unpackhi_pd(__W
, __U
, __A
, __B
);
4618 long long test_mm_cvt_roundsd_si64(__m128d __A
) {
4619 // CHECK-LABEL: @test_mm_cvt_roundsd_si64
4620 // CHECK: @llvm.x86.avx512.vcvtsd2si64
4621 return _mm_cvt_roundsd_si64(__A
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
4624 __m512i
test_mm512_mask2_permutex2var_epi32(__m512i __A
, __m512i __I
, __mmask16 __U
, __m512i __B
) {
4625 // CHECK-LABEL: @test_mm512_mask2_permutex2var_epi32
4626 // CHECK: @llvm.x86.avx512.vpermi2var.d.512
4627 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4628 return _mm512_mask2_permutex2var_epi32(__A
, __I
, __U
, __B
);
4630 __m512i
test_mm512_unpackhi_epi32(__m512i __A
, __m512i __B
) {
4631 // CHECK-LABEL: @test_mm512_unpackhi_epi32
4632 // 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>
4633 return _mm512_unpackhi_epi32(__A
, __B
);
4636 __m512d
test_mm512_maskz_unpackhi_pd(__mmask8 __U
, __m512d __A
, __m512d __B
) {
4637 // CHECK-LABEL: @test_mm512_maskz_unpackhi_pd
4638 // 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>
4639 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4640 return _mm512_maskz_unpackhi_pd(__U
, __A
, __B
);
4643 long long test_mm_cvt_roundsd_i64(__m128d __A
) {
4644 // CHECK-LABEL: @test_mm_cvt_roundsd_i64
4645 // CHECK: @llvm.x86.avx512.vcvtsd2si64
4646 return _mm_cvt_roundsd_i64(__A
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
4649 __m512d
test_mm512_mask2_permutex2var_pd(__m512d __A
, __m512i __I
, __mmask8 __U
, __m512d __B
) {
4650 // CHECK-LABEL: @test_mm512_mask2_permutex2var_pd
4651 // CHECK: @llvm.x86.avx512.vpermi2var.pd.512
4652 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4653 return _mm512_mask2_permutex2var_pd(__A
, __I
, __U
, __B
);
4655 __m512i
test_mm512_mask_unpackhi_epi32(__m512i __W
, __mmask16 __U
, __m512i __A
, __m512i __B
) {
4656 // CHECK-LABEL: @test_mm512_mask_unpackhi_epi32
4657 // 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>
4658 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4659 return _mm512_mask_unpackhi_epi32(__W
, __U
, __A
, __B
);
4662 __m512
test_mm512_mask_unpackhi_ps(__m512 __W
, __mmask16 __U
, __m512 __A
, __m512 __B
) {
4663 // CHECK-LABEL: @test_mm512_mask_unpackhi_ps
4664 // 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>
4665 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
4666 return _mm512_mask_unpackhi_ps(__W
, __U
, __A
, __B
);
4669 __m512
test_mm512_maskz_unpackhi_ps(__mmask16 __U
, __m512 __A
, __m512 __B
) {
4670 // CHECK-LABEL: @test_mm512_maskz_unpackhi_ps
4671 // 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>
4672 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
4673 return _mm512_maskz_unpackhi_ps(__U
, __A
, __B
);
4676 __m512d
test_mm512_mask_unpacklo_pd(__m512d __W
, __mmask8 __U
, __m512d __A
, __m512d __B
) {
4677 // CHECK-LABEL: @test_mm512_mask_unpacklo_pd
4678 // 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>
4679 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4680 return _mm512_mask_unpacklo_pd(__W
, __U
, __A
, __B
);
4683 __m512d
test_mm512_maskz_unpacklo_pd(__mmask8 __U
, __m512d __A
, __m512d __B
) {
4684 // CHECK-LABEL: @test_mm512_maskz_unpacklo_pd
4685 // 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>
4686 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4687 return _mm512_maskz_unpacklo_pd(__U
, __A
, __B
);
4690 __m512
test_mm512_mask_unpacklo_ps(__m512 __W
, __mmask16 __U
, __m512 __A
, __m512 __B
) {
4691 // CHECK-LABEL: @test_mm512_mask_unpacklo_ps
4692 // 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>
4693 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
4694 return _mm512_mask_unpacklo_ps(__W
, __U
, __A
, __B
);
4697 __m512
test_mm512_maskz_unpacklo_ps(__mmask16 __U
, __m512 __A
, __m512 __B
) {
4698 // CHECK-LABEL: @test_mm512_maskz_unpacklo_ps
4699 // 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>
4700 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
4701 return _mm512_maskz_unpacklo_ps(__U
, __A
, __B
);
4703 int test_mm_cvt_roundsd_si32(__m128d __A
) {
4704 // CHECK-LABEL: @test_mm_cvt_roundsd_si32
4705 // CHECK: @llvm.x86.avx512.vcvtsd2si32
4706 return _mm_cvt_roundsd_si32(__A
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
4709 int test_mm_cvt_roundsd_i32(__m128d __A
) {
4710 // CHECK-LABEL: @test_mm_cvt_roundsd_i32
4711 // CHECK: @llvm.x86.avx512.vcvtsd2si32
4712 return _mm_cvt_roundsd_i32(__A
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
4715 unsigned test_mm_cvt_roundsd_u32(__m128d __A
) {
4716 // CHECK-LABEL: @test_mm_cvt_roundsd_u32
4717 // CHECK: @llvm.x86.avx512.vcvtsd2usi32
4718 return _mm_cvt_roundsd_u32(__A
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
4721 unsigned test_mm_cvtsd_u32(__m128d __A
) {
4722 // CHECK-LABEL: @test_mm_cvtsd_u32
4723 // CHECK: @llvm.x86.avx512.vcvtsd2usi32
4724 return _mm_cvtsd_u32(__A
);
4727 int test_mm512_cvtsi512_si32(__m512i a
) {
4728 // CHECK-LABEL: test_mm512_cvtsi512_si32
4729 // CHECK: %{{.*}} = extractelement <16 x i32> %{{.*}}, i32 0
4730 return _mm512_cvtsi512_si32(a
);
4734 unsigned long long test_mm_cvt_roundsd_u64(__m128d __A
) {
4735 // CHECK-LABEL: @test_mm_cvt_roundsd_u64
4736 // CHECK: @llvm.x86.avx512.vcvtsd2usi64
4737 return _mm_cvt_roundsd_u64(__A
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
4740 unsigned long long test_mm_cvtsd_u64(__m128d __A
) {
4741 // CHECK-LABEL: @test_mm_cvtsd_u64
4742 // CHECK: @llvm.x86.avx512.vcvtsd2usi64
4743 return _mm_cvtsd_u64(__A
);
4747 int test_mm_cvt_roundss_si32(__m128 __A
) {
4748 // CHECK-LABEL: @test_mm_cvt_roundss_si32
4749 // CHECK: @llvm.x86.avx512.vcvtss2si32
4750 return _mm_cvt_roundss_si32(__A
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
4753 int test_mm_cvt_roundss_i32(__m128 __A
) {
4754 // CHECK-LABEL: @test_mm_cvt_roundss_i32
4755 // CHECK: @llvm.x86.avx512.vcvtss2si32
4756 return _mm_cvt_roundss_i32(__A
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
4760 long long test_mm_cvt_roundss_si64(__m128 __A
) {
4761 // CHECK-LABEL: @test_mm_cvt_roundss_si64
4762 // CHECK: @llvm.x86.avx512.vcvtss2si64
4763 return _mm_cvt_roundss_si64(__A
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
4766 long long test_mm_cvt_roundss_i64(__m128 __A
) {
4767 // CHECK-LABEL: @test_mm_cvt_roundss_i64
4768 // CHECK: @llvm.x86.avx512.vcvtss2si64
4769 return _mm_cvt_roundss_i64(__A
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
4773 unsigned test_mm_cvt_roundss_u32(__m128 __A
) {
4774 // CHECK-LABEL: @test_mm_cvt_roundss_u32
4775 // CHECK: @llvm.x86.avx512.vcvtss2usi32
4776 return _mm_cvt_roundss_u32(__A
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
4779 unsigned test_mm_cvtss_u32(__m128 __A
) {
4780 // CHECK-LABEL: @test_mm_cvtss_u32
4781 // CHECK: @llvm.x86.avx512.vcvtss2usi32
4782 return _mm_cvtss_u32(__A
);
4786 unsigned long long test_mm_cvt_roundss_u64(__m128 __A
) {
4787 // CHECK-LABEL: @test_mm_cvt_roundss_u64
4788 // CHECK: @llvm.x86.avx512.vcvtss2usi64
4789 return _mm_cvt_roundss_u64(__A
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
4792 unsigned long long test_mm_cvtss_u64(__m128 __A
) {
4793 // CHECK-LABEL: @test_mm_cvtss_u64
4794 // CHECK: @llvm.x86.avx512.vcvtss2usi64
4795 return _mm_cvtss_u64(__A
);
4799 int test_mm_cvtt_roundsd_i32(__m128d __A
) {
4800 // CHECK-LABEL: @test_mm_cvtt_roundsd_i32
4801 // CHECK: @llvm.x86.avx512.cvttsd2si
4802 return _mm_cvtt_roundsd_i32(__A
, _MM_FROUND_NO_EXC
);
4805 int test_mm_cvtt_roundsd_si32(__m128d __A
) {
4806 // CHECK-LABEL: @test_mm_cvtt_roundsd_si32
4807 // CHECK: @llvm.x86.avx512.cvttsd2si
4808 return _mm_cvtt_roundsd_si32(__A
, _MM_FROUND_NO_EXC
);
4811 int test_mm_cvttsd_i32(__m128d __A
) {
4812 // CHECK-LABEL: @test_mm_cvttsd_i32
4813 // CHECK: @llvm.x86.avx512.cvttsd2si
4814 return _mm_cvttsd_i32(__A
);
4818 long long test_mm_cvtt_roundsd_si64(__m128d __A
) {
4819 // CHECK-LABEL: @test_mm_cvtt_roundsd_si64
4820 // CHECK: @llvm.x86.avx512.cvttsd2si64
4821 return _mm_cvtt_roundsd_si64(__A
, _MM_FROUND_NO_EXC
);
4824 long long test_mm_cvtt_roundsd_i64(__m128d __A
) {
4825 // CHECK-LABEL: @test_mm_cvtt_roundsd_i64
4826 // CHECK: @llvm.x86.avx512.cvttsd2si64
4827 return _mm_cvtt_roundsd_i64(__A
, _MM_FROUND_NO_EXC
);
4830 long long test_mm_cvttsd_i64(__m128d __A
) {
4831 // CHECK-LABEL: @test_mm_cvttsd_i64
4832 // CHECK: @llvm.x86.avx512.cvttsd2si64
4833 return _mm_cvttsd_i64(__A
);
4837 unsigned test_mm_cvtt_roundsd_u32(__m128d __A
) {
4838 // CHECK-LABEL: @test_mm_cvtt_roundsd_u32
4839 // CHECK: @llvm.x86.avx512.cvttsd2usi
4840 return _mm_cvtt_roundsd_u32(__A
, _MM_FROUND_NO_EXC
);
4843 unsigned test_mm_cvttsd_u32(__m128d __A
) {
4844 // CHECK-LABEL: @test_mm_cvttsd_u32
4845 // CHECK: @llvm.x86.avx512.cvttsd2usi
4846 return _mm_cvttsd_u32(__A
);
4850 unsigned long long test_mm_cvtt_roundsd_u64(__m128d __A
) {
4851 // CHECK-LABEL: @test_mm_cvtt_roundsd_u64
4852 // CHECK: @llvm.x86.avx512.cvttsd2usi64
4853 return _mm_cvtt_roundsd_u64(__A
, _MM_FROUND_NO_EXC
);
4856 unsigned long long test_mm_cvttsd_u64(__m128d __A
) {
4857 // CHECK-LABEL: @test_mm_cvttsd_u64
4858 // CHECK: @llvm.x86.avx512.cvttsd2usi64
4859 return _mm_cvttsd_u64(__A
);
4863 int test_mm_cvtt_roundss_i32(__m128 __A
) {
4864 // CHECK-LABEL: @test_mm_cvtt_roundss_i32
4865 // CHECK: @llvm.x86.avx512.cvttss2si
4866 return _mm_cvtt_roundss_i32(__A
, _MM_FROUND_NO_EXC
);
4869 int test_mm_cvtt_roundss_si32(__m128 __A
) {
4870 // CHECK-LABEL: @test_mm_cvtt_roundss_si32
4871 // CHECK: @llvm.x86.avx512.cvttss2si
4872 return _mm_cvtt_roundss_si32(__A
, _MM_FROUND_NO_EXC
);
4875 int test_mm_cvttss_i32(__m128 __A
) {
4876 // CHECK-LABEL: @test_mm_cvttss_i32
4877 // CHECK: @llvm.x86.avx512.cvttss2si
4878 return _mm_cvttss_i32(__A
);
4882 float test_mm_cvtt_roundss_i64(__m128 __A
) {
4883 // CHECK-LABEL: @test_mm_cvtt_roundss_i64
4884 // CHECK: @llvm.x86.avx512.cvttss2si64
4885 return _mm_cvtt_roundss_i64(__A
, _MM_FROUND_NO_EXC
);
4888 long long test_mm_cvtt_roundss_si64(__m128 __A
) {
4889 // CHECK-LABEL: @test_mm_cvtt_roundss_si64
4890 // CHECK: @llvm.x86.avx512.cvttss2si64
4891 return _mm_cvtt_roundss_si64(__A
, _MM_FROUND_NO_EXC
);
4894 long long test_mm_cvttss_i64(__m128 __A
) {
4895 // CHECK-LABEL: @test_mm_cvttss_i64
4896 // CHECK: @llvm.x86.avx512.cvttss2si64
4897 return _mm_cvttss_i64(__A
);
4901 unsigned test_mm_cvtt_roundss_u32(__m128 __A
) {
4902 // CHECK-LABEL: @test_mm_cvtt_roundss_u32
4903 // CHECK: @llvm.x86.avx512.cvttss2usi
4904 return _mm_cvtt_roundss_u32(__A
, _MM_FROUND_NO_EXC
);
4907 unsigned test_mm_cvttss_u32(__m128 __A
) {
4908 // CHECK-LABEL: @test_mm_cvttss_u32
4909 // CHECK: @llvm.x86.avx512.cvttss2usi
4910 return _mm_cvttss_u32(__A
);
4914 unsigned long long test_mm_cvtt_roundss_u64(__m128 __A
) {
4915 // CHECK-LABEL: @test_mm_cvtt_roundss_u64
4916 // CHECK: @llvm.x86.avx512.cvttss2usi64
4917 return _mm_cvtt_roundss_u64(__A
, _MM_FROUND_NO_EXC
);
4920 unsigned long long test_mm_cvttss_u64(__m128 __A
) {
4921 // CHECK-LABEL: @test_mm_cvttss_u64
4922 // CHECK: @llvm.x86.avx512.cvttss2usi64
4923 return _mm_cvttss_u64(__A
);
4927 __m512i
test_mm512_cvtt_roundps_epu32(__m512 __A
)
4929 // CHECK-LABEL: @test_mm512_cvtt_roundps_epu32
4930 // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
4931 return _mm512_cvtt_roundps_epu32(__A
, _MM_FROUND_NO_EXC
);
4934 __m512i
test_mm512_mask_cvtt_roundps_epu32(__m512i __W
, __mmask16 __U
, __m512 __A
)
4936 // CHECK-LABEL: @test_mm512_mask_cvtt_roundps_epu32
4937 // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
4938 return _mm512_mask_cvtt_roundps_epu32(__W
, __U
, __A
, _MM_FROUND_NO_EXC
);
4941 __m512i
test_mm512_maskz_cvtt_roundps_epu32( __mmask16 __U
, __m512 __A
)
4943 // CHECK-LABEL: @test_mm512_maskz_cvtt_roundps_epu32
4944 // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
4946 return _mm512_maskz_cvtt_roundps_epu32(__U
, __A
, _MM_FROUND_NO_EXC
);
4949 __m256i
test_mm512_cvt_roundps_ph(__m512 __A
)
4951 // CHECK-LABEL: @test_mm512_cvt_roundps_ph
4952 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
4953 return _mm512_cvt_roundps_ph(__A
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
4956 __m256i
test_mm512_mask_cvt_roundps_ph(__m256i __W
, __mmask16 __U
, __m512 __A
)
4958 // CHECK-LABEL: @test_mm512_mask_cvt_roundps_ph
4959 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
4960 return _mm512_mask_cvt_roundps_ph(__W
, __U
, __A
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
4963 __m256i
test_mm512_maskz_cvt_roundps_ph(__mmask16 __U
, __m512 __A
)
4965 // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_ph
4966 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
4967 return _mm512_maskz_cvt_roundps_ph(__U
, __A
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
4970 __m512
test_mm512_cvt_roundph_ps(__m256i __A
)
4972 // CHECK-LABEL: @test_mm512_cvt_roundph_ps
4973 // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512(
4974 return _mm512_cvt_roundph_ps(__A
, _MM_FROUND_NO_EXC
);
4977 __m512
test_mm512_mask_cvt_roundph_ps(__m512 __W
, __mmask16 __U
, __m256i __A
)
4979 // CHECK-LABEL: @test_mm512_mask_cvt_roundph_ps
4980 // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512(
4981 return _mm512_mask_cvt_roundph_ps(__W
, __U
, __A
, _MM_FROUND_NO_EXC
);
4984 __m512
test_mm512_maskz_cvt_roundph_ps(__mmask16 __U
, __m256i __A
)
4986 // CHECK-LABEL: @test_mm512_maskz_cvt_roundph_ps
4987 // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512(
4988 return _mm512_maskz_cvt_roundph_ps(__U
, __A
, _MM_FROUND_NO_EXC
);
4991 __m512
test_mm512_cvt_roundepi32_ps( __m512i __A
)
4993 // CHECK-LABEL: @test_mm512_cvt_roundepi32_ps
4994 // CHECK: @llvm.x86.avx512.sitofp.round.v16f32.v16i32
4995 return _mm512_cvt_roundepi32_ps(__A
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
4998 __m512
test_mm512_mask_cvt_roundepi32_ps(__m512 __W
, __mmask16 __U
, __m512i __A
)
5000 // CHECK-LABEL: @test_mm512_mask_cvt_roundepi32_ps
5001 // CHECK: @llvm.x86.avx512.sitofp.round.v16f32.v16i32
5002 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5003 return _mm512_mask_cvt_roundepi32_ps(__W
,__U
,__A
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5006 __m512
test_mm512_maskz_cvt_roundepi32_ps(__mmask16 __U
, __m512i __A
)
5008 // CHECK-LABEL: @test_mm512_maskz_cvt_roundepi32_ps
5009 // CHECK: @llvm.x86.avx512.sitofp.round.v16f32.v16i32
5010 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5011 return _mm512_maskz_cvt_roundepi32_ps(__U
,__A
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5014 __m512
test_mm512_cvt_roundepu32_ps(__m512i __A
)
5016 // CHECK-LABEL: @test_mm512_cvt_roundepu32_ps
5017 // CHECK: @llvm.x86.avx512.uitofp.round.v16f32.v16i32
5018 return _mm512_cvt_roundepu32_ps(__A
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5021 __m512
test_mm512_mask_cvt_roundepu32_ps(__m512 __W
, __mmask16 __U
,__m512i __A
)
5023 // CHECK-LABEL: @test_mm512_mask_cvt_roundepu32_ps
5024 // CHECK: @llvm.x86.avx512.uitofp.round.v16f32.v16i32
5025 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5026 return _mm512_mask_cvt_roundepu32_ps(__W
,__U
,__A
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5029 __m512
test_mm512_maskz_cvt_roundepu32_ps(__mmask16 __U
,__m512i __A
)
5031 // CHECK-LABEL: @test_mm512_maskz_cvt_roundepu32_ps
5032 // CHECK: @llvm.x86.avx512.uitofp.round.v16f32.v16i32
5033 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5034 return _mm512_maskz_cvt_roundepu32_ps(__U
,__A
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5037 __m256
test_mm512_cvt_roundpd_ps(__m512d A
)
5039 // CHECK-LABEL: @test_mm512_cvt_roundpd_ps
5040 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
5041 return _mm512_cvt_roundpd_ps(A
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5044 __m256
test_mm512_mask_cvt_roundpd_ps(__m256 W
, __mmask8 U
,__m512d A
)
5046 // CHECK-LABEL: @test_mm512_mask_cvt_roundpd_ps
5047 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
5048 return _mm512_mask_cvt_roundpd_ps(W
,U
,A
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5051 __m256
test_mm512_maskz_cvt_roundpd_ps(__mmask8 U
, __m512d A
)
5053 // CHECK-LABEL: @test_mm512_maskz_cvt_roundpd_ps
5054 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
5055 return _mm512_maskz_cvt_roundpd_ps(U
,A
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5058 __m256i
test_mm512_cvtt_roundpd_epi32(__m512d A
)
5060 // CHECK-LABEL: @test_mm512_cvtt_roundpd_epi32
5061 // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512
5062 return _mm512_cvtt_roundpd_epi32(A
,_MM_FROUND_NO_EXC
);
5065 __m256i
test_mm512_mask_cvtt_roundpd_epi32(__m256i W
, __mmask8 U
, __m512d A
)
5067 // CHECK-LABEL: @test_mm512_mask_cvtt_roundpd_epi32
5068 // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512
5069 return _mm512_mask_cvtt_roundpd_epi32(W
,U
,A
,_MM_FROUND_NO_EXC
);
5072 __m256i
test_mm512_maskz_cvtt_roundpd_epi32(__mmask8 U
, __m512d A
)
5074 // CHECK-LABEL: @test_mm512_maskz_cvtt_roundpd_epi32
5075 // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512
5076 return _mm512_maskz_cvtt_roundpd_epi32(U
,A
,_MM_FROUND_NO_EXC
);
5079 __m512i
test_mm512_cvtt_roundps_epi32(__m512 A
)
5081 // CHECK-LABEL: @test_mm512_cvtt_roundps_epi32
5082 // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512
5083 return _mm512_cvtt_roundps_epi32(A
,_MM_FROUND_NO_EXC
);
5086 __m512i
test_mm512_mask_cvtt_roundps_epi32(__m512i W
,__mmask16 U
, __m512 A
)
5088 // CHECK-LABEL: @test_mm512_mask_cvtt_roundps_epi32
5089 // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512
5090 return _mm512_mask_cvtt_roundps_epi32(W
,U
,A
,_MM_FROUND_NO_EXC
);
5093 __m512i
test_mm512_maskz_cvtt_roundps_epi32(__mmask16 U
, __m512 A
)
5095 // CHECK-LABEL: @test_mm512_maskz_cvtt_roundps_epi32
5096 // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512
5097 return _mm512_maskz_cvtt_roundps_epi32(U
,A
,_MM_FROUND_NO_EXC
);
5100 __m512i
test_mm512_cvt_roundps_epi32(__m512 __A
)
5102 // CHECK-LABEL: @test_mm512_cvt_roundps_epi32
5103 // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
5104 return _mm512_cvt_roundps_epi32(__A
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5107 __m512i
test_mm512_mask_cvt_roundps_epi32(__m512i __W
,__mmask16 __U
,__m512 __A
)
5109 // CHECK-LABEL: @test_mm512_mask_cvt_roundps_epi32
5110 // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
5111 return _mm512_mask_cvt_roundps_epi32(__W
,__U
,__A
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5114 __m512i
test_mm512_maskz_cvt_roundps_epi32(__mmask16 __U
, __m512 __A
)
5116 // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_epi32
5117 // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
5118 return _mm512_maskz_cvt_roundps_epi32(__U
,__A
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5121 __m256i
test_mm512_cvt_roundpd_epi32(__m512d A
)
5123 // CHECK-LABEL: @test_mm512_cvt_roundpd_epi32
5124 // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
5125 return _mm512_cvt_roundpd_epi32(A
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5128 __m256i
test_mm512_mask_cvt_roundpd_epi32(__m256i W
,__mmask8 U
,__m512d A
)
5130 // CHECK-LABEL: @test_mm512_mask_cvt_roundpd_epi32
5131 // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
5132 return _mm512_mask_cvt_roundpd_epi32(W
,U
,A
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5135 __m256i
test_mm512_maskz_cvt_roundpd_epi32(__mmask8 U
, __m512d A
)
5137 // CHECK-LABEL: @test_mm512_maskz_cvt_roundpd_epi32
5138 // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
5139 return _mm512_maskz_cvt_roundpd_epi32(U
,A
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5142 __m512i
test_mm512_cvt_roundps_epu32(__m512 __A
)
5144 // CHECK-LABEL: @test_mm512_cvt_roundps_epu32
5145 // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
5146 return _mm512_cvt_roundps_epu32(__A
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5149 __m512i
test_mm512_mask_cvt_roundps_epu32(__m512i __W
,__mmask16 __U
,__m512 __A
)
5151 // CHECK-LABEL: @test_mm512_mask_cvt_roundps_epu32
5152 // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
5153 return _mm512_mask_cvt_roundps_epu32(__W
,__U
,__A
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5156 __m512i
test_mm512_maskz_cvt_roundps_epu32(__mmask16 __U
,__m512 __A
)
5158 // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_epu32
5159 // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
5160 return _mm512_maskz_cvt_roundps_epu32(__U
,__A
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5163 __m256i
test_mm512_cvt_roundpd_epu32(__m512d A
)
5165 // CHECK-LABEL: @test_mm512_cvt_roundpd_epu32
5166 // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
5167 return _mm512_cvt_roundpd_epu32(A
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5170 __m256i
test_mm512_mask_cvt_roundpd_epu32(__m256i W
, __mmask8 U
, __m512d A
)
5172 // CHECK-LABEL: @test_mm512_mask_cvt_roundpd_epu32
5173 // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
5174 return _mm512_mask_cvt_roundpd_epu32(W
,U
,A
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5177 __m256i
test_mm512_maskz_cvt_roundpd_epu32(__mmask8 U
, __m512d A
)
5179 // CHECK-LABEL: @test_mm512_maskz_cvt_roundpd_epu32
5180 // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
5181 return _mm512_maskz_cvt_roundpd_epu32(U
, A
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5184 __m512
test_mm512_mask2_permutex2var_ps(__m512 __A
, __m512i __I
, __mmask16 __U
, __m512 __B
) {
5185 // CHECK-LABEL: @test_mm512_mask2_permutex2var_ps
5186 // CHECK: @llvm.x86.avx512.vpermi2var.ps.512
5187 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5188 return _mm512_mask2_permutex2var_ps(__A
, __I
, __U
, __B
);
5191 __m512i
test_mm512_mask2_permutex2var_epi64(__m512i __A
, __m512i __I
, __mmask8 __U
, __m512i __B
) {
5192 // CHECK-LABEL: @test_mm512_mask2_permutex2var_epi64
5193 // CHECK: @llvm.x86.avx512.vpermi2var.q.512
5194 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5195 return _mm512_mask2_permutex2var_epi64(__A
, __I
, __U
, __B
);
5198 __m512d
test_mm512_permute_pd(__m512d __X
) {
5199 // CHECK-LABEL: @test_mm512_permute_pd
5200 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
5201 return _mm512_permute_pd(__X
, 2);
5204 __m512d
test_mm512_mask_permute_pd(__m512d __W
, __mmask8 __U
, __m512d __X
) {
5205 // CHECK-LABEL: @test_mm512_mask_permute_pd
5206 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
5207 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5208 return _mm512_mask_permute_pd(__W
, __U
, __X
, 2);
5211 __m512d
test_mm512_maskz_permute_pd(__mmask8 __U
, __m512d __X
) {
5212 // CHECK-LABEL: @test_mm512_maskz_permute_pd
5213 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
5214 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5215 return _mm512_maskz_permute_pd(__U
, __X
, 2);
5218 __m512
test_mm512_permute_ps(__m512 __X
) {
5219 // CHECK-LABEL: @test_mm512_permute_ps
5220 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> poison, <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>
5221 return _mm512_permute_ps(__X
, 2);
5224 __m512
test_mm512_mask_permute_ps(__m512 __W
, __mmask16 __U
, __m512 __X
) {
5225 // CHECK-LABEL: @test_mm512_mask_permute_ps
5226 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> poison, <16 x i32> <i32 2, i32 0, i32 0, i32 0, i32 6, i32 4, i32 4, i32 4, i32 10, i32 8, i32 8, i32 8, i32 14, i32 12, i32 12, i32 12>
5227 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5228 return _mm512_mask_permute_ps(__W
, __U
, __X
, 2);
5231 __m512
test_mm512_maskz_permute_ps(__mmask16 __U
, __m512 __X
) {
5232 // CHECK-LABEL: @test_mm512_maskz_permute_ps
5233 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> poison, <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>
5234 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5235 return _mm512_maskz_permute_ps(__U
, __X
, 2);
5238 __m512d
test_mm512_permutevar_pd(__m512d __A
, __m512i __C
) {
5239 // CHECK-LABEL: @test_mm512_permutevar_pd
5240 // CHECK: @llvm.x86.avx512.vpermilvar.pd.512
5241 return _mm512_permutevar_pd(__A
, __C
);
5244 __m512d
test_mm512_mask_permutevar_pd(__m512d __W
, __mmask8 __U
, __m512d __A
, __m512i __C
) {
5245 // CHECK-LABEL: @test_mm512_mask_permutevar_pd
5246 // CHECK: @llvm.x86.avx512.vpermilvar.pd.512
5247 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5248 return _mm512_mask_permutevar_pd(__W
, __U
, __A
, __C
);
5251 __m512d
test_mm512_maskz_permutevar_pd(__mmask8 __U
, __m512d __A
, __m512i __C
) {
5252 // CHECK-LABEL: @test_mm512_maskz_permutevar_pd
5253 // CHECK: @llvm.x86.avx512.vpermilvar.pd.512
5254 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5255 return _mm512_maskz_permutevar_pd(__U
, __A
, __C
);
5258 __m512
test_mm512_permutevar_ps(__m512 __A
, __m512i __C
) {
5259 // CHECK-LABEL: @test_mm512_permutevar_ps
5260 // CHECK: @llvm.x86.avx512.vpermilvar.ps.512
5261 return _mm512_permutevar_ps(__A
, __C
);
5264 __m512
test_mm512_mask_permutevar_ps(__m512 __W
, __mmask16 __U
, __m512 __A
, __m512i __C
) {
5265 // CHECK-LABEL: @test_mm512_mask_permutevar_ps
5266 // CHECK: @llvm.x86.avx512.vpermilvar.ps.512
5267 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5268 return _mm512_mask_permutevar_ps(__W
, __U
, __A
, __C
);
5271 __m512
test_mm512_maskz_permutevar_ps(__mmask16 __U
, __m512 __A
, __m512i __C
) {
5272 // CHECK-LABEL: @test_mm512_maskz_permutevar_ps
5273 // CHECK: @llvm.x86.avx512.vpermilvar.ps.512
5274 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5275 return _mm512_maskz_permutevar_ps(__U
, __A
, __C
);
5278 __m512i
test_mm512_permutex2var_epi32(__m512i __A
, __m512i __I
, __m512i __B
) {
5279 // CHECK-LABEL: @test_mm512_permutex2var_epi32
5280 // CHECK: @llvm.x86.avx512.vpermi2var.d.512
5281 return _mm512_permutex2var_epi32(__A
, __I
, __B
);
5284 __m512i
test_mm512_maskz_permutex2var_epi32(__mmask16 __U
, __m512i __A
, __m512i __I
, __m512i __B
) {
5285 // CHECK-LABEL: @test_mm512_maskz_permutex2var_epi32
5286 // CHECK: @llvm.x86.avx512.vpermi2var.d.512
5287 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5288 return _mm512_maskz_permutex2var_epi32(__U
, __A
, __I
, __B
);
5291 __m512i
test_mm512_mask_permutex2var_epi32 (__m512i __A
, __mmask16 __U
, __m512i __I
, __m512i __B
)
5293 // CHECK-LABEL: @test_mm512_mask_permutex2var_epi32
5294 // CHECK: @llvm.x86.avx512.vpermi2var.d.512
5295 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5296 return _mm512_mask_permutex2var_epi32 (__A
,__U
,__I
,__B
);
5299 __m512d
test_mm512_permutex2var_pd (__m512d __A
, __m512i __I
, __m512d __B
)
5301 // CHECK-LABEL: @test_mm512_permutex2var_pd
5302 // CHECK: @llvm.x86.avx512.vpermi2var.pd.512
5303 return _mm512_permutex2var_pd (__A
, __I
,__B
);
5306 __m512d
test_mm512_mask_permutex2var_pd (__m512d __A
, __mmask8 __U
, __m512i __I
, __m512d __B
)
5308 // CHECK-LABEL: @test_mm512_mask_permutex2var_pd
5309 // CHECK: @llvm.x86.avx512.vpermi2var.pd.512
5310 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5311 return _mm512_mask_permutex2var_pd (__A
,__U
,__I
,__B
);
5314 __m512d
test_mm512_maskz_permutex2var_pd(__mmask8 __U
, __m512d __A
, __m512i __I
, __m512d __B
) {
5315 // CHECK-LABEL: @test_mm512_maskz_permutex2var_pd
5316 // CHECK: @llvm.x86.avx512.vpermi2var.pd.512
5317 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5318 return _mm512_maskz_permutex2var_pd(__U
, __A
, __I
, __B
);
5321 __m512
test_mm512_permutex2var_ps (__m512 __A
, __m512i __I
, __m512 __B
)
5323 // CHECK-LABEL: @test_mm512_permutex2var_ps
5324 // CHECK: @llvm.x86.avx512.vpermi2var.ps.512
5325 return _mm512_permutex2var_ps (__A
, __I
, __B
);
5328 __m512
test_mm512_mask_permutex2var_ps (__m512 __A
, __mmask16 __U
, __m512i __I
, __m512 __B
)
5330 // CHECK-LABEL: @test_mm512_mask_permutex2var_ps
5331 // CHECK: @llvm.x86.avx512.vpermi2var.ps.512
5332 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5333 return _mm512_mask_permutex2var_ps (__A
,__U
,__I
,__B
);
5336 __m512
test_mm512_maskz_permutex2var_ps(__mmask16 __U
, __m512 __A
, __m512i __I
, __m512 __B
) {
5337 // CHECK-LABEL: @test_mm512_maskz_permutex2var_ps
5338 // CHECK: @llvm.x86.avx512.vpermi2var.ps.512
5339 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5340 return _mm512_maskz_permutex2var_ps(__U
, __A
, __I
, __B
);
5343 __m512i
test_mm512_permutex2var_epi64 (__m512i __A
, __m512i __I
, __m512i __B
){
5344 // CHECK-LABEL: @test_mm512_permutex2var_epi64
5345 // CHECK: @llvm.x86.avx512.vpermi2var.q.512
5346 return _mm512_permutex2var_epi64(__A
, __I
, __B
);
5349 __m512i
test_mm512_mask_permutex2var_epi64 (__m512i __A
, __mmask8 __U
, __m512i __I
, __m512i __B
){
5350 // CHECK-LABEL: @test_mm512_mask_permutex2var_epi64
5351 // CHECK: @llvm.x86.avx512.vpermi2var.q.512
5352 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5353 return _mm512_mask_permutex2var_epi64(__A
, __U
, __I
, __B
);
5356 __m512i
test_mm512_maskz_permutex2var_epi64(__mmask8 __U
, __m512i __A
, __m512i __I
, __m512i __B
) {
5357 // CHECK-LABEL: @test_mm512_maskz_permutex2var_epi64
5358 // CHECK: @llvm.x86.avx512.vpermi2var.q.512
5359 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5360 return _mm512_maskz_permutex2var_epi64(__U
, __A
, __I
, __B
);
5362 __mmask16
test_mm512_testn_epi32_mask(__m512i __A
, __m512i __B
) {
5363 // CHECK-LABEL: @test_mm512_testn_epi32_mask
5364 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5365 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
5366 return _mm512_testn_epi32_mask(__A
, __B
);
5369 __mmask16
test_mm512_mask_testn_epi32_mask(__mmask16 __U
, __m512i __A
, __m512i __B
) {
5370 // CHECK-LABEL: @test_mm512_mask_testn_epi32_mask
5371 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5372 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
5373 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
5374 return _mm512_mask_testn_epi32_mask(__U
, __A
, __B
);
5377 __mmask8
test_mm512_testn_epi64_mask(__m512i __A
, __m512i __B
) {
5378 // CHECK-LABEL: @test_mm512_testn_epi64_mask
5379 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5380 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
5381 return _mm512_testn_epi64_mask(__A
, __B
);
5384 __mmask8
test_mm512_mask_testn_epi64_mask(__mmask8 __U
, __m512i __A
, __m512i __B
) {
5385 // CHECK-LABEL: @test_mm512_mask_testn_epi64_mask
5386 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5387 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
5388 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
5389 return _mm512_mask_testn_epi64_mask(__U
, __A
, __B
);
5392 __mmask16
test_mm512_mask_test_epi32_mask (__mmask16 __U
, __m512i __A
, __m512i __B
)
5394 // CHECK-LABEL: @test_mm512_mask_test_epi32_mask
5395 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5396 // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
5397 return _mm512_mask_test_epi32_mask (__U
,__A
,__B
);
5400 __mmask8
test_mm512_mask_test_epi64_mask (__mmask8 __U
, __m512i __A
, __m512i __B
)
5402 // CHECK-LABEL: @test_mm512_mask_test_epi64_mask
5403 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5404 // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
5405 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
5406 return _mm512_mask_test_epi64_mask (__U
,__A
,__B
);
5409 __m512i
test_mm512_maskz_unpackhi_epi32(__mmask16 __U
, __m512i __A
, __m512i __B
) {
5410 // CHECK-LABEL: @test_mm512_maskz_unpackhi_epi32
5411 // 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>
5412 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5413 return _mm512_maskz_unpackhi_epi32(__U
, __A
, __B
);
5416 __m512i
test_mm512_unpackhi_epi64(__m512i __A
, __m512i __B
) {
5417 // CHECK-LABEL: @test_mm512_unpackhi_epi64
5418 // 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>
5419 return _mm512_unpackhi_epi64(__A
, __B
);
5422 __m512i
test_mm512_mask_unpackhi_epi64(__m512i __W
, __mmask8 __U
, __m512i __A
, __m512i __B
) {
5423 // CHECK-LABEL: @test_mm512_mask_unpackhi_epi64
5424 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
5425 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5426 return _mm512_mask_unpackhi_epi64(__W
, __U
, __A
, __B
);
5429 __m512i
test_mm512_maskz_unpackhi_epi64(__mmask8 __U
, __m512i __A
, __m512i __B
) {
5430 // CHECK-LABEL: @test_mm512_maskz_unpackhi_epi64
5431 // 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>
5432 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5433 return _mm512_maskz_unpackhi_epi64(__U
, __A
, __B
);
5436 __m512i
test_mm512_unpacklo_epi32(__m512i __A
, __m512i __B
) {
5437 // CHECK-LABEL: @test_mm512_unpacklo_epi32
5438 // 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>
5439 return _mm512_unpacklo_epi32(__A
, __B
);
5442 __m512i
test_mm512_mask_unpacklo_epi32(__m512i __W
, __mmask16 __U
, __m512i __A
, __m512i __B
) {
5443 // CHECK-LABEL: @test_mm512_mask_unpacklo_epi32
5444 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29>
5445 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5446 return _mm512_mask_unpacklo_epi32(__W
, __U
, __A
, __B
);
5449 __m512i
test_mm512_maskz_unpacklo_epi32(__mmask16 __U
, __m512i __A
, __m512i __B
) {
5450 // CHECK-LABEL: @test_mm512_maskz_unpacklo_epi32
5451 // 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>
5452 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5453 return _mm512_maskz_unpacklo_epi32(__U
, __A
, __B
);
5456 __m512i
test_mm512_unpacklo_epi64(__m512i __A
, __m512i __B
) {
5457 // CHECK-LABEL: @test_mm512_unpacklo_epi64
5458 // 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>
5459 return _mm512_unpacklo_epi64(__A
, __B
);
5462 __m512i
test_mm512_mask_unpacklo_epi64(__m512i __W
, __mmask8 __U
, __m512i __A
, __m512i __B
) {
5463 // CHECK-LABEL: @test_mm512_mask_unpacklo_epi64
5464 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
5465 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5466 return _mm512_mask_unpacklo_epi64(__W
, __U
, __A
, __B
);
5469 __m512i
test_mm512_maskz_unpacklo_epi64(__mmask8 __U
, __m512i __A
, __m512i __B
) {
5470 // CHECK-LABEL: @test_mm512_maskz_unpacklo_epi64
5471 // 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>
5472 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5473 return _mm512_maskz_unpacklo_epi64(__U
, __A
, __B
);
5476 __m128d
test_mm_roundscale_round_sd(__m128d __A
, __m128d __B
) {
5477 // CHECK-LABEL: @test_mm_roundscale_round_sd
5478 // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5479 return _mm_roundscale_round_sd(__A
, __B
, 3, _MM_FROUND_NO_EXC
);
5482 __m128d
test_mm_roundscale_sd(__m128d __A
, __m128d __B
) {
5483 // CHECK-LABEL: @test_mm_roundscale_sd
5484 // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5485 return _mm_roundscale_sd(__A
, __B
, 3);
5488 __m128d
test_mm_mask_roundscale_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
){
5489 // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5490 return _mm_mask_roundscale_sd(__W
,__U
,__A
,__B
,3);
5493 __m128d
test_mm_mask_roundscale_round_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
){
5494 // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5495 return _mm_mask_roundscale_round_sd(__W
,__U
,__A
,__B
,3,_MM_FROUND_NO_EXC
);
5498 __m128d
test_mm_maskz_roundscale_sd(__mmask8 __U
, __m128d __A
, __m128d __B
){
5499 // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5500 return _mm_maskz_roundscale_sd(__U
,__A
,__B
,3);
5503 __m128d
test_mm_maskz_roundscale_round_sd(__mmask8 __U
, __m128d __A
, __m128d __B
){
5504 // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5505 return _mm_maskz_roundscale_round_sd(__U
,__A
,__B
,3,_MM_FROUND_NO_EXC
);
5508 __m128
test_mm_roundscale_round_ss(__m128 __A
, __m128 __B
) {
5509 // CHECK-LABEL: @test_mm_roundscale_round_ss
5510 // CHECK: @llvm.x86.avx512.mask.rndscale.ss
5511 return _mm_roundscale_round_ss(__A
, __B
, 3, _MM_FROUND_NO_EXC
);
5514 __m128
test_mm_roundscale_ss(__m128 __A
, __m128 __B
) {
5515 // CHECK-LABEL: @test_mm_roundscale_ss
5516 // CHECK: @llvm.x86.avx512.mask.rndscale.ss
5517 return _mm_roundscale_ss(__A
, __B
, 3);
5520 __m128
test_mm_mask_roundscale_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
){
5521 // CHECK-LABEL: @test_mm_mask_roundscale_ss
5522 // CHECK: @llvm.x86.avx512.mask.rndscale.ss
5523 return _mm_mask_roundscale_ss(__W
,__U
,__A
,__B
,3);
5526 __m128
test_mm_maskz_roundscale_round_ss( __mmask8 __U
, __m128 __A
, __m128 __B
){
5527 // CHECK-LABEL: @test_mm_maskz_roundscale_round_ss
5528 // CHECK: @llvm.x86.avx512.mask.rndscale.ss
5529 return _mm_maskz_roundscale_round_ss(__U
,__A
,__B
,3,_MM_FROUND_NO_EXC
);
5532 __m128
test_mm_maskz_roundscale_ss(__mmask8 __U
, __m128 __A
, __m128 __B
){
5533 // CHECK-LABEL: @test_mm_maskz_roundscale_ss
5534 // CHECK: @llvm.x86.avx512.mask.rndscale.ss
5535 return _mm_maskz_roundscale_ss(__U
,__A
,__B
,3);
5538 __m512d
test_mm512_scalef_round_pd(__m512d __A
, __m512d __B
) {
5539 // CHECK-LABEL: @test_mm512_scalef_round_pd
5540 // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5541 return _mm512_scalef_round_pd(__A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5544 __m512d
test_mm512_mask_scalef_round_pd(__m512d __W
, __mmask8 __U
, __m512d __A
, __m512d __B
) {
5545 // CHECK-LABEL: @test_mm512_mask_scalef_round_pd
5546 // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5547 return _mm512_mask_scalef_round_pd(__W
, __U
, __A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5550 __m512d
test_mm512_maskz_scalef_round_pd(__mmask8 __U
, __m512d __A
, __m512d __B
) {
5551 // CHECK-LABEL: @test_mm512_maskz_scalef_round_pd
5552 // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5553 return _mm512_maskz_scalef_round_pd(__U
, __A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5556 __m512d
test_mm512_scalef_pd(__m512d __A
, __m512d __B
) {
5557 // CHECK-LABEL: @test_mm512_scalef_pd
5558 // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5559 return _mm512_scalef_pd(__A
, __B
);
5562 __m512d
test_mm512_mask_scalef_pd(__m512d __W
, __mmask8 __U
, __m512d __A
, __m512d __B
) {
5563 // CHECK-LABEL: @test_mm512_mask_scalef_pd
5564 // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5565 return _mm512_mask_scalef_pd(__W
, __U
, __A
, __B
);
5568 __m512d
test_mm512_maskz_scalef_pd(__mmask8 __U
, __m512d __A
, __m512d __B
) {
5569 // CHECK-LABEL: @test_mm512_maskz_scalef_pd
5570 // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5571 return _mm512_maskz_scalef_pd(__U
, __A
, __B
);
5574 __m512
test_mm512_scalef_round_ps(__m512 __A
, __m512 __B
) {
5575 // CHECK-LABEL: @test_mm512_scalef_round_ps
5576 // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5577 return _mm512_scalef_round_ps(__A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5580 __m512
test_mm512_mask_scalef_round_ps(__m512 __W
, __mmask16 __U
, __m512 __A
, __m512 __B
) {
5581 // CHECK-LABEL: @test_mm512_mask_scalef_round_ps
5582 // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5583 return _mm512_mask_scalef_round_ps(__W
, __U
, __A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5586 __m512
test_mm512_maskz_scalef_round_ps(__mmask16 __U
, __m512 __A
, __m512 __B
) {
5587 // CHECK-LABEL: @test_mm512_maskz_scalef_round_ps
5588 // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5589 return _mm512_maskz_scalef_round_ps(__U
, __A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5592 __m512
test_mm512_scalef_ps(__m512 __A
, __m512 __B
) {
5593 // CHECK-LABEL: @test_mm512_scalef_ps
5594 // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5595 return _mm512_scalef_ps(__A
, __B
);
5598 __m512
test_mm512_mask_scalef_ps(__m512 __W
, __mmask16 __U
, __m512 __A
, __m512 __B
) {
5599 // CHECK-LABEL: @test_mm512_mask_scalef_ps
5600 // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5601 return _mm512_mask_scalef_ps(__W
, __U
, __A
, __B
);
5604 __m512
test_mm512_maskz_scalef_ps(__mmask16 __U
, __m512 __A
, __m512 __B
) {
5605 // CHECK-LABEL: @test_mm512_maskz_scalef_ps
5606 // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5607 return _mm512_maskz_scalef_ps(__U
, __A
, __B
);
5610 __m128d
test_mm_scalef_round_sd(__m128d __A
, __m128d __B
) {
5611 // CHECK-LABEL: @test_mm_scalef_round_sd
5612 // CHECK: @llvm.x86.avx512.mask.scalef.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %2, i8 -1, i32 11)
5613 return _mm_scalef_round_sd(__A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5616 __m128d
test_mm_scalef_sd(__m128d __A
, __m128d __B
) {
5617 // CHECK-LABEL: @test_mm_scalef_sd
5618 // CHECK: @llvm.x86.avx512.mask.scalef
5619 return _mm_scalef_sd(__A
, __B
);
5622 __m128d
test_mm_mask_scalef_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
){
5623 // CHECK-LABEL: @test_mm_mask_scalef_sd
5624 // CHECK: @llvm.x86.avx512.mask.scalef.sd
5625 return _mm_mask_scalef_sd(__W
, __U
, __A
, __B
);
5628 __m128d
test_mm_mask_scalef_round_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
){
5629 // CHECK-LABEL: @test_mm_mask_scalef_round_sd
5630 // CHECK: @llvm.x86.avx512.mask.scalef.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 %{{.*}}, i32 11)
5631 return _mm_mask_scalef_round_sd(__W
, __U
, __A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5634 __m128d
test_mm_maskz_scalef_sd(__mmask8 __U
, __m128d __A
, __m128d __B
){
5635 // CHECK-LABEL: @test_mm_maskz_scalef_sd
5636 // CHECK: @llvm.x86.avx512.mask.scalef.sd
5637 return _mm_maskz_scalef_sd(__U
, __A
, __B
);
5640 __m128d
test_mm_maskz_scalef_round_sd(__mmask8 __U
, __m128d __A
, __m128d __B
){
5641 // CHECK-LABEL: @test_mm_maskz_scalef_round_sd
5642 // CHECK: @llvm.x86.avx512.mask.scalef.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 %{{.*}}, i32 11)
5643 return _mm_maskz_scalef_round_sd(__U
, __A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5646 __m128
test_mm_scalef_round_ss(__m128 __A
, __m128 __B
) {
5647 // CHECK-LABEL: @test_mm_scalef_round_ss
5648 // CHECK: @llvm.x86.avx512.mask.scalef.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 -1, i32 11)
5649 return _mm_scalef_round_ss(__A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5652 __m128
test_mm_scalef_ss(__m128 __A
, __m128 __B
) {
5653 // CHECK-LABEL: @test_mm_scalef_ss
5654 // CHECK: @llvm.x86.avx512.mask.scalef.ss
5655 return _mm_scalef_ss(__A
, __B
);
5658 __m128
test_mm_mask_scalef_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
){
5659 // CHECK-LABEL: @test_mm_mask_scalef_ss
5660 // CHECK: @llvm.x86.avx512.mask.scalef.ss
5661 return _mm_mask_scalef_ss(__W
, __U
, __A
, __B
);
5664 __m128
test_mm_mask_scalef_round_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
){
5665 // CHECK-LABEL: @test_mm_mask_scalef_round_ss
5666 // CHECK: @llvm.x86.avx512.mask.scalef.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 %{{.*}}, i32 11)
5667 return _mm_mask_scalef_round_ss(__W
, __U
, __A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5670 __m128
test_mm_maskz_scalef_ss(__mmask8 __U
, __m128 __A
, __m128 __B
){
5671 // CHECK-LABEL: @test_mm_maskz_scalef_ss
5672 // CHECK: @llvm.x86.avx512.mask.scalef.ss
5673 return _mm_maskz_scalef_ss(__U
, __A
, __B
);
5676 __m128
test_mm_maskz_scalef_round_ss(__mmask8 __U
, __m128 __A
, __m128 __B
){
5677 // CHECK-LABEL: @test_mm_maskz_scalef_round_ss
5678 // CHECK: @llvm.x86.avx512.mask.scalef.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 %{{.*}}, i32 11)
5679 return _mm_maskz_scalef_round_ss(__U
, __A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
5682 __m512i
test_mm512_srai_epi32(__m512i __A
) {
5683 // CHECK-LABEL: @test_mm512_srai_epi32
5684 // CHECK: @llvm.x86.avx512.psrai.d.512
5685 return _mm512_srai_epi32(__A
, 5);
5688 __m512i
test_mm512_srai_epi32_2(__m512i __A
, unsigned int __B
) {
5689 // CHECK-LABEL: @test_mm512_srai_epi32_2
5690 // CHECK: @llvm.x86.avx512.psrai.d.512
5691 return _mm512_srai_epi32(__A
, __B
);
5694 __m512i
test_mm512_mask_srai_epi32(__m512i __W
, __mmask16 __U
, __m512i __A
) {
5695 // CHECK-LABEL: @test_mm512_mask_srai_epi32
5696 // CHECK: @llvm.x86.avx512.psrai.d.512
5697 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5698 return _mm512_mask_srai_epi32(__W
, __U
, __A
, 5);
5701 __m512i
test_mm512_mask_srai_epi32_2(__m512i __W
, __mmask16 __U
, __m512i __A
, unsigned int __B
) {
5702 // CHECK-LABEL: @test_mm512_mask_srai_epi32_2
5703 // CHECK: @llvm.x86.avx512.psrai.d.512
5704 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5705 return _mm512_mask_srai_epi32(__W
, __U
, __A
, __B
);
5708 __m512i
test_mm512_maskz_srai_epi32(__mmask16 __U
, __m512i __A
) {
5709 // CHECK-LABEL: @test_mm512_maskz_srai_epi32
5710 // CHECK: @llvm.x86.avx512.psrai.d.512
5711 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5712 return _mm512_maskz_srai_epi32(__U
, __A
, 5);
5715 __m512i
test_mm512_maskz_srai_epi32_2(__mmask16 __U
, __m512i __A
, unsigned int __B
) {
5716 // CHECK-LABEL: @test_mm512_maskz_srai_epi32_2
5717 // CHECK: @llvm.x86.avx512.psrai.d.512
5718 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5719 return _mm512_maskz_srai_epi32(__U
, __A
, __B
);
5722 __m512i
test_mm512_srai_epi64(__m512i __A
) {
5723 // CHECK-LABEL: @test_mm512_srai_epi64
5724 // CHECK: @llvm.x86.avx512.psrai.q.512
5725 return _mm512_srai_epi64(__A
, 5);
5728 __m512i
test_mm512_srai_epi64_2(__m512i __A
, unsigned int __B
) {
5729 // CHECK-LABEL: @test_mm512_srai_epi64_2
5730 // CHECK: @llvm.x86.avx512.psrai.q.512
5731 return _mm512_srai_epi64(__A
, __B
);
5734 __m512i
test_mm512_mask_srai_epi64(__m512i __W
, __mmask8 __U
, __m512i __A
) {
5735 // CHECK-LABEL: @test_mm512_mask_srai_epi64
5736 // CHECK: @llvm.x86.avx512.psrai.q.512
5737 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5738 return _mm512_mask_srai_epi64(__W
, __U
, __A
, 5);
5741 __m512i
test_mm512_mask_srai_epi64_2(__m512i __W
, __mmask8 __U
, __m512i __A
, unsigned int __B
) {
5742 // CHECK-LABEL: @test_mm512_mask_srai_epi64_2
5743 // CHECK: @llvm.x86.avx512.psrai.q.512
5744 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5745 return _mm512_mask_srai_epi64(__W
, __U
, __A
, __B
);
5748 __m512i
test_mm512_maskz_srai_epi64(__mmask8 __U
, __m512i __A
) {
5749 // CHECK-LABEL: @test_mm512_maskz_srai_epi64
5750 // CHECK: @llvm.x86.avx512.psrai.q.512
5751 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5752 return _mm512_maskz_srai_epi64(__U
, __A
, 5);
5755 __m512i
test_mm512_maskz_srai_epi64_2(__mmask8 __U
, __m512i __A
, unsigned int __B
) {
5756 // CHECK-LABEL: @test_mm512_maskz_srai_epi64_2
5757 // CHECK: @llvm.x86.avx512.psrai.q.512
5758 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5759 return _mm512_maskz_srai_epi64(__U
, __A
, __B
);
5762 __m512i
test_mm512_sll_epi32(__m512i __A
, __m128i __B
) {
5763 // CHECK-LABEL: @test_mm512_sll_epi32
5764 // CHECK: @llvm.x86.avx512.psll.d.512
5765 return _mm512_sll_epi32(__A
, __B
);
5768 __m512i
test_mm512_mask_sll_epi32(__m512i __W
, __mmask16 __U
, __m512i __A
, __m128i __B
) {
5769 // CHECK-LABEL: @test_mm512_mask_sll_epi32
5770 // CHECK: @llvm.x86.avx512.psll.d.512
5771 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5772 return _mm512_mask_sll_epi32(__W
, __U
, __A
, __B
);
5775 __m512i
test_mm512_maskz_sll_epi32(__mmask16 __U
, __m512i __A
, __m128i __B
) {
5776 // CHECK-LABEL: @test_mm512_maskz_sll_epi32
5777 // CHECK: @llvm.x86.avx512.psll.d.512
5778 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5779 return _mm512_maskz_sll_epi32(__U
, __A
, __B
);
5782 __m512i
test_mm512_sll_epi64(__m512i __A
, __m128i __B
) {
5783 // CHECK-LABEL: @test_mm512_sll_epi64
5784 // CHECK: @llvm.x86.avx512.psll.q.512
5785 return _mm512_sll_epi64(__A
, __B
);
5788 __m512i
test_mm512_mask_sll_epi64(__m512i __W
, __mmask8 __U
, __m512i __A
, __m128i __B
) {
5789 // CHECK-LABEL: @test_mm512_mask_sll_epi64
5790 // CHECK: @llvm.x86.avx512.psll.q.512
5791 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5792 return _mm512_mask_sll_epi64(__W
, __U
, __A
, __B
);
5795 __m512i
test_mm512_maskz_sll_epi64(__mmask8 __U
, __m512i __A
, __m128i __B
) {
5796 // CHECK-LABEL: @test_mm512_maskz_sll_epi64
5797 // CHECK: @llvm.x86.avx512.psll.q.512
5798 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5799 return _mm512_maskz_sll_epi64(__U
, __A
, __B
);
5802 __m512i
test_mm512_sllv_epi32(__m512i __X
, __m512i __Y
) {
5803 // CHECK-LABEL: @test_mm512_sllv_epi32
5804 // CHECK: @llvm.x86.avx512.psllv.d.512
5805 return _mm512_sllv_epi32(__X
, __Y
);
5808 __m512i
test_mm512_mask_sllv_epi32(__m512i __W
, __mmask16 __U
, __m512i __X
, __m512i __Y
) {
5809 // CHECK-LABEL: @test_mm512_mask_sllv_epi32
5810 // CHECK: @llvm.x86.avx512.psllv.d.512
5811 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5812 return _mm512_mask_sllv_epi32(__W
, __U
, __X
, __Y
);
5815 __m512i
test_mm512_maskz_sllv_epi32(__mmask16 __U
, __m512i __X
, __m512i __Y
) {
5816 // CHECK-LABEL: @test_mm512_maskz_sllv_epi32
5817 // CHECK: @llvm.x86.avx512.psllv.d.512
5818 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5819 return _mm512_maskz_sllv_epi32(__U
, __X
, __Y
);
5822 __m512i
test_mm512_sllv_epi64(__m512i __X
, __m512i __Y
) {
5823 // CHECK-LABEL: @test_mm512_sllv_epi64
5824 // CHECK: @llvm.x86.avx512.psllv.q.512
5825 return _mm512_sllv_epi64(__X
, __Y
);
5828 __m512i
test_mm512_mask_sllv_epi64(__m512i __W
, __mmask8 __U
, __m512i __X
, __m512i __Y
) {
5829 // CHECK-LABEL: @test_mm512_mask_sllv_epi64
5830 // CHECK: @llvm.x86.avx512.psllv.q.512
5831 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5832 return _mm512_mask_sllv_epi64(__W
, __U
, __X
, __Y
);
5835 __m512i
test_mm512_maskz_sllv_epi64(__mmask8 __U
, __m512i __X
, __m512i __Y
) {
5836 // CHECK-LABEL: @test_mm512_maskz_sllv_epi64
5837 // CHECK: @llvm.x86.avx512.psllv.q.512
5838 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5839 return _mm512_maskz_sllv_epi64(__U
, __X
, __Y
);
5842 __m512i
test_mm512_sra_epi32(__m512i __A
, __m128i __B
) {
5843 // CHECK-LABEL: @test_mm512_sra_epi32
5844 // CHECK: @llvm.x86.avx512.psra.d.512
5845 return _mm512_sra_epi32(__A
, __B
);
5848 __m512i
test_mm512_mask_sra_epi32(__m512i __W
, __mmask16 __U
, __m512i __A
, __m128i __B
) {
5849 // CHECK-LABEL: @test_mm512_mask_sra_epi32
5850 // CHECK: @llvm.x86.avx512.psra.d.512
5851 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5852 return _mm512_mask_sra_epi32(__W
, __U
, __A
, __B
);
5855 __m512i
test_mm512_maskz_sra_epi32(__mmask16 __U
, __m512i __A
, __m128i __B
) {
5856 // CHECK-LABEL: @test_mm512_maskz_sra_epi32
5857 // CHECK: @llvm.x86.avx512.psra.d.512
5858 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5859 return _mm512_maskz_sra_epi32(__U
, __A
, __B
);
5862 __m512i
test_mm512_sra_epi64(__m512i __A
, __m128i __B
) {
5863 // CHECK-LABEL: @test_mm512_sra_epi64
5864 // CHECK: @llvm.x86.avx512.psra.q.512
5865 return _mm512_sra_epi64(__A
, __B
);
5868 __m512i
test_mm512_mask_sra_epi64(__m512i __W
, __mmask8 __U
, __m512i __A
, __m128i __B
) {
5869 // CHECK-LABEL: @test_mm512_mask_sra_epi64
5870 // CHECK: @llvm.x86.avx512.psra.q.512
5871 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5872 return _mm512_mask_sra_epi64(__W
, __U
, __A
, __B
);
5875 __m512i
test_mm512_maskz_sra_epi64(__mmask8 __U
, __m512i __A
, __m128i __B
) {
5876 // CHECK-LABEL: @test_mm512_maskz_sra_epi64
5877 // CHECK: @llvm.x86.avx512.psra.q.512
5878 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5879 return _mm512_maskz_sra_epi64(__U
, __A
, __B
);
5882 __m512i
test_mm512_srav_epi32(__m512i __X
, __m512i __Y
) {
5883 // CHECK-LABEL: @test_mm512_srav_epi32
5884 // CHECK: @llvm.x86.avx512.psrav.d.512
5885 return _mm512_srav_epi32(__X
, __Y
);
5888 __m512i
test_mm512_mask_srav_epi32(__m512i __W
, __mmask16 __U
, __m512i __X
, __m512i __Y
) {
5889 // CHECK-LABEL: @test_mm512_mask_srav_epi32
5890 // CHECK: @llvm.x86.avx512.psrav.d.512
5891 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5892 return _mm512_mask_srav_epi32(__W
, __U
, __X
, __Y
);
5895 __m512i
test_mm512_maskz_srav_epi32(__mmask16 __U
, __m512i __X
, __m512i __Y
) {
5896 // CHECK-LABEL: @test_mm512_maskz_srav_epi32
5897 // CHECK: @llvm.x86.avx512.psrav.d.512
5898 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5899 return _mm512_maskz_srav_epi32(__U
, __X
, __Y
);
5902 __m512i
test_mm512_srav_epi64(__m512i __X
, __m512i __Y
) {
5903 // CHECK-LABEL: @test_mm512_srav_epi64
5904 // CHECK: @llvm.x86.avx512.psrav.q.512
5905 return _mm512_srav_epi64(__X
, __Y
);
5908 __m512i
test_mm512_mask_srav_epi64(__m512i __W
, __mmask8 __U
, __m512i __X
, __m512i __Y
) {
5909 // CHECK-LABEL: @test_mm512_mask_srav_epi64
5910 // CHECK: @llvm.x86.avx512.psrav.q.512
5911 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5912 return _mm512_mask_srav_epi64(__W
, __U
, __X
, __Y
);
5915 __m512i
test_mm512_maskz_srav_epi64(__mmask8 __U
, __m512i __X
, __m512i __Y
) {
5916 // CHECK-LABEL: @test_mm512_maskz_srav_epi64
5917 // CHECK: @llvm.x86.avx512.psrav.q.512
5918 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5919 return _mm512_maskz_srav_epi64(__U
, __X
, __Y
);
5922 __m512i
test_mm512_srl_epi32(__m512i __A
, __m128i __B
) {
5923 // CHECK-LABEL: @test_mm512_srl_epi32
5924 // CHECK: @llvm.x86.avx512.psrl.d.512
5925 return _mm512_srl_epi32(__A
, __B
);
5928 __m512i
test_mm512_mask_srl_epi32(__m512i __W
, __mmask16 __U
, __m512i __A
, __m128i __B
) {
5929 // CHECK-LABEL: @test_mm512_mask_srl_epi32
5930 // CHECK: @llvm.x86.avx512.psrl.d.512
5931 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5932 return _mm512_mask_srl_epi32(__W
, __U
, __A
, __B
);
5935 __m512i
test_mm512_maskz_srl_epi32(__mmask16 __U
, __m512i __A
, __m128i __B
) {
5936 // CHECK-LABEL: @test_mm512_maskz_srl_epi32
5937 // CHECK: @llvm.x86.avx512.psrl.d.512
5938 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5939 return _mm512_maskz_srl_epi32(__U
, __A
, __B
);
5942 __m512i
test_mm512_srl_epi64(__m512i __A
, __m128i __B
) {
5943 // CHECK-LABEL: @test_mm512_srl_epi64
5944 // CHECK: @llvm.x86.avx512.psrl.q.512
5945 return _mm512_srl_epi64(__A
, __B
);
5948 __m512i
test_mm512_mask_srl_epi64(__m512i __W
, __mmask8 __U
, __m512i __A
, __m128i __B
) {
5949 // CHECK-LABEL: @test_mm512_mask_srl_epi64
5950 // CHECK: @llvm.x86.avx512.psrl.q.512
5951 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5952 return _mm512_mask_srl_epi64(__W
, __U
, __A
, __B
);
5955 __m512i
test_mm512_maskz_srl_epi64(__mmask8 __U
, __m512i __A
, __m128i __B
) {
5956 // CHECK-LABEL: @test_mm512_maskz_srl_epi64
5957 // CHECK: @llvm.x86.avx512.psrl.q.512
5958 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5959 return _mm512_maskz_srl_epi64(__U
, __A
, __B
);
5962 __m512i
test_mm512_srlv_epi32(__m512i __X
, __m512i __Y
) {
5963 // CHECK-LABEL: @test_mm512_srlv_epi32
5964 // CHECK: @llvm.x86.avx512.psrlv.d.512
5965 return _mm512_srlv_epi32(__X
, __Y
);
5968 __m512i
test_mm512_mask_srlv_epi32(__m512i __W
, __mmask16 __U
, __m512i __X
, __m512i __Y
) {
5969 // CHECK-LABEL: @test_mm512_mask_srlv_epi32
5970 // CHECK: @llvm.x86.avx512.psrlv.d.512
5971 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5972 return _mm512_mask_srlv_epi32(__W
, __U
, __X
, __Y
);
5975 __m512i
test_mm512_maskz_srlv_epi32(__mmask16 __U
, __m512i __X
, __m512i __Y
) {
5976 // CHECK-LABEL: @test_mm512_maskz_srlv_epi32
5977 // CHECK: @llvm.x86.avx512.psrlv.d.512
5978 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5979 return _mm512_maskz_srlv_epi32(__U
, __X
, __Y
);
5982 __m512i
test_mm512_srlv_epi64(__m512i __X
, __m512i __Y
) {
5983 // CHECK-LABEL: @test_mm512_srlv_epi64
5984 // CHECK: @llvm.x86.avx512.psrlv.q.512
5985 return _mm512_srlv_epi64(__X
, __Y
);
5988 __m512i
test_mm512_mask_srlv_epi64(__m512i __W
, __mmask8 __U
, __m512i __X
, __m512i __Y
) {
5989 // CHECK-LABEL: @test_mm512_mask_srlv_epi64
5990 // CHECK: @llvm.x86.avx512.psrlv.q.512
5991 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5992 return _mm512_mask_srlv_epi64(__W
, __U
, __X
, __Y
);
5995 __m512i
test_mm512_maskz_srlv_epi64(__mmask8 __U
, __m512i __X
, __m512i __Y
) {
5996 // CHECK-LABEL: @test_mm512_maskz_srlv_epi64
5997 // CHECK: @llvm.x86.avx512.psrlv.q.512
5998 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5999 return _mm512_maskz_srlv_epi64(__U
, __X
, __Y
);
6002 __m512i
test_mm512_ternarylogic_epi32(__m512i __A
, __m512i __B
, __m512i __C
) {
6003 // CHECK-LABEL: @test_mm512_ternarylogic_epi32
6004 // CHECK: @llvm.x86.avx512.pternlog.d.512({{.*}}, i32 240)
6005 return _mm512_ternarylogic_epi32(__A
, __B
, __C
, _MM_TERNLOG_A
);
6008 __m512i
test_mm512_mask_ternarylogic_epi32(__m512i __A
, __mmask16 __U
, __m512i __B
, __m512i __C
) {
6009 // CHECK-LABEL: @test_mm512_mask_ternarylogic_epi32
6010 // CHECK: @llvm.x86.avx512.pternlog.d.512({{.*}}, i32 204)
6011 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6012 return _mm512_mask_ternarylogic_epi32(__A
, __U
, __B
, __C
, _MM_TERNLOG_B
);
6015 __m512i
test_mm512_maskz_ternarylogic_epi32(__mmask16 __U
, __m512i __A
, __m512i __B
, __m512i __C
) {
6016 // CHECK-LABEL: @test_mm512_maskz_ternarylogic_epi32
6017 // CHECK: @llvm.x86.avx512.pternlog.d.512({{.*}}, i32 170)
6018 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> zeroinitializer
6019 return _mm512_maskz_ternarylogic_epi32(__U
, __A
, __B
, __C
, _MM_TERNLOG_C
);
6022 __m512i
test_mm512_ternarylogic_epi64(__m512i __A
, __m512i __B
, __m512i __C
) {
6023 // CHECK-LABEL: @test_mm512_ternarylogic_epi64
6024 // CHECK: @llvm.x86.avx512.pternlog.q.512({{.*}}, i32 192)
6025 return _mm512_ternarylogic_epi64(__A
, __B
, __C
, _MM_TERNLOG_A
& _MM_TERNLOG_B
);
6028 __m512i
test_mm512_mask_ternarylogic_epi64(__m512i __A
, __mmask8 __U
, __m512i __B
, __m512i __C
) {
6029 // CHECK-LABEL: @test_mm512_mask_ternarylogic_epi64
6030 // CHECK: @llvm.x86.avx512.pternlog.q.512({{.*}}, i32 238)
6031 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6032 return _mm512_mask_ternarylogic_epi64(__A
, __U
, __B
, __C
, _MM_TERNLOG_B
| _MM_TERNLOG_C
);
6035 __m512i
test_mm512_maskz_ternarylogic_epi64(__mmask8 __U
, __m512i __A
, __m512i __B
, __m512i __C
) {
6036 // CHECK-LABEL: @test_mm512_maskz_ternarylogic_epi64
6037 // CHECK: @llvm.x86.avx512.pternlog.q.512({{.*}}, i32 111)
6038 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> zeroinitializer
6039 return _mm512_maskz_ternarylogic_epi64(__U
, __A
, __B
, __C
, ~_MM_TERNLOG_A
| (_MM_TERNLOG_B
^ _MM_TERNLOG_C
));
6042 __m512
test_mm512_shuffle_f32x4(__m512 __A
, __m512 __B
) {
6043 // CHECK-LABEL: @test_mm512_shuffle_f32x4
6044 // 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>
6045 return _mm512_shuffle_f32x4(__A
, __B
, 4);
6048 __m512
test_mm512_mask_shuffle_f32x4(__m512 __W
, __mmask16 __U
, __m512 __A
, __m512 __B
) {
6049 // CHECK-LABEL: @test_mm512_mask_shuffle_f32x4
6050 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 16, i32 17, i32 18, i32 19>
6051 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6052 return _mm512_mask_shuffle_f32x4(__W
, __U
, __A
, __B
, 4);
6055 __m512
test_mm512_maskz_shuffle_f32x4(__mmask16 __U
, __m512 __A
, __m512 __B
) {
6056 // CHECK-LABEL: @test_mm512_maskz_shuffle_f32x4
6057 // 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>
6058 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6059 return _mm512_maskz_shuffle_f32x4(__U
, __A
, __B
, 4);
6062 __m512d
test_mm512_shuffle_f64x2(__m512d __A
, __m512d __B
) {
6063 // CHECK-LABEL: @test_mm512_shuffle_f64x2
6064 // 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>
6065 return _mm512_shuffle_f64x2(__A
, __B
, 4);
6068 __m512d
test_mm512_mask_shuffle_f64x2(__m512d __W
, __mmask8 __U
, __m512d __A
, __m512d __B
) {
6069 // CHECK-LABEL: @test_mm512_mask_shuffle_f64x2
6070 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 8, i32 9>
6071 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6072 return _mm512_mask_shuffle_f64x2(__W
, __U
, __A
, __B
, 4);
6075 __m512d
test_mm512_maskz_shuffle_f64x2(__mmask8 __U
, __m512d __A
, __m512d __B
) {
6076 // CHECK-LABEL: @test_mm512_maskz_shuffle_f64x2
6077 // 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>
6078 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6079 return _mm512_maskz_shuffle_f64x2(__U
, __A
, __B
, 4);
6082 __m512i
test_mm512_shuffle_i32x4(__m512i __A
, __m512i __B
) {
6083 // CHECK-LABEL: @test_mm512_shuffle_i32x4
6084 // 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>
6085 return _mm512_shuffle_i32x4(__A
, __B
, 4);
6088 __m512i
test_mm512_mask_shuffle_i32x4(__m512i __W
, __mmask16 __U
, __m512i __A
, __m512i __B
) {
6089 // CHECK-LABEL: @test_mm512_mask_shuffle_i32x4
6090 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 16, i32 17, i32 18, i32 19>
6091 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6092 return _mm512_mask_shuffle_i32x4(__W
, __U
, __A
, __B
, 4);
6095 __m512i
test_mm512_maskz_shuffle_i32x4(__mmask16 __U
, __m512i __A
, __m512i __B
) {
6096 // CHECK-LABEL: @test_mm512_maskz_shuffle_i32x4
6097 // 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>
6098 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6099 return _mm512_maskz_shuffle_i32x4(__U
, __A
, __B
, 4);
6102 __m512i
test_mm512_shuffle_i64x2(__m512i __A
, __m512i __B
) {
6103 // CHECK-LABEL: @test_mm512_shuffle_i64x2
6104 // 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>
6105 return _mm512_shuffle_i64x2(__A
, __B
, 4);
6108 __m512i
test_mm512_mask_shuffle_i64x2(__m512i __W
, __mmask8 __U
, __m512i __A
, __m512i __B
) {
6109 // CHECK-LABEL: @test_mm512_mask_shuffle_i64x2
6110 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 8, i32 9>
6111 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6112 return _mm512_mask_shuffle_i64x2(__W
, __U
, __A
, __B
, 4);
6115 __m512i
test_mm512_maskz_shuffle_i64x2(__mmask8 __U
, __m512i __A
, __m512i __B
) {
6116 // CHECK-LABEL: @test_mm512_maskz_shuffle_i64x2
6117 // 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>
6118 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6119 return _mm512_maskz_shuffle_i64x2(__U
, __A
, __B
, 4);
6122 __m512d
test_mm512_shuffle_pd(__m512d __M
, __m512d __V
) {
6123 // CHECK-LABEL: @test_mm512_shuffle_pd
6124 // 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>
6125 return _mm512_shuffle_pd(__M
, __V
, 4);
6128 __m512d
test_mm512_mask_shuffle_pd(__m512d __W
, __mmask8 __U
, __m512d __M
, __m512d __V
) {
6129 // CHECK-LABEL: @test_mm512_mask_shuffle_pd
6130 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 3, i32 10, i32 4, i32 12, i32 6, i32 14>
6131 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6132 return _mm512_mask_shuffle_pd(__W
, __U
, __M
, __V
, 4);
6135 __m512d
test_mm512_maskz_shuffle_pd(__mmask8 __U
, __m512d __M
, __m512d __V
) {
6136 // CHECK-LABEL: @test_mm512_maskz_shuffle_pd
6137 // 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>
6138 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6139 return _mm512_maskz_shuffle_pd(__U
, __M
, __V
, 4);
6142 __m512
test_mm512_shuffle_ps(__m512 __M
, __m512 __V
) {
6143 // CHECK-LABEL: @test_mm512_shuffle_ps
6144 // 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>
6145 return _mm512_shuffle_ps(__M
, __V
, 4);
6148 __m512
test_mm512_mask_shuffle_ps(__m512 __W
, __mmask16 __U
, __m512 __M
, __m512 __V
) {
6149 // CHECK-LABEL: @test_mm512_mask_shuffle_ps
6150 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 16, i32 16, i32 4, i32 5, i32 20, i32 20, i32 8, i32 9, i32 24, i32 24, i32 12, i32 13, i32 28, i32 28>
6151 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6152 return _mm512_mask_shuffle_ps(__W
, __U
, __M
, __V
, 4);
6155 __m512
test_mm512_maskz_shuffle_ps(__mmask16 __U
, __m512 __M
, __m512 __V
) {
6156 // CHECK-LABEL: @test_mm512_maskz_shuffle_ps
6157 // 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>
6158 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6159 return _mm512_maskz_shuffle_ps(__U
, __M
, __V
, 4);
6162 __m128d
test_mm_sqrt_round_sd(__m128d __A
, __m128d __B
) {
6163 // CHECK-LABEL: @test_mm_sqrt_round_sd
6164 // CHECK: call <2 x double> @llvm.x86.avx512.mask.sqrt.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 -1, i32 11)
6165 return _mm_sqrt_round_sd(__A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
6168 __m128d
test_mm_mask_sqrt_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
){
6169 // CHECK-LABEL: @test_mm_mask_sqrt_sd
6170 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
6171 // CHECK-NEXT: call double @llvm.sqrt.f64(double %{{.*}})
6172 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
6173 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
6174 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
6175 // CHECK-NEXT: select i1 {{.*}}, double {{.*}}, double {{.*}}
6176 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double {{.*}}, i64 0
6177 return _mm_mask_sqrt_sd(__W
,__U
,__A
,__B
);
6180 __m128d
test_mm_mask_sqrt_round_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
){
6181 // CHECK-LABEL: @test_mm_mask_sqrt_round_sd
6182 // CHECK: call <2 x double> @llvm.x86.avx512.mask.sqrt.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 %{{.*}}, i32 11)
6183 return _mm_mask_sqrt_round_sd(__W
,__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
6186 __m128d
test_mm_maskz_sqrt_sd(__mmask8 __U
, __m128d __A
, __m128d __B
){
6187 // CHECK-LABEL: @test_mm_maskz_sqrt_sd
6188 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
6189 // CHECK-NEXT: call double @llvm.sqrt.f64(double %{{.*}})
6190 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
6191 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
6192 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
6193 // CHECK-NEXT: select i1 {{.*}}, double {{.*}}, double {{.*}}
6194 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double {{.*}}, i64 0
6195 return _mm_maskz_sqrt_sd(__U
,__A
,__B
);
6198 __m128d
test_mm_maskz_sqrt_round_sd(__mmask8 __U
, __m128d __A
, __m128d __B
){
6199 // CHECK-LABEL: @test_mm_maskz_sqrt_round_sd
6200 // CHECK: call <2 x double> @llvm.x86.avx512.mask.sqrt.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 %{{.*}}, i32 11)
6201 return _mm_maskz_sqrt_round_sd(__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
6204 __m128
test_mm_sqrt_round_ss(__m128 __A
, __m128 __B
) {
6205 // CHECK-LABEL: @test_mm_sqrt_round_ss
6206 // CHECK: call <4 x float> @llvm.x86.avx512.mask.sqrt.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 -1, i32 11)
6207 return _mm_sqrt_round_ss(__A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
6210 __m128
test_mm_mask_sqrt_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
){
6211 // CHECK-LABEL: @test_mm_mask_sqrt_ss
6212 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
6213 // CHECK-NEXT: call float @llvm.sqrt.f32(float %{{.*}})
6214 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
6215 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
6216 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
6217 // CHECK-NEXT: select i1 {{.*}}, float {{.*}}, float {{.*}}
6218 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float {{.*}}, i64 0
6219 return _mm_mask_sqrt_ss(__W
,__U
,__A
,__B
);
6222 __m128
test_mm_mask_sqrt_round_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
){
6223 // CHECK-LABEL: @test_mm_mask_sqrt_round_ss
6224 // CHECK: call <4 x float> @llvm.x86.avx512.mask.sqrt.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 {{.*}}, i32 11)
6225 return _mm_mask_sqrt_round_ss(__W
,__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
6228 __m128
test_mm_maskz_sqrt_ss(__mmask8 __U
, __m128 __A
, __m128 __B
){
6229 // CHECK-LABEL: @test_mm_maskz_sqrt_ss
6230 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
6231 // CHECK-NEXT: call float @llvm.sqrt.f32(float %{{.*}})
6232 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
6233 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
6234 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
6235 // CHECK-NEXT: select i1 {{.*}}, float {{.*}}, float {{.*}}
6236 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float {{.*}}, i64 0
6237 return _mm_maskz_sqrt_ss(__U
,__A
,__B
);
6240 __m128
test_mm_maskz_sqrt_round_ss(__mmask8 __U
, __m128 __A
, __m128 __B
){
6241 // CHECK-LABEL: @test_mm_maskz_sqrt_round_ss
6242 // CHECK: call <4 x float> @llvm.x86.avx512.mask.sqrt.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 {{.*}}, i32 11)
6243 return _mm_maskz_sqrt_round_ss(__U
,__A
,__B
,_MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
6246 __m512
test_mm512_broadcast_f32x4(float const* __A
) {
6247 // CHECK-LABEL: @test_mm512_broadcast_f32x4
6248 // 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>
6249 return _mm512_broadcast_f32x4(_mm_loadu_ps(__A
));
6252 __m512
test_mm512_mask_broadcast_f32x4(__m512 __O
, __mmask16 __M
, float const* __A
) {
6253 // CHECK-LABEL: @test_mm512_mask_broadcast_f32x4
6254 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6255 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6256 return _mm512_mask_broadcast_f32x4(__O
, __M
, _mm_loadu_ps(__A
));
6259 __m512
test_mm512_maskz_broadcast_f32x4(__mmask16 __M
, float const* __A
) {
6260 // CHECK-LABEL: @test_mm512_maskz_broadcast_f32x4
6261 // 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>
6262 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6263 return _mm512_maskz_broadcast_f32x4(__M
, _mm_loadu_ps(__A
));
6266 __m512d
test_mm512_broadcast_f64x4(double const* __A
) {
6267 // CHECK-LABEL: @test_mm512_broadcast_f64x4
6268 // 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>
6269 return _mm512_broadcast_f64x4(_mm256_loadu_pd(__A
));
6272 __m512d
test_mm512_mask_broadcast_f64x4(__m512d __O
, __mmask8 __M
, double const* __A
) {
6273 // CHECK-LABEL: @test_mm512_mask_broadcast_f64x4
6274 // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6275 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6276 return _mm512_mask_broadcast_f64x4(__O
, __M
, _mm256_loadu_pd(__A
));
6279 __m512d
test_mm512_maskz_broadcast_f64x4(__mmask8 __M
, double const* __A
) {
6280 // CHECK-LABEL: @test_mm512_maskz_broadcast_f64x4
6281 // 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>
6282 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6283 return _mm512_maskz_broadcast_f64x4(__M
, _mm256_loadu_pd(__A
));
6286 __m512i
test_mm512_broadcast_i32x4(__m128i
const* __A
) {
6287 // CHECK-LABEL: @test_mm512_broadcast_i32x4
6288 // 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>
6289 return _mm512_broadcast_i32x4(_mm_loadu_si128(__A
));
6292 __m512i
test_mm512_mask_broadcast_i32x4(__m512i __O
, __mmask16 __M
, __m128i
const* __A
) {
6293 // CHECK-LABEL: @test_mm512_mask_broadcast_i32x4
6294 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6295 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6296 return _mm512_mask_broadcast_i32x4(__O
, __M
, _mm_loadu_si128(__A
));
6299 __m512i
test_mm512_maskz_broadcast_i32x4(__mmask16 __M
, __m128i
const* __A
) {
6300 // CHECK-LABEL: @test_mm512_maskz_broadcast_i32x4
6301 // 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>
6302 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6303 return _mm512_maskz_broadcast_i32x4(__M
, _mm_loadu_si128(__A
));
6306 __m512i
test_mm512_broadcast_i64x4(__m256i
const* __A
) {
6307 // CHECK-LABEL: @test_mm512_broadcast_i64x4
6308 // 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>
6309 return _mm512_broadcast_i64x4(_mm256_loadu_si256(__A
));
6312 __m512i
test_mm512_mask_broadcast_i64x4(__m512i __O
, __mmask8 __M
, __m256i
const* __A
) {
6313 // CHECK-LABEL: @test_mm512_mask_broadcast_i64x4
6314 // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6315 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6316 return _mm512_mask_broadcast_i64x4(__O
, __M
, _mm256_loadu_si256(__A
));
6319 __m512i
test_mm512_maskz_broadcast_i64x4(__mmask8 __M
, __m256i
const* __A
) {
6320 // CHECK-LABEL: @test_mm512_maskz_broadcast_i64x4
6321 // 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>
6322 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6323 return _mm512_maskz_broadcast_i64x4(__M
, _mm256_loadu_si256(__A
));
6326 __m512d
test_mm512_broadcastsd_pd(__m128d __A
) {
6327 // CHECK-LABEL: @test_mm512_broadcastsd_pd
6328 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> zeroinitializer
6329 return _mm512_broadcastsd_pd(__A
);
6332 __m512d
test_mm512_mask_broadcastsd_pd(__m512d __O
, __mmask8 __M
, __m128d __A
) {
6333 // CHECK-LABEL: @test_mm512_mask_broadcastsd_pd
6334 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> zeroinitializer
6335 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6336 return _mm512_mask_broadcastsd_pd(__O
, __M
, __A
);
6339 __m512d
test_mm512_maskz_broadcastsd_pd(__mmask8 __M
, __m128d __A
) {
6340 // CHECK-LABEL: @test_mm512_maskz_broadcastsd_pd
6341 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> zeroinitializer
6342 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6343 return _mm512_maskz_broadcastsd_pd(__M
, __A
);
6346 __m512
test_mm512_broadcastss_ps(__m128 __A
) {
6347 // CHECK-LABEL: @test_mm512_broadcastss_ps
6348 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> zeroinitializer
6349 return _mm512_broadcastss_ps(__A
);
6352 __m512
test_mm512_mask_broadcastss_ps(__m512 __O
, __mmask16 __M
, __m128 __A
) {
6353 // CHECK-LABEL: @test_mm512_mask_broadcastss_ps
6354 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> zeroinitializer
6355 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6356 return _mm512_mask_broadcastss_ps(__O
, __M
, __A
);
6359 __m512
test_mm512_maskz_broadcastss_ps(__mmask16 __M
, __m128 __A
) {
6360 // CHECK-LABEL: @test_mm512_maskz_broadcastss_ps
6361 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> zeroinitializer
6362 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6363 return _mm512_maskz_broadcastss_ps(__M
, __A
);
6366 __m512i
test_mm512_broadcastd_epi32(__m128i __A
) {
6367 // CHECK-LABEL: @test_mm512_broadcastd_epi32
6368 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> zeroinitializer
6369 return _mm512_broadcastd_epi32(__A
);
6372 __m512i
test_mm512_mask_broadcastd_epi32(__m512i __O
, __mmask16 __M
, __m128i __A
) {
6373 // CHECK-LABEL: @test_mm512_mask_broadcastd_epi32
6374 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> zeroinitializer
6375 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6376 return _mm512_mask_broadcastd_epi32(__O
, __M
, __A
);
6379 __m512i
test_mm512_maskz_broadcastd_epi32(__mmask16 __M
, __m128i __A
) {
6380 // CHECK-LABEL: @test_mm512_maskz_broadcastd_epi32
6381 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> zeroinitializer
6382 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6383 return _mm512_maskz_broadcastd_epi32(__M
, __A
);
6386 __m512i
test_mm512_broadcastq_epi64(__m128i __A
) {
6387 // CHECK-LABEL: @test_mm512_broadcastq_epi64
6388 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> zeroinitializer
6389 return _mm512_broadcastq_epi64(__A
);
6392 __m512i
test_mm512_mask_broadcastq_epi64(__m512i __O
, __mmask8 __M
, __m128i __A
) {
6393 // CHECK-LABEL: @test_mm512_mask_broadcastq_epi64
6394 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> zeroinitializer
6395 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6396 return _mm512_mask_broadcastq_epi64(__O
, __M
, __A
);
6399 __m512i
test_mm512_maskz_broadcastq_epi64(__mmask8 __M
, __m128i __A
) {
6400 // CHECK-LABEL: @test_mm512_maskz_broadcastq_epi64
6401 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> zeroinitializer
6402 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6403 return _mm512_maskz_broadcastq_epi64(__M
, __A
);
6406 __m128i
test_mm512_cvtsepi32_epi8(__m512i __A
) {
6407 // CHECK-LABEL: @test_mm512_cvtsepi32_epi8
6408 // CHECK: @llvm.x86.avx512.mask.pmovs.db.512
6409 return _mm512_cvtsepi32_epi8(__A
);
6412 __m128i
test_mm512_mask_cvtsepi32_epi8(__m128i __O
, __mmask16 __M
, __m512i __A
) {
6413 // CHECK-LABEL: @test_mm512_mask_cvtsepi32_epi8
6414 // CHECK: @llvm.x86.avx512.mask.pmovs.db.512
6415 return _mm512_mask_cvtsepi32_epi8(__O
, __M
, __A
);
6418 __m128i
test_mm512_maskz_cvtsepi32_epi8(__mmask16 __M
, __m512i __A
) {
6419 // CHECK-LABEL: @test_mm512_maskz_cvtsepi32_epi8
6420 // CHECK: @llvm.x86.avx512.mask.pmovs.db.512
6421 return _mm512_maskz_cvtsepi32_epi8(__M
, __A
);
6424 void test_mm512_mask_cvtsepi32_storeu_epi8(void * __P
, __mmask16 __M
, __m512i __A
) {
6425 // CHECK-LABEL: @test_mm512_mask_cvtsepi32_storeu_epi8
6426 // CHECK: @llvm.x86.avx512.mask.pmovs.db.mem.512
6427 return _mm512_mask_cvtsepi32_storeu_epi8(__P
, __M
, __A
);
6430 __m256i
test_mm512_cvtsepi32_epi16(__m512i __A
) {
6431 // CHECK-LABEL: @test_mm512_cvtsepi32_epi16
6432 // CHECK: @llvm.x86.avx512.mask.pmovs.dw.512
6433 return _mm512_cvtsepi32_epi16(__A
);
6436 __m256i
test_mm512_mask_cvtsepi32_epi16(__m256i __O
, __mmask16 __M
, __m512i __A
) {
6437 // CHECK-LABEL: @test_mm512_mask_cvtsepi32_epi16
6438 // CHECK: @llvm.x86.avx512.mask.pmovs.dw.512
6439 return _mm512_mask_cvtsepi32_epi16(__O
, __M
, __A
);
6442 __m256i
test_mm512_maskz_cvtsepi32_epi16(__mmask16 __M
, __m512i __A
) {
6443 // CHECK-LABEL: @test_mm512_maskz_cvtsepi32_epi16
6444 // CHECK: @llvm.x86.avx512.mask.pmovs.dw.512
6445 return _mm512_maskz_cvtsepi32_epi16(__M
, __A
);
6448 void test_mm512_mask_cvtsepi32_storeu_epi16(void *__P
, __mmask16 __M
, __m512i __A
) {
6449 // CHECK-LABEL: @test_mm512_mask_cvtsepi32_storeu_epi16
6450 // CHECK: @llvm.x86.avx512.mask.pmovs.dw.mem.512
6451 return _mm512_mask_cvtsepi32_storeu_epi16(__P
, __M
, __A
);
6454 __m128i
test_mm512_cvtsepi64_epi8(__m512i __A
) {
6455 // CHECK-LABEL: @test_mm512_cvtsepi64_epi8
6456 // CHECK: @llvm.x86.avx512.mask.pmovs.qb.512
6457 return _mm512_cvtsepi64_epi8(__A
);
6460 __m128i
test_mm512_mask_cvtsepi64_epi8(__m128i __O
, __mmask8 __M
, __m512i __A
) {
6461 // CHECK-LABEL: @test_mm512_mask_cvtsepi64_epi8
6462 // CHECK: @llvm.x86.avx512.mask.pmovs.qb.512
6463 return _mm512_mask_cvtsepi64_epi8(__O
, __M
, __A
);
6466 __m128i
test_mm512_maskz_cvtsepi64_epi8(__mmask8 __M
, __m512i __A
) {
6467 // CHECK-LABEL: @test_mm512_maskz_cvtsepi64_epi8
6468 // CHECK: @llvm.x86.avx512.mask.pmovs.qb.512
6469 return _mm512_maskz_cvtsepi64_epi8(__M
, __A
);
6472 void test_mm512_mask_cvtsepi64_storeu_epi8(void * __P
, __mmask8 __M
, __m512i __A
) {
6473 // CHECK-LABEL: @test_mm512_mask_cvtsepi64_storeu_epi8
6474 // CHECK: @llvm.x86.avx512.mask.pmovs.qb.mem.512
6475 return _mm512_mask_cvtsepi64_storeu_epi8(__P
, __M
, __A
);
6478 __m256i
test_mm512_cvtsepi64_epi32(__m512i __A
) {
6479 // CHECK-LABEL: @test_mm512_cvtsepi64_epi32
6480 // CHECK: @llvm.x86.avx512.mask.pmovs.qd.512
6481 return _mm512_cvtsepi64_epi32(__A
);
6484 __m256i
test_mm512_mask_cvtsepi64_epi32(__m256i __O
, __mmask8 __M
, __m512i __A
) {
6485 // CHECK-LABEL: @test_mm512_mask_cvtsepi64_epi32
6486 // CHECK: @llvm.x86.avx512.mask.pmovs.qd.512
6487 return _mm512_mask_cvtsepi64_epi32(__O
, __M
, __A
);
6490 __m256i
test_mm512_maskz_cvtsepi64_epi32(__mmask8 __M
, __m512i __A
) {
6491 // CHECK-LABEL: @test_mm512_maskz_cvtsepi64_epi32
6492 // CHECK: @llvm.x86.avx512.mask.pmovs.qd.512
6493 return _mm512_maskz_cvtsepi64_epi32(__M
, __A
);
6496 void test_mm512_mask_cvtsepi64_storeu_epi32(void *__P
, __mmask8 __M
, __m512i __A
) {
6497 // CHECK-LABEL: @test_mm512_mask_cvtsepi64_storeu_epi32
6498 // CHECK: @llvm.x86.avx512.mask.pmovs.qd.mem.512
6499 return _mm512_mask_cvtsepi64_storeu_epi32(__P
, __M
, __A
);
6502 __m128i
test_mm512_cvtsepi64_epi16(__m512i __A
) {
6503 // CHECK-LABEL: @test_mm512_cvtsepi64_epi16
6504 // CHECK: @llvm.x86.avx512.mask.pmovs.qw.512
6505 return _mm512_cvtsepi64_epi16(__A
);
6508 __m128i
test_mm512_mask_cvtsepi64_epi16(__m128i __O
, __mmask8 __M
, __m512i __A
) {
6509 // CHECK-LABEL: @test_mm512_mask_cvtsepi64_epi16
6510 // CHECK: @llvm.x86.avx512.mask.pmovs.qw.512
6511 return _mm512_mask_cvtsepi64_epi16(__O
, __M
, __A
);
6514 __m128i
test_mm512_maskz_cvtsepi64_epi16(__mmask8 __M
, __m512i __A
) {
6515 // CHECK-LABEL: @test_mm512_maskz_cvtsepi64_epi16
6516 // CHECK: @llvm.x86.avx512.mask.pmovs.qw.512
6517 return _mm512_maskz_cvtsepi64_epi16(__M
, __A
);
6520 void test_mm512_mask_cvtsepi64_storeu_epi16(void * __P
, __mmask8 __M
, __m512i __A
) {
6521 // CHECK-LABEL: @test_mm512_mask_cvtsepi64_storeu_epi16
6522 // CHECK: @llvm.x86.avx512.mask.pmovs.qw.mem.512
6523 return _mm512_mask_cvtsepi64_storeu_epi16(__P
, __M
, __A
);
6526 __m128i
test_mm512_cvtusepi32_epi8(__m512i __A
) {
6527 // CHECK-LABEL: @test_mm512_cvtusepi32_epi8
6528 // CHECK: @llvm.x86.avx512.mask.pmovus.db.512
6529 return _mm512_cvtusepi32_epi8(__A
);
6532 __m128i
test_mm512_mask_cvtusepi32_epi8(__m128i __O
, __mmask16 __M
, __m512i __A
) {
6533 // CHECK-LABEL: @test_mm512_mask_cvtusepi32_epi8
6534 // CHECK: @llvm.x86.avx512.mask.pmovus.db.512
6535 return _mm512_mask_cvtusepi32_epi8(__O
, __M
, __A
);
6538 __m128i
test_mm512_maskz_cvtusepi32_epi8(__mmask16 __M
, __m512i __A
) {
6539 // CHECK-LABEL: @test_mm512_maskz_cvtusepi32_epi8
6540 // CHECK: @llvm.x86.avx512.mask.pmovus.db.512
6541 return _mm512_maskz_cvtusepi32_epi8(__M
, __A
);
6544 void test_mm512_mask_cvtusepi32_storeu_epi8(void * __P
, __mmask16 __M
, __m512i __A
) {
6545 // CHECK-LABEL: @test_mm512_mask_cvtusepi32_storeu_epi8
6546 // CHECK: @llvm.x86.avx512.mask.pmovus.db.mem.512
6547 return _mm512_mask_cvtusepi32_storeu_epi8(__P
, __M
, __A
);
6550 __m256i
test_mm512_cvtusepi32_epi16(__m512i __A
) {
6551 // CHECK-LABEL: @test_mm512_cvtusepi32_epi16
6552 // CHECK: @llvm.x86.avx512.mask.pmovus.dw.512
6553 return _mm512_cvtusepi32_epi16(__A
);
6556 __m256i
test_mm512_mask_cvtusepi32_epi16(__m256i __O
, __mmask16 __M
, __m512i __A
) {
6557 // CHECK-LABEL: @test_mm512_mask_cvtusepi32_epi16
6558 // CHECK: @llvm.x86.avx512.mask.pmovus.dw.512
6559 return _mm512_mask_cvtusepi32_epi16(__O
, __M
, __A
);
6562 __m256i
test_mm512_maskz_cvtusepi32_epi16(__mmask16 __M
, __m512i __A
) {
6563 // CHECK-LABEL: @test_mm512_maskz_cvtusepi32_epi16
6564 // CHECK: @llvm.x86.avx512.mask.pmovus.dw.512
6565 return _mm512_maskz_cvtusepi32_epi16(__M
, __A
);
6568 void test_mm512_mask_cvtusepi32_storeu_epi16(void *__P
, __mmask16 __M
, __m512i __A
) {
6569 // CHECK-LABEL: @test_mm512_mask_cvtusepi32_storeu_epi16
6570 // CHECK: @llvm.x86.avx512.mask.pmovus.dw.mem.512
6571 return _mm512_mask_cvtusepi32_storeu_epi16(__P
, __M
, __A
);
6574 __m128i
test_mm512_cvtusepi64_epi8(__m512i __A
) {
6575 // CHECK-LABEL: @test_mm512_cvtusepi64_epi8
6576 // CHECK: @llvm.x86.avx512.mask.pmovus.qb.512
6577 return _mm512_cvtusepi64_epi8(__A
);
6580 __m128i
test_mm512_mask_cvtusepi64_epi8(__m128i __O
, __mmask8 __M
, __m512i __A
) {
6581 // CHECK-LABEL: @test_mm512_mask_cvtusepi64_epi8
6582 // CHECK: @llvm.x86.avx512.mask.pmovus.qb.512
6583 return _mm512_mask_cvtusepi64_epi8(__O
, __M
, __A
);
6586 __m128i
test_mm512_maskz_cvtusepi64_epi8(__mmask8 __M
, __m512i __A
) {
6587 // CHECK-LABEL: @test_mm512_maskz_cvtusepi64_epi8
6588 // CHECK: @llvm.x86.avx512.mask.pmovus.qb.512
6589 return _mm512_maskz_cvtusepi64_epi8(__M
, __A
);
6592 void test_mm512_mask_cvtusepi64_storeu_epi8(void * __P
, __mmask8 __M
, __m512i __A
) {
6593 // CHECK-LABEL: @test_mm512_mask_cvtusepi64_storeu_epi8
6594 // CHECK: @llvm.x86.avx512.mask.pmovus.qb.mem.512
6595 return _mm512_mask_cvtusepi64_storeu_epi8(__P
, __M
, __A
);
6598 __m256i
test_mm512_cvtusepi64_epi32(__m512i __A
) {
6599 // CHECK-LABEL: @test_mm512_cvtusepi64_epi32
6600 // CHECK: @llvm.x86.avx512.mask.pmovus.qd.512
6601 return _mm512_cvtusepi64_epi32(__A
);
6604 __m256i
test_mm512_mask_cvtusepi64_epi32(__m256i __O
, __mmask8 __M
, __m512i __A
) {
6605 // CHECK-LABEL: @test_mm512_mask_cvtusepi64_epi32
6606 // CHECK: @llvm.x86.avx512.mask.pmovus.qd.512
6607 return _mm512_mask_cvtusepi64_epi32(__O
, __M
, __A
);
6610 __m256i
test_mm512_maskz_cvtusepi64_epi32(__mmask8 __M
, __m512i __A
) {
6611 // CHECK-LABEL: @test_mm512_maskz_cvtusepi64_epi32
6612 // CHECK: @llvm.x86.avx512.mask.pmovus.qd.512
6613 return _mm512_maskz_cvtusepi64_epi32(__M
, __A
);
6616 void test_mm512_mask_cvtusepi64_storeu_epi32(void* __P
, __mmask8 __M
, __m512i __A
) {
6617 // CHECK-LABEL: @test_mm512_mask_cvtusepi64_storeu_epi32
6618 // CHECK: @llvm.x86.avx512.mask.pmovus.qd.mem.512
6619 return _mm512_mask_cvtusepi64_storeu_epi32(__P
, __M
, __A
);
6622 __m128i
test_mm512_cvtusepi64_epi16(__m512i __A
) {
6623 // CHECK-LABEL: @test_mm512_cvtusepi64_epi16
6624 // CHECK: @llvm.x86.avx512.mask.pmovus.qw.512
6625 return _mm512_cvtusepi64_epi16(__A
);
6628 __m128i
test_mm512_mask_cvtusepi64_epi16(__m128i __O
, __mmask8 __M
, __m512i __A
) {
6629 // CHECK-LABEL: @test_mm512_mask_cvtusepi64_epi16
6630 // CHECK: @llvm.x86.avx512.mask.pmovus.qw.512
6631 return _mm512_mask_cvtusepi64_epi16(__O
, __M
, __A
);
6634 __m128i
test_mm512_maskz_cvtusepi64_epi16(__mmask8 __M
, __m512i __A
) {
6635 // CHECK-LABEL: @test_mm512_maskz_cvtusepi64_epi16
6636 // CHECK: @llvm.x86.avx512.mask.pmovus.qw.512
6637 return _mm512_maskz_cvtusepi64_epi16(__M
, __A
);
6640 void test_mm512_mask_cvtusepi64_storeu_epi16(void *__P
, __mmask8 __M
, __m512i __A
) {
6641 // CHECK-LABEL: @test_mm512_mask_cvtusepi64_storeu_epi16
6642 // CHECK: @llvm.x86.avx512.mask.pmovus.qw.mem.512
6643 return _mm512_mask_cvtusepi64_storeu_epi16(__P
, __M
, __A
);
6646 __m128i
test_mm512_cvtepi32_epi8(__m512i __A
) {
6647 // CHECK-LABEL: @test_mm512_cvtepi32_epi8
6648 // CHECK: trunc <16 x i32> %{{.*}} to <16 x i8>
6649 return _mm512_cvtepi32_epi8(__A
);
6652 __m128i
test_mm512_mask_cvtepi32_epi8(__m128i __O
, __mmask16 __M
, __m512i __A
) {
6653 // CHECK-LABEL: @test_mm512_mask_cvtepi32_epi8
6654 // CHECK: @llvm.x86.avx512.mask.pmov.db.512
6655 return _mm512_mask_cvtepi32_epi8(__O
, __M
, __A
);
6658 __m128i
test_mm512_maskz_cvtepi32_epi8(__mmask16 __M
, __m512i __A
) {
6659 // CHECK-LABEL: @test_mm512_maskz_cvtepi32_epi8
6660 // CHECK: @llvm.x86.avx512.mask.pmov.db.512
6661 return _mm512_maskz_cvtepi32_epi8(__M
, __A
);
6664 void test_mm512_mask_cvtepi32_storeu_epi8(void * __P
, __mmask16 __M
, __m512i __A
) {
6665 // CHECK-LABEL: @test_mm512_mask_cvtepi32_storeu_epi8
6666 // CHECK: @llvm.x86.avx512.mask.pmov.db.mem.512
6667 return _mm512_mask_cvtepi32_storeu_epi8(__P
, __M
, __A
);
6670 __m256i
test_mm512_cvtepi32_epi16(__m512i __A
) {
6671 // CHECK-LABEL: @test_mm512_cvtepi32_epi16
6672 // CHECK: trunc <16 x i32> %{{.*}} to <16 x i16>
6673 return _mm512_cvtepi32_epi16(__A
);
6676 __m256i
test_mm512_mask_cvtepi32_epi16(__m256i __O
, __mmask16 __M
, __m512i __A
) {
6677 // CHECK-LABEL: @test_mm512_mask_cvtepi32_epi16
6678 // CHECK: @llvm.x86.avx512.mask.pmov.dw.512
6679 return _mm512_mask_cvtepi32_epi16(__O
, __M
, __A
);
6682 __m256i
test_mm512_maskz_cvtepi32_epi16(__mmask16 __M
, __m512i __A
) {
6683 // CHECK-LABEL: @test_mm512_maskz_cvtepi32_epi16
6684 // CHECK: @llvm.x86.avx512.mask.pmov.dw.512
6685 return _mm512_maskz_cvtepi32_epi16(__M
, __A
);
6688 void test_mm512_mask_cvtepi32_storeu_epi16(void * __P
, __mmask16 __M
, __m512i __A
) {
6689 // CHECK-LABEL: @test_mm512_mask_cvtepi32_storeu_epi16
6690 // CHECK: @llvm.x86.avx512.mask.pmov.dw.mem.512
6691 return _mm512_mask_cvtepi32_storeu_epi16(__P
, __M
, __A
);
6694 __m128i
test_mm512_cvtepi64_epi8(__m512i __A
) {
6695 // CHECK-LABEL: @test_mm512_cvtepi64_epi8
6696 // CHECK: @llvm.x86.avx512.mask.pmov.qb.512
6697 return _mm512_cvtepi64_epi8(__A
);
6700 __m128i
test_mm512_mask_cvtepi64_epi8(__m128i __O
, __mmask8 __M
, __m512i __A
) {
6701 // CHECK-LABEL: @test_mm512_mask_cvtepi64_epi8
6702 // CHECK: @llvm.x86.avx512.mask.pmov.qb.512
6703 return _mm512_mask_cvtepi64_epi8(__O
, __M
, __A
);
6706 __m128i
test_mm512_maskz_cvtepi64_epi8(__mmask8 __M
, __m512i __A
) {
6707 // CHECK-LABEL: @test_mm512_maskz_cvtepi64_epi8
6708 // CHECK: @llvm.x86.avx512.mask.pmov.qb.512
6709 return _mm512_maskz_cvtepi64_epi8(__M
, __A
);
6712 void test_mm512_mask_cvtepi64_storeu_epi8(void * __P
, __mmask8 __M
, __m512i __A
) {
6713 // CHECK-LABEL: @test_mm512_mask_cvtepi64_storeu_epi8
6714 // CHECK: @llvm.x86.avx512.mask.pmov.qb.mem.512
6715 return _mm512_mask_cvtepi64_storeu_epi8(__P
, __M
, __A
);
6718 __m256i
test_mm512_cvtepi64_epi32(__m512i __A
) {
6719 // CHECK-LABEL: @test_mm512_cvtepi64_epi32
6720 // CHECK: trunc <8 x i64> %{{.*}} to <8 x i32>
6721 return _mm512_cvtepi64_epi32(__A
);
6724 __m256i
test_mm512_mask_cvtepi64_epi32(__m256i __O
, __mmask8 __M
, __m512i __A
) {
6725 // CHECK-LABEL: @test_mm512_mask_cvtepi64_epi32
6726 // CHECK: trunc <8 x i64> %{{.*}} to <8 x i32>
6727 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6728 return _mm512_mask_cvtepi64_epi32(__O
, __M
, __A
);
6731 __m256i
test_mm512_maskz_cvtepi64_epi32(__mmask8 __M
, __m512i __A
) {
6732 // CHECK-LABEL: @test_mm512_maskz_cvtepi64_epi32
6733 // CHECK: trunc <8 x i64> %{{.*}} to <8 x i32>
6734 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6735 return _mm512_maskz_cvtepi64_epi32(__M
, __A
);
6738 void test_mm512_mask_cvtepi64_storeu_epi32(void* __P
, __mmask8 __M
, __m512i __A
) {
6739 // CHECK-LABEL: @test_mm512_mask_cvtepi64_storeu_epi32
6740 // CHECK: @llvm.x86.avx512.mask.pmov.qd.mem.512
6741 return _mm512_mask_cvtepi64_storeu_epi32(__P
, __M
, __A
);
6744 __m128i
test_mm512_cvtepi64_epi16(__m512i __A
) {
6745 // CHECK-LABEL: @test_mm512_cvtepi64_epi16
6746 // CHECK: trunc <8 x i64> %{{.*}} to <8 x i16>
6747 return _mm512_cvtepi64_epi16(__A
);
6750 __m128i
test_mm512_mask_cvtepi64_epi16(__m128i __O
, __mmask8 __M
, __m512i __A
) {
6751 // CHECK-LABEL: @test_mm512_mask_cvtepi64_epi16
6752 // CHECK: @llvm.x86.avx512.mask.pmov.qw.512
6753 return _mm512_mask_cvtepi64_epi16(__O
, __M
, __A
);
6756 __m128i
test_mm512_maskz_cvtepi64_epi16(__mmask8 __M
, __m512i __A
) {
6757 // CHECK-LABEL: @test_mm512_maskz_cvtepi64_epi16
6758 // CHECK: @llvm.x86.avx512.mask.pmov.qw.512
6759 return _mm512_maskz_cvtepi64_epi16(__M
, __A
);
6762 void test_mm512_mask_cvtepi64_storeu_epi16(void *__P
, __mmask8 __M
, __m512i __A
) {
6763 // CHECK-LABEL: @test_mm512_mask_cvtepi64_storeu_epi16
6764 // CHECK: @llvm.x86.avx512.mask.pmov.qw.mem.512
6765 return _mm512_mask_cvtepi64_storeu_epi16(__P
, __M
, __A
);
6768 __m128i
test_mm512_extracti32x4_epi32(__m512i __A
) {
6769 // CHECK-LABEL: @test_mm512_extracti32x4_epi32
6770 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> poison, <4 x i32> <i32 12, i32 13, i32 14, i32 15>
6771 return _mm512_extracti32x4_epi32(__A
, 3);
6774 __m128i
test_mm512_mask_extracti32x4_epi32(__m128i __W
, __mmask8 __U
, __m512i __A
) {
6775 // CHECK-LABEL: @test_mm512_mask_extracti32x4_epi32
6776 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> poison, <4 x i32> <i32 12, i32 13, i32 14, i32 15>
6777 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6778 return _mm512_mask_extracti32x4_epi32(__W
, __U
, __A
, 3);
6781 __m128i
test_mm512_maskz_extracti32x4_epi32(__mmask8 __U
, __m512i __A
) {
6782 // CHECK-LABEL: @test_mm512_maskz_extracti32x4_epi32
6783 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> poison, <4 x i32> <i32 12, i32 13, i32 14, i32 15>
6784 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6785 return _mm512_maskz_extracti32x4_epi32(__U
, __A
, 3);
6788 __m256i
test_mm512_extracti64x4_epi64(__m512i __A
) {
6789 // CHECK-LABEL: @test_mm512_extracti64x4_epi64
6790 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> poison, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
6791 return _mm512_extracti64x4_epi64(__A
, 1);
6794 __m256i
test_mm512_mask_extracti64x4_epi64(__m256i __W
, __mmask8 __U
, __m512i __A
) {
6795 // CHECK-LABEL: @test_mm512_mask_extracti64x4_epi64
6796 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> poison, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
6797 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6798 return _mm512_mask_extracti64x4_epi64(__W
, __U
, __A
, 1);
6801 __m256i
test_mm512_maskz_extracti64x4_epi64(__mmask8 __U
, __m512i __A
) {
6802 // CHECK-LABEL: @test_mm512_maskz_extracti64x4_epi64
6803 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> poison, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
6804 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6805 return _mm512_maskz_extracti64x4_epi64(__U
, __A
, 1);
6808 __m512d
test_mm512_insertf64x4(__m512d __A
, __m256d __B
) {
6809 // CHECK-LABEL: @test_mm512_insertf64x4
6810 // 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>
6811 return _mm512_insertf64x4(__A
, __B
, 1);
6814 __m512d
test_mm512_mask_insertf64x4(__m512d __W
, __mmask8 __U
, __m512d __A
, __m256d __B
) {
6815 // CHECK-LABEL: @test_mm512_mask_insertf64x4
6816 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
6817 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6818 return _mm512_mask_insertf64x4(__W
, __U
, __A
, __B
, 1);
6821 __m512d
test_mm512_maskz_insertf64x4(__mmask8 __U
, __m512d __A
, __m256d __B
) {
6822 // CHECK-LABEL: @test_mm512_maskz_insertf64x4
6823 // 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>
6824 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6825 return _mm512_maskz_insertf64x4(__U
, __A
, __B
, 1);
6828 __m512i
test_mm512_inserti64x4(__m512i __A
, __m256i __B
) {
6829 // CHECK-LABEL: @test_mm512_inserti64x4
6830 // 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>
6831 return _mm512_inserti64x4(__A
, __B
, 1);
6834 __m512i
test_mm512_mask_inserti64x4(__m512i __W
, __mmask8 __U
, __m512i __A
, __m256i __B
) {
6835 // CHECK-LABEL: @test_mm512_mask_inserti64x4
6836 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
6837 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6838 return _mm512_mask_inserti64x4(__W
, __U
, __A
, __B
, 1);
6841 __m512i
test_mm512_maskz_inserti64x4(__mmask8 __U
, __m512i __A
, __m256i __B
) {
6842 // CHECK-LABEL: @test_mm512_maskz_inserti64x4
6843 // 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>
6844 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6845 return _mm512_maskz_inserti64x4(__U
, __A
, __B
, 1);
6848 __m512
test_mm512_insertf32x4(__m512 __A
, __m128 __B
) {
6849 // CHECK-LABEL: @test_mm512_insertf32x4
6850 // 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>
6851 return _mm512_insertf32x4(__A
, __B
, 1);
6854 __m512
test_mm512_mask_insertf32x4(__m512 __W
, __mmask16 __U
, __m512 __A
, __m128 __B
) {
6855 // CHECK-LABEL: @test_mm512_mask_insertf32x4
6856 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 18, i32 19, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
6857 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6858 return _mm512_mask_insertf32x4(__W
, __U
, __A
, __B
, 1);
6861 __m512
test_mm512_maskz_insertf32x4(__mmask16 __U
, __m512 __A
, __m128 __B
) {
6862 // CHECK-LABEL: @test_mm512_maskz_insertf32x4
6863 // 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>
6864 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6865 return _mm512_maskz_insertf32x4(__U
, __A
, __B
, 1);
6868 __m512i
test_mm512_inserti32x4(__m512i __A
, __m128i __B
) {
6869 // CHECK-LABEL: @test_mm512_inserti32x4
6870 // 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>
6871 return _mm512_inserti32x4(__A
, __B
, 1);
6874 __m512i
test_mm512_mask_inserti32x4(__m512i __W
, __mmask16 __U
, __m512i __A
, __m128i __B
) {
6875 // CHECK-LABEL: @test_mm512_mask_inserti32x4
6876 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 18, i32 19, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
6877 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6878 return _mm512_mask_inserti32x4(__W
, __U
, __A
, __B
, 1);
6881 __m512i
test_mm512_maskz_inserti32x4(__mmask16 __U
, __m512i __A
, __m128i __B
) {
6882 // CHECK-LABEL: @test_mm512_maskz_inserti32x4
6883 // 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>
6884 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6885 return _mm512_maskz_inserti32x4(__U
, __A
, __B
, 1);
6888 __m512d
test_mm512_getmant_round_pd(__m512d __A
) {
6889 // CHECK-LABEL: @test_mm512_getmant_round_pd
6890 // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6891 return _mm512_getmant_round_pd(__A
,_MM_MANT_NORM_p5_2
, _MM_MANT_SIGN_nan
, _MM_FROUND_NO_EXC
);
6894 __m512d
test_mm512_mask_getmant_round_pd(__m512d __W
, __mmask8 __U
, __m512d __A
) {
6895 // CHECK-LABEL: @test_mm512_mask_getmant_round_pd
6896 // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6897 return _mm512_mask_getmant_round_pd(__W
, __U
, __A
,_MM_MANT_NORM_p5_2
, _MM_MANT_SIGN_nan
, _MM_FROUND_NO_EXC
);
6900 __m512d
test_mm512_maskz_getmant_round_pd(__mmask8 __U
, __m512d __A
) {
6901 // CHECK-LABEL: @test_mm512_maskz_getmant_round_pd
6902 // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6903 return _mm512_maskz_getmant_round_pd(__U
, __A
,_MM_MANT_NORM_p5_2
, _MM_MANT_SIGN_nan
, _MM_FROUND_NO_EXC
);
6906 __m512d
test_mm512_getmant_pd(__m512d __A
) {
6907 // CHECK-LABEL: @test_mm512_getmant_pd
6908 // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6909 return _mm512_getmant_pd(__A
,_MM_MANT_NORM_p5_2
, _MM_MANT_SIGN_nan
);
6912 __m512d
test_mm512_mask_getmant_pd(__m512d __W
, __mmask8 __U
, __m512d __A
) {
6913 // CHECK-LABEL: @test_mm512_mask_getmant_pd
6914 // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6915 return _mm512_mask_getmant_pd(__W
, __U
, __A
,_MM_MANT_NORM_p5_2
, _MM_MANT_SIGN_nan
);
6918 __m512d
test_mm512_maskz_getmant_pd(__mmask8 __U
, __m512d __A
) {
6919 // CHECK-LABEL: @test_mm512_maskz_getmant_pd
6920 // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6921 return _mm512_maskz_getmant_pd(__U
, __A
,_MM_MANT_NORM_p5_2
, _MM_MANT_SIGN_nan
);
6924 __m512
test_mm512_getmant_round_ps(__m512 __A
) {
6925 // CHECK-LABEL: @test_mm512_getmant_round_ps
6926 // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6927 return _mm512_getmant_round_ps(__A
,_MM_MANT_NORM_p5_2
, _MM_MANT_SIGN_nan
, _MM_FROUND_NO_EXC
);
6930 __m512
test_mm512_mask_getmant_round_ps(__m512 __W
, __mmask16 __U
, __m512 __A
) {
6931 // CHECK-LABEL: @test_mm512_mask_getmant_round_ps
6932 // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6933 return _mm512_mask_getmant_round_ps(__W
, __U
, __A
,_MM_MANT_NORM_p5_2
, _MM_MANT_SIGN_nan
, _MM_FROUND_NO_EXC
);
6936 __m512
test_mm512_maskz_getmant_round_ps(__mmask16 __U
, __m512 __A
) {
6937 // CHECK-LABEL: @test_mm512_maskz_getmant_round_ps
6938 // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6939 return _mm512_maskz_getmant_round_ps(__U
, __A
,_MM_MANT_NORM_p5_2
, _MM_MANT_SIGN_nan
, _MM_FROUND_NO_EXC
);
6942 __m512
test_mm512_getmant_ps(__m512 __A
) {
6943 // CHECK-LABEL: @test_mm512_getmant_ps
6944 // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6945 return _mm512_getmant_ps(__A
,_MM_MANT_NORM_p5_2
, _MM_MANT_SIGN_nan
);
6948 __m512
test_mm512_mask_getmant_ps(__m512 __W
, __mmask16 __U
, __m512 __A
) {
6949 // CHECK-LABEL: @test_mm512_mask_getmant_ps
6950 // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6951 return _mm512_mask_getmant_ps(__W
, __U
, __A
,_MM_MANT_NORM_p5_2
, _MM_MANT_SIGN_nan
);
6954 __m512
test_mm512_maskz_getmant_ps(__mmask16 __U
, __m512 __A
) {
6955 // CHECK-LABEL: @test_mm512_maskz_getmant_ps
6956 // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6957 return _mm512_maskz_getmant_ps(__U
, __A
,_MM_MANT_NORM_p5_2
, _MM_MANT_SIGN_nan
);
6960 __m512d
test_mm512_getexp_round_pd(__m512d __A
) {
6961 // CHECK-LABEL: @test_mm512_getexp_round_pd
6962 // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6963 return _mm512_getexp_round_pd(__A
, _MM_FROUND_NO_EXC
);
6966 __m512d
test_mm512_mask_getexp_round_pd(__m512d __W
, __mmask8 __U
, __m512d __A
) {
6967 // CHECK-LABEL: @test_mm512_mask_getexp_round_pd
6968 // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6969 return _mm512_mask_getexp_round_pd(__W
, __U
, __A
, _MM_FROUND_NO_EXC
);
6972 __m512d
test_mm512_maskz_getexp_round_pd(__mmask8 __U
, __m512d __A
) {
6973 // CHECK-LABEL: @test_mm512_maskz_getexp_round_pd
6974 // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6975 return _mm512_maskz_getexp_round_pd(__U
, __A
, _MM_FROUND_NO_EXC
);
6978 __m512d
test_mm512_getexp_pd(__m512d __A
) {
6979 // CHECK-LABEL: @test_mm512_getexp_pd
6980 // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6981 return _mm512_getexp_pd(__A
);
6984 __m512d
test_mm512_mask_getexp_pd(__m512d __W
, __mmask8 __U
, __m512d __A
) {
6985 // CHECK-LABEL: @test_mm512_mask_getexp_pd
6986 // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6987 return _mm512_mask_getexp_pd(__W
, __U
, __A
);
6990 __m512d
test_mm512_maskz_getexp_pd(__mmask8 __U
, __m512d __A
) {
6991 // CHECK-LABEL: @test_mm512_maskz_getexp_pd
6992 // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6993 return _mm512_maskz_getexp_pd(__U
, __A
);
6996 __m512
test_mm512_getexp_round_ps(__m512 __A
) {
6997 // CHECK-LABEL: @test_mm512_getexp_round_ps
6998 // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
6999 return _mm512_getexp_round_ps(__A
, _MM_FROUND_NO_EXC
);
7002 __m512
test_mm512_mask_getexp_round_ps(__m512 __W
, __mmask16 __U
, __m512 __A
) {
7003 // CHECK-LABEL: @test_mm512_mask_getexp_round_ps
7004 // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
7005 return _mm512_mask_getexp_round_ps(__W
, __U
, __A
, _MM_FROUND_NO_EXC
);
7008 __m512
test_mm512_maskz_getexp_round_ps(__mmask16 __U
, __m512 __A
) {
7009 // CHECK-LABEL: @test_mm512_maskz_getexp_round_ps
7010 // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
7011 return _mm512_maskz_getexp_round_ps(__U
, __A
, _MM_FROUND_NO_EXC
);
7014 __m512
test_mm512_getexp_ps(__m512 __A
) {
7015 // CHECK-LABEL: @test_mm512_getexp_ps
7016 // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
7017 return _mm512_getexp_ps(__A
);
7020 __m512
test_mm512_mask_getexp_ps(__m512 __W
, __mmask16 __U
, __m512 __A
) {
7021 // CHECK-LABEL: @test_mm512_mask_getexp_ps
7022 // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
7023 return _mm512_mask_getexp_ps(__W
, __U
, __A
);
7026 __m512
test_mm512_maskz_getexp_ps(__mmask16 __U
, __m512 __A
) {
7027 // CHECK-LABEL: @test_mm512_maskz_getexp_ps
7028 // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
7029 return _mm512_maskz_getexp_ps(__U
, __A
);
7032 __m256
test_mm512_i64gather_ps(__m512i __index
, void const *__addr
) {
7033 // CHECK-LABEL: @test_mm512_i64gather_ps
7034 // CHECK: @llvm.x86.avx512.mask.gather.qps.512
7035 return _mm512_i64gather_ps(__index
, __addr
, 2);
7038 __m256
test_mm512_mask_i64gather_ps(__m256 __v1_old
, __mmask8 __mask
, __m512i __index
, void const *__addr
) {
7039 // CHECK-LABEL: @test_mm512_mask_i64gather_ps
7040 // CHECK: @llvm.x86.avx512.mask.gather.qps.512
7041 return _mm512_mask_i64gather_ps(__v1_old
, __mask
, __index
, __addr
, 2);
7044 __m256i
test_mm512_i64gather_epi32(__m512i __index
, void const *__addr
) {
7045 // CHECK-LABEL: @test_mm512_i64gather_epi32
7046 // CHECK: @llvm.x86.avx512.mask.gather.qpi.512
7047 return _mm512_i64gather_epi32(__index
, __addr
, 2);
7050 __m256i
test_mm512_mask_i64gather_epi32(__m256i __v1_old
, __mmask8 __mask
, __m512i __index
, void const *__addr
) {
7051 // CHECK-LABEL: @test_mm512_mask_i64gather_epi32
7052 // CHECK: @llvm.x86.avx512.mask.gather.qpi.512
7053 return _mm512_mask_i64gather_epi32(__v1_old
, __mask
, __index
, __addr
, 2);
7056 __m512d
test_mm512_i64gather_pd(__m512i __index
, void const *__addr
) {
7057 // CHECK-LABEL: @test_mm512_i64gather_pd
7058 // CHECK: @llvm.x86.avx512.mask.gather.qpd.512
7059 return _mm512_i64gather_pd(__index
, __addr
, 2);
7062 __m512d
test_mm512_mask_i64gather_pd(__m512d __v1_old
, __mmask8 __mask
, __m512i __index
, void const *__addr
) {
7063 // CHECK-LABEL: @test_mm512_mask_i64gather_pd
7064 // CHECK: @llvm.x86.avx512.mask.gather.qpd.512
7065 return _mm512_mask_i64gather_pd(__v1_old
, __mask
, __index
, __addr
, 2);
7068 __m512i
test_mm512_i64gather_epi64(__m512i __index
, void const *__addr
) {
7069 // CHECK-LABEL: @test_mm512_i64gather_epi64
7070 // CHECK: @llvm.x86.avx512.mask.gather.qpq.512
7071 return _mm512_i64gather_epi64(__index
, __addr
, 2);
7074 __m512i
test_mm512_mask_i64gather_epi64(__m512i __v1_old
, __mmask8 __mask
, __m512i __index
, void const *__addr
) {
7075 // CHECK-LABEL: @test_mm512_mask_i64gather_epi64
7076 // CHECK: @llvm.x86.avx512.mask.gather.qpq.512
7077 return _mm512_mask_i64gather_epi64(__v1_old
, __mask
, __index
, __addr
, 2);
7080 __m512
test_mm512_i32gather_ps(__m512i __index
, void const *__addr
) {
7081 // CHECK-LABEL: @test_mm512_i32gather_ps
7082 // CHECK: @llvm.x86.avx512.mask.gather.dps.512
7083 return _mm512_i32gather_ps(__index
, __addr
, 2);
7086 __m512
test_mm512_mask_i32gather_ps(__m512 v1_old
, __mmask16 __mask
, __m512i __index
, void const *__addr
) {
7087 // CHECK-LABEL: @test_mm512_mask_i32gather_ps
7088 // CHECK: @llvm.x86.avx512.mask.gather.dps.512
7089 return _mm512_mask_i32gather_ps(v1_old
, __mask
, __index
, __addr
, 2);
7092 __m512i
test_mm512_i32gather_epi32(__m512i __index
, void const *__addr
) {
7093 // CHECK-LABEL: @test_mm512_i32gather_epi32
7094 // CHECK: @llvm.x86.avx512.mask.gather.dpi.512
7095 return _mm512_i32gather_epi32(__index
, __addr
, 2);
7098 __m512i
test_mm512_mask_i32gather_epi32(__m512i __v1_old
, __mmask16 __mask
, __m512i __index
, void const *__addr
) {
7099 // CHECK-LABEL: @test_mm512_mask_i32gather_epi32
7100 // CHECK: @llvm.x86.avx512.mask.gather.dpi.512
7101 return _mm512_mask_i32gather_epi32(__v1_old
, __mask
, __index
, __addr
, 2);
7104 __m512d
test_mm512_i32gather_pd(__m256i __index
, void const *__addr
) {
7105 // CHECK-LABEL: @test_mm512_i32gather_pd
7106 // CHECK: @llvm.x86.avx512.mask.gather.dpd.512
7107 return _mm512_i32gather_pd(__index
, __addr
, 2);
7110 __m512d
test_mm512_mask_i32gather_pd(__m512d __v1_old
, __mmask8 __mask
, __m256i __index
, void const *__addr
) {
7111 // CHECK-LABEL: @test_mm512_mask_i32gather_pd
7112 // CHECK: @llvm.x86.avx512.mask.gather.dpd.512
7113 return _mm512_mask_i32gather_pd(__v1_old
, __mask
, __index
, __addr
, 2);
7116 __m512i
test_mm512_i32gather_epi64(__m256i __index
, void const *__addr
) {
7117 // CHECK-LABEL: @test_mm512_i32gather_epi64
7118 // CHECK: @llvm.x86.avx512.mask.gather.dpq.512
7119 return _mm512_i32gather_epi64(__index
, __addr
, 2);
7122 __m512i
test_mm512_mask_i32gather_epi64(__m512i __v1_old
, __mmask8 __mask
, __m256i __index
, void const *__addr
) {
7123 // CHECK-LABEL: @test_mm512_mask_i32gather_epi64
7124 // CHECK: @llvm.x86.avx512.mask.gather.dpq.512
7125 return _mm512_mask_i32gather_epi64(__v1_old
, __mask
, __index
, __addr
, 2);
7128 void test_mm512_i64scatter_ps(void *__addr
, __m512i __index
, __m256 __v1
) {
7129 // CHECK-LABEL: @test_mm512_i64scatter_ps
7130 // CHECK: @llvm.x86.avx512.mask.scatter.qps.512
7131 return _mm512_i64scatter_ps(__addr
, __index
, __v1
, 2);
7134 void test_mm512_mask_i64scatter_ps(void *__addr
, __mmask8 __mask
, __m512i __index
, __m256 __v1
) {
7135 // CHECK-LABEL: @test_mm512_mask_i64scatter_ps
7136 // CHECK: @llvm.x86.avx512.mask.scatter.qps.512
7137 return _mm512_mask_i64scatter_ps(__addr
, __mask
, __index
, __v1
, 2);
7140 void test_mm512_i64scatter_epi32(void *__addr
, __m512i __index
, __m256i __v1
) {
7141 // CHECK-LABEL: @test_mm512_i64scatter_epi32
7142 // CHECK: @llvm.x86.avx512.mask.scatter.qpi.512
7143 return _mm512_i64scatter_epi32(__addr
, __index
, __v1
, 2);
7146 void test_mm512_mask_i64scatter_epi32(void *__addr
, __mmask8 __mask
, __m512i __index
, __m256i __v1
) {
7147 // CHECK-LABEL: @test_mm512_mask_i64scatter_epi32
7148 // CHECK: @llvm.x86.avx512.mask.scatter.qpi.512
7149 return _mm512_mask_i64scatter_epi32(__addr
, __mask
, __index
, __v1
, 2);
7152 void test_mm512_i64scatter_pd(void *__addr
, __m512i __index
, __m512d __v1
) {
7153 // CHECK-LABEL: @test_mm512_i64scatter_pd
7154 // CHECK: @llvm.x86.avx512.mask.scatter.qpd.512
7155 return _mm512_i64scatter_pd(__addr
, __index
, __v1
, 2);
7158 void test_mm512_mask_i64scatter_pd(void *__addr
, __mmask8 __mask
, __m512i __index
, __m512d __v1
) {
7159 // CHECK-LABEL: @test_mm512_mask_i64scatter_pd
7160 // CHECK: @llvm.x86.avx512.mask.scatter.qpd.512
7161 return _mm512_mask_i64scatter_pd(__addr
, __mask
, __index
, __v1
, 2);
7164 void test_mm512_i64scatter_epi64(void *__addr
, __m512i __index
, __m512i __v1
) {
7165 // CHECK-LABEL: @test_mm512_i64scatter_epi64
7166 // CHECK: @llvm.x86.avx512.mask.scatter.qpq.512
7167 return _mm512_i64scatter_epi64(__addr
, __index
, __v1
, 2);
7170 void test_mm512_mask_i64scatter_epi64(void *__addr
, __mmask8 __mask
, __m512i __index
, __m512i __v1
) {
7171 // CHECK-LABEL: @test_mm512_mask_i64scatter_epi64
7172 // CHECK: @llvm.x86.avx512.mask.scatter.qpq.512
7173 return _mm512_mask_i64scatter_epi64(__addr
, __mask
, __index
, __v1
, 2);
7176 void test_mm512_i32scatter_ps(void *__addr
, __m512i __index
, __m512 __v1
) {
7177 // CHECK-LABEL: @test_mm512_i32scatter_ps
7178 // CHECK: @llvm.x86.avx512.mask.scatter.dps.512
7179 return _mm512_i32scatter_ps(__addr
, __index
, __v1
, 2);
7182 void test_mm512_mask_i32scatter_ps(void *__addr
, __mmask16 __mask
, __m512i __index
, __m512 __v1
) {
7183 // CHECK-LABEL: @test_mm512_mask_i32scatter_ps
7184 // CHECK: @llvm.x86.avx512.mask.scatter.dps.512
7185 return _mm512_mask_i32scatter_ps(__addr
, __mask
, __index
, __v1
, 2);
7188 void test_mm512_i32scatter_epi32(void *__addr
, __m512i __index
, __m512i __v1
) {
7189 // CHECK-LABEL: @test_mm512_i32scatter_epi32
7190 // CHECK: @llvm.x86.avx512.mask.scatter.dpi.512
7191 return _mm512_i32scatter_epi32(__addr
, __index
, __v1
, 2);
7194 void test_mm512_mask_i32scatter_epi32(void *__addr
, __mmask16 __mask
, __m512i __index
, __m512i __v1
) {
7195 // CHECK-LABEL: @test_mm512_mask_i32scatter_epi32
7196 // CHECK: @llvm.x86.avx512.mask.scatter.dpi.512
7197 return _mm512_mask_i32scatter_epi32(__addr
, __mask
, __index
, __v1
, 2);
7200 void test_mm512_i32scatter_pd(void *__addr
, __m256i __index
, __m512d __v1
) {
7201 // CHECK-LABEL: @test_mm512_i32scatter_pd
7202 // CHECK: @llvm.x86.avx512.mask.scatter.dpd.512
7203 return _mm512_i32scatter_pd(__addr
, __index
, __v1
, 2);
7206 void test_mm512_mask_i32scatter_pd(void *__addr
, __mmask8 __mask
, __m256i __index
, __m512d __v1
) {
7207 // CHECK-LABEL: @test_mm512_mask_i32scatter_pd
7208 // CHECK: @llvm.x86.avx512.mask.scatter.dpd.512
7209 return _mm512_mask_i32scatter_pd(__addr
, __mask
, __index
, __v1
, 2);
7212 void test_mm512_i32scatter_epi64(void *__addr
, __m256i __index
, __m512i __v1
) {
7213 // CHECK-LABEL: @test_mm512_i32scatter_epi64
7214 // CHECK: @llvm.x86.avx512.mask.scatter.dpq.512
7215 return _mm512_i32scatter_epi64(__addr
, __index
, __v1
, 2);
7218 void test_mm512_mask_i32scatter_epi64(void *__addr
, __mmask8 __mask
, __m256i __index
, __m512i __v1
) {
7219 // CHECK-LABEL: @test_mm512_mask_i32scatter_epi64
7220 // CHECK: @llvm.x86.avx512.mask.scatter.dpq.512
7221 return _mm512_mask_i32scatter_epi64(__addr
, __mask
, __index
, __v1
, 2);
7224 __m128d
test_mm_mask_rsqrt14_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
){
7225 // CHECK-LABEL: @test_mm_mask_rsqrt14_sd
7226 // CHECK: @llvm.x86.avx512.rsqrt14.sd
7227 return _mm_mask_rsqrt14_sd(__W
, __U
, __A
, __B
);
7230 __m128d
test_mm_maskz_rsqrt14_sd(__mmask8 __U
, __m128d __A
, __m128d __B
){
7231 // CHECK-LABEL: @test_mm_maskz_rsqrt14_sd
7232 // CHECK: @llvm.x86.avx512.rsqrt14.sd
7233 return _mm_maskz_rsqrt14_sd(__U
, __A
, __B
);
7236 __m128
test_mm_mask_rsqrt14_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
){
7237 // CHECK-LABEL: @test_mm_mask_rsqrt14_ss
7238 // CHECK: @llvm.x86.avx512.rsqrt14.ss
7239 return _mm_mask_rsqrt14_ss(__W
, __U
, __A
, __B
);
7242 __m128
test_mm_maskz_rsqrt14_ss(__mmask8 __U
, __m128 __A
, __m128 __B
){
7243 // CHECK-LABEL: @test_mm_maskz_rsqrt14_ss
7244 // CHECK: @llvm.x86.avx512.rsqrt14.ss
7245 return _mm_maskz_rsqrt14_ss(__U
, __A
, __B
);
7248 __m512d
test_mm512_mask_rcp14_pd (__m512d __W
, __mmask8 __U
, __m512d __A
)
7250 // CHECK-LABEL: @test_mm512_mask_rcp14_pd
7251 // CHECK: @llvm.x86.avx512.rcp14.pd.512
7252 return _mm512_mask_rcp14_pd (__W
,__U
,__A
);
7255 __m512d
test_mm512_maskz_rcp14_pd (__mmask8 __U
, __m512d __A
)
7257 // CHECK-LABEL: @test_mm512_maskz_rcp14_pd
7258 // CHECK: @llvm.x86.avx512.rcp14.pd.512
7259 return _mm512_maskz_rcp14_pd (__U
,__A
);
7262 __m512
test_mm512_mask_rcp14_ps (__m512 __W
, __mmask16 __U
, __m512 __A
)
7264 // CHECK-LABEL: @test_mm512_mask_rcp14_ps
7265 // CHECK: @llvm.x86.avx512.rcp14.ps.512
7266 return _mm512_mask_rcp14_ps (__W
,__U
,__A
);
7269 __m512
test_mm512_maskz_rcp14_ps (__mmask16 __U
, __m512 __A
)
7271 // CHECK-LABEL: @test_mm512_maskz_rcp14_ps
7272 // CHECK: @llvm.x86.avx512.rcp14.ps.512
7273 return _mm512_maskz_rcp14_ps (__U
,__A
);
7276 __m128d
test_mm_mask_rcp14_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
){
7277 // CHECK-LABEL: @test_mm_mask_rcp14_sd
7278 // CHECK: @llvm.x86.avx512.rcp14.sd
7279 return _mm_mask_rcp14_sd(__W
, __U
, __A
, __B
);
7282 __m128d
test_mm_maskz_rcp14_sd(__mmask8 __U
, __m128d __A
, __m128d __B
){
7283 // CHECK-LABEL: @test_mm_maskz_rcp14_sd
7284 // CHECK: @llvm.x86.avx512.rcp14.sd
7285 return _mm_maskz_rcp14_sd(__U
, __A
, __B
);
7288 __m128
test_mm_mask_rcp14_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
){
7289 // CHECK-LABEL: @test_mm_mask_rcp14_ss
7290 // CHECK: @llvm.x86.avx512.rcp14.ss
7291 return _mm_mask_rcp14_ss(__W
, __U
, __A
, __B
);
7294 __m128
test_mm_maskz_rcp14_ss(__mmask8 __U
, __m128 __A
, __m128 __B
){
7295 // CHECK-LABEL: @test_mm_maskz_rcp14_ss
7296 // CHECK: @llvm.x86.avx512.rcp14.ss
7297 return _mm_maskz_rcp14_ss(__U
, __A
, __B
);
7300 __m128d
test_mm_mask_getexp_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
){
7301 // CHECK-LABEL: @test_mm_mask_getexp_sd
7302 // CHECK: @llvm.x86.avx512.mask.getexp.sd
7303 return _mm_mask_getexp_sd(__W
, __U
, __A
, __B
);
7306 __m128d
test_mm_mask_getexp_round_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
){
7307 // CHECK-LABEL: @test_mm_mask_getexp_round_sd
7308 // CHECK: @llvm.x86.avx512.mask.getexp.sd
7309 return _mm_mask_getexp_round_sd(__W
, __U
, __A
, __B
, _MM_FROUND_NO_EXC
);
7312 __m128d
test_mm_maskz_getexp_sd(__mmask8 __U
, __m128d __A
, __m128d __B
){
7313 // CHECK-LABEL: @test_mm_maskz_getexp_sd
7314 // CHECK: @llvm.x86.avx512.mask.getexp.sd
7315 return _mm_maskz_getexp_sd(__U
, __A
, __B
);
7318 __m128d
test_mm_maskz_getexp_round_sd(__mmask8 __U
, __m128d __A
, __m128d __B
){
7319 // CHECK-LABEL: @test_mm_maskz_getexp_round_sd
7320 // CHECK: @llvm.x86.avx512.mask.getexp.sd
7321 return _mm_maskz_getexp_round_sd(__U
, __A
, __B
, _MM_FROUND_NO_EXC
);
7324 __m128
test_mm_mask_getexp_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
){
7325 // CHECK-LABEL: @test_mm_mask_getexp_ss
7326 // CHECK: @llvm.x86.avx512.mask.getexp.ss
7327 return _mm_mask_getexp_ss(__W
, __U
, __A
, __B
);
7330 __m128
test_mm_mask_getexp_round_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
){
7331 // CHECK-LABEL: @test_mm_mask_getexp_round_ss
7332 // CHECK: @llvm.x86.avx512.mask.getexp.ss
7333 return _mm_mask_getexp_round_ss(__W
, __U
, __A
, __B
, _MM_FROUND_NO_EXC
);
7336 __m128
test_mm_maskz_getexp_ss(__mmask8 __U
, __m128 __A
, __m128 __B
){
7337 // CHECK-LABEL: @test_mm_maskz_getexp_ss
7338 // CHECK: @llvm.x86.avx512.mask.getexp.ss
7339 return _mm_maskz_getexp_ss(__U
, __A
, __B
);
7342 __m128
test_mm_maskz_getexp_round_ss(__mmask8 __U
, __m128 __A
, __m128 __B
){
7343 // CHECK-LABEL: @test_mm_maskz_getexp_round_ss
7344 // CHECK: @llvm.x86.avx512.mask.getexp.ss
7345 return _mm_maskz_getexp_round_ss(__U
, __A
, __B
, _MM_FROUND_NO_EXC
);
7348 __m128d
test_mm_mask_getmant_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
){
7349 // CHECK-LABEL: @test_mm_mask_getmant_sd
7350 // CHECK: @llvm.x86.avx512.mask.getmant.sd
7351 return _mm_mask_getmant_sd(__W
, __U
, __A
, __B
, _MM_MANT_NORM_p5_2
, _MM_MANT_SIGN_nan
);
7354 __m128d
test_mm_mask_getmant_round_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
){
7355 // CHECK-LABEL: @test_mm_mask_getmant_round_sd
7356 // CHECK: @llvm.x86.avx512.mask.getmant.sd
7357 return _mm_mask_getmant_round_sd(__W
, __U
, __A
, __B
, _MM_MANT_NORM_p5_2
, _MM_MANT_SIGN_nan
, _MM_FROUND_NO_EXC
);
7360 __m128d
test_mm_maskz_getmant_sd(__mmask8 __U
, __m128d __A
, __m128d __B
){
7361 // CHECK-LABEL: @test_mm_maskz_getmant_sd
7362 // CHECK: @llvm.x86.avx512.mask.getmant.sd
7363 return _mm_maskz_getmant_sd(__U
, __A
, __B
, _MM_MANT_NORM_p5_2
, _MM_MANT_SIGN_nan
);
7366 __m128d
test_mm_maskz_getmant_round_sd(__mmask8 __U
, __m128d __A
, __m128d __B
){
7367 // CHECK-LABEL: @test_mm_maskz_getmant_round_sd
7368 // CHECK: @llvm.x86.avx512.mask.getmant.sd
7369 return _mm_maskz_getmant_round_sd(__U
, __A
, __B
, _MM_MANT_NORM_p5_2
, _MM_MANT_SIGN_nan
, _MM_FROUND_NO_EXC
);
7372 __m128
test_mm_mask_getmant_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
){
7373 // CHECK-LABEL: @test_mm_mask_getmant_ss
7374 // CHECK: @llvm.x86.avx512.mask.getmant.ss
7375 return _mm_mask_getmant_ss(__W
, __U
, __A
, __B
, _MM_MANT_NORM_p5_2
, _MM_MANT_SIGN_nan
);
7378 __m128
test_mm_mask_getmant_round_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
){
7379 // CHECK-LABEL: @test_mm_mask_getmant_round_ss
7380 // CHECK: @llvm.x86.avx512.mask.getmant.ss
7381 return _mm_mask_getmant_round_ss(__W
, __U
, __A
, __B
, _MM_MANT_NORM_p5_2
, _MM_MANT_SIGN_nan
, _MM_FROUND_NO_EXC
);
7384 __m128
test_mm_maskz_getmant_ss(__mmask8 __U
, __m128 __A
, __m128 __B
){
7385 // CHECK-LABEL: @test_mm_maskz_getmant_ss
7386 // CHECK: @llvm.x86.avx512.mask.getmant.ss
7387 return _mm_maskz_getmant_ss(__U
, __A
, __B
, _MM_MANT_NORM_p5_2
, _MM_MANT_SIGN_nan
);
7390 __m128
test_mm_maskz_getmant_round_ss(__mmask8 __U
, __m128 __A
, __m128 __B
){
7391 // CHECK-LABEL: @test_mm_maskz_getmant_round_ss
7392 // CHECK: @llvm.x86.avx512.mask.getmant.ss
7393 return _mm_maskz_getmant_round_ss(__U
, __A
, __B
, _MM_MANT_NORM_p5_2
, _MM_MANT_SIGN_nan
, _MM_FROUND_NO_EXC
);
7396 __m128
test_mm_mask_fmadd_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
){
7397 // CHECK-LABEL: @test_mm_mask_fmadd_ss
7398 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7399 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7400 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7401 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7402 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7403 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7404 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7405 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7406 return _mm_mask_fmadd_ss(__W
, __U
, __A
, __B
);
7409 __m128
test_mm_fmadd_round_ss(__m128 __A
, __m128 __B
, __m128 __C
){
7410 // CHECK-LABEL: @test_mm_fmadd_round_ss
7411 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7412 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7413 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7414 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7415 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[FMA]], i64 0
7416 return _mm_fmadd_round_ss(__A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
7419 __m128
test_mm_mask_fmadd_round_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
){
7420 // CHECK-LABEL: @test_mm_mask_fmadd_round_ss
7421 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7422 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7423 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7424 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7425 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7426 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7427 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7428 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7429 return _mm_mask_fmadd_round_ss(__W
, __U
, __A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
7432 __m128
test_mm_maskz_fmadd_ss(__mmask8 __U
, __m128 __A
, __m128 __B
, __m128 __C
){
7433 // CHECK-LABEL: @test_mm_maskz_fmadd_ss
7434 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7435 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7436 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7437 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7438 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7439 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7440 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7441 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7442 return _mm_maskz_fmadd_ss(__U
, __A
, __B
, __C
);
7445 __m128
test_mm_maskz_fmadd_round_ss(__mmask8 __U
, __m128 __A
, __m128 __B
, __m128 __C
){
7446 // CHECK-LABEL: @test_mm_maskz_fmadd_round_ss
7447 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7448 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7449 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7450 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7451 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7452 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7453 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7454 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7455 return _mm_maskz_fmadd_round_ss(__U
, __A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
7458 __m128
test_mm_mask3_fmadd_ss(__m128 __W
, __m128 __X
, __m128 __Y
, __mmask8 __U
){
7459 // CHECK-LABEL: @test_mm_mask3_fmadd_ss
7460 // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7461 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7462 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[ORIGC:%.+]], i64 0
7463 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7464 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7465 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7466 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C]]
7467 // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7468 return _mm_mask3_fmadd_ss(__W
, __X
, __Y
, __U
);
7471 __m128
test_mm_mask3_fmadd_round_ss(__m128 __W
, __m128 __X
, __m128 __Y
, __mmask8 __U
){
7472 // CHECK-LABEL: @test_mm_mask3_fmadd_round_ss
7473 // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7474 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7475 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[ORIGC:%.+]], i64 0
7476 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7477 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7478 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7479 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C]]
7480 // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7481 return _mm_mask3_fmadd_round_ss(__W
, __X
, __Y
, __U
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
7484 __m128
test_mm_mask_fmsub_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
){
7485 // CHECK-LABEL: @test_mm_mask_fmsub_ss
7486 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7487 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7488 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7489 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7490 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7491 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7492 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7493 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7494 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7495 return _mm_mask_fmsub_ss(__W
, __U
, __A
, __B
);
7498 __m128
test_mm_fmsub_round_ss(__m128 __A
, __m128 __B
, __m128 __C
){
7499 // CHECK-LABEL: @test_mm_fmsub_round_ss
7500 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7501 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7502 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7503 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7504 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7505 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[FMA]], i64 0
7506 return _mm_fmsub_round_ss(__A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
7509 __m128
test_mm_mask_fmsub_round_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
){
7510 // CHECK-LABEL: @test_mm_mask_fmsub_round_ss
7511 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7512 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7513 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7514 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7515 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7516 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7517 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7518 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7519 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7520 return _mm_mask_fmsub_round_ss(__W
, __U
, __A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
7523 __m128
test_mm_maskz_fmsub_ss(__mmask8 __U
, __m128 __A
, __m128 __B
, __m128 __C
){
7524 // CHECK-LABEL: @test_mm_maskz_fmsub_ss
7525 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7526 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7527 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7528 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7529 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
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 0.000000e+00
7533 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7534 return _mm_maskz_fmsub_ss(__U
, __A
, __B
, __C
);
7537 __m128
test_mm_maskz_fmsub_round_ss(__mmask8 __U
, __m128 __A
, __m128 __B
, __m128 __C
){
7538 // CHECK-LABEL: @test_mm_maskz_fmsub_round_ss
7539 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7540 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], 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 11)
7544 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7545 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7546 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7547 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7548 return _mm_maskz_fmsub_round_ss(__U
, __A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
7551 __m128
test_mm_mask3_fmsub_ss(__m128 __W
, __m128 __X
, __m128 __Y
, __mmask8 __U
){
7552 // CHECK-LABEL: @test_mm_mask3_fmsub_ss
7553 // CHECK: [[NEG:%.+]] = fneg <4 x float> [[ORIGC:%.+]]
7554 // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7555 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7556 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7557 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7558 // CHECK-NEXT: [[C2:%.+]] = extractelement <4 x float> [[ORIGC]], i64 0
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 [[C2]]
7562 // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7563 return _mm_mask3_fmsub_ss(__W
, __X
, __Y
, __U
);
7566 __m128
test_mm_mask3_fmsub_round_ss(__m128 __W
, __m128 __X
, __m128 __Y
, __mmask8 __U
){
7567 // CHECK-LABEL: @test_mm_mask3_fmsub_round_ss
7568 // CHECK: [[NEG:%.+]] = fneg <4 x float> [[ORIGC:%.+]]
7569 // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7570 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7571 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7572 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7573 // CHECK-NEXT: [[C2:%.+]] = extractelement <4 x float> [[ORIGC]], i64 0
7574 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7575 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7576 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C2]]
7577 // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7578 return _mm_mask3_fmsub_round_ss(__W
, __X
, __Y
, __U
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
7581 __m128
test_mm_mask_fnmadd_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
){
7582 // CHECK-LABEL: @test_mm_mask_fnmadd_ss
7583 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7584 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7585 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7586 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7587 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7588 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7589 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7590 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7591 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7592 return _mm_mask_fnmadd_ss(__W
, __U
, __A
, __B
);
7595 __m128
test_mm_fnmadd_round_ss(__m128 __A
, __m128 __B
, __m128 __C
){
7596 // CHECK-LABEL: @test_mm_fnmadd_round_ss
7597 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7598 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7599 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7600 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7601 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7602 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[FMA]], i64 0
7603 return _mm_fnmadd_round_ss(__A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
7606 __m128
test_mm_mask_fnmadd_round_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
){
7607 // CHECK-LABEL: @test_mm_mask_fnmadd_round_ss
7608 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7609 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7610 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7611 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7612 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7613 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7614 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7615 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7616 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7617 return _mm_mask_fnmadd_round_ss(__W
, __U
, __A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
7620 __m128
test_mm_maskz_fnmadd_ss(__mmask8 __U
, __m128 __A
, __m128 __B
, __m128 __C
){
7621 // CHECK-LABEL: @test_mm_maskz_fnmadd_ss
7622 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7623 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7624 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7625 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7626 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7627 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7628 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7629 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7630 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7631 return _mm_maskz_fnmadd_ss(__U
, __A
, __B
, __C
);
7634 __m128
test_mm_maskz_fnmadd_round_ss(__mmask8 __U
, __m128 __A
, __m128 __B
, __m128 __C
){
7635 // CHECK-LABEL: @test_mm_maskz_fnmadd_round_ss
7636 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7637 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7638 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7639 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7640 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7641 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7642 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7643 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7644 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7645 return _mm_maskz_fnmadd_round_ss(__U
, __A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
7648 __m128
test_mm_mask3_fnmadd_ss(__m128 __W
, __m128 __X
, __m128 __Y
, __mmask8 __U
){
7649 // CHECK-LABEL: @test_mm_mask3_fnmadd_ss
7650 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7651 // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7652 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7653 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[ORIGC:%.+]], 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 [[C]]
7658 // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7659 return _mm_mask3_fnmadd_ss(__W
, __X
, __Y
, __U
);
7662 __m128
test_mm_mask3_fnmadd_round_ss(__m128 __W
, __m128 __X
, __m128 __Y
, __mmask8 __U
){
7663 // CHECK-LABEL: @test_mm_mask3_fnmadd_round_ss
7664 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7665 // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7666 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7667 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[ORIGC:%.+]], i64 0
7668 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7669 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7670 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7671 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C]]
7672 // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7673 return _mm_mask3_fnmadd_round_ss(__W
, __X
, __Y
, __U
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
7676 __m128
test_mm_mask_fnmsub_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
){
7677 // CHECK-LABEL: @test_mm_mask_fnmsub_ss
7678 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7679 // CHECK: [[NEG2:%.+]] = fneg <4 x float> %{{.*}}
7680 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7681 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7682 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7683 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7684 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7685 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7686 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7687 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7688 return _mm_mask_fnmsub_ss(__W
, __U
, __A
, __B
);
7691 __m128
test_mm_fnmsub_round_ss(__m128 __A
, __m128 __B
, __m128 __C
){
7692 // CHECK-LABEL: @test_mm_fnmsub_round_ss
7693 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7694 // CHECK: [[NEG2:%.+]] = fneg <4 x float> %{{.*}}
7695 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7696 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7697 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7698 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7699 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[FMA]], i64 0
7700 return _mm_fnmsub_round_ss(__A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
7703 __m128
test_mm_mask_fnmsub_round_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
){
7704 // CHECK-LABEL: @test_mm_mask_fnmsub_round_ss
7705 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7706 // CHECK: [[NEG2:%.+]] = fneg <4 x float> %{{.*}}
7707 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7708 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7709 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7710 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7711 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7712 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7713 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7714 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7715 return _mm_mask_fnmsub_round_ss(__W
, __U
, __A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
7718 __m128
test_mm_maskz_fnmsub_ss(__mmask8 __U
, __m128 __A
, __m128 __B
, __m128 __C
){
7719 // CHECK-LABEL: @test_mm_maskz_fnmsub_ss
7720 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7721 // CHECK: [[NEG2:%.+]] = fneg <4 x float> %{{.*}}
7722 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7723 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7724 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7725 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7726 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7727 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7728 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7729 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7730 return _mm_maskz_fnmsub_ss(__U
, __A
, __B
, __C
);
7733 __m128
test_mm_maskz_fnmsub_round_ss(__mmask8 __U
, __m128 __A
, __m128 __B
, __m128 __C
){
7734 // CHECK-LABEL: @test_mm_maskz_fnmsub_round_ss
7735 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7736 // CHECK: [[NEG2:%.+]] = fneg <4 x float> %{{.*}}
7737 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7738 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7739 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7740 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7741 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7742 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7743 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7744 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7745 return _mm_maskz_fnmsub_round_ss(__U
, __A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
7748 __m128
test_mm_mask3_fnmsub_ss(__m128 __W
, __m128 __X
, __m128 __Y
, __mmask8 __U
){
7749 // CHECK-LABEL: @test_mm_mask3_fnmsub_ss
7750 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7751 // CHECK: [[NEG2:%.+]] = fneg <4 x float> [[ORIGC:%.+]]
7752 // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7753 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7754 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7755 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7756 // CHECK-NEXT: [[C2:%.+]] = extractelement <4 x float> [[ORIGC]], i64 0
7757 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7758 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7759 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C2]]
7760 // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7761 return _mm_mask3_fnmsub_ss(__W
, __X
, __Y
, __U
);
7764 __m128
test_mm_mask3_fnmsub_round_ss(__m128 __W
, __m128 __X
, __m128 __Y
, __mmask8 __U
){
7765 // CHECK-LABEL: @test_mm_mask3_fnmsub_round_ss
7766 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7767 // CHECK: [[NEG2:%.+]] = fneg <4 x float> [[ORIGC:%.+]]
7768 // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7769 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7770 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7771 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7772 // CHECK-NEXT: [[C2:%.+]] = extractelement <4 x float> [[ORIGC]], i64 0
7773 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7774 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7775 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C2]]
7776 // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7777 return _mm_mask3_fnmsub_round_ss(__W
, __X
, __Y
, __U
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
7780 __m128d
test_mm_mask_fmadd_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
){
7781 // CHECK-LABEL: @test_mm_mask_fmadd_sd
7782 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7783 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7784 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7785 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7786 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7787 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7788 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
7789 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7790 return _mm_mask_fmadd_sd(__W
, __U
, __A
, __B
);
7793 __m128d
test_mm_fmadd_round_sd(__m128d __A
, __m128d __B
, __m128d __C
){
7794 // CHECK-LABEL: @test_mm_fmadd_round_sd
7795 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7796 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7797 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7798 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
7799 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[FMA]], i64 0
7800 return _mm_fmadd_round_sd(__A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
7803 __m128d
test_mm_mask_fmadd_round_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
){
7804 // CHECK-LABEL: @test_mm_mask_fmadd_round_sd
7805 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7806 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7807 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7808 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
7809 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7810 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7811 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
7812 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7813 return _mm_mask_fmadd_round_sd(__W
, __U
, __A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
7816 __m128d
test_mm_maskz_fmadd_sd(__mmask8 __U
, __m128d __A
, __m128d __B
, __m128d __C
){
7817 // CHECK-LABEL: @test_mm_maskz_fmadd_sd
7818 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7819 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7820 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7821 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7822 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7823 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7824 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
7825 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7826 return _mm_maskz_fmadd_sd(__U
, __A
, __B
, __C
);
7829 __m128d
test_mm_maskz_fmadd_round_sd(__mmask8 __U
, __m128d __A
, __m128d __B
, __m128d __C
){
7830 // CHECK-LABEL: @test_mm_maskz_fmadd_round_sd
7831 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7832 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7833 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7834 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
7835 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7836 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7837 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
7838 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7839 return _mm_maskz_fmadd_round_sd(__U
, __A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
7842 __m128d
test_mm_mask3_fmadd_sd(__m128d __W
, __m128d __X
, __m128d __Y
, __mmask8 __U
){
7843 // CHECK-LABEL: @test_mm_mask3_fmadd_sd
7844 // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7845 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7846 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[ORIGC:%.+]], i64 0
7847 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7848 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7849 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7850 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C]]
7851 // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
7852 return _mm_mask3_fmadd_sd(__W
, __X
, __Y
, __U
);
7855 __m128d
test_mm_mask3_fmadd_round_sd(__m128d __W
, __m128d __X
, __m128d __Y
, __mmask8 __U
){
7856 // CHECK-LABEL: @test_mm_mask3_fmadd_round_sd
7857 // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7858 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7859 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[ORIGC:%.+]], i64 0
7860 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
7861 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7862 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7863 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C]]
7864 // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
7865 return _mm_mask3_fmadd_round_sd(__W
, __X
, __Y
, __U
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
7868 __m128d
test_mm_mask_fmsub_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
){
7869 // CHECK-LABEL: @test_mm_mask_fmsub_sd
7870 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
7871 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7872 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7873 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7874 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7875 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7876 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7877 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
7878 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7879 return _mm_mask_fmsub_sd(__W
, __U
, __A
, __B
);
7882 __m128d
test_mm_fmsub_round_sd(__m128d __A
, __m128d __B
, __m128d __C
){
7883 // CHECK-LABEL: @test_mm_fmsub_round_sd
7884 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
7885 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7886 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7887 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7888 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
7889 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[FMA]], i64 0
7890 return _mm_fmsub_round_sd(__A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
7893 __m128d
test_mm_mask_fmsub_round_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
){
7894 // CHECK-LABEL: @test_mm_mask_fmsub_round_sd
7895 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
7896 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7897 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7898 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7899 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
7900 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7901 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7902 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
7903 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7904 return _mm_mask_fmsub_round_sd(__W
, __U
, __A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
7907 __m128d
test_mm_maskz_fmsub_sd(__mmask8 __U
, __m128d __A
, __m128d __B
, __m128d __C
){
7908 // CHECK-LABEL: @test_mm_maskz_fmsub_sd
7909 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
7910 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7911 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7912 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7913 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
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 0.000000e+00
7917 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7918 return _mm_maskz_fmsub_sd(__U
, __A
, __B
, __C
);
7921 __m128d
test_mm_maskz_fmsub_round_sd(__mmask8 __U
, __m128d __A
, __m128d __B
, __m128d __C
){
7922 // CHECK-LABEL: @test_mm_maskz_fmsub_round_sd
7923 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
7924 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], 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 11)
7928 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7929 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7930 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
7931 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7932 return _mm_maskz_fmsub_round_sd(__U
, __A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
7935 __m128d
test_mm_mask3_fmsub_sd(__m128d __W
, __m128d __X
, __m128d __Y
, __mmask8 __U
){
7936 // CHECK-LABEL: @test_mm_mask3_fmsub_sd
7937 // CHECK: [[NEG:%.+]] = fneg <2 x double> [[ORIGC:%.+]]
7938 // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7939 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7940 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7941 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7942 // CHECK-NEXT: [[C2:%.+]] = extractelement <2 x double> [[ORIGC]], i64 0
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 [[C2]]
7946 // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
7947 return _mm_mask3_fmsub_sd(__W
, __X
, __Y
, __U
);
7950 __m128d
test_mm_mask3_fmsub_round_sd(__m128d __W
, __m128d __X
, __m128d __Y
, __mmask8 __U
){
7951 // CHECK-LABEL: @test_mm_mask3_fmsub_round_sd
7952 // CHECK: [[NEG:%.+]] = fneg <2 x double> [[ORIGC:%.+]]
7953 // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7954 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7955 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7956 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
7957 // CHECK-NEXT: [[C2:%.+]] = extractelement <2 x double> [[ORIGC]], i64 0
7958 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7959 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7960 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C2]]
7961 // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
7962 return _mm_mask3_fmsub_round_sd(__W
, __X
, __Y
, __U
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
7965 __m128d
test_mm_mask_fnmadd_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
){
7966 // CHECK-LABEL: @test_mm_mask_fnmadd_sd
7967 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
7968 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7969 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7970 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7971 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7972 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7973 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7974 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
7975 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7976 return _mm_mask_fnmadd_sd(__W
, __U
, __A
, __B
);
7979 __m128d
test_mm_fnmadd_round_sd(__m128d __A
, __m128d __B
, __m128d __C
){
7980 // CHECK-LABEL: @test_mm_fnmadd_round_sd
7981 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
7982 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7983 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7984 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7985 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
7986 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[FMA]], i64 0
7987 return _mm_fnmadd_round_sd(__A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
7990 __m128d
test_mm_mask_fnmadd_round_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
){
7991 // CHECK-LABEL: @test_mm_mask_fnmadd_round_sd
7992 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
7993 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7994 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7995 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7996 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
7997 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7998 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7999 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
8000 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8001 return _mm_mask_fnmadd_round_sd(__W
, __U
, __A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
8004 __m128d
test_mm_maskz_fnmadd_sd(__mmask8 __U
, __m128d __A
, __m128d __B
, __m128d __C
){
8005 // CHECK-LABEL: @test_mm_maskz_fnmadd_sd
8006 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8007 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
8008 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8009 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
8010 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
8011 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8012 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8013 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
8014 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8015 return _mm_maskz_fnmadd_sd(__U
, __A
, __B
, __C
);
8018 __m128d
test_mm_maskz_fnmadd_round_sd(__mmask8 __U
, __m128d __A
, __m128d __B
, __m128d __C
){
8019 // CHECK-LABEL: @test_mm_maskz_fnmadd_round_sd
8020 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8021 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
8022 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8023 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
8024 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
8025 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8026 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8027 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
8028 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8029 return _mm_maskz_fnmadd_round_sd(__U
, __A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
8032 __m128d
test_mm_mask3_fnmadd_sd(__m128d __W
, __m128d __X
, __m128d __Y
, __mmask8 __U
){
8033 // CHECK-LABEL: @test_mm_mask3_fnmadd_sd
8034 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8035 // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
8036 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8037 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[ORIGC:%.+]], 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 [[C]]
8042 // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
8043 return _mm_mask3_fnmadd_sd(__W
, __X
, __Y
, __U
);
8046 __m128d
test_mm_mask3_fnmadd_round_sd(__m128d __W
, __m128d __X
, __m128d __Y
, __mmask8 __U
){
8047 // CHECK-LABEL: @test_mm_mask3_fnmadd_round_sd
8048 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8049 // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
8050 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8051 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[ORIGC:%.+]], i64 0
8052 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
8053 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8054 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8055 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C]]
8056 // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
8057 return _mm_mask3_fnmadd_round_sd(__W
, __X
, __Y
, __U
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
8060 __m128d
test_mm_mask_fnmsub_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
){
8061 // CHECK-LABEL: @test_mm_mask_fnmsub_sd
8062 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8063 // CHECK: [[NEG2:%.+]] = fneg <2 x double> %{{.*}}
8064 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.]], i64 0
8065 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8066 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8067 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
8068 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8069 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8070 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
8071 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8072 return _mm_mask_fnmsub_sd(__W
, __U
, __A
, __B
);
8075 __m128d
test_mm_fnmsub_round_sd(__m128d __A
, __m128d __B
, __m128d __C
){
8076 // CHECK-LABEL: @test_mm_fnmsub_round_sd
8077 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8078 // CHECK: [[NEG2:%.+]] = fneg <2 x double> %{{.*}}
8079 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.]], i64 0
8080 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8081 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8082 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
8083 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[FMA]], i64 0
8084 return _mm_fnmsub_round_sd(__A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
8087 __m128d
test_mm_mask_fnmsub_round_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
){
8088 // CHECK-LABEL: @test_mm_mask_fnmsub_round_sd
8089 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8090 // CHECK: [[NEG2:%.+]] = fneg <2 x double> %{{.*}}
8091 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.]], i64 0
8092 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8093 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8094 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
8095 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8096 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8097 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
8098 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8099 return _mm_mask_fnmsub_round_sd(__W
, __U
, __A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
8102 __m128d
test_mm_maskz_fnmsub_sd(__mmask8 __U
, __m128d __A
, __m128d __B
, __m128d __C
){
8103 // CHECK-LABEL: @test_mm_maskz_fnmsub_sd
8104 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8105 // CHECK: [[NEG2:%.+]] = fneg <2 x double> %{{.*}}
8106 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.]], i64 0
8107 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8108 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8109 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
8110 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8111 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8112 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
8113 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8114 return _mm_maskz_fnmsub_sd(__U
, __A
, __B
, __C
);
8117 __m128d
test_mm_maskz_fnmsub_round_sd(__mmask8 __U
, __m128d __A
, __m128d __B
, __m128d __C
){
8118 // CHECK-LABEL: @test_mm_maskz_fnmsub_round_sd
8119 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8120 // CHECK: [[NEG2:%.+]] = fneg <2 x double> %{{.*}}
8121 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.]], i64 0
8122 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8123 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8124 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
8125 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8126 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8127 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
8128 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8129 return _mm_maskz_fnmsub_round_sd(__U
, __A
, __B
, __C
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
8132 __m128d
test_mm_mask3_fnmsub_sd(__m128d __W
, __m128d __X
, __m128d __Y
, __mmask8 __U
){
8133 // CHECK-LABEL: @test_mm_mask3_fnmsub_sd
8134 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8135 // CHECK: [[NEG2:%.+]] = fneg <2 x double> [[ORIGC:%.+]]
8136 // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
8137 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8138 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8139 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
8140 // CHECK-NEXT: [[C2:%.+]] = extractelement <2 x double> [[ORIGC]], i64 0
8141 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8142 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8143 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C2]]
8144 // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
8145 return _mm_mask3_fnmsub_sd(__W
, __X
, __Y
, __U
);
8148 __m128d
test_mm_mask3_fnmsub_round_sd(__m128d __W
, __m128d __X
, __m128d __Y
, __mmask8 __U
){
8149 // CHECK-LABEL: @test_mm_mask3_fnmsub_round_sd
8150 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8151 // CHECK: [[NEG2:%.+]] = fneg <2 x double> [[ORIGC:%.+]]
8152 // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
8153 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8154 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8155 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
8156 // CHECK-NEXT: [[C2:%.+]] = extractelement <2 x double> [[ORIGC]], i64 0
8157 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8158 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8159 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C2]]
8160 // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
8161 return _mm_mask3_fnmsub_round_sd(__W
, __X
, __Y
, __U
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
8164 __m512d
test_mm512_permutex_pd(__m512d __X
) {
8165 // CHECK-LABEL: @test_mm512_permutex_pd
8166 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> poison, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
8167 return _mm512_permutex_pd(__X
, 0);
8170 __m512d
test_mm512_mask_permutex_pd(__m512d __W
, __mmask8 __U
, __m512d __X
) {
8171 // CHECK-LABEL: @test_mm512_mask_permutex_pd
8172 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> poison, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
8173 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8174 return _mm512_mask_permutex_pd(__W
, __U
, __X
, 0);
8177 __m512d
test_mm512_maskz_permutex_pd(__mmask8 __U
, __m512d __X
) {
8178 // CHECK-LABEL: @test_mm512_maskz_permutex_pd
8179 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> poison, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
8180 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8181 return _mm512_maskz_permutex_pd(__U
, __X
, 0);
8184 __m512i
test_mm512_permutex_epi64(__m512i __X
) {
8185 // CHECK-LABEL: @test_mm512_permutex_epi64
8186 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> poison, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
8187 return _mm512_permutex_epi64(__X
, 0);
8190 __m512i
test_mm512_mask_permutex_epi64(__m512i __W
, __mmask8 __M
, __m512i __X
) {
8191 // CHECK-LABEL: @test_mm512_mask_permutex_epi64
8192 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> poison, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
8193 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
8194 return _mm512_mask_permutex_epi64(__W
, __M
, __X
, 0);
8197 __m512i
test_mm512_maskz_permutex_epi64(__mmask8 __M
, __m512i __X
) {
8198 // CHECK-LABEL: @test_mm512_maskz_permutex_epi64
8199 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> poison, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
8200 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
8201 return _mm512_maskz_permutex_epi64(__M
, __X
, 0);
8204 __m512d
test_mm512_permutexvar_pd(__m512i __X
, __m512d __Y
) {
8205 // CHECK-LABEL: @test_mm512_permutexvar_pd
8206 // CHECK: @llvm.x86.avx512.permvar.df.512
8207 return _mm512_permutexvar_pd(__X
, __Y
);
8210 __m512d
test_mm512_mask_permutexvar_pd(__m512d __W
, __mmask8 __U
, __m512i __X
, __m512d __Y
) {
8211 // CHECK-LABEL: @test_mm512_mask_permutexvar_pd
8212 // CHECK: @llvm.x86.avx512.permvar.df.512
8213 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8214 return _mm512_mask_permutexvar_pd(__W
, __U
, __X
, __Y
);
8217 __m512d
test_mm512_maskz_permutexvar_pd(__mmask8 __U
, __m512i __X
, __m512d __Y
) {
8218 // CHECK-LABEL: @test_mm512_maskz_permutexvar_pd
8219 // CHECK: @llvm.x86.avx512.permvar.df.512
8220 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8221 return _mm512_maskz_permutexvar_pd(__U
, __X
, __Y
);
8224 __m512i
test_mm512_maskz_permutexvar_epi64(__mmask8 __M
, __m512i __X
, __m512i __Y
) {
8225 // CHECK-LABEL: @test_mm512_maskz_permutexvar_epi64
8226 // CHECK: @llvm.x86.avx512.permvar.di.512
8227 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
8228 return _mm512_maskz_permutexvar_epi64(__M
, __X
, __Y
);
8231 __m512i
test_mm512_permutexvar_epi64(__m512i __X
, __m512i __Y
) {
8232 // CHECK-LABEL: @test_mm512_permutexvar_epi64
8233 // CHECK: @llvm.x86.avx512.permvar.di.512
8234 return _mm512_permutexvar_epi64(__X
, __Y
);
8237 __m512i
test_mm512_mask_permutexvar_epi64(__m512i __W
, __mmask8 __M
, __m512i __X
, __m512i __Y
) {
8238 // CHECK-LABEL: @test_mm512_mask_permutexvar_epi64
8239 // CHECK: @llvm.x86.avx512.permvar.di.512
8240 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
8241 return _mm512_mask_permutexvar_epi64(__W
, __M
, __X
, __Y
);
8244 __m512
test_mm512_permutexvar_ps(__m512i __X
, __m512 __Y
) {
8245 // CHECK-LABEL: @test_mm512_permutexvar_ps
8246 // CHECK: @llvm.x86.avx512.permvar.sf.512
8247 return _mm512_permutexvar_ps(__X
, __Y
);
8250 __m512
test_mm512_mask_permutexvar_ps(__m512 __W
, __mmask16 __U
, __m512i __X
, __m512 __Y
) {
8251 // CHECK-LABEL: @test_mm512_mask_permutexvar_ps
8252 // CHECK: @llvm.x86.avx512.permvar.sf.512
8253 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8254 return _mm512_mask_permutexvar_ps(__W
, __U
, __X
, __Y
);
8257 __m512
test_mm512_maskz_permutexvar_ps(__mmask16 __U
, __m512i __X
, __m512 __Y
) {
8258 // CHECK-LABEL: @test_mm512_maskz_permutexvar_ps
8259 // CHECK: @llvm.x86.avx512.permvar.sf.512
8260 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8261 return _mm512_maskz_permutexvar_ps(__U
, __X
, __Y
);
8264 __m512i
test_mm512_maskz_permutexvar_epi32(__mmask16 __M
, __m512i __X
, __m512i __Y
) {
8265 // CHECK-LABEL: @test_mm512_maskz_permutexvar_epi32
8266 // CHECK: @llvm.x86.avx512.permvar.si.512
8267 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
8268 return _mm512_maskz_permutexvar_epi32(__M
, __X
, __Y
);
8271 __m512i
test_mm512_permutexvar_epi32(__m512i __X
, __m512i __Y
) {
8272 // CHECK-LABEL: @test_mm512_permutexvar_epi32
8273 // CHECK: @llvm.x86.avx512.permvar.si.512
8274 return _mm512_permutexvar_epi32(__X
, __Y
);
8277 __m512i
test_mm512_mask_permutexvar_epi32(__m512i __W
, __mmask16 __M
, __m512i __X
, __m512i __Y
) {
8278 // CHECK-LABEL: @test_mm512_mask_permutexvar_epi32
8279 // CHECK: @llvm.x86.avx512.permvar.si.512
8280 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
8281 return _mm512_mask_permutexvar_epi32(__W
, __M
, __X
, __Y
);
8284 __mmask16
test_mm512_kand(__m512i __A
, __m512i __B
, __m512i __C
, __m512i __D
, __m512i __E
, __m512i __F
) {
8285 // CHECK-LABEL: @test_mm512_kand
8286 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8287 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8288 // CHECK: [[RES:%.*]] = and <16 x i1> [[LHS]], [[RHS]]
8289 // CHECK: bitcast <16 x i1> [[RES]] to i16
8290 return _mm512_mask_cmpneq_epu32_mask(_mm512_kand(_mm512_cmpneq_epu32_mask(__A
, __B
),
8291 _mm512_cmpneq_epu32_mask(__C
, __D
)),
8295 __mmask16
test_mm512_kandn(__m512i __A
, __m512i __B
, __m512i __C
, __m512i __D
, __m512i __E
, __m512i __F
) {
8296 // CHECK-LABEL: @test_mm512_kandn
8297 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8298 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8299 // 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>
8300 // CHECK: [[RES:%.*]] = and <16 x i1> [[NOT]], [[RHS]]
8301 // CHECK: bitcast <16 x i1> [[RES]] to i16
8302 return _mm512_mask_cmpneq_epu32_mask(_mm512_kandn(_mm512_cmpneq_epu32_mask(__A
, __B
),
8303 _mm512_cmpneq_epu32_mask(__C
, __D
)),
8307 __mmask16
test_mm512_kor(__m512i __A
, __m512i __B
, __m512i __C
, __m512i __D
, __m512i __E
, __m512i __F
) {
8308 // CHECK-LABEL: @test_mm512_kor
8309 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8310 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8311 // CHECK: [[RES:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8312 // CHECK: bitcast <16 x i1> [[RES]] to i16
8313 return _mm512_mask_cmpneq_epu32_mask(_mm512_kor(_mm512_cmpneq_epu32_mask(__A
, __B
),
8314 _mm512_cmpneq_epu32_mask(__C
, __D
)),
8318 int test_mm512_kortestc(__m512i __A
, __m512i __B
, __m512i __C
, __m512i __D
) {
8319 // CHECK-LABEL: @test_mm512_kortestc
8320 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8321 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8322 // CHECK: [[OR:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8323 // CHECK: [[CAST:%.*]] = bitcast <16 x i1> [[OR]] to i16
8324 // CHECK: [[CMP:%.*]] = icmp eq i16 [[CAST]], -1
8325 // CHECK: zext i1 [[CMP]] to i32
8326 return _mm512_kortestc(_mm512_cmpneq_epu32_mask(__A
, __B
),
8327 _mm512_cmpneq_epu32_mask(__C
, __D
));
8330 int test_mm512_kortestz(__m512i __A
, __m512i __B
, __m512i __C
, __m512i __D
) {
8331 // CHECK-LABEL: @test_mm512_kortestz
8332 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8333 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8334 // CHECK: [[OR:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8335 // CHECK: [[CAST:%.*]] = bitcast <16 x i1> [[OR]] to i16
8336 // CHECK: [[CMP:%.*]] = icmp eq i16 [[CAST]], 0
8337 // CHECK: zext i1 [[CMP]] to i32
8338 return _mm512_kortestz(_mm512_cmpneq_epu32_mask(__A
, __B
),
8339 _mm512_cmpneq_epu32_mask(__C
, __D
));
8342 unsigned char test_kortestz_mask16_u8(__m512i __A
, __m512i __B
, __m512i __C
, __m512i __D
) {
8343 // CHECK-LABEL: @test_kortestz_mask16_u8
8344 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8345 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8346 // CHECK: [[OR:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8347 // CHECK: [[CAST:%.*]] = bitcast <16 x i1> [[OR]] to i16
8348 // CHECK: [[CMP:%.*]] = icmp eq i16 [[CAST]], 0
8349 // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
8350 // CHECK: trunc i32 [[ZEXT]] to i8
8351 return _kortestz_mask16_u8(_mm512_cmpneq_epu32_mask(__A
, __B
),
8352 _mm512_cmpneq_epu32_mask(__C
, __D
));
8355 unsigned char test_kortestc_mask16_u8(__m512i __A
, __m512i __B
, __m512i __C
, __m512i __D
) {
8356 // CHECK-LABEL: @test_kortestc_mask16_u8
8357 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8358 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8359 // CHECK: [[OR:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8360 // CHECK: [[CAST:%.*]] = bitcast <16 x i1> [[OR]] to i16
8361 // CHECK: [[CMP:%.*]] = icmp eq i16 [[CAST]], -1
8362 // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
8363 // CHECK: trunc i32 [[ZEXT]] to i8
8364 return _kortestc_mask16_u8(_mm512_cmpneq_epu32_mask(__A
, __B
),
8365 _mm512_cmpneq_epu32_mask(__C
, __D
));
8368 unsigned char test_kortest_mask16_u8(__m512i __A
, __m512i __B
, __m512i __C
, __m512i __D
, unsigned char *CF
) {
8369 // CHECK-LABEL: @test_kortest_mask16_u8
8370 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8371 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8372 // CHECK: [[OR:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8373 // CHECK: [[CAST:%.*]] = bitcast <16 x i1> [[OR]] to i16
8374 // CHECK: [[CMP:%.*]] = icmp eq i16 [[CAST]], -1
8375 // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
8376 // CHECK: trunc i32 [[ZEXT]] to i8
8377 // CHECK: [[LHS2:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8378 // CHECK: [[RHS2:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8379 // CHECK: [[OR2:%.*]] = or <16 x i1> [[LHS2]], [[RHS2]]
8380 // CHECK: [[CAST2:%.*]] = bitcast <16 x i1> [[OR2]] to i16
8381 // CHECK: [[CMP2:%.*]] = icmp eq i16 [[CAST2]], 0
8382 // CHECK: [[ZEXT2:%.*]] = zext i1 [[CMP2]] to i32
8383 // CHECK: trunc i32 [[ZEXT2]] to i8
8384 return _kortest_mask16_u8(_mm512_cmpneq_epu32_mask(__A
, __B
),
8385 _mm512_cmpneq_epu32_mask(__C
, __D
), CF
);
8388 __mmask16
test_mm512_kunpackb(__m512i __A
, __m512i __B
, __m512i __C
, __m512i __D
, __m512i __E
, __m512i __F
) {
8389 // CHECK-LABEL: @test_mm512_kunpackb
8390 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8391 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8392 // 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>
8393 // 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>
8394 // 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>
8395 // CHECK: bitcast <16 x i1> [[CONCAT]] to i16
8396 return _mm512_mask_cmpneq_epu32_mask(_mm512_kunpackb(_mm512_cmpneq_epu32_mask(__A
, __B
),
8397 _mm512_cmpneq_epu32_mask(__C
, __D
)),
8401 __mmask16
test_mm512_kxnor(__m512i __A
, __m512i __B
, __m512i __C
, __m512i __D
, __m512i __E
, __m512i __F
) {
8402 // CHECK-LABEL: @test_mm512_kxnor
8403 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8404 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8405 // 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>
8406 // CHECK: [[RES:%.*]] = xor <16 x i1> [[NOT]], [[RHS]]
8407 // CHECK: bitcast <16 x i1> [[RES]] to i16
8408 return _mm512_mask_cmpneq_epu32_mask(_mm512_kxnor(_mm512_cmpneq_epu32_mask(__A
, __B
),
8409 _mm512_cmpneq_epu32_mask(__C
, __D
)),
8413 __mmask16
test_mm512_kxor(__m512i __A
, __m512i __B
, __m512i __C
, __m512i __D
, __m512i __E
, __m512i __F
) {
8414 // CHECK-LABEL: @test_mm512_kxor
8415 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8416 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8417 // CHECK: [[RES:%.*]] = xor <16 x i1> [[LHS]], [[RHS]]
8418 // CHECK: bitcast <16 x i1> [[RES]] to i16
8419 return _mm512_mask_cmpneq_epu32_mask(_mm512_kxor(_mm512_cmpneq_epu32_mask(__A
, __B
),
8420 _mm512_cmpneq_epu32_mask(__C
, __D
)),
8424 __mmask16
test_knot_mask16(__mmask16 a
) {
8425 // CHECK-LABEL: @test_knot_mask16
8426 // CHECK: [[IN:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8427 // 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>
8428 // CHECK: bitcast <16 x i1> [[NOT]] to i16
8429 return _knot_mask16(a
);
8432 __mmask16
test_kand_mask16(__m512i __A
, __m512i __B
, __m512i __C
, __m512i __D
, __m512i __E
, __m512i __F
) {
8433 // CHECK-LABEL: @test_kand_mask16
8434 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8435 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8436 // CHECK: [[RES:%.*]] = and <16 x i1> [[LHS]], [[RHS]]
8437 // CHECK: bitcast <16 x i1> [[RES]] to i16
8438 return _mm512_mask_cmpneq_epu32_mask(_kand_mask16(_mm512_cmpneq_epu32_mask(__A
, __B
),
8439 _mm512_cmpneq_epu32_mask(__C
, __D
)),
8443 __mmask16
test_kandn_mask16(__m512i __A
, __m512i __B
, __m512i __C
, __m512i __D
, __m512i __E
, __m512i __F
) {
8444 // CHECK-LABEL: @test_kandn_mask16
8445 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8446 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8447 // 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>
8448 // CHECK: [[RES:%.*]] = and <16 x i1> [[NOT]], [[RHS]]
8449 // CHECK: bitcast <16 x i1> [[RES]] to i16
8450 return _mm512_mask_cmpneq_epu32_mask(_kandn_mask16(_mm512_cmpneq_epu32_mask(__A
, __B
),
8451 _mm512_cmpneq_epu32_mask(__C
, __D
)),
8455 __mmask16
test_kor_mask16(__m512i __A
, __m512i __B
, __m512i __C
, __m512i __D
, __m512i __E
, __m512i __F
) {
8456 // CHECK-LABEL: @test_kor_mask16
8457 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8458 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8459 // CHECK: [[RES:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8460 // CHECK: bitcast <16 x i1> [[RES]] to i16
8461 return _mm512_mask_cmpneq_epu32_mask(_kor_mask16(_mm512_cmpneq_epu32_mask(__A
, __B
),
8462 _mm512_cmpneq_epu32_mask(__C
, __D
)),
8466 __mmask16
test_kxnor_mask16(__m512i __A
, __m512i __B
, __m512i __C
, __m512i __D
, __m512i __E
, __m512i __F
) {
8467 // CHECK-LABEL: @test_kxnor_mask16
8468 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8469 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8470 // 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>
8471 // CHECK: [[RES:%.*]] = xor <16 x i1> [[NOT]], [[RHS]]
8472 // CHECK: bitcast <16 x i1> [[RES]] to i16
8473 return _mm512_mask_cmpneq_epu32_mask(_kxnor_mask16(_mm512_cmpneq_epu32_mask(__A
, __B
),
8474 _mm512_cmpneq_epu32_mask(__C
, __D
)),
8478 __mmask16
test_kxor_mask16(__m512i __A
, __m512i __B
, __m512i __C
, __m512i __D
, __m512i __E
, __m512i __F
) {
8479 // CHECK-LABEL: @test_kxor_mask16
8480 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8481 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8482 // CHECK: [[RES:%.*]] = xor <16 x i1> [[LHS]], [[RHS]]
8483 // CHECK: bitcast <16 x i1> [[RES]] to i16
8484 return _mm512_mask_cmpneq_epu32_mask(_kxor_mask16(_mm512_cmpneq_epu32_mask(__A
, __B
),
8485 _mm512_cmpneq_epu32_mask(__C
, __D
)),
8489 __mmask16
test_kshiftli_mask16(__m512i A
, __m512i B
, __m512i C
, __m512i D
) {
8490 // CHECK-LABEL: @test_kshiftli_mask16
8491 // CHECK: [[VAL:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8492 // 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>
8493 // CHECK: bitcast <16 x i1> [[RES]] to i16
8494 return _mm512_mask_cmpneq_epu32_mask(_kshiftli_mask16(_mm512_cmpneq_epu32_mask(A
, B
), 1), C
, D
);
8497 __mmask16
test_kshiftri_mask16(__m512i A
, __m512i B
, __m512i C
, __m512i D
) {
8498 // CHECK-LABEL: @test_kshiftri_mask16
8499 // CHECK: [[VAL:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8500 // 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>
8501 // CHECK: bitcast <16 x i1> [[RES]] to i16
8502 return _mm512_mask_cmpneq_epu32_mask(_kshiftri_mask16(_mm512_cmpneq_epu32_mask(A
, B
), 1), C
, D
);
8505 unsigned int test_cvtmask16_u32(__m512i A
, __m512i B
) {
8506 // CHECK-LABEL: @test_cvtmask16_u32
8507 // CHECK: bitcast <16 x i1> %{{.*}} to i16
8508 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
8509 // CHECK: zext i16 %{{.*}} to i32
8510 return _cvtmask16_u32(_mm512_cmpneq_epu32_mask(A
, B
));
8513 __mmask16
test_cvtu32_mask16(__m512i A
, __m512i B
, unsigned int C
) {
8514 // CHECK-LABEL: @test_cvtu32_mask16
8515 // CHECK: trunc i32 %{{.*}} to i16
8516 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
8517 return _mm512_mask_cmpneq_epu32_mask(_cvtu32_mask16(C
), A
, B
);
8520 __mmask16
test_load_mask16(__mmask16
*A
, __m512i B
, __m512i C
) {
8521 // CHECK-LABEL: @test_load_mask16
8522 // CHECK: [[LOAD:%.*]] = load i16, ptr %{{.*}}{{$}}
8523 // CHECK: bitcast i16 [[LOAD]] to <16 x i1>
8524 return _mm512_mask_cmpneq_epu32_mask(_load_mask16(A
), B
, C
);
8527 void test_store_mask16(__mmask16
*A
, __m512i B
, __m512i C
) {
8528 // CHECK-LABEL: @test_store_mask16
8529 // CHECK: bitcast <16 x i1> %{{.*}} to i16
8530 // CHECK: store i16 %{{.*}}, ptr %{{.*}}
8531 _store_mask16(A
, _mm512_cmpneq_epu32_mask(B
, C
));
8534 void test_mm512_stream_si512(__m512i
* __P
, __m512i __A
) {
8535 // CHECK-LABEL: @test_mm512_stream_si512
8536 // CHECK: store <8 x i64> %{{.*}}, ptr %{{.*}}, align 64, !nontemporal [[NONTEMPORAL:![0-9]+]]
8537 _mm512_stream_si512(__P
, __A
);
8540 void test_mm512_stream_si512_2(void * __P
, __m512i __A
) {
8541 // CHECK-LABEL: @test_mm512_stream_si512
8542 // CHECK: store <8 x i64> %{{.*}}, ptr %{{.*}}, align 64, !nontemporal [[NONTEMPORAL]]
8543 _mm512_stream_si512(__P
, __A
);
8546 __m512i
test_mm512_stream_load_si512(void *__P
) {
8547 // CHECK-LABEL: @test_mm512_stream_load_si512
8548 // CHECK: load <8 x i64>, ptr %{{.*}}, align 64, !nontemporal [[NONTEMPORAL]]{{$}}
8549 return _mm512_stream_load_si512(__P
);
8552 __m512i
test_mm512_stream_load_si512_const(void const *__P
) {
8553 // CHECK-LABEL: @test_mm512_stream_load_si512_const
8554 // CHECK: load <8 x i64>, ptr %{{.*}}, align 64, !nontemporal [[NONTEMPORAL]]{{$}}
8555 return _mm512_stream_load_si512(__P
);
8558 void test_mm512_stream_pd(double *__P
, __m512d __A
) {
8559 // CHECK-LABEL: @test_mm512_stream_pd
8560 // CHECK: store <8 x double> %{{.*}}, ptr %{{.*}}, align 64, !nontemporal [[NONTEMPORAL]]
8561 return _mm512_stream_pd(__P
, __A
);
8564 void test_mm512_stream_pd_2(void *__P
, __m512d __A
) {
8565 // CHECK-LABEL: @test_mm512_stream_pd
8566 // CHECK: store <8 x double> %{{.*}}, ptr %{{.*}}, align 64, !nontemporal [[NONTEMPORAL]]
8567 return _mm512_stream_pd(__P
, __A
);
8570 void test_mm512_stream_ps(float *__P
, __m512 __A
) {
8571 // CHECK-LABEL: @test_mm512_stream_ps
8572 // CHECK: store <16 x float> %{{.*}}, ptr %{{.*}}, align 64, !nontemporal [[NONTEMPORAL]]
8573 _mm512_stream_ps(__P
, __A
);
8576 void test_mm512_stream_ps_2(void *__P
, __m512 __A
) {
8577 // CHECK-LABEL: @test_mm512_stream_ps
8578 // CHECK: store <16 x float> %{{.*}}, ptr %{{.*}}, align 64, !nontemporal [[NONTEMPORAL]]
8579 _mm512_stream_ps(__P
, __A
);
8581 __m512d
test_mm512_mask_compress_pd(__m512d __W
, __mmask8 __U
, __m512d __A
) {
8582 // CHECK-LABEL: @test_mm512_mask_compress_pd
8583 // CHECK: @llvm.x86.avx512.mask.compress
8584 return _mm512_mask_compress_pd(__W
, __U
, __A
);
8587 __m512d
test_mm512_maskz_compress_pd(__mmask8 __U
, __m512d __A
) {
8588 // CHECK-LABEL: @test_mm512_maskz_compress_pd
8589 // CHECK: @llvm.x86.avx512.mask.compress
8590 return _mm512_maskz_compress_pd(__U
, __A
);
8593 __m512i
test_mm512_mask_compress_epi64(__m512i __W
, __mmask8 __U
, __m512i __A
) {
8594 // CHECK-LABEL: @test_mm512_mask_compress_epi64
8595 // CHECK: @llvm.x86.avx512.mask.compress
8596 return _mm512_mask_compress_epi64(__W
, __U
, __A
);
8599 __m512i
test_mm512_maskz_compress_epi64(__mmask8 __U
, __m512i __A
) {
8600 // CHECK-LABEL: @test_mm512_maskz_compress_epi64
8601 // CHECK: @llvm.x86.avx512.mask.compress
8602 return _mm512_maskz_compress_epi64(__U
, __A
);
8605 __m512
test_mm512_mask_compress_ps(__m512 __W
, __mmask16 __U
, __m512 __A
) {
8606 // CHECK-LABEL: @test_mm512_mask_compress_ps
8607 // CHECK: @llvm.x86.avx512.mask.compress
8608 return _mm512_mask_compress_ps(__W
, __U
, __A
);
8611 __m512
test_mm512_maskz_compress_ps(__mmask16 __U
, __m512 __A
) {
8612 // CHECK-LABEL: @test_mm512_maskz_compress_ps
8613 // CHECK: @llvm.x86.avx512.mask.compress
8614 return _mm512_maskz_compress_ps(__U
, __A
);
8617 __m512i
test_mm512_mask_compress_epi32(__m512i __W
, __mmask16 __U
, __m512i __A
) {
8618 // CHECK-LABEL: @test_mm512_mask_compress_epi32
8619 // CHECK: @llvm.x86.avx512.mask.compress
8620 return _mm512_mask_compress_epi32(__W
, __U
, __A
);
8623 __m512i
test_mm512_maskz_compress_epi32(__mmask16 __U
, __m512i __A
) {
8624 // CHECK-LABEL: @test_mm512_maskz_compress_epi32
8625 // CHECK: @llvm.x86.avx512.mask.compress
8626 return _mm512_maskz_compress_epi32(__U
, __A
);
8629 __mmask8
test_mm_cmp_round_ss_mask(__m128 __X
, __m128 __Y
) {
8630 // CHECK-LABEL: @test_mm_cmp_round_ss_mask
8631 // CHECK: @llvm.x86.avx512.mask.cmp
8632 return _mm_cmp_round_ss_mask(__X
, __Y
, _CMP_NLT_US
, _MM_FROUND_NO_EXC
);
8635 __mmask8
test_mm_mask_cmp_round_ss_mask(__mmask8 __M
, __m128 __X
, __m128 __Y
) {
8636 // CHECK-LABEL: @test_mm_mask_cmp_round_ss_mask
8637 // CHECK: @llvm.x86.avx512.mask.cmp
8638 return _mm_mask_cmp_round_ss_mask(__M
, __X
, __Y
, _CMP_NLT_US
, _MM_FROUND_NO_EXC
);
8641 __mmask8
test_mm_cmp_ss_mask(__m128 __X
, __m128 __Y
) {
8642 // CHECK-LABEL: @test_mm_cmp_ss_mask
8643 // CHECK: @llvm.x86.avx512.mask.cmp
8644 return _mm_cmp_ss_mask(__X
, __Y
, _CMP_NLT_US
);
8647 __mmask8
test_mm_mask_cmp_ss_mask(__mmask8 __M
, __m128 __X
, __m128 __Y
) {
8648 // CHECK-LABEL: @test_mm_mask_cmp_ss_mask
8649 // CHECK: @llvm.x86.avx512.mask.cmp
8650 return _mm_mask_cmp_ss_mask(__M
, __X
, __Y
, _CMP_NLT_US
);
8653 __mmask8
test_mm_cmp_round_sd_mask(__m128d __X
, __m128d __Y
) {
8654 // CHECK-LABEL: @test_mm_cmp_round_sd_mask
8655 // CHECK: @llvm.x86.avx512.mask.cmp
8656 return _mm_cmp_round_sd_mask(__X
, __Y
, _CMP_NLT_US
, _MM_FROUND_NO_EXC
);
8659 __mmask8
test_mm_mask_cmp_round_sd_mask(__mmask8 __M
, __m128d __X
, __m128d __Y
) {
8660 // CHECK-LABEL: @test_mm_mask_cmp_round_sd_mask
8661 // CHECK: @llvm.x86.avx512.mask.cmp
8662 return _mm_mask_cmp_round_sd_mask(__M
, __X
, __Y
, _CMP_NLT_US
, _MM_FROUND_NO_EXC
);
8665 __mmask8
test_mm_cmp_sd_mask(__m128d __X
, __m128d __Y
) {
8666 // CHECK-LABEL: @test_mm_cmp_sd_mask
8667 // CHECK: @llvm.x86.avx512.mask.cmp
8668 return _mm_cmp_sd_mask(__X
, __Y
, _CMP_NLT_US
);
8671 __mmask8
test_mm_mask_cmp_sd_mask(__mmask8 __M
, __m128d __X
, __m128d __Y
) {
8672 // CHECK-LABEL: @test_mm_mask_cmp_sd_mask
8673 // CHECK: @llvm.x86.avx512.mask.cmp
8674 return _mm_mask_cmp_sd_mask(__M
, __X
, __Y
, _CMP_NLT_US
);
8677 __m512
test_mm512_movehdup_ps(__m512 __A
) {
8678 // CHECK-LABEL: @test_mm512_movehdup_ps
8679 // 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>
8680 return _mm512_movehdup_ps(__A
);
8683 __m512
test_mm512_mask_movehdup_ps(__m512 __W
, __mmask16 __U
, __m512 __A
) {
8684 // CHECK-LABEL: @test_mm512_mask_movehdup_ps
8685 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7, i32 9, i32 9, i32 11, i32 11, i32 13, i32 13, i32 15, i32 15>
8686 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8687 return _mm512_mask_movehdup_ps(__W
, __U
, __A
);
8690 __m512
test_mm512_maskz_movehdup_ps(__mmask16 __U
, __m512 __A
) {
8691 // CHECK-LABEL: @test_mm512_maskz_movehdup_ps
8692 // 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>
8693 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8694 return _mm512_maskz_movehdup_ps(__U
, __A
);
8697 __m512
test_mm512_moveldup_ps(__m512 __A
) {
8698 // CHECK-LABEL: @test_mm512_moveldup_ps
8699 // 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>
8700 return _mm512_moveldup_ps(__A
);
8703 __m512
test_mm512_mask_moveldup_ps(__m512 __W
, __mmask16 __U
, __m512 __A
) {
8704 // CHECK-LABEL: @test_mm512_mask_moveldup_ps
8705 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6, i32 8, i32 8, i32 10, i32 10, i32 12, i32 12, i32 14, i32 14>
8706 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8707 return _mm512_mask_moveldup_ps(__W
, __U
, __A
);
8710 __m512
test_mm512_maskz_moveldup_ps(__mmask16 __U
, __m512 __A
) {
8711 // CHECK-LABEL: @test_mm512_maskz_moveldup_ps
8712 // 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>
8713 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8714 return _mm512_maskz_moveldup_ps(__U
, __A
);
8717 __m512i
test_mm512_shuffle_epi32(__m512i __A
) {
8718 // CHECK-LABEL: @test_mm512_shuffle_epi32
8719 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> poison, <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>
8720 return _mm512_shuffle_epi32(__A
, 1);
8723 __m512i
test_mm512_mask_shuffle_epi32(__m512i __W
, __mmask16 __U
, __m512i __A
) {
8724 // CHECK-LABEL: @test_mm512_mask_shuffle_epi32
8725 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> poison, <16 x i32> <i32 1, i32 0, i32 0, i32 0, i32 5, i32 4, i32 4, i32 4, i32 9, i32 8, i32 8, i32 8, i32 13, i32 12, i32 12, i32 12>
8726 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
8727 return _mm512_mask_shuffle_epi32(__W
, __U
, __A
, 1);
8730 __m512i
test_mm512_maskz_shuffle_epi32(__mmask16 __U
, __m512i __A
) {
8731 // CHECK-LABEL: @test_mm512_maskz_shuffle_epi32
8732 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> poison, <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>
8733 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
8734 return _mm512_maskz_shuffle_epi32(__U
, __A
, 1);
8737 __m512d
test_mm512_mask_expand_pd(__m512d __W
, __mmask8 __U
, __m512d __A
) {
8738 // CHECK-LABEL: @test_mm512_mask_expand_pd
8739 // CHECK: @llvm.x86.avx512.mask.expand
8740 return _mm512_mask_expand_pd(__W
, __U
, __A
);
8743 __m512d
test_mm512_maskz_expand_pd(__mmask8 __U
, __m512d __A
) {
8744 // CHECK-LABEL: @test_mm512_maskz_expand_pd
8745 // CHECK: @llvm.x86.avx512.mask.expand
8746 return _mm512_maskz_expand_pd(__U
, __A
);
8749 __m512i
test_mm512_mask_expand_epi64(__m512i __W
, __mmask8 __U
, __m512i __A
) {
8750 // CHECK-LABEL: @test_mm512_mask_expand_epi64
8751 // CHECK: @llvm.x86.avx512.mask.expand
8752 return _mm512_mask_expand_epi64(__W
, __U
, __A
);
8755 __m512i
test_mm512_maskz_expand_epi64(__mmask8 __U
, __m512i __A
) {
8756 // CHECK-LABEL: @test_mm512_maskz_expand_epi64
8757 // CHECK: @llvm.x86.avx512.mask.expand
8758 return _mm512_maskz_expand_epi64(__U
, __A
);
8760 __m512i
test_mm512_mask_expandloadu_epi64(__m512i __W
, __mmask8 __U
, void const *__P
) {
8761 // CHECK-LABEL: @test_mm512_mask_expandloadu_epi64
8762 // CHECK: @llvm.masked.expandload.v8i64(ptr %{{.*}}, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
8763 return _mm512_mask_expandloadu_epi64(__W
, __U
, __P
);
8766 __m512i
test_mm512_maskz_expandloadu_epi64(__mmask8 __U
, void const *__P
) {
8767 // CHECK-LABEL: @test_mm512_maskz_expandloadu_epi64
8768 // CHECK: @llvm.masked.expandload.v8i64(ptr %{{.*}}, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
8769 return _mm512_maskz_expandloadu_epi64(__U
, __P
);
8772 __m512d
test_mm512_mask_expandloadu_pd(__m512d __W
, __mmask8 __U
, void const *__P
) {
8773 // CHECK-LABEL: @test_mm512_mask_expandloadu_pd
8774 // CHECK: @llvm.masked.expandload.v8f64(ptr %{{.*}}, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
8775 return _mm512_mask_expandloadu_pd(__W
, __U
, __P
);
8778 __m512d
test_mm512_maskz_expandloadu_pd(__mmask8 __U
, void const *__P
) {
8779 // CHECK-LABEL: @test_mm512_maskz_expandloadu_pd
8780 // CHECK: @llvm.masked.expandload.v8f64(ptr %{{.*}}, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
8781 return _mm512_maskz_expandloadu_pd(__U
, __P
);
8784 __m512i
test_mm512_mask_expandloadu_epi32(__m512i __W
, __mmask16 __U
, void const *__P
) {
8785 // CHECK-LABEL: @test_mm512_mask_expandloadu_epi32
8786 // CHECK: @llvm.masked.expandload.v16i32(ptr %{{.*}}, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
8787 return _mm512_mask_expandloadu_epi32(__W
, __U
, __P
);
8790 __m512i
test_mm512_maskz_expandloadu_epi32(__mmask16 __U
, void const *__P
) {
8791 // CHECK-LABEL: @test_mm512_maskz_expandloadu_epi32
8792 // CHECK: @llvm.masked.expandload.v16i32(ptr %{{.*}}, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
8793 return _mm512_maskz_expandloadu_epi32(__U
, __P
);
8796 __m512
test_mm512_mask_expandloadu_ps(__m512 __W
, __mmask16 __U
, void const *__P
) {
8797 // CHECK-LABEL: @test_mm512_mask_expandloadu_ps
8798 // CHECK: @llvm.masked.expandload.v16f32(ptr %{{.*}}, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
8799 return _mm512_mask_expandloadu_ps(__W
, __U
, __P
);
8802 __m512
test_mm512_maskz_expandloadu_ps(__mmask16 __U
, void const *__P
) {
8803 // CHECK-LABEL: @test_mm512_maskz_expandloadu_ps
8804 // CHECK: @llvm.masked.expandload.v16f32(ptr %{{.*}}, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
8805 return _mm512_maskz_expandloadu_ps(__U
, __P
);
8808 __m512
test_mm512_mask_expand_ps(__m512 __W
, __mmask16 __U
, __m512 __A
) {
8809 // CHECK-LABEL: @test_mm512_mask_expand_ps
8810 // CHECK: @llvm.x86.avx512.mask.expand
8811 return _mm512_mask_expand_ps(__W
, __U
, __A
);
8814 __m512
test_mm512_maskz_expand_ps(__mmask16 __U
, __m512 __A
) {
8815 // CHECK-LABEL: @test_mm512_maskz_expand_ps
8816 // CHECK: @llvm.x86.avx512.mask.expand
8817 return _mm512_maskz_expand_ps(__U
, __A
);
8820 __m512i
test_mm512_mask_expand_epi32(__m512i __W
, __mmask16 __U
, __m512i __A
) {
8821 // CHECK-LABEL: @test_mm512_mask_expand_epi32
8822 // CHECK: @llvm.x86.avx512.mask.expand
8823 return _mm512_mask_expand_epi32(__W
, __U
, __A
);
8826 __m512i
test_mm512_maskz_expand_epi32(__mmask16 __U
, __m512i __A
) {
8827 // CHECK-LABEL: @test_mm512_maskz_expand_epi32
8828 // CHECK: @llvm.x86.avx512.mask.expand
8829 return _mm512_maskz_expand_epi32(__U
, __A
);
8831 __m512d
test_mm512_cvt_roundps_pd(__m256 __A
) {
8832 // CHECK-LABEL: @test_mm512_cvt_roundps_pd
8833 // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512
8834 return _mm512_cvt_roundps_pd(__A
, _MM_FROUND_NO_EXC
);
8837 __m512d
test_mm512_mask_cvt_roundps_pd(__m512d __W
, __mmask8 __U
, __m256 __A
) {
8838 // CHECK-LABEL: @test_mm512_mask_cvt_roundps_pd
8839 // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512
8840 return _mm512_mask_cvt_roundps_pd(__W
, __U
, __A
, _MM_FROUND_NO_EXC
);
8843 __m512d
test_mm512_maskz_cvt_roundps_pd(__mmask8 __U
, __m256 __A
) {
8844 // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_pd
8845 // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512
8846 return _mm512_maskz_cvt_roundps_pd(__U
, __A
, _MM_FROUND_NO_EXC
);
8849 __m512d
test_mm512_cvtps_pd(__m256 __A
) {
8850 // CHECK-LABEL: @test_mm512_cvtps_pd
8851 // CHECK: fpext <8 x float> %{{.*}} to <8 x double>
8852 return _mm512_cvtps_pd(__A
);
8855 __m512d
test_mm512_cvtpslo_pd(__m512 __A
) {
8856 // CHECK-LABEL: @test_mm512_cvtpslo_pd
8857 // 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>
8858 // CHECK: fpext <8 x float> %{{.*}} to <8 x double>
8859 return _mm512_cvtpslo_pd(__A
);
8862 __m512d
test_mm512_mask_cvtps_pd(__m512d __W
, __mmask8 __U
, __m256 __A
) {
8863 // CHECK-LABEL: @test_mm512_mask_cvtps_pd
8864 // CHECK: fpext <8 x float> %{{.*}} to <8 x double>
8865 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8866 return _mm512_mask_cvtps_pd(__W
, __U
, __A
);
8869 __m512d
test_mm512_mask_cvtpslo_pd(__m512d __W
, __mmask8 __U
, __m512 __A
) {
8870 // CHECK-LABEL: @test_mm512_mask_cvtpslo_pd
8871 // 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>
8872 // CHECK: fpext <8 x float> %{{.*}} to <8 x double>
8873 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8874 return _mm512_mask_cvtpslo_pd(__W
, __U
, __A
);
8877 __m512d
test_mm512_maskz_cvtps_pd(__mmask8 __U
, __m256 __A
) {
8878 // CHECK-LABEL: @test_mm512_maskz_cvtps_pd
8879 // CHECK: fpext <8 x float> %{{.*}} to <8 x double>
8880 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8881 return _mm512_maskz_cvtps_pd(__U
, __A
);
8883 __m512d
test_mm512_mask_mov_pd(__m512d __W
, __mmask8 __U
, __m512d __A
) {
8884 // CHECK-LABEL: @test_mm512_mask_mov_pd
8885 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8886 return _mm512_mask_mov_pd(__W
, __U
, __A
);
8889 __m512d
test_mm512_maskz_mov_pd(__mmask8 __U
, __m512d __A
) {
8890 // CHECK-LABEL: @test_mm512_maskz_mov_pd
8891 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8892 return _mm512_maskz_mov_pd(__U
, __A
);
8895 __m512
test_mm512_mask_mov_ps(__m512 __W
, __mmask16 __U
, __m512 __A
) {
8896 // CHECK-LABEL: @test_mm512_mask_mov_ps
8897 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8898 return _mm512_mask_mov_ps(__W
, __U
, __A
);
8901 __m512
test_mm512_maskz_mov_ps(__mmask16 __U
, __m512 __A
) {
8902 // CHECK-LABEL: @test_mm512_maskz_mov_ps
8903 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8904 return _mm512_maskz_mov_ps(__U
, __A
);
8907 void test_mm512_mask_compressstoreu_pd(void *__P
, __mmask8 __U
, __m512d __A
) {
8908 // CHECK-LABEL: @test_mm512_mask_compressstoreu_pd
8909 // CHECK: @llvm.masked.compressstore.v8f64(<8 x double> %{{.*}}, ptr %{{.*}}, <8 x i1> %{{.*}})
8910 return _mm512_mask_compressstoreu_pd(__P
, __U
, __A
);
8913 void test_mm512_mask_compressstoreu_epi64(void *__P
, __mmask8 __U
, __m512i __A
) {
8914 // CHECK-LABEL: @test_mm512_mask_compressstoreu_epi64
8915 // CHECK: @llvm.masked.compressstore.v8i64(<8 x i64> %{{.*}}, ptr %{{.*}}, <8 x i1> %{{.*}})
8916 return _mm512_mask_compressstoreu_epi64(__P
, __U
, __A
);
8919 void test_mm512_mask_compressstoreu_ps(void *__P
, __mmask16 __U
, __m512 __A
) {
8920 // CHECK-LABEL: @test_mm512_mask_compressstoreu_ps
8921 // CHECK: @llvm.masked.compressstore.v16f32(<16 x float> %{{.*}}, ptr %{{.*}}, <16 x i1> %{{.*}})
8922 return _mm512_mask_compressstoreu_ps(__P
, __U
, __A
);
8925 void test_mm512_mask_compressstoreu_epi32(void *__P
, __mmask16 __U
, __m512i __A
) {
8926 // CHECK-LABEL: @test_mm512_mask_compressstoreu_epi32
8927 // CHECK: @llvm.masked.compressstore.v16i32(<16 x i32> %{{.*}}, ptr %{{.*}}, <16 x i1> %{{.*}})
8928 return _mm512_mask_compressstoreu_epi32(__P
, __U
, __A
);
8931 __m256i
test_mm512_cvtt_roundpd_epu32(__m512d __A
) {
8932 // CHECK-LABEL: @test_mm512_cvtt_roundpd_epu32
8933 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8934 return _mm512_cvtt_roundpd_epu32(__A
, _MM_FROUND_NO_EXC
);
8937 __m256i
test_mm512_mask_cvtt_roundpd_epu32(__m256i __W
, __mmask8 __U
, __m512d __A
) {
8938 // CHECK-LABEL: @test_mm512_mask_cvtt_roundpd_epu32
8939 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8940 return _mm512_mask_cvtt_roundpd_epu32(__W
, __U
, __A
, _MM_FROUND_NO_EXC
);
8943 __m256i
test_mm512_maskz_cvtt_roundpd_epu32(__mmask8 __U
, __m512d __A
) {
8944 // CHECK-LABEL: @test_mm512_maskz_cvtt_roundpd_epu32
8945 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8946 return _mm512_maskz_cvtt_roundpd_epu32(__U
, __A
, _MM_FROUND_NO_EXC
);
8949 __m256i
test_mm512_cvttpd_epu32(__m512d __A
) {
8950 // CHECK-LABEL: @test_mm512_cvttpd_epu32
8951 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8952 return _mm512_cvttpd_epu32(__A
);
8955 __m256i
test_mm512_mask_cvttpd_epu32(__m256i __W
, __mmask8 __U
, __m512d __A
) {
8956 // CHECK-LABEL: @test_mm512_mask_cvttpd_epu32
8957 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8958 return _mm512_mask_cvttpd_epu32(__W
, __U
, __A
);
8961 __m256i
test_mm512_maskz_cvttpd_epu32(__mmask8 __U
, __m512d __A
) {
8962 // CHECK-LABEL: @test_mm512_maskz_cvttpd_epu32
8963 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8964 return _mm512_maskz_cvttpd_epu32(__U
, __A
);
8967 __m512
test_mm512_castpd_ps (__m512d __A
)
8969 // CHECK-LABEL: @test_mm512_castpd_ps
8970 // CHECK: bitcast <8 x double> %{{.}} to <16 x float>
8971 return _mm512_castpd_ps (__A
);
8974 __m512d
test_mm512_castps_pd (__m512 __A
)
8976 // CHECK-LABEL: @test_mm512_castps_pd
8977 // CHECK: bitcast <16 x float> %{{.}} to <8 x double>
8978 return _mm512_castps_pd (__A
);
8981 __m512i
test_mm512_castpd_si512 (__m512d __A
)
8983 // CHECK-LABEL: @test_mm512_castpd_si512
8984 // CHECK: bitcast <8 x double> %{{.}} to <8 x i64>
8985 return _mm512_castpd_si512 (__A
);
8988 __m512
test_mm512_castps128_ps512(__m128 __A
) {
8989 // CHECK-LABEL: @test_mm512_castps128_ps512
8990 // CHECK: [[B:%.*]] = freeze <8 x float> poison
8991 // CHECK: store <8 x float> [[B]], ptr [[BA:%.*]]
8992 // CHECK: [[A:%.*]] = freeze <4 x float> poison
8993 // CHECK: [[SV:%.*]] = shufflevector <4 x float> %{{.*}}, <4 x float> [[A]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
8994 // CHECK: [[C:%.*]] = load <8 x float>, ptr [[BA]]
8995 // CHECK: shufflevector <8 x float> [[SV]], <8 x float> [[C]], <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>
8996 return _mm512_castps128_ps512(__A
);
8999 __m512d
test_mm512_castpd128_pd512(__m128d __A
) {
9000 // CHECK-LABEL: @test_mm512_castpd128_pd512
9001 // CHECK: [[B:%.*]] = freeze <4 x double> poison
9002 // CHECK: store <4 x double> [[B]], ptr [[BA:%.*]]
9003 // CHECK: [[A:%.*]] = freeze <2 x double> poison
9004 // CHECK: [[SV:%.*]] = shufflevector <2 x double> %{{.*}}, <2 x double> [[A]], <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9005 // CHECK: [[C:%.*]] = load <4 x double>, ptr [[BA]]
9006 // CHECK: shufflevector <4 x double> [[SV]], <4 x double> [[C]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
9007 return _mm512_castpd128_pd512(__A
);
9010 __m512i
test_mm512_set1_epi8(char d
)
9012 // CHECK-LABEL: @test_mm512_set1_epi8
9013 // CHECK: insertelement <64 x i8> {{.*}}, i32 0
9014 // CHECK: insertelement <64 x i8> {{.*}}, i32 1
9015 // CHECK: insertelement <64 x i8> {{.*}}, i32 2
9016 // CHECK: insertelement <64 x i8> {{.*}}, i32 3
9017 // CHECK: insertelement <64 x i8> {{.*}}, i32 4
9018 // CHECK: insertelement <64 x i8> {{.*}}, i32 5
9019 // CHECK: insertelement <64 x i8> {{.*}}, i32 6
9020 // CHECK: insertelement <64 x i8> {{.*}}, i32 7
9021 // CHECK: insertelement <64 x i8> {{.*}}, i32 63
9022 return _mm512_set1_epi8(d
);
9025 __m512i
test_mm512_set1_epi16(short d
)
9027 // CHECK-LABEL: @test_mm512_set1_epi16
9028 // CHECK: insertelement <32 x i16> {{.*}}, i32 0
9029 // CHECK: insertelement <32 x i16> {{.*}}, i32 1
9030 // CHECK: insertelement <32 x i16> {{.*}}, i32 2
9031 // CHECK: insertelement <32 x i16> {{.*}}, i32 3
9032 // CHECK: insertelement <32 x i16> {{.*}}, i32 4
9033 // CHECK: insertelement <32 x i16> {{.*}}, i32 5
9034 // CHECK: insertelement <32 x i16> {{.*}}, i32 6
9035 // CHECK: insertelement <32 x i16> {{.*}}, i32 7
9036 // CHECK: insertelement <32 x i16> {{.*}}, i32 31
9037 return _mm512_set1_epi16(d
);
9040 __m512i
test_mm512_set4_epi32 (int __A
, int __B
, int __C
, int __D
)
9042 // CHECK-LABEL: @test_mm512_set4_epi32
9043 // CHECK: insertelement <16 x i32> {{.*}}, i32 15
9044 return _mm512_set4_epi32 (__A
,__B
,__C
,__D
);
9047 __m512i
test_mm512_set4_epi64 (long long __A
, long long __B
, long long __C
, long long __D
)
9049 // CHECK-LABEL: @test_mm512_set4_epi64
9050 // CHECK: insertelement <8 x i64> {{.*}}, i32 7
9051 return _mm512_set4_epi64 (__A
,__B
,__C
,__D
);
9054 __m512d
test_mm512_set4_pd (double __A
, double __B
, double __C
, double __D
)
9056 // CHECK-LABEL: @test_mm512_set4_pd
9057 // CHECK: insertelement <8 x double> {{.*}}, i32 7
9058 return _mm512_set4_pd (__A
,__B
,__C
,__D
);
9061 __m512
test_mm512_set4_ps (float __A
, float __B
, float __C
, float __D
)
9063 // CHECK-LABEL: @test_mm512_set4_ps
9064 // CHECK: insertelement <16 x float> {{.*}}, i32 15
9065 return _mm512_set4_ps (__A
,__B
,__C
,__D
);
9068 __m512i
test_mm512_setr4_epi32(int e0
, int e1
, int e2
, int e3
)
9070 // CHECK-LABEL: @test_mm512_setr4_epi32
9071 // CHECK: insertelement <16 x i32> {{.*}}, i32 15
9072 return _mm512_setr4_epi32(e0
, e1
, e2
, e3
);
9075 __m512i
test_mm512_setr4_epi64(long long e0
, long long e1
, long long e2
, long long e3
)
9077 // CHECK-LABEL: @test_mm512_setr4_epi64
9078 // CHECK: insertelement <8 x i64> {{.*}}, i32 7
9079 return _mm512_setr4_epi64(e0
, e1
, e2
, e3
);
9082 __m512d
test_mm512_setr4_pd(double e0
, double e1
, double e2
, double e3
)
9084 // CHECK-LABEL: @test_mm512_setr4_pd
9085 // CHECK: insertelement <8 x double> {{.*}}, i32 7
9086 return _mm512_setr4_pd(e0
,e1
,e2
,e3
);
9089 __m512
test_mm512_setr4_ps(float e0
, float e1
, float e2
, float e3
)
9091 // CHECK-LABEL: @test_mm512_setr4_ps
9092 // CHECK: insertelement <16 x float> {{.*}}, i32 15
9093 return _mm512_setr4_ps(e0
,e1
,e2
,e3
);
9096 __m512d
test_mm512_castpd256_pd512(__m256d a
)
9098 // CHECK-LABEL: @test_mm512_castpd256_pd512
9099 // CHECK: [[A:%.*]] = freeze <4 x double> poison
9100 // CHECK: shufflevector <4 x double> %{{.}}, <4 x double> [[A]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
9101 return _mm512_castpd256_pd512(a
);
9104 __m256d
test_mm512_castpd512_pd256 (__m512d __A
)
9106 // CHECK-LABEL: @test_mm512_castpd512_pd256
9107 // CHECK: shufflevector <8 x double> %{{.}}, <8 x double> %{{.}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9108 return _mm512_castpd512_pd256 (__A
);
9111 __m256
test_mm512_castps512_ps256 (__m512 __A
)
9113 // CHECK-LABEL: @test_mm512_castps512_ps256
9114 // 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>
9115 return _mm512_castps512_ps256 (__A
);
9118 __m512i
test_mm512_castps_si512 (__m512 __A
)
9120 // CHECK-LABEL: @test_mm512_castps_si512
9121 // CHECK: bitcast <16 x float> %{{.}} to <8 x i64>
9122 return _mm512_castps_si512 (__A
);
9124 __m512i
test_mm512_castsi128_si512(__m128i __A
) {
9125 // CHECK-LABEL: @test_mm512_castsi128_si512
9126 // CHECK: [[B:%.*]] = freeze <4 x i64> poison
9127 // CHECK: store <4 x i64> [[B]], ptr [[BA:%.*]]
9128 // CHECK: [[A:%.*]] = freeze <2 x i64> poison
9129 // CHECK: [[SV:%.*]] = shufflevector <2 x i64> %{{.*}}, <2 x i64> [[A]], <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9130 // CHECK: [[C:%.*]] = load <4 x i64>, ptr [[BA]]
9131 // CHECK: shufflevector <4 x i64> [[SV]], <4 x i64> [[C]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
9132 return _mm512_castsi128_si512(__A
);
9135 __m512i
test_mm512_castsi256_si512(__m256i __A
) {
9136 // CHECK-LABEL: @test_mm512_castsi256_si512
9137 // CHECK: [[A:%.*]] = freeze <4 x i64> poison
9138 // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> [[A]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
9139 return _mm512_castsi256_si512(__A
);
9142 __m512
test_mm512_castsi512_ps (__m512i __A
)
9144 // CHECK-LABEL: @test_mm512_castsi512_ps
9145 // CHECK: bitcast <8 x i64> %{{.}} to <16 x float>
9146 return _mm512_castsi512_ps (__A
);
9149 __m512d
test_mm512_castsi512_pd (__m512i __A
)
9151 // CHECK-LABEL: @test_mm512_castsi512_pd
9152 // CHECK: bitcast <8 x i64> %{{.}} to <8 x double>
9153 return _mm512_castsi512_pd (__A
);
9156 __m128i
test_mm512_castsi512_si128 (__m512i __A
)
9158 // CHECK-LABEL: @test_mm512_castsi512_si128
9159 // CHECK: shufflevector <8 x i64> %{{.}}, <8 x i64> %{{.}}, <2 x i32> <i32 0, i32 1>
9160 return _mm512_castsi512_si128 (__A
);
9163 __m256i
test_mm512_castsi512_si256 (__m512i __A
)
9165 // CHECK-LABEL: @test_mm512_castsi512_si256
9166 // CHECK: shufflevector <8 x i64> %{{.}}, <8 x i64> %{{.}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9167 return _mm512_castsi512_si256 (__A
);
9170 __m128
test_mm_cvt_roundsd_ss(__m128 __A
, __m128d __B
) {
9171 // CHECK-LABEL: @test_mm_cvt_roundsd_ss
9172 // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
9173 return _mm_cvt_roundsd_ss(__A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
9176 __m128
test_mm_mask_cvt_roundsd_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128d __B
) {
9177 // CHECK-LABEL: @test_mm_mask_cvt_roundsd_ss
9178 // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
9179 return _mm_mask_cvt_roundsd_ss(__W
, __U
, __A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
9182 __m128
test_mm_maskz_cvt_roundsd_ss(__mmask8 __U
, __m128 __A
, __m128d __B
) {
9183 // CHECK-LABEL: @test_mm_maskz_cvt_roundsd_ss
9184 // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
9185 return _mm_maskz_cvt_roundsd_ss(__U
, __A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
9189 __m128d
test_mm_cvt_roundi64_sd(__m128d __A
, long long __B
) {
9190 // CHECK-LABEL: @test_mm_cvt_roundi64_sd
9191 // CHECK: @llvm.x86.avx512.cvtsi2sd64
9192 return _mm_cvt_roundi64_sd(__A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
9195 __m128d
test_mm_cvt_roundsi64_sd(__m128d __A
, long long __B
) {
9196 // CHECK-LABEL: @test_mm_cvt_roundsi64_sd
9197 // CHECK: @llvm.x86.avx512.cvtsi2sd64
9198 return _mm_cvt_roundsi64_sd(__A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
9202 __m128
test_mm_cvt_roundsi32_ss(__m128 __A
, int __B
) {
9203 // CHECK-LABEL: @test_mm_cvt_roundsi32_ss
9204 // CHECK: @llvm.x86.avx512.cvtsi2ss32
9205 return _mm_cvt_roundsi32_ss(__A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
9208 __m128
test_mm_cvt_roundi32_ss(__m128 __A
, int __B
) {
9209 // CHECK-LABEL: @test_mm_cvt_roundi32_ss
9210 // CHECK: @llvm.x86.avx512.cvtsi2ss32
9211 return _mm_cvt_roundi32_ss(__A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
9215 __m128
test_mm_cvt_roundsi64_ss(__m128 __A
, long long __B
) {
9216 // CHECK-LABEL: @test_mm_cvt_roundsi64_ss
9217 // CHECK: @llvm.x86.avx512.cvtsi2ss64
9218 return _mm_cvt_roundsi64_ss(__A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
9221 __m128
test_mm_cvt_roundi64_ss(__m128 __A
, long long __B
) {
9222 // CHECK-LABEL: @test_mm_cvt_roundi64_ss
9223 // CHECK: @llvm.x86.avx512.cvtsi2ss64
9224 return _mm_cvt_roundi64_ss(__A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
9228 __m128d
test_mm_cvt_roundss_sd(__m128d __A
, __m128 __B
) {
9229 // CHECK-LABEL: @test_mm_cvt_roundss_sd
9230 // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
9231 return _mm_cvt_roundss_sd(__A
, __B
, _MM_FROUND_NO_EXC
);
9234 __m128d
test_mm_mask_cvt_roundss_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128 __B
) {
9235 // CHECK-LABEL: @test_mm_mask_cvt_roundss_sd
9236 // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
9237 return _mm_mask_cvt_roundss_sd(__W
, __U
, __A
, __B
, _MM_FROUND_NO_EXC
);
9240 __m128d
test_mm_maskz_cvt_roundss_sd( __mmask8 __U
, __m128d __A
, __m128 __B
) {
9241 // CHECK-LABEL: @test_mm_maskz_cvt_roundss_sd
9242 // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
9243 return _mm_maskz_cvt_roundss_sd( __U
, __A
, __B
, _MM_FROUND_NO_EXC
);
9246 __m128d
test_mm_cvtu32_sd(__m128d __A
, unsigned __B
) {
9247 // CHECK-LABEL: @test_mm_cvtu32_sd
9248 // CHECK: uitofp i32 %{{.*}} to double
9249 // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
9250 return _mm_cvtu32_sd(__A
, __B
);
9254 __m128d
test_mm_cvt_roundu64_sd(__m128d __A
, unsigned long long __B
) {
9255 // CHECK-LABEL: @test_mm_cvt_roundu64_sd
9256 // CHECK: @llvm.x86.avx512.cvtusi642sd
9257 return _mm_cvt_roundu64_sd(__A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
9260 __m128d
test_mm_cvtu64_sd(__m128d __A
, unsigned long long __B
) {
9261 // CHECK-LABEL: @test_mm_cvtu64_sd
9262 // CHECK: uitofp i64 %{{.*}} to double
9263 // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
9264 return _mm_cvtu64_sd(__A
, __B
);
9268 __m128
test_mm_cvt_roundu32_ss(__m128 __A
, unsigned __B
) {
9269 // CHECK-LABEL: @test_mm_cvt_roundu32_ss
9270 // CHECK: @llvm.x86.avx512.cvtusi2ss
9271 return _mm_cvt_roundu32_ss(__A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
9274 __m128
test_mm_cvtu32_ss(__m128 __A
, unsigned __B
) {
9275 // CHECK-LABEL: @test_mm_cvtu32_ss
9276 // CHECK: uitofp i32 %{{.*}} to float
9277 // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
9278 return _mm_cvtu32_ss(__A
, __B
);
9282 __m128
test_mm_cvt_roundu64_ss(__m128 __A
, unsigned long long __B
) {
9283 // CHECK-LABEL: @test_mm_cvt_roundu64_ss
9284 // CHECK: @llvm.x86.avx512.cvtusi642ss
9285 return _mm_cvt_roundu64_ss(__A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
9288 __m128
test_mm_cvtu64_ss(__m128 __A
, unsigned long long __B
) {
9289 // CHECK-LABEL: @test_mm_cvtu64_ss
9290 // CHECK: uitofp i64 %{{.*}} to float
9291 // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
9292 return _mm_cvtu64_ss(__A
, __B
);
9296 __m512i
test_mm512_mask_cvttps_epu32 (__m512i __W
, __mmask16 __U
, __m512 __A
)
9298 // CHECK-LABEL: @test_mm512_mask_cvttps_epu32
9299 // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
9300 return _mm512_mask_cvttps_epu32 (__W
,__U
,__A
);
9303 __m512i
test_mm512_maskz_cvttps_epu32 (__mmask16 __U
, __m512 __A
)
9305 // CHECK-LABEL: @test_mm512_maskz_cvttps_epu32
9306 // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
9307 return _mm512_maskz_cvttps_epu32 (__U
,__A
);
9310 __m512
test_mm512_cvtepu32_ps (__m512i __A
)
9312 // CHECK-LABEL: @test_mm512_cvtepu32_ps
9313 // CHECK: uitofp <16 x i32> %{{.*}} to <16 x float>
9314 return _mm512_cvtepu32_ps (__A
);
9317 __m512
test_mm512_mask_cvtepu32_ps (__m512 __W
, __mmask16 __U
, __m512i __A
)
9319 // CHECK-LABEL: @test_mm512_mask_cvtepu32_ps
9320 // CHECK: uitofp <16 x i32> %{{.*}} to <16 x float>
9321 // CHECK: select <16 x i1> {{.*}}, <16 x float> {{.*}}, <16 x float> {{.*}}
9322 return _mm512_mask_cvtepu32_ps (__W
,__U
,__A
);
9325 __m512
test_mm512_maskz_cvtepu32_ps (__mmask16 __U
, __m512i __A
)
9327 // CHECK-LABEL: @test_mm512_maskz_cvtepu32_ps
9328 // CHECK: uitofp <16 x i32> %{{.*}} to <16 x float>
9329 // CHECK: select <16 x i1> {{.*}}, <16 x float> {{.*}}, <16 x float> {{.*}}
9330 return _mm512_maskz_cvtepu32_ps (__U
,__A
);
9333 __m512d
test_mm512_cvtepi32_pd (__m256i __A
)
9335 // CHECK-LABEL: @test_mm512_cvtepi32_pd
9336 // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
9337 return _mm512_cvtepi32_pd (__A
);
9340 __m512d
test_mm512_mask_cvtepi32_pd (__m512d __W
, __mmask8 __U
, __m256i __A
)
9342 // CHECK-LABEL: @test_mm512_mask_cvtepi32_pd
9343 // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
9344 // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9345 return _mm512_mask_cvtepi32_pd (__W
,__U
,__A
);
9348 __m512d
test_mm512_maskz_cvtepi32_pd (__mmask8 __U
, __m256i __A
)
9350 // CHECK-LABEL: @test_mm512_maskz_cvtepi32_pd
9351 // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
9352 // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9353 return _mm512_maskz_cvtepi32_pd (__U
,__A
);
9356 __m512d
test_mm512_cvtepi32lo_pd (__m512i __A
)
9358 // CHECK-LABEL: @test_mm512_cvtepi32lo_pd
9359 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9360 // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
9361 return _mm512_cvtepi32lo_pd (__A
);
9364 __m512d
test_mm512_mask_cvtepi32lo_pd (__m512d __W
, __mmask8 __U
, __m512i __A
)
9366 // CHECK-LABEL: @test_mm512_mask_cvtepi32lo_pd
9367 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9368 // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
9369 // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9370 return _mm512_mask_cvtepi32lo_pd (__W
, __U
, __A
);
9373 __m512
test_mm512_cvtepi32_ps (__m512i __A
)
9375 // CHECK-LABEL: @test_mm512_cvtepi32_ps
9376 // CHECK: sitofp <16 x i32> %{{.*}} to <16 x float>
9377 return _mm512_cvtepi32_ps (__A
);
9380 __m512
test_mm512_mask_cvtepi32_ps (__m512 __W
, __mmask16 __U
, __m512i __A
)
9382 // CHECK-LABEL: @test_mm512_mask_cvtepi32_ps
9383 // CHECK: sitofp <16 x i32> %{{.*}} to <16 x float>
9384 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9385 return _mm512_mask_cvtepi32_ps (__W
,__U
,__A
);
9388 __m512
test_mm512_maskz_cvtepi32_ps (__mmask16 __U
, __m512i __A
)
9390 // CHECK-LABEL: @test_mm512_maskz_cvtepi32_ps
9391 // CHECK: sitofp <16 x i32> %{{.*}} to <16 x float>
9392 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9393 return _mm512_maskz_cvtepi32_ps (__U
,__A
);
9396 __m512d
test_mm512_cvtepu32_pd(__m256i __A
)
9398 // CHECK-LABEL: @test_mm512_cvtepu32_pd
9399 // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
9400 return _mm512_cvtepu32_pd(__A
);
9403 __m512d
test_mm512_mask_cvtepu32_pd (__m512d __W
, __mmask8 __U
, __m256i __A
)
9405 // CHECK-LABEL: @test_mm512_mask_cvtepu32_pd
9406 // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
9407 // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9408 return _mm512_mask_cvtepu32_pd (__W
,__U
,__A
);
9411 __m512d
test_mm512_maskz_cvtepu32_pd (__mmask8 __U
, __m256i __A
)
9413 // CHECK-LABEL: @test_mm512_maskz_cvtepu32_pd
9414 // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
9415 // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9416 return _mm512_maskz_cvtepu32_pd (__U
,__A
);
9419 __m512d
test_mm512_cvtepu32lo_pd (__m512i __A
)
9421 // CHECK-LABEL: @test_mm512_cvtepu32lo_pd
9422 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9423 // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
9424 return _mm512_cvtepu32lo_pd (__A
);
9427 __m512d
test_mm512_mask_cvtepu32lo_pd (__m512d __W
, __mmask8 __U
, __m512i __A
)
9429 // CHECK-LABEL: @test_mm512_mask_cvtepu32lo_pd
9430 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9431 // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
9432 // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9433 return _mm512_mask_cvtepu32lo_pd (__W
, __U
, __A
);
9436 __m256
test_mm512_cvtpd_ps (__m512d __A
)
9438 // CHECK-LABEL: @test_mm512_cvtpd_ps
9439 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
9440 return _mm512_cvtpd_ps (__A
);
9443 __m256
test_mm512_mask_cvtpd_ps (__m256 __W
, __mmask8 __U
, __m512d __A
)
9445 // CHECK-LABEL: @test_mm512_mask_cvtpd_ps
9446 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
9447 return _mm512_mask_cvtpd_ps (__W
,__U
,__A
);
9450 __m512
test_mm512_cvtpd_pslo(__m512d __A
)
9452 // CHECK-LABEL: @test_mm512_cvtpd_pslo
9453 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
9454 // CHECK: zeroinitializer
9455 // 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>
9456 return _mm512_cvtpd_pslo(__A
);
9459 __m512
test_mm512_mask_cvtpd_pslo(__m512 __W
, __mmask8 __U
, __m512d __A
) {
9460 // CHECK-LABEL: @test_mm512_mask_cvtpd_pslo
9461 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
9462 // CHECK: zeroinitializer
9463 // 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>
9464 return _mm512_mask_cvtpd_pslo(__W
, __U
, __A
);
9467 __m256
test_mm512_maskz_cvtpd_ps (__mmask8 __U
, __m512d __A
)
9469 // CHECK-LABEL: @test_mm512_maskz_cvtpd_ps
9470 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
9471 return _mm512_maskz_cvtpd_ps (__U
,__A
);
9474 __m512
test_mm512_cvtph_ps (__m256i __A
)
9476 // CHECK-LABEL: @test_mm512_cvtph_ps
9477 // CHECK: bitcast <4 x i64> %{{.*}} to <16 x i16>
9478 // CHECK: bitcast <16 x i16> %{{.*}} to <16 x half>
9479 // CHECK: fpext <16 x half> %{{.*}} to <16 x float>
9480 return _mm512_cvtph_ps (__A
);
9483 __m512
test_mm512_mask_cvtph_ps (__m512 __W
, __mmask16 __U
, __m256i __A
)
9485 // CHECK-LABEL: @test_mm512_mask_cvtph_ps
9486 // CHECK: bitcast <4 x i64> %{{.*}} to <16 x i16>
9487 // CHECK: bitcast <16 x i16> %{{.*}} to <16 x half>
9488 // CHECK: fpext <16 x half> %{{.*}} to <16 x float>
9489 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9490 return _mm512_mask_cvtph_ps (__W
,__U
,__A
);
9493 __m512
test_mm512_maskz_cvtph_ps (__mmask16 __U
, __m256i __A
)
9495 // CHECK-LABEL: @test_mm512_maskz_cvtph_ps
9496 // CHECK: bitcast <4 x i64> %{{.*}} to <16 x i16>
9497 // CHECK: bitcast <16 x i16> %{{.*}} to <16 x half>
9498 // CHECK: fpext <16 x half> %{{.*}} to <16 x float>
9499 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9500 return _mm512_maskz_cvtph_ps (__U
,__A
);
9503 __m256i
test_mm512_mask_cvttpd_epi32 (__m256i __W
, __mmask8 __U
, __m512d __A
)
9505 // CHECK-LABEL: @test_mm512_mask_cvttpd_epi32
9506 // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512
9507 return _mm512_mask_cvttpd_epi32 (__W
,__U
,__A
);
9510 __m256i
test_mm512_maskz_cvttpd_epi32 (__mmask8 __U
, __m512d __A
)
9512 // CHECK-LABEL: @test_mm512_maskz_cvttpd_epi32
9513 // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512
9514 return _mm512_maskz_cvttpd_epi32 (__U
,__A
);
9517 __m512i
test_mm512_mask_cvttps_epi32 (__m512i __W
, __mmask16 __U
, __m512 __A
)
9519 // CHECK-LABEL: @test_mm512_mask_cvttps_epi32
9520 // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512
9521 return _mm512_mask_cvttps_epi32 (__W
,__U
,__A
);
9524 __m512i
test_mm512_maskz_cvttps_epi32 (__mmask16 __U
, __m512 __A
)
9526 // CHECK-LABEL: @test_mm512_maskz_cvttps_epi32
9527 // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512
9528 return _mm512_maskz_cvttps_epi32 (__U
,__A
);
9531 __m512i
test_mm512_cvtps_epi32 (__m512 __A
)
9533 // CHECK-LABEL: @test_mm512_cvtps_epi32
9534 // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
9535 return _mm512_cvtps_epi32 (__A
);
9538 __m512i
test_mm512_mask_cvtps_epi32 (__m512i __W
, __mmask16 __U
, __m512 __A
)
9540 // CHECK-LABEL: @test_mm512_mask_cvtps_epi32
9541 // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
9542 return _mm512_mask_cvtps_epi32 (__W
,__U
,__A
);
9545 __m512i
test_mm512_maskz_cvtps_epi32 (__mmask16 __U
, __m512 __A
)
9547 // CHECK-LABEL: @test_mm512_maskz_cvtps_epi32
9548 // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
9549 return _mm512_maskz_cvtps_epi32 (__U
,__A
);
9552 __m256i
test_mm512_cvtpd_epi32 (__m512d __A
)
9554 // CHECK-LABEL: @test_mm512_cvtpd_epi32
9555 // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
9556 return _mm512_cvtpd_epi32 (__A
);
9559 __m256i
test_mm512_mask_cvtpd_epi32 (__m256i __W
, __mmask8 __U
, __m512d __A
)
9561 // CHECK-LABEL: @test_mm512_mask_cvtpd_epi32
9562 // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
9563 return _mm512_mask_cvtpd_epi32 (__W
,__U
,__A
);
9566 __m256i
test_mm512_maskz_cvtpd_epi32 (__mmask8 __U
, __m512d __A
)
9568 // CHECK-LABEL: @test_mm512_maskz_cvtpd_epi32
9569 // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
9570 return _mm512_maskz_cvtpd_epi32 (__U
,__A
);
9573 __m256i
test_mm512_cvtpd_epu32 (__m512d __A
)
9575 // CHECK-LABEL: @test_mm512_cvtpd_epu32
9576 // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
9577 return _mm512_cvtpd_epu32 (__A
);
9580 __m256i
test_mm512_mask_cvtpd_epu32 (__m256i __W
, __mmask8 __U
, __m512d __A
)
9582 // CHECK-LABEL: @test_mm512_mask_cvtpd_epu32
9583 // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
9584 return _mm512_mask_cvtpd_epu32 (__W
,__U
,__A
);
9587 __m256i
test_mm512_maskz_cvtpd_epu32 (__mmask8 __U
, __m512d __A
)
9589 // CHECK-LABEL: @test_mm512_maskz_cvtpd_epu32
9590 // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
9591 return _mm512_maskz_cvtpd_epu32 (__U
,__A
);
9594 __m256i
test_mm512_mask_cvtps_ph(__m256i src
, __mmask16 k
, __m512 a
)
9596 // CHECK-LABEL: @test_mm512_mask_cvtps_ph
9597 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
9598 return _mm512_mask_cvtps_ph(src
, k
, a
,_MM_FROUND_TO_ZERO
);
9601 __m256i
test_mm512_maskz_cvtps_ph (__mmask16 k
, __m512 a
)
9603 // CHECK-LABEL: @test_mm512_maskz_cvtps_ph
9604 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
9605 return _mm512_maskz_cvtps_ph( k
, a
,_MM_FROUND_TO_ZERO
);
9608 __m512i
test_mm512_cvtps_epu32 ( __m512 __A
)
9610 // CHECK-LABEL: @test_mm512_cvtps_epu32
9611 // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
9612 return _mm512_cvtps_epu32(__A
);
9615 __m512i
test_mm512_mask_cvtps_epu32 (__m512i __W
, __mmask16 __U
, __m512 __A
)
9617 // CHECK-LABEL: @test_mm512_mask_cvtps_epu32
9618 // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
9619 return _mm512_mask_cvtps_epu32( __W
, __U
, __A
);
9621 __m512i
test_mm512_maskz_cvtps_epu32 (__mmask16 __U
, __m512 __A
)
9623 // CHECK-LABEL: @test_mm512_maskz_cvtps_epu32
9624 // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
9625 return _mm512_maskz_cvtps_epu32( __U
, __A
);
9628 double test_mm512_cvtsd_f64(__m512d A
) {
9629 // CHECK-LABEL: test_mm512_cvtsd_f64
9630 // CHECK: extractelement <8 x double> %{{.*}}, i32 0
9631 return _mm512_cvtsd_f64(A
);
9634 float test_mm512_cvtss_f32(__m512 A
) {
9635 // CHECK-LABEL: test_mm512_cvtss_f32
9636 // CHECK: extractelement <16 x float> %{{.*}}, i32 0
9637 return _mm512_cvtss_f32(A
);
9640 __m512d
test_mm512_mask_max_pd (__m512d __W
, __mmask8 __U
, __m512d __A
, __m512d __B
)
9642 // CHECK-LABEL: @test_mm512_mask_max_pd
9643 // CHECK: @llvm.x86.avx512.max.pd.512
9644 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9645 return _mm512_mask_max_pd (__W
,__U
,__A
,__B
);
9648 __m512d
test_mm512_maskz_max_pd (__mmask8 __U
, __m512d __A
, __m512d __B
)
9650 // CHECK-LABEL: @test_mm512_maskz_max_pd
9651 // CHECK: @llvm.x86.avx512.max.pd.512
9652 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9653 return _mm512_maskz_max_pd (__U
,__A
,__B
);
9656 __m512
test_mm512_mask_max_ps (__m512 __W
, __mmask16 __U
, __m512 __A
, __m512 __B
)
9658 // CHECK-LABEL: @test_mm512_mask_max_ps
9659 // CHECK: @llvm.x86.avx512.max.ps.512
9660 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9661 return _mm512_mask_max_ps (__W
,__U
,__A
,__B
);
9664 __m512d
test_mm512_mask_max_round_pd(__m512d __W
,__mmask8 __U
,__m512d __A
,__m512d __B
)
9666 // CHECK-LABEL: @test_mm512_mask_max_round_pd
9667 // CHECK: @llvm.x86.avx512.max.pd.512
9668 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9669 return _mm512_mask_max_round_pd(__W
,__U
,__A
,__B
,_MM_FROUND_NO_EXC
);
9672 __m512d
test_mm512_maskz_max_round_pd(__mmask8 __U
,__m512d __A
,__m512d __B
)
9674 // CHECK-LABEL: @test_mm512_maskz_max_round_pd
9675 // CHECK: @llvm.x86.avx512.max.pd.512
9676 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9677 return _mm512_maskz_max_round_pd(__U
,__A
,__B
,_MM_FROUND_NO_EXC
);
9680 __m512d
test_mm512_max_round_pd(__m512d __A
,__m512d __B
)
9682 // CHECK-LABEL: @test_mm512_max_round_pd
9683 // CHECK: @llvm.x86.avx512.max.pd.512
9684 return _mm512_max_round_pd(__A
,__B
,_MM_FROUND_NO_EXC
);
9687 __m512
test_mm512_maskz_max_ps (__mmask16 __U
, __m512 __A
, __m512 __B
)
9689 // CHECK-LABEL: @test_mm512_maskz_max_ps
9690 // CHECK: @llvm.x86.avx512.max.ps.512
9691 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9692 return _mm512_maskz_max_ps (__U
,__A
,__B
);
9695 __m512
test_mm512_mask_max_round_ps(__m512 __W
,__mmask16 __U
,__m512 __A
,__m512 __B
)
9697 // CHECK-LABEL: @test_mm512_mask_max_round_ps
9698 // CHECK: @llvm.x86.avx512.max.ps.512
9699 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9700 return _mm512_mask_max_round_ps(__W
,__U
,__A
,__B
,_MM_FROUND_NO_EXC
);
9703 __m512
test_mm512_maskz_max_round_ps(__mmask16 __U
,__m512 __A
,__m512 __B
)
9705 // CHECK-LABEL: @test_mm512_maskz_max_round_ps
9706 // CHECK: @llvm.x86.avx512.max.ps.512
9707 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9708 return _mm512_maskz_max_round_ps(__U
,__A
,__B
,_MM_FROUND_NO_EXC
);
9711 __m512
test_mm512_max_round_ps(__m512 __A
,__m512 __B
)
9713 // CHECK-LABEL: @test_mm512_max_round_ps
9714 // CHECK: @llvm.x86.avx512.max.ps.512
9715 return _mm512_max_round_ps(__A
,__B
,_MM_FROUND_NO_EXC
);
9718 __m512d
test_mm512_mask_min_pd (__m512d __W
, __mmask8 __U
, __m512d __A
, __m512d __B
)
9720 // CHECK-LABEL: @test_mm512_mask_min_pd
9721 // CHECK: @llvm.x86.avx512.min.pd.512
9722 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9723 return _mm512_mask_min_pd (__W
,__U
,__A
,__B
);
9726 __m512d
test_mm512_maskz_min_pd (__mmask8 __U
, __m512d __A
, __m512d __B
)
9728 // CHECK-LABEL: @test_mm512_maskz_min_pd
9729 // CHECK: @llvm.x86.avx512.min.pd.512
9730 return _mm512_maskz_min_pd (__U
,__A
,__B
);
9733 __m512d
test_mm512_mask_min_round_pd(__m512d __W
,__mmask8 __U
,__m512d __A
,__m512d __B
)
9735 // CHECK-LABEL: @test_mm512_mask_min_round_pd
9736 // CHECK: @llvm.x86.avx512.min.pd.512
9737 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9738 return _mm512_mask_min_round_pd(__W
,__U
,__A
,__B
,_MM_FROUND_NO_EXC
);
9741 __m512d
test_mm512_maskz_min_round_pd(__mmask8 __U
,__m512d __A
,__m512d __B
)
9743 // CHECK-LABEL: @test_mm512_maskz_min_round_pd
9744 // CHECK: @llvm.x86.avx512.min.pd.512
9745 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9746 return _mm512_maskz_min_round_pd(__U
,__A
,__B
,_MM_FROUND_NO_EXC
);
9749 __m512d
test_mm512_min_round_pd( __m512d __A
,__m512d __B
)
9751 // CHECK-LABEL: @test_mm512_min_round_pd
9752 // CHECK: @llvm.x86.avx512.min.pd.512
9753 return _mm512_min_round_pd(__A
,__B
,_MM_FROUND_NO_EXC
);
9756 __m512
test_mm512_mask_min_ps (__m512 __W
, __mmask16 __U
, __m512 __A
, __m512 __B
)
9758 // CHECK-LABEL: @test_mm512_mask_min_ps
9759 // CHECK: @llvm.x86.avx512.min.ps.512
9760 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9761 return _mm512_mask_min_ps (__W
,__U
,__A
,__B
);
9764 __m512
test_mm512_maskz_min_ps (__mmask16 __U
, __m512 __A
, __m512 __B
)
9766 // CHECK-LABEL: @test_mm512_maskz_min_ps
9767 // CHECK: @llvm.x86.avx512.min.ps.512
9768 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9769 return _mm512_maskz_min_ps (__U
,__A
,__B
);
9772 __m512
test_mm512_mask_min_round_ps(__m512 __W
,__mmask16 __U
,__m512 __A
,__m512 __B
)
9774 // CHECK-LABEL: @test_mm512_mask_min_round_ps
9775 // CHECK: @llvm.x86.avx512.min.ps.512
9776 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9777 return _mm512_mask_min_round_ps(__W
,__U
,__A
,__B
,_MM_FROUND_NO_EXC
);
9780 __m512
test_mm512_maskz_min_round_ps(__mmask16 __U
,__m512 __A
,__m512 __B
)
9782 // CHECK-LABEL: @test_mm512_maskz_min_round_ps
9783 // CHECK: @llvm.x86.avx512.min.ps.512
9784 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9785 return _mm512_maskz_min_round_ps(__U
,__A
,__B
,_MM_FROUND_NO_EXC
);
9788 __m512
test_mm512_min_round_ps(__m512 __A
,__m512 __B
)
9790 // CHECK-LABEL: @test_mm512_min_round_ps
9791 // CHECK: @llvm.x86.avx512.min.ps.512
9792 return _mm512_min_round_ps(__A
,__B
,_MM_FROUND_NO_EXC
);
9795 __m512
test_mm512_mask_floor_ps (__m512 __W
, __mmask16 __U
, __m512 __A
)
9797 // CHECK-LABEL: @test_mm512_mask_floor_ps
9798 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9799 return _mm512_mask_floor_ps (__W
,__U
,__A
);
9802 __m512d
test_mm512_mask_floor_pd (__m512d __W
, __mmask8 __U
, __m512d __A
)
9804 // CHECK-LABEL: @test_mm512_mask_floor_pd
9805 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9806 return _mm512_mask_floor_pd (__W
,__U
,__A
);
9809 __m512
test_mm512_mask_ceil_ps (__m512 __W
, __mmask16 __U
, __m512 __A
)
9811 // CHECK-LABEL: @test_mm512_mask_ceil_ps
9812 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9813 return _mm512_mask_ceil_ps (__W
,__U
,__A
);
9816 __m512d
test_mm512_mask_ceil_pd (__m512d __W
, __mmask8 __U
, __m512d __A
)
9818 // CHECK-LABEL: @test_mm512_mask_ceil_pd
9819 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9820 return _mm512_mask_ceil_pd (__W
,__U
,__A
);
9823 __m512
test_mm512_mask_roundscale_ps(__m512 __W
, __mmask16 __U
, __m512 __A
)
9825 // CHECK-LABEL: @test_mm512_mask_roundscale_ps
9826 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9827 return _mm512_mask_roundscale_ps(__W
,__U
,__A
, 1);
9830 __m512
test_mm512_maskz_roundscale_ps(__mmask16 __U
, __m512 __A
)
9832 // CHECK-LABEL: @test_mm512_maskz_roundscale_ps
9833 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9834 return _mm512_maskz_roundscale_ps(__U
,__A
, 1);
9837 __m512
test_mm512_mask_roundscale_round_ps(__m512 __A
,__mmask16 __U
,__m512 __C
)
9839 // CHECK-LABEL: @test_mm512_mask_roundscale_round_ps
9840 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9841 return _mm512_mask_roundscale_round_ps(__A
,__U
,__C
,_MM_FROUND_TO_ZERO
,_MM_FROUND_NO_EXC
);
9844 __m512
test_mm512_maskz_roundscale_round_ps(__m512 __A
,__mmask16 __U
)
9846 // CHECK-LABEL: @test_mm512_maskz_roundscale_round_ps
9847 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9848 return _mm512_maskz_roundscale_round_ps(__U
,__A
,_MM_FROUND_TO_ZERO
,_MM_FROUND_NO_EXC
);
9851 __m512
test_mm512_roundscale_round_ps(__m512 __A
)
9853 // CHECK-LABEL: @test_mm512_roundscale_round_ps
9854 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9855 return _mm512_roundscale_round_ps(__A
,_MM_FROUND_TO_ZERO
,_MM_FROUND_NO_EXC
);
9858 __m512d
test_mm512_mask_roundscale_pd(__m512d __W
, __mmask8 __U
, __m512d __A
)
9860 // CHECK-LABEL: @test_mm512_mask_roundscale_pd
9861 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9862 return _mm512_mask_roundscale_pd(__W
,__U
,__A
, 1);
9865 __m512d
test_mm512_maskz_roundscale_pd(__mmask8 __U
, __m512d __A
)
9867 // CHECK-LABEL: @test_mm512_maskz_roundscale_pd
9868 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9869 return _mm512_maskz_roundscale_pd(__U
,__A
, 1);
9872 __m512d
test_mm512_mask_roundscale_round_pd(__m512d __A
,__mmask8 __U
,__m512d __C
)
9874 // CHECK-LABEL: @test_mm512_mask_roundscale_round_pd
9875 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9876 return _mm512_mask_roundscale_round_pd(__A
,__U
,__C
,_MM_FROUND_TO_ZERO
,_MM_FROUND_NO_EXC
);
9879 __m512d
test_mm512_maskz_roundscale_round_pd(__m512d __A
,__mmask8 __U
)
9881 // CHECK-LABEL: @test_mm512_maskz_roundscale_round_pd
9882 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9883 return _mm512_maskz_roundscale_round_pd(__U
,__A
,_MM_FROUND_TO_ZERO
,_MM_FROUND_NO_EXC
);
9886 __m512d
test_mm512_roundscale_round_pd(__m512d __A
)
9888 // CHECK-LABEL: @test_mm512_roundscale_round_pd
9889 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9890 return _mm512_roundscale_round_pd(__A
,_MM_FROUND_TO_ZERO
,_MM_FROUND_NO_EXC
);
9893 __m512i
test_mm512_max_epi32 (__m512i __A
, __m512i __B
)
9895 // CHECK-LABEL: @test_mm512_max_epi32
9896 // CHECK: [[RES:%.*]] = call <16 x i32> @llvm.smax.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}})
9897 return _mm512_max_epi32 (__A
,__B
);
9900 __m512i
test_mm512_mask_max_epi32 (__m512i __W
, __mmask16 __M
, __m512i __A
, __m512i __B
)
9902 // CHECK-LABEL: @test_mm512_mask_max_epi32
9903 // CHECK: [[RES:%.*]] = call <16 x i32> @llvm.smax.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}})
9904 // CHECK: select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
9905 return _mm512_mask_max_epi32 (__W
,__M
,__A
,__B
);
9908 __m512i
test_mm512_maskz_max_epi32 (__mmask16 __M
, __m512i __A
, __m512i __B
)
9910 // CHECK-LABEL: @test_mm512_maskz_max_epi32
9911 // CHECK: [[RES:%.*]] = call <16 x i32> @llvm.smax.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}})
9912 // CHECK: select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
9913 return _mm512_maskz_max_epi32 (__M
,__A
,__B
);
9916 __m512i
test_mm512_max_epi64 (__m512i __A
, __m512i __B
)
9918 // CHECK-LABEL: @test_mm512_max_epi64
9919 // CHECK: [[RES:%.*]] = call <8 x i64> @llvm.smax.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}})
9920 return _mm512_max_epi64 (__A
,__B
);
9923 __m512i
test_mm512_mask_max_epi64 (__m512i __W
, __mmask8 __M
, __m512i __A
, __m512i __B
)
9925 // CHECK-LABEL: @test_mm512_mask_max_epi64
9926 // CHECK: [[RES:%.*]] = call <8 x i64> @llvm.smax.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}})
9927 // CHECK: select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
9928 return _mm512_mask_max_epi64 (__W
,__M
,__A
,__B
);
9931 __m512i
test_mm512_maskz_max_epi64 (__mmask8 __M
, __m512i __A
, __m512i __B
)
9933 // CHECK-LABEL: @test_mm512_maskz_max_epi64
9934 // CHECK: [[RES:%.*]] = call <8 x i64> @llvm.smax.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}})
9935 // CHECK: select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
9936 return _mm512_maskz_max_epi64 (__M
,__A
,__B
);
9939 __m512i
test_mm512_max_epu64 (__m512i __A
, __m512i __B
)
9941 // CHECK-LABEL: @test_mm512_max_epu64
9942 // CHECK: [[RES:%.*]] = call <8 x i64> @llvm.umax.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}})
9943 return _mm512_max_epu64 (__A
,__B
);
9946 __m512i
test_mm512_mask_max_epu64 (__m512i __W
, __mmask8 __M
, __m512i __A
, __m512i __B
)
9948 // CHECK-LABEL: @test_mm512_mask_max_epu64
9949 // CHECK: [[RES:%.*]] = call <8 x i64> @llvm.umax.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}})
9950 // CHECK: select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
9951 return _mm512_mask_max_epu64 (__W
,__M
,__A
,__B
);
9954 __m512i
test_mm512_maskz_max_epu64 (__mmask8 __M
, __m512i __A
, __m512i __B
)
9956 // CHECK-LABEL: @test_mm512_maskz_max_epu64
9957 // CHECK: [[RES:%.*]] = call <8 x i64> @llvm.umax.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}})
9958 // CHECK: select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
9959 return _mm512_maskz_max_epu64 (__M
,__A
,__B
);
9962 __m512i
test_mm512_max_epu32 (__m512i __A
, __m512i __B
)
9964 // CHECK-LABEL: @test_mm512_max_epu32
9965 // CHECK: [[RES:%.*]] = call <16 x i32> @llvm.umax.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}})
9966 return _mm512_max_epu32 (__A
,__B
);
9969 __m512i
test_mm512_mask_max_epu32 (__m512i __W
, __mmask16 __M
, __m512i __A
, __m512i __B
)
9971 // CHECK-LABEL: @test_mm512_mask_max_epu32
9972 // CHECK: [[RES:%.*]] = call <16 x i32> @llvm.umax.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}})
9973 // CHECK: select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
9974 return _mm512_mask_max_epu32 (__W
,__M
,__A
,__B
);
9977 __m512i
test_mm512_maskz_max_epu32 (__mmask16 __M
, __m512i __A
, __m512i __B
)
9979 // CHECK-LABEL: @test_mm512_maskz_max_epu32
9980 // CHECK: [[RES:%.*]] = call <16 x i32> @llvm.umax.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}})
9981 // CHECK: select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
9982 return _mm512_maskz_max_epu32 (__M
,__A
,__B
);
9985 __m512i
test_mm512_min_epi32 (__m512i __A
, __m512i __B
)
9987 // CHECK-LABEL: @test_mm512_min_epi32
9988 // CHECK: [[RES:%.*]] = call <16 x i32> @llvm.smin.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}})
9989 return _mm512_min_epi32 (__A
,__B
);
9992 __m512i
test_mm512_mask_min_epi32 (__m512i __W
, __mmask16 __M
, __m512i __A
, __m512i __B
)
9994 // CHECK-LABEL: @test_mm512_mask_min_epi32
9995 // CHECK: [[RES:%.*]] = call <16 x i32> @llvm.smin.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}})
9996 // CHECK: select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
9997 return _mm512_mask_min_epi32 (__W
,__M
,__A
,__B
);
10000 __m512i
test_mm512_maskz_min_epi32 (__mmask16 __M
, __m512i __A
, __m512i __B
)
10002 // CHECK-LABEL: @test_mm512_maskz_min_epi32
10003 // CHECK: [[RES:%.*]] = call <16 x i32> @llvm.smin.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}})
10004 // CHECK: select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
10005 return _mm512_maskz_min_epi32 (__M
,__A
,__B
);
10008 __m512i
test_mm512_min_epu32 (__m512i __A
, __m512i __B
)
10010 // CHECK-LABEL: @test_mm512_min_epu32
10011 // CHECK: [[RES:%.*]] = call <16 x i32> @llvm.umin.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}})
10012 return _mm512_min_epu32 (__A
,__B
);
10015 __m512i
test_mm512_mask_min_epu32 (__m512i __W
, __mmask16 __M
, __m512i __A
, __m512i __B
)
10017 // CHECK-LABEL: @test_mm512_mask_min_epu32
10018 // CHECK: [[RES:%.*]] = call <16 x i32> @llvm.umin.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}})
10019 // CHECK: select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
10020 return _mm512_mask_min_epu32 (__W
,__M
,__A
,__B
);
10023 __m512i
test_mm512_maskz_min_epu32 (__mmask16 __M
, __m512i __A
, __m512i __B
)
10025 // CHECK-LABEL: @test_mm512_maskz_min_epu32
10026 // CHECK: [[RES:%.*]] = call <16 x i32> @llvm.umin.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}})
10027 // CHECK: select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
10028 return _mm512_maskz_min_epu32 (__M
,__A
,__B
);
10031 __m512i
test_mm512_min_epi64 (__m512i __A
, __m512i __B
)
10033 // CHECK-LABEL: @test_mm512_min_epi64
10034 // CHECK: [[RES:%.*]] = call <8 x i64> @llvm.smin.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}})
10035 return _mm512_min_epi64 (__A
,__B
);
10038 __m512i
test_mm512_mask_min_epi64 (__m512i __W
, __mmask8 __M
, __m512i __A
, __m512i __B
)
10040 // CHECK-LABEL: @test_mm512_mask_min_epi64
10041 // CHECK: [[RES:%.*]] = call <8 x i64> @llvm.smin.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}})
10042 // CHECK: select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
10043 return _mm512_mask_min_epi64 (__W
,__M
,__A
,__B
);
10046 __m512i
test_mm512_maskz_min_epi64 (__mmask8 __M
, __m512i __A
, __m512i __B
)
10048 // CHECK-LABEL: @test_mm512_maskz_min_epi64
10049 // CHECK: [[RES:%.*]] = call <8 x i64> @llvm.smin.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}})
10050 // CHECK: select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
10051 return _mm512_maskz_min_epi64 (__M
,__A
,__B
);
10054 __m512i
test_mm512_min_epu64 (__m512i __A
, __m512i __B
)
10056 // CHECK-LABEL: @test_mm512_min_epu64
10057 // CHECK: [[RES:%.*]] = call <8 x i64> @llvm.umin.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}})
10058 return _mm512_min_epu64 (__A
,__B
);
10061 __m512i
test_mm512_mask_min_epu64 (__m512i __W
, __mmask8 __M
, __m512i __A
, __m512i __B
)
10063 // CHECK-LABEL: @test_mm512_mask_min_epu64
10064 // CHECK: [[RES:%.*]] = call <8 x i64> @llvm.umin.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}})
10065 // CHECK: select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
10066 return _mm512_mask_min_epu64 (__W
,__M
,__A
,__B
);
10069 __m512i
test_mm512_maskz_min_epu64 (__mmask8 __M
, __m512i __A
, __m512i __B
)
10071 // CHECK-LABEL: @test_mm512_maskz_min_epu64
10072 // CHECK: [[RES:%.*]] = call <8 x i64> @llvm.umin.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}})
10073 // CHECK: select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
10074 return _mm512_maskz_min_epu64 (__M
,__A
,__B
);
10077 __m512i
test_mm512_mask_set1_epi32 (__m512i __O
, __mmask16 __M
, int __A
)
10079 // CHECK-LABEL: @test_mm512_mask_set1_epi32
10080 // CHECK: insertelement <16 x i32> undef, i32 %{{.*}}, i32 0
10081 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 1
10082 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 2
10083 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 3
10084 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 4
10085 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 5
10086 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 6
10087 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 7
10088 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 8
10089 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 9
10090 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 10
10091 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 11
10092 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 12
10093 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 13
10094 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 14
10095 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 15
10096 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
10097 return _mm512_mask_set1_epi32 ( __O
, __M
, __A
);
10100 __m512i
test_mm512_maskz_set1_epi32(__mmask16 __M
, int __A
)
10102 // CHECK-LABEL: @test_mm512_maskz_set1_epi32
10103 // CHECK: insertelement <16 x i32> undef, i32 %{{.*}}, i32 0
10104 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 1
10105 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 2
10106 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 3
10107 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 4
10108 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 5
10109 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 6
10110 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 7
10111 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 8
10112 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 9
10113 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 10
10114 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 11
10115 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 12
10116 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 13
10117 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 14
10118 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 15
10119 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
10120 return _mm512_maskz_set1_epi32(__M
, __A
);
10124 __m512i
test_mm512_set_epi8(char e63
, char e62
, char e61
, char e60
, char e59
,
10125 char e58
, char e57
, char e56
, char e55
, char e54
, char e53
, char e52
,
10126 char e51
, char e50
, char e49
, char e48
, char e47
, char e46
, char e45
,
10127 char e44
, char e43
, char e42
, char e41
, char e40
, char e39
, char e38
,
10128 char e37
, char e36
, char e35
, char e34
, char e33
, char e32
, char e31
,
10129 char e30
, char e29
, char e28
, char e27
, char e26
, char e25
, char e24
,
10130 char e23
, char e22
, char e21
, char e20
, char e19
, char e18
, char e17
,
10131 char e16
, char e15
, char e14
, char e13
, char e12
, char e11
, char e10
,
10132 char e9
, char e8
, char e7
, char e6
, char e5
, char e4
, char e3
, char e2
,
10133 char e1
, char e0
) {
10135 //CHECK-LABEL: @test_mm512_set_epi8
10136 //CHECK: load i8, ptr %{{.*}}, align 1
10137 //CHECK: load i8, ptr %{{.*}}, align 1
10138 //CHECK: load i8, ptr %{{.*}}, align 1
10139 //CHECK: load i8, ptr %{{.*}}, align 1
10140 //CHECK: load i8, ptr %{{.*}}, align 1
10141 //CHECK: load i8, ptr %{{.*}}, align 1
10142 //CHECK: load i8, ptr %{{.*}}, align 1
10143 //CHECK: load i8, ptr %{{.*}}, align 1
10144 //CHECK: load i8, ptr %{{.*}}, align 1
10145 //CHECK: load i8, ptr %{{.*}}, align 1
10146 //CHECK: load i8, ptr %{{.*}}, align 1
10147 //CHECK: load i8, ptr %{{.*}}, align 1
10148 //CHECK: load i8, ptr %{{.*}}, align 1
10149 //CHECK: load i8, ptr %{{.*}}, align 1
10150 //CHECK: load i8, ptr %{{.*}}, align 1
10151 //CHECK: load i8, ptr %{{.*}}, align 1
10152 //CHECK: load i8, ptr %{{.*}}, align 1
10153 //CHECK: load i8, ptr %{{.*}}, align 1
10154 //CHECK: load i8, ptr %{{.*}}, align 1
10155 //CHECK: load i8, ptr %{{.*}}, align 1
10156 //CHECK: load i8, ptr %{{.*}}, align 1
10157 //CHECK: load i8, ptr %{{.*}}, align 1
10158 //CHECK: load i8, ptr %{{.*}}, align 1
10159 //CHECK: load i8, ptr %{{.*}}, align 1
10160 //CHECK: load i8, ptr %{{.*}}, align 1
10161 //CHECK: load i8, ptr %{{.*}}, align 1
10162 //CHECK: load i8, ptr %{{.*}}, align 1
10163 //CHECK: load i8, ptr %{{.*}}, align 1
10164 //CHECK: load i8, ptr %{{.*}}, align 1
10165 //CHECK: load i8, ptr %{{.*}}, align 1
10166 //CHECK: load i8, ptr %{{.*}}, align 1
10167 //CHECK: load i8, ptr %{{.*}}, align 1
10168 //CHECK: load i8, ptr %{{.*}}, align 1
10169 //CHECK: load i8, ptr %{{.*}}, align 1
10170 //CHECK: load i8, ptr %{{.*}}, align 1
10171 //CHECK: load i8, ptr %{{.*}}, align 1
10172 //CHECK: load i8, ptr %{{.*}}, align 1
10173 //CHECK: load i8, ptr %{{.*}}, align 1
10174 //CHECK: load i8, ptr %{{.*}}, align 1
10175 //CHECK: load i8, ptr %{{.*}}, align 1
10176 //CHECK: load i8, ptr %{{.*}}, align 1
10177 //CHECK: load i8, ptr %{{.*}}, align 1
10178 //CHECK: load i8, ptr %{{.*}}, align 1
10179 //CHECK: load i8, ptr %{{.*}}, align 1
10180 //CHECK: load i8, ptr %{{.*}}, align 1
10181 //CHECK: load i8, ptr %{{.*}}, align 1
10182 //CHECK: load i8, ptr %{{.*}}, align 1
10183 //CHECK: load i8, ptr %{{.*}}, align 1
10184 //CHECK: load i8, ptr %{{.*}}, align 1
10185 //CHECK: load i8, ptr %{{.*}}, align 1
10186 //CHECK: load i8, ptr %{{.*}}, align 1
10187 //CHECK: load i8, ptr %{{.*}}, align 1
10188 //CHECK: load i8, ptr %{{.*}}, align 1
10189 //CHECK: load i8, ptr %{{.*}}, align 1
10190 //CHECK: load i8, ptr %{{.*}}, align 1
10191 //CHECK: load i8, ptr %{{.*}}, align 1
10192 //CHECK: load i8, ptr %{{.*}}, align 1
10193 //CHECK: load i8, ptr %{{.*}}, align 1
10194 //CHECK: load i8, ptr %{{.*}}, align 1
10195 //CHECK: load i8, ptr %{{.*}}, align 1
10196 //CHECK: load i8, ptr %{{.*}}, align 1
10197 //CHECK: load i8, ptr %{{.*}}, align 1
10198 //CHECK: load i8, ptr %{{.*}}, align 1
10199 //CHECK: load i8, ptr %{{.*}}, align 1
10200 return _mm512_set_epi8(e63
, e62
, e61
, e60
, e59
, e58
, e57
, e56
, e55
, e54
,
10201 e53
, e52
, e51
, e50
, e49
, e48
,e47
, e46
, e45
, e44
, e43
, e42
, e41
, e40
,
10202 e39
, e38
, e37
, e36
, e35
, e34
, e33
, e32
,e31
, e30
, e29
, e28
, e27
, e26
,
10203 e25
, e24
, e23
, e22
, e21
, e20
, e19
, e18
, e17
, e16
, e15
, e14
, e13
, e12
,
10204 e11
, e10
, e9
, e8
, e7
, e6
, e5
, e4
, e3
, e2
, e1
, e0
);
10207 __m512i
test_mm512_set_epi16(short e31
, short e30
, short e29
, short e28
,
10208 short e27
, short e26
, short e25
, short e24
, short e23
, short e22
,
10209 short e21
, short e20
, short e19
, short e18
, short e17
,
10210 short e16
, short e15
, short e14
, short e13
, short e12
,
10211 short e11
, short e10
, short e9
, short e8
, short e7
,
10212 short e6
, short e5
, short e4
, short e3
, short e2
, short e1
, short e0
) {
10213 //CHECK-LABEL: @test_mm512_set_epi16
10214 //CHECK: insertelement{{.*}}i32 0
10215 //CHECK: insertelement{{.*}}i32 1
10216 //CHECK: insertelement{{.*}}i32 2
10217 //CHECK: insertelement{{.*}}i32 3
10218 //CHECK: insertelement{{.*}}i32 4
10219 //CHECK: insertelement{{.*}}i32 5
10220 //CHECK: insertelement{{.*}}i32 6
10221 //CHECK: insertelement{{.*}}i32 7
10222 //CHECK: insertelement{{.*}}i32 8
10223 //CHECK: insertelement{{.*}}i32 9
10224 //CHECK: insertelement{{.*}}i32 10
10225 //CHECK: insertelement{{.*}}i32 11
10226 //CHECK: insertelement{{.*}}i32 12
10227 //CHECK: insertelement{{.*}}i32 13
10228 //CHECK: insertelement{{.*}}i32 14
10229 //CHECK: insertelement{{.*}}i32 15
10230 //CHECK: insertelement{{.*}}i32 16
10231 //CHECK: insertelement{{.*}}i32 17
10232 //CHECK: insertelement{{.*}}i32 18
10233 //CHECK: insertelement{{.*}}i32 19
10234 //CHECK: insertelement{{.*}}i32 20
10235 //CHECK: insertelement{{.*}}i32 21
10236 //CHECK: insertelement{{.*}}i32 22
10237 //CHECK: insertelement{{.*}}i32 23
10238 //CHECK: insertelement{{.*}}i32 24
10239 //CHECK: insertelement{{.*}}i32 25
10240 //CHECK: insertelement{{.*}}i32 26
10241 //CHECK: insertelement{{.*}}i32 27
10242 //CHECK: insertelement{{.*}}i32 28
10243 //CHECK: insertelement{{.*}}i32 29
10244 //CHECK: insertelement{{.*}}i32 30
10245 //CHECK: insertelement{{.*}}i32 31
10246 return _mm512_set_epi16(e31
, e30
, e29
, e28
, e27
, e26
, e25
, e24
, e23
, e22
,
10247 e21
, e20
, e19
, e18
, e17
, e16
, e15
, e14
, e13
, e12
, e11
, e10
, e9
, e8
, e7
,
10248 e6
, e5
, e4
, e3
, e2
, e1
, e0
);
10251 __m512i
test_mm512_set_epi32 (int __A
, int __B
, int __C
, int __D
,
10252 int __E
, int __F
, int __G
, int __H
,
10253 int __I
, int __J
, int __K
, int __L
,
10254 int __M
, int __N
, int __O
, int __P
)
10256 //CHECK-LABEL: @test_mm512_set_epi32
10257 //CHECK: insertelement{{.*}}i32 0
10258 //CHECK: insertelement{{.*}}i32 1
10259 //CHECK: insertelement{{.*}}i32 2
10260 //CHECK: insertelement{{.*}}i32 3
10261 //CHECK: insertelement{{.*}}i32 4
10262 //CHECK: insertelement{{.*}}i32 5
10263 //CHECK: insertelement{{.*}}i32 6
10264 //CHECK: insertelement{{.*}}i32 7
10265 //CHECK: insertelement{{.*}}i32 8
10266 //CHECK: insertelement{{.*}}i32 9
10267 //CHECK: insertelement{{.*}}i32 10
10268 //CHECK: insertelement{{.*}}i32 11
10269 //CHECK: insertelement{{.*}}i32 12
10270 //CHECK: insertelement{{.*}}i32 13
10271 //CHECK: insertelement{{.*}}i32 14
10272 //CHECK: insertelement{{.*}}i32 15
10273 return _mm512_set_epi32( __A
, __B
, __C
, __D
,__E
, __F
, __G
, __H
,
10274 __I
, __J
, __K
, __L
,__M
, __N
, __O
, __P
);
10277 __m512i
test_mm512_setr_epi32 (int __A
, int __B
, int __C
, int __D
,
10278 int __E
, int __F
, int __G
, int __H
,
10279 int __I
, int __J
, int __K
, int __L
,
10280 int __M
, int __N
, int __O
, int __P
)
10282 //CHECK-LABEL: @test_mm512_setr_epi32
10283 //CHECK: load{{.*}}%{{.*}}, align 4
10284 //CHECK: load{{.*}}%{{.*}}, align 4
10285 //CHECK: load{{.*}}%{{.*}}, align 4
10286 //CHECK: load{{.*}}%{{.*}}, align 4
10287 //CHECK: load{{.*}}%{{.*}}, align 4
10288 //CHECK: load{{.*}}%{{.*}}, align 4
10289 //CHECK: load{{.*}}%{{.*}}, align 4
10290 //CHECK: load{{.*}}%{{.*}}, align 4
10291 //CHECK: load{{.*}}%{{.*}}, align 4
10292 //CHECK: load{{.*}}%{{.*}}, align 4
10293 //CHECK: load{{.*}}%{{.*}}, align 4
10294 //CHECK: load{{.*}}%{{.*}}, align 4
10295 //CHECK: load{{.*}}%{{.*}}, align 4
10296 //CHECK: load{{.*}}%{{.*}}, align 4
10297 //CHECK: load{{.*}}%{{.*}}, align 4
10298 //CHECK: load{{.*}}%{{.*}}, align 4
10299 //CHECK: insertelement{{.*}}i32 0
10300 //CHECK: insertelement{{.*}}i32 1
10301 //CHECK: insertelement{{.*}}i32 2
10302 //CHECK: insertelement{{.*}}i32 3
10303 //CHECK: insertelement{{.*}}i32 4
10304 //CHECK: insertelement{{.*}}i32 5
10305 //CHECK: insertelement{{.*}}i32 6
10306 //CHECK: insertelement{{.*}}i32 7
10307 //CHECK: insertelement{{.*}}i32 8
10308 //CHECK: insertelement{{.*}}i32 9
10309 //CHECK: insertelement{{.*}}i32 10
10310 //CHECK: insertelement{{.*}}i32 11
10311 //CHECK: insertelement{{.*}}i32 12
10312 //CHECK: insertelement{{.*}}i32 13
10313 //CHECK: insertelement{{.*}}i32 14
10314 //CHECK: insertelement{{.*}}i32 15
10315 return _mm512_setr_epi32( __A
, __B
, __C
, __D
,__E
, __F
, __G
, __H
,
10316 __I
, __J
, __K
, __L
,__M
, __N
, __O
, __P
);
10319 __m512i
test_mm512_mask_set1_epi64 (__m512i __O
, __mmask8 __M
, long long __A
)
10321 // CHECK-LABEL: @test_mm512_mask_set1_epi64
10322 // CHECK: insertelement <8 x i64> undef, i64 %{{.*}}, i32 0
10323 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 1
10324 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 2
10325 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 3
10326 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 4
10327 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 5
10328 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 6
10329 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 7
10330 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
10331 return _mm512_mask_set1_epi64 (__O
, __M
, __A
);
10334 __m512i
test_mm512_maskz_set1_epi64 (__mmask8 __M
, long long __A
)
10336 // CHECK-LABEL: @test_mm512_maskz_set1_epi64
10337 // CHECK: insertelement <8 x i64> undef, i64 %{{.*}}, i32 0
10338 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 1
10339 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 2
10340 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 3
10341 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 4
10342 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 5
10343 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 6
10344 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 7
10345 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
10346 return _mm512_maskz_set1_epi64 (__M
, __A
);
10350 __m512i
test_mm512_set_epi64 (long long __A
, long long __B
, long long __C
,
10351 long long __D
, long long __E
, long long __F
,
10352 long long __G
, long long __H
)
10354 //CHECK-LABEL: @test_mm512_set_epi64
10355 //CHECK: insertelement{{.*}}i32 0
10356 //CHECK: insertelement{{.*}}i32 1
10357 //CHECK: insertelement{{.*}}i32 2
10358 //CHECK: insertelement{{.*}}i32 3
10359 //CHECK: insertelement{{.*}}i32 4
10360 //CHECK: insertelement{{.*}}i32 5
10361 //CHECK: insertelement{{.*}}i32 6
10362 //CHECK: insertelement{{.*}}i32 7
10363 return _mm512_set_epi64(__A
, __B
, __C
, __D
, __E
, __F
, __G
, __H
);
10366 __m512i
test_mm512_setr_epi64 (long long __A
, long long __B
, long long __C
,
10367 long long __D
, long long __E
, long long __F
,
10368 long long __G
, long long __H
)
10370 //CHECK-LABEL: @test_mm512_setr_epi64
10371 //CHECK: load{{.*}}%{{.*}}, align 8
10372 //CHECK: load{{.*}}%{{.*}}, align 8
10373 //CHECK: load{{.*}}%{{.*}}, align 8
10374 //CHECK: load{{.*}}%{{.*}}, align 8
10375 //CHECK: load{{.*}}%{{.*}}, align 8
10376 //CHECK: load{{.*}}%{{.*}}, align 8
10377 //CHECK: load{{.*}}%{{.*}}, align 8
10378 //CHECK: load{{.*}}%{{.*}}, align 8
10379 //CHECK: insertelement{{.*}}i32 0
10380 //CHECK: insertelement{{.*}}i32 1
10381 //CHECK: insertelement{{.*}}i32 2
10382 //CHECK: insertelement{{.*}}i32 3
10383 //CHECK: insertelement{{.*}}i32 4
10384 //CHECK: insertelement{{.*}}i32 5
10385 //CHECK: insertelement{{.*}}i32 6
10386 //CHECK: insertelement{{.*}}i32 7
10387 return _mm512_setr_epi64(__A
, __B
, __C
, __D
, __E
, __F
, __G
, __H
);
10390 __m512d
test_mm512_set_pd (double __A
, double __B
, double __C
, double __D
,
10391 double __E
, double __F
, double __G
, double __H
)
10393 //CHECK-LABEL: @test_mm512_set_pd
10394 //CHECK: insertelement{{.*}}i32 0
10395 //CHECK: insertelement{{.*}}i32 1
10396 //CHECK: insertelement{{.*}}i32 2
10397 //CHECK: insertelement{{.*}}i32 3
10398 //CHECK: insertelement{{.*}}i32 4
10399 //CHECK: insertelement{{.*}}i32 5
10400 //CHECK: insertelement{{.*}}i32 6
10401 //CHECK: insertelement{{.*}}i32 7
10402 return _mm512_set_pd( __A
, __B
, __C
, __D
, __E
, __F
, __G
, __H
);
10405 __m512d
test_mm512_setr_pd (double __A
, double __B
, double __C
, double __D
,
10406 double __E
, double __F
, double __G
, double __H
)
10408 //CHECK-LABEL: @test_mm512_setr_pd
10409 //CHECK: load{{.*}}%{{.*}}, align 8
10410 //CHECK: load{{.*}}%{{.*}}, align 8
10411 //CHECK: load{{.*}}%{{.*}}, align 8
10412 //CHECK: load{{.*}}%{{.*}}, align 8
10413 //CHECK: load{{.*}}%{{.*}}, align 8
10414 //CHECK: load{{.*}}%{{.*}}, align 8
10415 //CHECK: load{{.*}}%{{.*}}, align 8
10416 //CHECK: load{{.*}}%{{.*}}, align 8
10417 //CHECK: insertelement{{.*}}i32 0
10418 //CHECK: insertelement{{.*}}i32 1
10419 //CHECK: insertelement{{.*}}i32 2
10420 //CHECK: insertelement{{.*}}i32 3
10421 //CHECK: insertelement{{.*}}i32 4
10422 //CHECK: insertelement{{.*}}i32 5
10423 //CHECK: insertelement{{.*}}i32 6
10424 //CHECK: insertelement{{.*}}i32 7
10425 return _mm512_setr_pd( __A
, __B
, __C
, __D
, __E
, __F
, __G
, __H
);
10428 __m512
test_mm512_set_ps (float __A
, float __B
, float __C
, float __D
,
10429 float __E
, float __F
, float __G
, float __H
,
10430 float __I
, float __J
, float __K
, float __L
,
10431 float __M
, float __N
, float __O
, float __P
)
10433 //CHECK-LABEL: @test_mm512_set_ps
10434 //CHECK: insertelement{{.*}}i32 0
10435 //CHECK: insertelement{{.*}}i32 1
10436 //CHECK: insertelement{{.*}}i32 2
10437 //CHECK: insertelement{{.*}}i32 3
10438 //CHECK: insertelement{{.*}}i32 4
10439 //CHECK: insertelement{{.*}}i32 5
10440 //CHECK: insertelement{{.*}}i32 6
10441 //CHECK: insertelement{{.*}}i32 7
10442 //CHECK: insertelement{{.*}}i32 8
10443 //CHECK: insertelement{{.*}}i32 9
10444 //CHECK: insertelement{{.*}}i32 10
10445 //CHECK: insertelement{{.*}}i32 11
10446 //CHECK: insertelement{{.*}}i32 12
10447 //CHECK: insertelement{{.*}}i32 13
10448 //CHECK: insertelement{{.*}}i32 14
10449 //CHECK: insertelement{{.*}}i32 15
10450 return _mm512_set_ps( __A
, __B
, __C
, __D
, __E
, __F
, __G
, __H
,
10451 __I
, __J
, __K
, __L
, __M
, __N
, __O
, __P
);
10454 __m512i
test_mm512_mask_abs_epi64 (__m512i __W
, __mmask8 __U
, __m512i __A
)
10456 // CHECK-LABEL: @test_mm512_mask_abs_epi64
10457 // CHECK: [[ABS:%.*]] = call <8 x i64> @llvm.abs.v8i64(<8 x i64> %{{.*}}, i1 false)
10458 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> [[ABS]], <8 x i64> %{{.*}}
10459 return _mm512_mask_abs_epi64 (__W
,__U
,__A
);
10462 __m512i
test_mm512_maskz_abs_epi64 (__mmask8 __U
, __m512i __A
)
10464 // CHECK-LABEL: @test_mm512_maskz_abs_epi64
10465 // CHECK: [[ABS:%.*]] = call <8 x i64> @llvm.abs.v8i64(<8 x i64> %{{.*}}, i1 false)
10466 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> [[ABS]], <8 x i64> %{{.*}}
10467 return _mm512_maskz_abs_epi64 (__U
,__A
);
10470 __m512i
test_mm512_mask_abs_epi32 (__m512i __W
, __mmask16 __U
, __m512i __A
)
10472 // CHECK-LABEL: @test_mm512_mask_abs_epi32
10473 // CHECK: [[ABS:%.*]] = call <16 x i32> @llvm.abs.v16i32(<16 x i32> %{{.*}}, i1 false)
10474 // CHECK: [[TMP:%.*]] = bitcast <16 x i32> [[ABS]] to <8 x i64>
10475 // CHECK: [[ABS:%.*]] = bitcast <8 x i64> [[TMP]] to <16 x i32>
10476 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> [[ABS]], <16 x i32> %{{.*}}
10477 return _mm512_mask_abs_epi32 (__W
,__U
,__A
);
10480 __m512i
test_mm512_maskz_abs_epi32 (__mmask16 __U
, __m512i __A
)
10482 // CHECK-LABEL: @test_mm512_maskz_abs_epi32
10483 // CHECK: [[ABS:%.*]] = call <16 x i32> @llvm.abs.v16i32(<16 x i32> %{{.*}}, i1 false)
10484 // CHECK: [[TMP:%.*]] = bitcast <16 x i32> [[ABS]] to <8 x i64>
10485 // CHECK: [[ABS:%.*]] = bitcast <8 x i64> [[TMP]] to <16 x i32>
10486 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> [[ABS]], <16 x i32> %{{.*}}
10487 return _mm512_maskz_abs_epi32 (__U
,__A
);
10490 __m512
test_mm512_setr_ps (float __A
, float __B
, float __C
, float __D
,
10491 float __E
, float __F
, float __G
, float __H
,
10492 float __I
, float __J
, float __K
, float __L
,
10493 float __M
, float __N
, float __O
, float __P
)
10495 //CHECK-LABEL: @test_mm512_setr_ps
10496 //CHECK: load{{.*}}%{{.*}}, align 4
10497 //CHECK: load{{.*}}%{{.*}}, align 4
10498 //CHECK: load{{.*}}%{{.*}}, align 4
10499 //CHECK: load{{.*}}%{{.*}}, align 4
10500 //CHECK: load{{.*}}%{{.*}}, align 4
10501 //CHECK: load{{.*}}%{{.*}}, align 4
10502 //CHECK: load{{.*}}%{{.*}}, align 4
10503 //CHECK: load{{.*}}%{{.*}}, align 4
10504 //CHECK: load{{.*}}%{{.*}}, align 4
10505 //CHECK: load{{.*}}%{{.*}}, align 4
10506 //CHECK: load{{.*}}%{{.*}}, align 4
10507 //CHECK: load{{.*}}%{{.*}}, align 4
10508 //CHECK: load{{.*}}%{{.*}}, align 4
10509 //CHECK: load{{.*}}%{{.*}}, align 4
10510 //CHECK: load{{.*}}%{{.*}}, align 4
10511 //CHECK: load{{.*}}%{{.*}}, align 4
10512 //CHECK: insertelement{{.*}}i32 0
10513 //CHECK: insertelement{{.*}}i32 1
10514 //CHECK: insertelement{{.*}}i32 2
10515 //CHECK: insertelement{{.*}}i32 3
10516 //CHECK: insertelement{{.*}}i32 4
10517 //CHECK: insertelement{{.*}}i32 5
10518 //CHECK: insertelement{{.*}}i32 6
10519 //CHECK: insertelement{{.*}}i32 7
10520 //CHECK: insertelement{{.*}}i32 8
10521 //CHECK: insertelement{{.*}}i32 9
10522 //CHECK: insertelement{{.*}}i32 10
10523 //CHECK: insertelement{{.*}}i32 11
10524 //CHECK: insertelement{{.*}}i32 12
10525 //CHECK: insertelement{{.*}}i32 13
10526 //CHECK: insertelement{{.*}}i32 14
10527 //CHECK: insertelement{{.*}}i32 15
10528 return _mm512_setr_ps( __A
, __B
, __C
, __D
, __E
, __F
, __G
, __H
,
10529 __I
, __J
, __K
, __L
, __M
, __N
, __O
, __P
);
10532 int test_mm_cvtss_i32(__m128 A
) {
10533 // CHECK-LABEL: test_mm_cvtss_i32
10534 // CHECK: call i32 @llvm.x86.sse.cvtss2si(<4 x float> %{{.*}})
10535 return _mm_cvtss_i32(A
);
10539 long long test_mm_cvtss_i64(__m128 A
) {
10540 // CHECK-LABEL: test_mm_cvtss_i64
10541 // CHECK: call i64 @llvm.x86.sse.cvtss2si64(<4 x float> %{{.*}})
10542 return _mm_cvtss_i64(A
);
10546 __m128d
test_mm_cvti32_sd(__m128d A
, int B
) {
10547 // CHECK-LABEL: test_mm_cvti32_sd
10548 // CHECK: sitofp i32 %{{.*}} to double
10549 // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
10550 return _mm_cvti32_sd(A
, B
);
10554 __m128d
test_mm_cvti64_sd(__m128d A
, long long B
) {
10555 // CHECK-LABEL: test_mm_cvti64_sd
10556 // CHECK: sitofp i64 %{{.*}} to double
10557 // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
10558 return _mm_cvti64_sd(A
, B
);
10562 __m128
test_mm_cvti32_ss(__m128 A
, int B
) {
10563 // CHECK-LABEL: test_mm_cvti32_ss
10564 // CHECK: sitofp i32 %{{.*}} to float
10565 // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
10566 return _mm_cvti32_ss(A
, B
);
10570 __m128
test_mm_cvti64_ss(__m128 A
, long long B
) {
10571 // CHECK-LABEL: test_mm_cvti64_ss
10572 // CHECK: sitofp i64 %{{.*}} to float
10573 // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
10574 return _mm_cvti64_ss(A
, B
);
10578 int test_mm_cvtsd_i32(__m128d A
) {
10579 // CHECK-LABEL: test_mm_cvtsd_i32
10580 // CHECK: call i32 @llvm.x86.sse2.cvtsd2si(<2 x double> %{{.*}})
10581 return _mm_cvtsd_i32(A
);
10585 long long test_mm_cvtsd_i64(__m128d A
) {
10586 // CHECK-LABEL: test_mm_cvtsd_i64
10587 // CHECK: call i64 @llvm.x86.sse2.cvtsd2si64(<2 x double> %{{.*}})
10588 return _mm_cvtsd_i64(A
);
10592 __m128d
test_mm_mask_cvtss_sd(__m128d __W
, __mmask8 __U
, __m128d __A
, __m128 __B
) {
10593 // CHECK-LABEL: @test_mm_mask_cvtss_sd
10594 // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
10595 return _mm_mask_cvtss_sd(__W
, __U
, __A
, __B
);
10598 __m128d
test_mm_maskz_cvtss_sd( __mmask8 __U
, __m128d __A
, __m128 __B
) {
10599 // CHECK-LABEL: @test_mm_maskz_cvtss_sd
10600 // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
10601 return _mm_maskz_cvtss_sd( __U
, __A
, __B
);
10604 __m128
test_mm_mask_cvtsd_ss(__m128 __W
, __mmask8 __U
, __m128 __A
, __m128d __B
) {
10605 // CHECK-LABEL: @test_mm_mask_cvtsd_ss
10606 // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
10607 return _mm_mask_cvtsd_ss(__W
, __U
, __A
, __B
);
10610 __m128
test_mm_maskz_cvtsd_ss(__mmask8 __U
, __m128 __A
, __m128d __B
) {
10611 // CHECK-LABEL: @test_mm_maskz_cvtsd_ss
10612 // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
10613 return _mm_maskz_cvtsd_ss(__U
, __A
, __B
);
10617 __m512i
test_mm512_setzero_epi32(void)
10619 // CHECK-LABEL: @test_mm512_setzero_epi32
10620 // CHECK: zeroinitializer
10621 return _mm512_setzero_epi32();
10624 __m512
test_mm512_setzero(void)
10626 // CHECK-LABEL: @test_mm512_setzero
10627 // CHECK: zeroinitializer
10628 return _mm512_setzero();
10631 __m512i
test_mm512_setzero_si512(void)
10633 // CHECK-LABEL: @test_mm512_setzero_si512
10634 // CHECK: zeroinitializer
10635 return _mm512_setzero_si512();
10638 __m512
test_mm512_setzero_ps(void)
10640 // CHECK-LABEL: @test_mm512_setzero_ps
10641 // CHECK: zeroinitializer
10642 return _mm512_setzero_ps();
10645 __m512d
test_mm512_setzero_pd(void)
10647 // CHECK-LABEL: @test_mm512_setzero_pd
10648 // CHECK: zeroinitializer
10649 return _mm512_setzero_pd();
10652 __mmask16
test_mm512_int2mask(int __a
)
10654 // CHECK-LABEL: test_mm512_int2mask
10655 // CHECK: trunc i32 %{{.*}} to i16
10656 return _mm512_int2mask(__a
);
10659 int test_mm512_mask2int(__mmask16 __a
)
10661 // CHECK-LABEL: test_mm512_mask2int
10662 // CHECK: zext i16 %{{.*}} to i32
10663 return _mm512_mask2int(__a
);
10666 __m128
test_mm_mask_move_ss (__m128 __W
, __mmask8 __U
, __m128 __A
, __m128 __B
)
10668 // CHECK-LABEL: @test_mm_mask_move_ss
10669 // CHECK: [[EXT:%.*]] = extractelement <4 x float> %{{.*}}, i32 0
10670 // CHECK: insertelement <4 x float> %{{.*}}, float [[EXT]], i32 0
10671 // CHECK: [[A:%.*]] = extractelement <4 x float> [[VEC:%.*]], i64 0
10672 // CHECK-NEXT: [[B:%.*]] = extractelement <4 x float> %{{.*}}, i64 0
10673 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
10674 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
10675 // CHECK-NEXT: [[SEL:%.*]] = select i1 %{{.*}}, float [[A]], float [[B]]
10676 // CHECK-NEXT: insertelement <4 x float> [[VEC]], float [[SEL]], i64 0
10677 return _mm_mask_move_ss ( __W
, __U
, __A
, __B
);
10680 __m128
test_mm_maskz_move_ss (__mmask8 __U
, __m128 __A
, __m128 __B
)
10682 // CHECK-LABEL: @test_mm_maskz_move_ss
10683 // CHECK: [[EXT:%.*]] = extractelement <4 x float> %{{.*}}, i32 0
10684 // CHECK: insertelement <4 x float> %{{.*}}, float [[EXT]], i32 0
10685 // CHECK: [[A:%.*]] = extractelement <4 x float> [[VEC:%.*]], i64 0
10686 // CHECK-NEXT: [[B:%.*]] = extractelement <4 x float> %{{.*}}, i64 0
10687 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
10688 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
10689 // CHECK-NEXT: [[SEL:%.*]] = select i1 %{{.*}}, float [[A]], float [[B]]
10690 // CHECK-NEXT: insertelement <4 x float> [[VEC]], float [[SEL]], i64 0
10691 return _mm_maskz_move_ss (__U
, __A
, __B
);
10694 __m128d
test_mm_mask_move_sd (__m128d __W
, __mmask8 __U
, __m128d __A
, __m128d __B
)
10696 // CHECK-LABEL: @test_mm_mask_move_sd
10697 // CHECK: [[EXT:%.*]] = extractelement <2 x double> %{{.*}}, i32 0
10698 // CHECK: insertelement <2 x double> %{{.*}}, double [[EXT]], i32 0
10699 // CHECK: [[A:%.*]] = extractelement <2 x double> [[VEC:%.*]], i64 0
10700 // CHECK-NEXT: [[B:%.*]] = extractelement <2 x double> %{{.*}}, i64 0
10701 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
10702 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
10703 // CHECK-NEXT: [[SEL:%.*]] = select i1 %{{.*}}, double [[A]], double [[B]]
10704 // CHECK-NEXT: insertelement <2 x double> [[VEC]], double [[SEL]], i64 0
10705 return _mm_mask_move_sd ( __W
, __U
, __A
, __B
);
10708 __m128d
test_mm_maskz_move_sd (__mmask8 __U
, __m128d __A
, __m128d __B
)
10710 // CHECK-LABEL: @test_mm_maskz_move_sd
10711 // CHECK: [[EXT:%.*]] = extractelement <2 x double> %{{.*}}, i32 0
10712 // CHECK: insertelement <2 x double> %{{.*}}, double [[EXT]], i32 0
10713 // CHECK: [[A:%.*]] = extractelement <2 x double> [[VEC:%.*]], i64 0
10714 // CHECK-NEXT: [[B:%.*]] = extractelement <2 x double> %{{.*}}, i64 0
10715 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
10716 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
10717 // CHECK-NEXT: [[SEL:%.*]] = select i1 %13, double [[A]], double [[B]]
10718 // CHECK-NEXT: insertelement <2 x double> [[VEC]], double [[SEL]], i64 0
10719 return _mm_maskz_move_sd (__U
, __A
, __B
);
10722 void test_mm_mask_store_ss(float * __P
, __mmask8 __U
, __m128 __A
)
10724 // CHECK-LABEL: @test_mm_mask_store_ss
10725 // CHECK: call void @llvm.masked.store.v4f32.p0(<4 x float> %{{.*}}, ptr %{{.*}}, i32 1, <4 x i1> %{{.*}})
10726 _mm_mask_store_ss(__P
, __U
, __A
);
10729 void test_mm_mask_store_sd(double * __P
, __mmask8 __U
, __m128d __A
)
10731 // CHECK-LABEL: @test_mm_mask_store_sd
10732 // CHECK: call void @llvm.masked.store.v2f64.p0(<2 x double> %{{.*}}, ptr %{{.*}}, i32 1, <2 x i1> %{{.*}})
10733 _mm_mask_store_sd(__P
, __U
, __A
);
10736 __m128
test_mm_mask_load_ss(__m128 __A
, __mmask8 __U
, const float* __W
)
10738 // CHECK-LABEL: @test_mm_mask_load_ss
10739 // CHECK: call <4 x float> @llvm.masked.load.v4f32.p0(ptr %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x float> %{{.*}})
10740 return _mm_mask_load_ss(__A
, __U
, __W
);
10743 __m128
test_mm_maskz_load_ss (__mmask8 __U
, const float * __W
)
10745 // CHECK-LABEL: @test_mm_maskz_load_ss
10746 // CHECK: call <4 x float> @llvm.masked.load.v4f32.p0(ptr %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x float> %{{.*}})
10747 return _mm_maskz_load_ss (__U
, __W
);
10750 __m128d
test_mm_mask_load_sd (__m128d __A
, __mmask8 __U
, const double * __W
)
10752 // CHECK-LABEL: @test_mm_mask_load_sd
10753 // CHECK: call <2 x double> @llvm.masked.load.v2f64.p0(ptr %{{.*}}, i32 1, <2 x i1> %{{.*}}, <2 x double> %{{.*}})
10754 return _mm_mask_load_sd (__A
, __U
, __W
);
10757 __m128d
test_mm_maskz_load_sd (__mmask8 __U
, const double * __W
)
10759 // CHECK-LABEL: @test_mm_maskz_load_sd
10760 // CHECK: call <2 x double> @llvm.masked.load.v2f64.p0(ptr %{{.*}}, i32 1, <2 x i1> %{{.*}}, <2 x double> %{{.*}})
10761 return _mm_maskz_load_sd (__U
, __W
);
10764 __m512d
test_mm512_abs_pd(__m512d a
){
10765 // CHECK-LABEL: @test_mm512_abs_pd
10766 // CHECK: and <8 x i64>
10767 return _mm512_abs_pd(a
);
10770 __m512d
test_mm512_mask_abs_pd (__m512d __W
, __mmask8 __U
, __m512d __A
){
10771 // CHECK-LABEL: @test_mm512_mask_abs_pd
10772 // CHECK: %[[AND_RES:.*]] = and <8 x i64>
10773 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
10774 // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[AND_RES]], <8 x i64> %{{.*}}
10775 return _mm512_mask_abs_pd (__W
,__U
,__A
);
10778 __m512
test_mm512_abs_ps(__m512 a
){
10779 // CHECK-LABEL: @test_mm512_abs_ps
10780 // CHECK: and <16 x i32>
10781 return _mm512_abs_ps(a
);
10784 __m512
test_mm512_mask_abs_ps(__m512 __W
, __mmask16 __U
, __m512 __A
){
10785 // CHECK-LABEL: @test_mm512_mask_abs_ps
10786 // CHECK: and <16 x i32>
10787 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
10788 // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
10789 return _mm512_mask_abs_ps( __W
, __U
, __A
);
10792 __m512d
test_mm512_zextpd128_pd512(__m128d A
) {
10793 // CHECK-LABEL: test_mm512_zextpd128_pd512
10794 // CHECK: store <2 x double> zeroinitializer
10795 // 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>
10796 return _mm512_zextpd128_pd512(A
);
10799 __m512d
test_mm512_zextpd256_pd512(__m256d A
) {
10800 // CHECK-LABEL: test_mm512_zextpd256_pd512
10801 // CHECK: store <4 x double> zeroinitializer
10802 // 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>
10803 return _mm512_zextpd256_pd512(A
);
10806 __m512
test_mm512_zextps128_ps512(__m128 A
) {
10807 // CHECK-LABEL: test_mm512_zextps128_ps512
10808 // CHECK: store <4 x float> zeroinitializer
10809 // 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>
10810 return _mm512_zextps128_ps512(A
);
10813 __m512
test_mm512_zextps256_ps512(__m256 A
) {
10814 // CHECK-LABEL: test_mm512_zextps256_ps512
10815 // CHECK: store <8 x float> zeroinitializer
10816 // 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>
10817 return _mm512_zextps256_ps512(A
);
10820 __m512i
test_mm512_zextsi128_si512(__m128i A
) {
10821 // CHECK-LABEL: test_mm512_zextsi128_si512
10822 // CHECK: store <2 x i64> zeroinitializer
10823 // 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>
10824 return _mm512_zextsi128_si512(A
);
10827 __m512i
test_mm512_zextsi256_si512(__m256i A
) {
10828 // CHECK-LABEL: test_mm512_zextsi256_si512
10829 // CHECK: store <4 x i64> zeroinitializer
10830 // 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>
10831 return _mm512_zextsi256_si512(A
);
10834 __m512d
test_mm512_i32logather_pd(__m512i __index
, void const *__addr
) {
10835 // CHECK-LABEL: @test_mm512_i32logather_pd
10836 // CHECK: @llvm.x86.avx512.mask.gather.dpd.512
10837 return _mm512_i32logather_pd(__index
, __addr
, 2);
10840 __m512d
test_mm512_mask_i32logather_pd(__m512d __v1_old
, __mmask8 __mask
, __m512i __index
, void const *__addr
) {
10841 // CHECK-LABEL: @test_mm512_mask_i32logather_pd
10842 // CHECK: @llvm.x86.avx512.mask.gather.dpd.512
10843 return _mm512_mask_i32logather_pd(__v1_old
, __mask
, __index
, __addr
, 2);
10846 void test_mm512_i32loscatter_pd(void *__addr
, __m512i __index
, __m512d __v1
) {
10847 // CHECK-LABEL: @test_mm512_i32loscatter_pd
10848 // CHECK: @llvm.x86.avx512.mask.scatter.dpd.512
10849 return _mm512_i32loscatter_pd(__addr
, __index
, __v1
, 2);
10852 void test_mm512_mask_i32loscatter_pd(void *__addr
, __mmask8 __mask
, __m512i __index
, __m512d __v1
) {
10853 // CHECK-LABEL: @test_mm512_mask_i32loscatter_pd
10854 // CHECK: @llvm.x86.avx512.mask.scatter.dpd.512
10855 return _mm512_mask_i32loscatter_pd(__addr
, __mask
, __index
, __v1
, 2);
10858 __m512i
test_mm512_i32logather_epi64(__m512i __index
, void const *__addr
) {
10859 // CHECK-LABEL: @test_mm512_i32logather_epi64
10860 // CHECK: @llvm.x86.avx512.mask.gather.dpq.512
10861 return _mm512_i32logather_epi64(__index
, __addr
, 2);
10864 __m512i
test_mm512_mask_i32logather_epi64(__m512i __v1_old
, __mmask8 __mask
, __m512i __index
, void const *__addr
) {
10865 // CHECK-LABEL: @test_mm512_mask_i32logather_epi64
10866 // CHECK: @llvm.x86.avx512.mask.gather.dpq.512
10867 return _mm512_mask_i32logather_epi64(__v1_old
, __mask
, __index
, __addr
, 2);
10870 void test_mm512_i32loscatter_epi64(void *__addr
, __m512i __index
, __m512i __v1
) {
10871 // CHECK-LABEL: @test_mm512_i32loscatter_epi64
10872 // CHECK: @llvm.x86.avx512.mask.scatter.dpq.512
10873 _mm512_i32loscatter_epi64(__addr
, __index
, __v1
, 2);
10876 void test_mm512_mask_i32loscatter_epi64(void *__addr
, __mmask8 __mask
, __m512i __index
, __m512i __v1
) {
10877 // CHECK-LABEL: @test_mm512_mask_i32loscatter_epi64
10878 // CHECK: @llvm.x86.avx512.mask.scatter.dpq.512
10879 _mm512_mask_i32loscatter_epi64(__addr
, __mask
, __index
, __v1
, 2);