1 // RUN: %clang_cc1 -fexperimental-new-pass-manager -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512f -emit-llvm -o - -Wall -Werror -Wsign-conversion | FileCheck %s
2 // RUN: %clang_cc1 -fexperimental-new-pass-manager -flax-vector-conversions=none -fms-extensions -fms-compatibility -ffreestanding %s -triple=x86_64-windows-msvc -target-feature +avx512f -emit-llvm -o - -Wall -Werror -Wsign-conversion | FileCheck %s
3
4 #include <immintrin.h>
5
test_mm512_sqrt_pd(__m512d a)6 __m512d test_mm512_sqrt_pd(__m512d a)
7 {
8 // CHECK-LABEL: @test_mm512_sqrt_pd
9 // CHECK: call <8 x double> @llvm.sqrt.v8f64(<8 x double> %{{.*}})
10 return _mm512_sqrt_pd(a);
11 }
12
test_mm512_mask_sqrt_pd(__m512d __W,__mmask8 __U,__m512d __A)13 __m512d test_mm512_mask_sqrt_pd (__m512d __W, __mmask8 __U, __m512d __A)
14 {
15 // CHECK-LABEL: @test_mm512_mask_sqrt_pd
16 // CHECK: call <8 x double> @llvm.sqrt.v8f64(<8 x double> %{{.*}})
17 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
18 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
19 return _mm512_mask_sqrt_pd (__W,__U,__A);
20 }
21
test_mm512_maskz_sqrt_pd(__mmask8 __U,__m512d __A)22 __m512d test_mm512_maskz_sqrt_pd (__mmask8 __U, __m512d __A)
23 {
24 // CHECK-LABEL: @test_mm512_maskz_sqrt_pd
25 // CHECK: call <8 x double> @llvm.sqrt.v8f64(<8 x double> %{{.*}})
26 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
27 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> {{.*}}
28 return _mm512_maskz_sqrt_pd (__U,__A);
29 }
30
test_mm512_mask_sqrt_round_pd(__m512d __W,__mmask8 __U,__m512d __A)31 __m512d test_mm512_mask_sqrt_round_pd(__m512d __W,__mmask8 __U,__m512d __A)
32 {
33 // CHECK-LABEL: @test_mm512_mask_sqrt_round_pd
34 // CHECK: call <8 x double> @llvm.x86.avx512.sqrt.pd.512(<8 x double> %{{.*}}, i32 11)
35 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
36 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
37 return _mm512_mask_sqrt_round_pd(__W,__U,__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
38 }
39
test_mm512_maskz_sqrt_round_pd(__mmask8 __U,__m512d __A)40 __m512d test_mm512_maskz_sqrt_round_pd(__mmask8 __U,__m512d __A)
41 {
42 // CHECK-LABEL: @test_mm512_maskz_sqrt_round_pd
43 // CHECK: call <8 x double> @llvm.x86.avx512.sqrt.pd.512(<8 x double> %{{.*}}, i32 11)
44 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
45 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> {{.*}}
46 return _mm512_maskz_sqrt_round_pd(__U,__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
47 }
48
test_mm512_sqrt_round_pd(__m512d __A)49 __m512d test_mm512_sqrt_round_pd(__m512d __A)
50 {
51 // CHECK-LABEL: @test_mm512_sqrt_round_pd
52 // CHECK: call <8 x double> @llvm.x86.avx512.sqrt.pd.512(<8 x double> %{{.*}}, i32 11)
53 return _mm512_sqrt_round_pd(__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
54 }
55
test_mm512_sqrt_ps(__m512 a)56 __m512 test_mm512_sqrt_ps(__m512 a)
57 {
58 // CHECK-LABEL: @test_mm512_sqrt_ps
59 // CHECK: call <16 x float> @llvm.sqrt.v16f32(<16 x float> %{{.*}})
60 return _mm512_sqrt_ps(a);
61 }
62
test_mm512_mask_sqrt_ps(__m512 __W,__mmask16 __U,__m512 __A)63 __m512 test_mm512_mask_sqrt_ps(__m512 __W, __mmask16 __U, __m512 __A)
64 {
65 // CHECK-LABEL: @test_mm512_mask_sqrt_ps
66 // CHECK: call <16 x float> @llvm.sqrt.v16f32(<16 x float> %{{.*}})
67 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
68 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
69 return _mm512_mask_sqrt_ps( __W, __U, __A);
70 }
71
test_mm512_maskz_sqrt_ps(__mmask16 __U,__m512 __A)72 __m512 test_mm512_maskz_sqrt_ps( __mmask16 __U, __m512 __A)
73 {
74 // CHECK-LABEL: @test_mm512_maskz_sqrt_ps
75 // CHECK: call <16 x float> @llvm.sqrt.v16f32(<16 x float> %{{.*}})
76 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
77 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> {{.*}}
78 return _mm512_maskz_sqrt_ps(__U ,__A);
79 }
80
test_mm512_mask_sqrt_round_ps(__m512 __W,__mmask16 __U,__m512 __A)81 __m512 test_mm512_mask_sqrt_round_ps(__m512 __W,__mmask16 __U,__m512 __A)
82 {
83 // CHECK-LABEL: @test_mm512_mask_sqrt_round_ps
84 // CHECK: call <16 x float> @llvm.x86.avx512.sqrt.ps.512(<16 x float> %{{.*}}, i32 11)
85 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
86 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
87 return _mm512_mask_sqrt_round_ps(__W,__U,__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
88 }
89
test_mm512_maskz_sqrt_round_ps(__mmask16 __U,__m512 __A)90 __m512 test_mm512_maskz_sqrt_round_ps(__mmask16 __U,__m512 __A)
91 {
92 // CHECK-LABEL: @test_mm512_maskz_sqrt_round_ps
93 // CHECK: call <16 x float> @llvm.x86.avx512.sqrt.ps.512(<16 x float> %{{.*}}, i32 11)
94 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
95 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> {{.*}}
96 return _mm512_maskz_sqrt_round_ps(__U,__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
97 }
98
test_mm512_sqrt_round_ps(__m512 __A)99 __m512 test_mm512_sqrt_round_ps(__m512 __A)
100 {
101 // CHECK-LABEL: @test_mm512_sqrt_round_ps
102 // CHECK: call <16 x float> @llvm.x86.avx512.sqrt.ps.512(<16 x float> %{{.*}}, i32 11)
103 return _mm512_sqrt_round_ps(__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
104 }
105
test_mm512_rsqrt14_pd(__m512d a)106 __m512d test_mm512_rsqrt14_pd(__m512d a)
107 {
108 // CHECK-LABEL: @test_mm512_rsqrt14_pd
109 // CHECK: @llvm.x86.avx512.rsqrt14.pd.512
110 return _mm512_rsqrt14_pd(a);
111 }
112
test_mm512_mask_rsqrt14_pd(__m512d __W,__mmask8 __U,__m512d __A)113 __m512d test_mm512_mask_rsqrt14_pd (__m512d __W, __mmask8 __U, __m512d __A)
114 {
115 // CHECK-LABEL: @test_mm512_mask_rsqrt14_pd
116 // CHECK: @llvm.x86.avx512.rsqrt14.pd.512
117 return _mm512_mask_rsqrt14_pd (__W,__U,__A);
118 }
119
test_mm512_maskz_rsqrt14_pd(__mmask8 __U,__m512d __A)120 __m512d test_mm512_maskz_rsqrt14_pd (__mmask8 __U, __m512d __A)
121 {
122 // CHECK-LABEL: @test_mm512_maskz_rsqrt14_pd
123 // CHECK: @llvm.x86.avx512.rsqrt14.pd.512
124 return _mm512_maskz_rsqrt14_pd (__U,__A);
125 }
126
test_mm512_rsqrt14_ps(__m512 a)127 __m512 test_mm512_rsqrt14_ps(__m512 a)
128 {
129 // CHECK-LABEL: @test_mm512_rsqrt14_ps
130 // CHECK: @llvm.x86.avx512.rsqrt14.ps.512
131 return _mm512_rsqrt14_ps(a);
132 }
133
test_mm512_mask_rsqrt14_ps(__m512 __W,__mmask16 __U,__m512 __A)134 __m512 test_mm512_mask_rsqrt14_ps (__m512 __W, __mmask16 __U, __m512 __A)
135 {
136 // CHECK-LABEL: @test_mm512_mask_rsqrt14_ps
137 // CHECK: @llvm.x86.avx512.rsqrt14.ps.512
138 return _mm512_mask_rsqrt14_ps (__W,__U,__A);
139 }
140
test_mm512_maskz_rsqrt14_ps(__mmask16 __U,__m512 __A)141 __m512 test_mm512_maskz_rsqrt14_ps (__mmask16 __U, __m512 __A)
142 {
143 // CHECK-LABEL: @test_mm512_maskz_rsqrt14_ps
144 // CHECK: @llvm.x86.avx512.rsqrt14.ps.512
145 return _mm512_maskz_rsqrt14_ps (__U,__A);
146 }
147
test_mm512_add_ps(__m512 a,__m512 b)148 __m512 test_mm512_add_ps(__m512 a, __m512 b)
149 {
150 // CHECK-LABEL: @test_mm512_add_ps
151 // CHECK: fadd <16 x float>
152 return _mm512_add_ps(a, b);
153 }
154
test_mm512_add_pd(__m512d a,__m512d b)155 __m512d test_mm512_add_pd(__m512d a, __m512d b)
156 {
157 // CHECK-LABEL: @test_mm512_add_pd
158 // CHECK: fadd <8 x double>
159 return _mm512_add_pd(a, b);
160 }
161
test_mm512_mul_ps(__m512 a,__m512 b)162 __m512 test_mm512_mul_ps(__m512 a, __m512 b)
163 {
164 // CHECK-LABEL: @test_mm512_mul_ps
165 // CHECK: fmul <16 x float>
166 return _mm512_mul_ps(a, b);
167 }
168
test_mm512_mul_pd(__m512d a,__m512d b)169 __m512d test_mm512_mul_pd(__m512d a, __m512d b)
170 {
171 // CHECK-LABEL: @test_mm512_mul_pd
172 // CHECK: fmul <8 x double>
173 return _mm512_mul_pd(a, b);
174 }
175
test_mm512_storeu_si512(void * __P,__m512i __A)176 void test_mm512_storeu_si512 (void *__P, __m512i __A)
177 {
178 // CHECK-LABEL: @test_mm512_storeu_si512
179 // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 1{{$}}
180 // CHECK-NEXT: ret void
181 _mm512_storeu_si512 ( __P,__A);
182 }
183
test_mm512_storeu_ps(void * p,__m512 a)184 void test_mm512_storeu_ps(void *p, __m512 a)
185 {
186 // CHECK-LABEL: @test_mm512_storeu_ps
187 // CHECK: store <16 x float> %{{.*}}, <16 x float>* %{{.*}}, align 1{{$}}
188 // CHECK-NEXT: ret void
189 _mm512_storeu_ps(p, a);
190 }
191
test_mm512_storeu_pd(void * p,__m512d a)192 void test_mm512_storeu_pd(void *p, __m512d a)
193 {
194 // CHECK-LABEL: @test_mm512_storeu_pd
195 // CHECK: store <8 x double> %{{.*}}, <8 x double>* %{{.*}}, align 1{{$}}
196 // CHECK-NEXT: ret void
197 _mm512_storeu_pd(p, a);
198 }
199
test_mm512_mask_store_ps(void * p,__m512 a,__mmask16 m)200 void test_mm512_mask_store_ps(void *p, __m512 a, __mmask16 m)
201 {
202 // CHECK-LABEL: @test_mm512_mask_store_ps
203 // CHECK: @llvm.masked.store.v16f32.p0v16f32(<16 x float> %{{.*}}, <16 x float>* %{{.*}}, i32 64, <16 x i1> %{{.*}})
204 _mm512_mask_store_ps(p, m, a);
205 }
206
test_mm512_store_si512(void * __P,__m512i __A)207 void test_mm512_store_si512 (void *__P, __m512i __A)
208 {
209 // CHECK-LABEL: @test_mm512_store_si512
210 // CHECK: load <8 x i64>, <8 x i64>* %__A.addr.i, align 64
211 // CHECK: [[SI512_3:%.+]] = load i8*, i8** %__P.addr.i, align 8
212 // CHECK: bitcast i8* [[SI512_3]] to <8 x i64>*
213 // CHECK: store <8 x i64>
214 _mm512_store_si512 ( __P,__A);
215 }
216
test_mm512_store_epi32(void * __P,__m512i __A)217 void test_mm512_store_epi32 (void *__P, __m512i __A)
218 {
219 // CHECK-LABEL: @test_mm512_store_epi32
220 // CHECK: load <8 x i64>, <8 x i64>* %__A.addr.i, align 64
221 // CHECK: [[Si32_3:%.+]] = load i8*, i8** %__P.addr.i, align 8
222 // CHECK: bitcast i8* [[Si32_3]] to <8 x i64>*
223 // CHECK: store <8 x i64>
224 _mm512_store_epi32 ( __P,__A);
225 }
226
test_mm512_store_epi64(void * __P,__m512i __A)227 void test_mm512_store_epi64 (void *__P, __m512i __A)
228 {
229 // CHECK-LABEL: @test_mm512_store_epi64
230 // CHECK: load <8 x i64>, <8 x i64>* %__A.addr.i, align 64
231 // CHECK: [[SI64_3:%.+]] = load i8*, i8** %__P.addr.i, align 8
232 // CHECK: bitcast i8* [[SI64_3]] to <8 x i64>*
233 // CHECK: store <8 x i64>
234 _mm512_store_epi64 ( __P,__A);
235 }
236
test_mm512_store_ps(void * p,__m512 a)237 void test_mm512_store_ps(void *p, __m512 a)
238 {
239 // CHECK-LABEL: @test_mm512_store_ps
240 // CHECK: store <16 x float>
241 _mm512_store_ps(p, a);
242 }
243
test_mm512_store_pd(void * p,__m512d a)244 void test_mm512_store_pd(void *p, __m512d a)
245 {
246 // CHECK-LABEL: @test_mm512_store_pd
247 // CHECK: store <8 x double>
248 _mm512_store_pd(p, a);
249 }
250
test_mm512_mask_store_pd(void * p,__m512d a,__mmask8 m)251 void test_mm512_mask_store_pd(void *p, __m512d a, __mmask8 m)
252 {
253 // CHECK-LABEL: @test_mm512_mask_store_pd
254 // CHECK: @llvm.masked.store.v8f64.p0v8f64(<8 x double> %{{.*}}, <8 x double>* %{{.*}}, i32 64, <8 x i1> %{{.*}})
255 _mm512_mask_store_pd(p, m, a);
256 }
257
test_mm512_storeu_epi32(void * __P,__m512i __A)258 void test_mm512_storeu_epi32(void *__P, __m512i __A) {
259 // CHECK-LABEL: @test_mm512_storeu_epi32
260 // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 1{{$}}
261 return _mm512_storeu_epi32(__P, __A);
262 }
263
test_mm512_mask_storeu_epi32(void * __P,__mmask16 __U,__m512i __A)264 void test_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A) {
265 // CHECK-LABEL: @test_mm512_mask_storeu_epi32
266 // CHECK: @llvm.masked.store.v16i32.p0v16i32(<16 x i32> %{{.*}}, <16 x i32>* %{{.*}}, i32 1, <16 x i1> %{{.*}})
267 return _mm512_mask_storeu_epi32(__P, __U, __A);
268 }
269
test_mm512_storeu_epi64(void * __P,__m512i __A)270 void test_mm512_storeu_epi64(void *__P, __m512i __A) {
271 // CHECK-LABEL: @test_mm512_storeu_epi64
272 // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 1{{$}}
273 return _mm512_storeu_epi64(__P, __A);
274 }
275
test_mm512_mask_storeu_epi64(void * __P,__mmask8 __U,__m512i __A)276 void test_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A) {
277 // CHECK-LABEL: @test_mm512_mask_storeu_epi64
278 // CHECK: @llvm.masked.store.v8i64.p0v8i64(<8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, i32 1, <8 x i1> %{{.*}})
279 return _mm512_mask_storeu_epi64(__P, __U, __A);
280 }
281
test_mm512_loadu_si512(void * __P)282 __m512i test_mm512_loadu_si512 (void *__P)
283 {
284 // CHECK-LABEL: @test_mm512_loadu_si512
285 // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 1{{$}}
286 return _mm512_loadu_si512 ( __P);
287 }
288
test_mm512_loadu_epi32(void * __P)289 __m512i test_mm512_loadu_epi32 (void *__P)
290 {
291 // CHECK-LABEL: @test_mm512_loadu_epi32
292 // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 1{{$}}
293 return _mm512_loadu_epi32 (__P);
294 }
295
test_mm512_mask_loadu_epi32(__m512i __W,__mmask16 __U,void * __P)296 __m512i test_mm512_mask_loadu_epi32 (__m512i __W, __mmask16 __U, void *__P)
297 {
298 // CHECK-LABEL: @test_mm512_mask_loadu_epi32
299 // CHECK: @llvm.masked.load.v16i32.p0v16i32(<16 x i32>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
300 return _mm512_mask_loadu_epi32 (__W,__U, __P);
301 }
302
test_mm512_maskz_loadu_epi32(__mmask16 __U,void * __P)303 __m512i test_mm512_maskz_loadu_epi32 (__mmask16 __U, void *__P)
304 {
305 // CHECK-LABEL: @test_mm512_maskz_loadu_epi32
306 // CHECK: @llvm.masked.load.v16i32.p0v16i32(<16 x i32>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
307 return _mm512_maskz_loadu_epi32 (__U, __P);
308 }
309
test_mm512_loadu_epi64(void * __P)310 __m512i test_mm512_loadu_epi64 (void *__P)
311 {
312 // CHECK-LABEL: @test_mm512_loadu_epi64
313 // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 1{{$}}
314 return _mm512_loadu_epi64 (__P);
315 }
316
test_mm512_mask_loadu_epi64(__m512i __W,__mmask8 __U,void * __P)317 __m512i test_mm512_mask_loadu_epi64 (__m512i __W, __mmask8 __U, void *__P)
318 {
319 // CHECK-LABEL: @test_mm512_mask_loadu_epi64
320 // CHECK: @llvm.masked.load.v8i64.p0v8i64(<8 x i64>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
321 return _mm512_mask_loadu_epi64 (__W,__U, __P);
322 }
323
test_mm512_maskz_loadu_epi64(__mmask16 __U,void * __P)324 __m512i test_mm512_maskz_loadu_epi64 (__mmask16 __U, void *__P)
325 {
326 // CHECK-LABEL: @test_mm512_maskz_loadu_epi64
327 // CHECK: @llvm.masked.load.v8i64.p0v8i64(<8 x i64>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
328 return _mm512_maskz_loadu_epi64 (__U, __P);
329 }
330
test_mm512_loadu_ps(void * p)331 __m512 test_mm512_loadu_ps(void *p)
332 {
333 // CHECK-LABEL: @test_mm512_loadu_ps
334 // CHECK: load <16 x float>, <16 x float>* {{.*}}, align 1{{$}}
335 return _mm512_loadu_ps(p);
336 }
337
test_mm512_mask_loadu_ps(__m512 __W,__mmask16 __U,void * __P)338 __m512 test_mm512_mask_loadu_ps (__m512 __W, __mmask16 __U, void *__P)
339 {
340 // CHECK-LABEL: @test_mm512_mask_loadu_ps
341 // CHECK: @llvm.masked.load.v16f32.p0v16f32(<16 x float>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
342 return _mm512_mask_loadu_ps (__W,__U, __P);
343 }
344
test_mm512_loadu_pd(void * p)345 __m512d test_mm512_loadu_pd(void *p)
346 {
347 // CHECK-LABEL: @test_mm512_loadu_pd
348 // CHECK: load <8 x double>, <8 x double>* {{.*}}, align 1{{$}}
349 return _mm512_loadu_pd(p);
350 }
351
test_mm512_mask_loadu_pd(__m512d __W,__mmask8 __U,void * __P)352 __m512d test_mm512_mask_loadu_pd (__m512d __W, __mmask8 __U, void *__P)
353 {
354 // CHECK-LABEL: @test_mm512_mask_loadu_pd
355 // CHECK: @llvm.masked.load.v8f64.p0v8f64(<8 x double>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
356 return _mm512_mask_loadu_pd (__W,__U, __P);
357 }
358
test_mm512_load_si512(void * __P)359 __m512i test_mm512_load_si512 (void *__P)
360 {
361 // CHECK-LABEL: @test_mm512_load_si512
362 // CHECK: [[LI512_1:%.+]] = load i8*, i8** %__P.addr.i, align 8
363 // CHECK: [[LI512_2:%.+]] = bitcast i8* [[LI512_1]] to <8 x i64>*
364 // CHECK: load <8 x i64>, <8 x i64>* [[LI512_2]], align 64
365 return _mm512_load_si512 ( __P);
366 }
367
test_mm512_load_epi32(void * __P)368 __m512i test_mm512_load_epi32 (void *__P)
369 {
370 // CHECK-LABEL: @test_mm512_load_epi32
371 // CHECK: [[LI32_1:%.+]] = load i8*, i8** %__P.addr.i, align 8
372 // CHECK: [[LI32_2:%.+]] = bitcast i8* [[LI32_1]] to <8 x i64>*
373 // CHECK: load <8 x i64>, <8 x i64>* [[LI32_2]], align 64
374 return _mm512_load_epi32 ( __P);
375 }
376
test_mm512_load_epi64(void * __P)377 __m512i test_mm512_load_epi64 (void *__P)
378 {
379 // CHECK-LABEL: @test_mm512_load_epi64
380 // CHECK: [[LI64_1:%.+]] = load i8*, i8** %__P.addr.i, align 8
381 // CHECK: [[LI64_2:%.+]] = bitcast i8* [[LI64_1]] to <8 x i64>*
382 // CHECK: load <8 x i64>, <8 x i64>* [[LI64_2]], align 64
383 return _mm512_load_epi64 ( __P);
384 }
385
test_mm512_load_ps(void * p)386 __m512 test_mm512_load_ps(void *p)
387 {
388 // CHECK-LABEL: @test_mm512_load_ps
389 // CHECK: load <16 x float>, <16 x float>* %{{.*}}, align 64
390 return _mm512_load_ps(p);
391 }
392
test_mm512_mask_load_ps(__m512 __W,__mmask16 __U,void * __P)393 __m512 test_mm512_mask_load_ps (__m512 __W, __mmask16 __U, void *__P)
394 {
395 // CHECK-LABEL: @test_mm512_mask_load_ps
396 // CHECK: @llvm.masked.load.v16f32.p0v16f32(<16 x float>* %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
397 return _mm512_mask_load_ps (__W,__U, __P);
398 }
399
test_mm512_maskz_load_ps(__mmask16 __U,void * __P)400 __m512 test_mm512_maskz_load_ps(__mmask16 __U, void *__P)
401 {
402 // CHECK-LABEL: @test_mm512_maskz_load_ps
403 // CHECK: @llvm.masked.load.v16f32.p0v16f32(<16 x float>* %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
404 return _mm512_maskz_load_ps(__U, __P);
405 }
406
test_mm512_load_pd(void * p)407 __m512d test_mm512_load_pd(void *p)
408 {
409 // CHECK-LABEL: @test_mm512_load_pd
410 // CHECK: load <8 x double>, <8 x double>* %{{.*}}, align 64
411 return _mm512_load_pd(p);
412 }
413
test_mm512_mask_load_pd(__m512d __W,__mmask8 __U,void * __P)414 __m512d test_mm512_mask_load_pd (__m512d __W, __mmask8 __U, void *__P)
415 {
416 // CHECK-LABEL: @test_mm512_mask_load_pd
417 // CHECK: @llvm.masked.load.v8f64.p0v8f64(<8 x double>* %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
418 return _mm512_mask_load_pd (__W,__U, __P);
419 }
420
test_mm512_maskz_load_pd(__mmask8 __U,void * __P)421 __m512d test_mm512_maskz_load_pd(__mmask8 __U, void *__P)
422 {
423 // CHECK-LABEL: @test_mm512_maskz_load_pd
424 // CHECK: @llvm.masked.load.v8f64.p0v8f64(<8 x double>* %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
425 return _mm512_maskz_load_pd(__U, __P);
426 }
427
test_mm512_set1_pd(double d)428 __m512d test_mm512_set1_pd(double d)
429 {
430 // CHECK-LABEL: @test_mm512_set1_pd
431 // CHECK: insertelement <8 x double> {{.*}}, i32 0
432 // CHECK: insertelement <8 x double> {{.*}}, i32 1
433 // CHECK: insertelement <8 x double> {{.*}}, i32 2
434 // CHECK: insertelement <8 x double> {{.*}}, i32 3
435 // CHECK: insertelement <8 x double> {{.*}}, i32 4
436 // CHECK: insertelement <8 x double> {{.*}}, i32 5
437 // CHECK: insertelement <8 x double> {{.*}}, i32 6
438 // CHECK: insertelement <8 x double> {{.*}}, i32 7
439 return _mm512_set1_pd(d);
440 }
441
test_mm512_knot(__mmask16 a)442 __mmask16 test_mm512_knot(__mmask16 a)
443 {
444 // CHECK-LABEL: @test_mm512_knot
445 // CHECK: [[IN:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
446 // CHECK: [[NOT:%.*]] = xor <16 x i1> [[IN]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
447 // CHECK: bitcast <16 x i1> [[NOT]] to i16
448 return _mm512_knot(a);
449 }
450
test_mm512_alignr_epi32(__m512i a,__m512i b)451 __m512i test_mm512_alignr_epi32(__m512i a, __m512i b)
452 {
453 // CHECK-LABEL: @test_mm512_alignr_epi32
454 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17>
455 return _mm512_alignr_epi32(a, b, 2);
456 }
457
test_mm512_mask_alignr_epi32(__m512i w,__mmask16 u,__m512i a,__m512i b)458 __m512i test_mm512_mask_alignr_epi32(__m512i w, __mmask16 u, __m512i a, __m512i b)
459 {
460 // CHECK-LABEL: @test_mm512_mask_alignr_epi32
461 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17>
462 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> {{.*}}
463 return _mm512_mask_alignr_epi32(w, u, a, b, 2);
464 }
465
test_mm512_maskz_alignr_epi32(__mmask16 u,__m512i a,__m512i b)466 __m512i test_mm512_maskz_alignr_epi32( __mmask16 u, __m512i a, __m512i b)
467 {
468 // CHECK-LABEL: @test_mm512_maskz_alignr_epi32
469 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17>
470 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> {{.*}}
471 return _mm512_maskz_alignr_epi32(u, a, b, 2);
472 }
473
test_mm512_alignr_epi64(__m512i a,__m512i b)474 __m512i test_mm512_alignr_epi64(__m512i a, __m512i b)
475 {
476 // CHECK-LABEL: @test_mm512_alignr_epi64
477 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9>
478 return _mm512_alignr_epi64(a, b, 2);
479 }
480
test_mm512_mask_alignr_epi64(__m512i w,__mmask8 u,__m512i a,__m512i b)481 __m512i test_mm512_mask_alignr_epi64(__m512i w, __mmask8 u, __m512i a, __m512i b)
482 {
483 // CHECK-LABEL: @test_mm512_mask_alignr_epi64
484 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9>
485 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> {{.*}}
486 return _mm512_mask_alignr_epi64(w, u, a, b, 2);
487 }
488
test_mm512_maskz_alignr_epi64(__mmask8 u,__m512i a,__m512i b)489 __m512i test_mm512_maskz_alignr_epi64( __mmask8 u, __m512i a, __m512i b)
490 {
491 // CHECK-LABEL: @test_mm512_maskz_alignr_epi64
492 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9>
493 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> {{.*}}
494 return _mm512_maskz_alignr_epi64(u, a, b, 2);
495 }
496
test_mm512_fmadd_round_pd(__m512d __A,__m512d __B,__m512d __C)497 __m512d test_mm512_fmadd_round_pd(__m512d __A, __m512d __B, __m512d __C) {
498 // CHECK-LABEL: @test_mm512_fmadd_round_pd
499 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
500 return _mm512_fmadd_round_pd(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
501 }
502
test_mm512_mask_fmadd_round_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)503 __m512d test_mm512_mask_fmadd_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
504 // CHECK-LABEL: @test_mm512_mask_fmadd_round_pd
505 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
506 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
507 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
508 return _mm512_mask_fmadd_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
509 }
test_mm512_mask3_fmadd_round_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)510 __m512d test_mm512_mask3_fmadd_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
511 // CHECK-LABEL: @test_mm512_mask3_fmadd_round_pd
512 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
513 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
514 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
515 return _mm512_mask3_fmadd_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
516 }
test_mm512_maskz_fmadd_round_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)517 __m512d test_mm512_maskz_fmadd_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
518 // CHECK-LABEL: @test_mm512_maskz_fmadd_round_pd
519 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
520 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
521 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
522 return _mm512_maskz_fmadd_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
523 }
test_mm512_fmsub_round_pd(__m512d __A,__m512d __B,__m512d __C)524 __m512d test_mm512_fmsub_round_pd(__m512d __A, __m512d __B, __m512d __C) {
525 // CHECK-LABEL: @test_mm512_fmsub_round_pd
526 // CHECK: fneg <8 x double>
527 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
528 return _mm512_fmsub_round_pd(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
529 }
test_mm512_mask_fmsub_round_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)530 __m512d test_mm512_mask_fmsub_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
531 // CHECK-LABEL: @test_mm512_mask_fmsub_round_pd
532 // CHECK: fneg <8 x double>
533 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
534 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
535 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
536 return _mm512_mask_fmsub_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
537 }
test_mm512_maskz_fmsub_round_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)538 __m512d test_mm512_maskz_fmsub_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
539 // CHECK-LABEL: @test_mm512_maskz_fmsub_round_pd
540 // CHECK: fneg <8 x double>
541 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
542 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
543 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
544 return _mm512_maskz_fmsub_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
545 }
test_mm512_fnmadd_round_pd(__m512d __A,__m512d __B,__m512d __C)546 __m512d test_mm512_fnmadd_round_pd(__m512d __A, __m512d __B, __m512d __C) {
547 // CHECK-LABEL: @test_mm512_fnmadd_round_pd
548 // CHECK: fneg <8 x double>
549 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
550 return _mm512_fnmadd_round_pd(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
551 }
test_mm512_mask3_fnmadd_round_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)552 __m512d test_mm512_mask3_fnmadd_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
553 // CHECK-LABEL: @test_mm512_mask3_fnmadd_round_pd
554 // CHECK: fneg <8 x double>
555 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
556 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
557 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
558 return _mm512_mask3_fnmadd_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
559 }
test_mm512_maskz_fnmadd_round_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)560 __m512d test_mm512_maskz_fnmadd_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
561 // CHECK-LABEL: @test_mm512_maskz_fnmadd_round_pd
562 // CHECK: fneg <8 x double>
563 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
564 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
565 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
566 return _mm512_maskz_fnmadd_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
567 }
test_mm512_fnmsub_round_pd(__m512d __A,__m512d __B,__m512d __C)568 __m512d test_mm512_fnmsub_round_pd(__m512d __A, __m512d __B, __m512d __C) {
569 // CHECK-LABEL: @test_mm512_fnmsub_round_pd
570 // CHECK: fneg <8 x double>
571 // CHECK: fneg <8 x double>
572 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
573 return _mm512_fnmsub_round_pd(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
574 }
test_mm512_maskz_fnmsub_round_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)575 __m512d test_mm512_maskz_fnmsub_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
576 // CHECK-LABEL: @test_mm512_maskz_fnmsub_round_pd
577 // CHECK: fneg <8 x double>
578 // CHECK: fneg <8 x double>
579 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
580 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
581 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
582 return _mm512_maskz_fnmsub_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
583 }
test_mm512_fmadd_pd(__m512d __A,__m512d __B,__m512d __C)584 __m512d test_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C) {
585 // CHECK-LABEL: @test_mm512_fmadd_pd
586 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
587 return _mm512_fmadd_pd(__A, __B, __C);
588 }
test_mm512_mask_fmadd_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)589 __m512d test_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
590 // CHECK-LABEL: @test_mm512_mask_fmadd_pd
591 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
592 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
593 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
594 return _mm512_mask_fmadd_pd(__A, __U, __B, __C);
595 }
test_mm512_mask3_fmadd_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)596 __m512d test_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
597 // CHECK-LABEL: @test_mm512_mask3_fmadd_pd
598 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
599 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
600 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
601 return _mm512_mask3_fmadd_pd(__A, __B, __C, __U);
602 }
test_mm512_maskz_fmadd_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)603 __m512d test_mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
604 // CHECK-LABEL: @test_mm512_maskz_fmadd_pd
605 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
606 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
607 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
608 return _mm512_maskz_fmadd_pd(__U, __A, __B, __C);
609 }
test_mm512_fmsub_pd(__m512d __A,__m512d __B,__m512d __C)610 __m512d test_mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C) {
611 // CHECK-LABEL: @test_mm512_fmsub_pd
612 // CHECK: fneg <8 x double> %{{.*}}
613 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
614 return _mm512_fmsub_pd(__A, __B, __C);
615 }
test_mm512_mask_fmsub_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)616 __m512d test_mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
617 // CHECK-LABEL: @test_mm512_mask_fmsub_pd
618 // CHECK: fneg <8 x double> %{{.*}}
619 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
620 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
621 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
622 return _mm512_mask_fmsub_pd(__A, __U, __B, __C);
623 }
test_mm512_maskz_fmsub_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)624 __m512d test_mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
625 // CHECK-LABEL: @test_mm512_maskz_fmsub_pd
626 // CHECK: fneg <8 x double> %{{.*}}
627 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
628 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
629 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
630 return _mm512_maskz_fmsub_pd(__U, __A, __B, __C);
631 }
test_mm512_fnmadd_pd(__m512d __A,__m512d __B,__m512d __C)632 __m512d test_mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C) {
633 // CHECK-LABEL: @test_mm512_fnmadd_pd
634 // CHECK: fneg <8 x double> %{{.*}}
635 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
636 return _mm512_fnmadd_pd(__A, __B, __C);
637 }
test_mm512_mask3_fnmadd_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)638 __m512d test_mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
639 // CHECK-LABEL: @test_mm512_mask3_fnmadd_pd
640 // CHECK: fneg <8 x double> %{{.*}}
641 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
642 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
643 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
644 return _mm512_mask3_fnmadd_pd(__A, __B, __C, __U);
645 }
test_mm512_maskz_fnmadd_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)646 __m512d test_mm512_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
647 // CHECK-LABEL: @test_mm512_maskz_fnmadd_pd
648 // CHECK: fneg <8 x double> %{{.*}}
649 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
650 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
651 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
652 return _mm512_maskz_fnmadd_pd(__U, __A, __B, __C);
653 }
test_mm512_fnmsub_pd(__m512d __A,__m512d __B,__m512d __C)654 __m512d test_mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C) {
655 // CHECK-LABEL: @test_mm512_fnmsub_pd
656 // CHECK: fneg <8 x double> %{{.*}}
657 // CHECK: fneg <8 x double> %{{.*}}
658 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
659 return _mm512_fnmsub_pd(__A, __B, __C);
660 }
test_mm512_maskz_fnmsub_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)661 __m512d test_mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
662 // CHECK-LABEL: @test_mm512_maskz_fnmsub_pd
663 // CHECK: fneg <8 x double> %{{.*}}
664 // CHECK: fneg <8 x double> %{{.*}}
665 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
666 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
667 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
668 return _mm512_maskz_fnmsub_pd(__U, __A, __B, __C);
669 }
test_mm512_fmadd_round_ps(__m512 __A,__m512 __B,__m512 __C)670 __m512 test_mm512_fmadd_round_ps(__m512 __A, __m512 __B, __m512 __C) {
671 // CHECK-LABEL: @test_mm512_fmadd_round_ps
672 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
673 return _mm512_fmadd_round_ps(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
674 }
test_mm512_mask_fmadd_round_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)675 __m512 test_mm512_mask_fmadd_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
676 // CHECK-LABEL: @test_mm512_mask_fmadd_round_ps
677 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
678 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
679 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
680 return _mm512_mask_fmadd_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
681 }
test_mm512_mask3_fmadd_round_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)682 __m512 test_mm512_mask3_fmadd_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
683 // CHECK-LABEL: @test_mm512_mask3_fmadd_round_ps
684 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
685 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
686 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
687 return _mm512_mask3_fmadd_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
688 }
test_mm512_maskz_fmadd_round_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)689 __m512 test_mm512_maskz_fmadd_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
690 // CHECK-LABEL: @test_mm512_maskz_fmadd_round_ps
691 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
692 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
693 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
694 return _mm512_maskz_fmadd_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
695 }
test_mm512_fmsub_round_ps(__m512 __A,__m512 __B,__m512 __C)696 __m512 test_mm512_fmsub_round_ps(__m512 __A, __m512 __B, __m512 __C) {
697 // CHECK-LABEL: @test_mm512_fmsub_round_ps
698 // CHECK: fneg <16 x float> %{{.*}}
699 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
700 return _mm512_fmsub_round_ps(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
701 }
test_mm512_mask_fmsub_round_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)702 __m512 test_mm512_mask_fmsub_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
703 // CHECK-LABEL: @test_mm512_mask_fmsub_round_ps
704 // CHECK: fneg <16 x float> %{{.*}}
705 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
706 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
707 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
708 return _mm512_mask_fmsub_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
709 }
test_mm512_maskz_fmsub_round_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)710 __m512 test_mm512_maskz_fmsub_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
711 // CHECK-LABEL: @test_mm512_maskz_fmsub_round_ps
712 // CHECK: fneg <16 x float> %{{.*}}
713 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
714 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
715 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
716 return _mm512_maskz_fmsub_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
717 }
test_mm512_fnmadd_round_ps(__m512 __A,__m512 __B,__m512 __C)718 __m512 test_mm512_fnmadd_round_ps(__m512 __A, __m512 __B, __m512 __C) {
719 // CHECK-LABEL: @test_mm512_fnmadd_round_ps
720 // CHECK: fneg <16 x float> %{{.*}}
721 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
722 return _mm512_fnmadd_round_ps(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
723 }
test_mm512_mask3_fnmadd_round_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)724 __m512 test_mm512_mask3_fnmadd_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
725 // CHECK-LABEL: @test_mm512_mask3_fnmadd_round_ps
726 // CHECK: fneg <16 x float> %{{.*}}
727 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
728 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
729 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
730 return _mm512_mask3_fnmadd_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
731 }
test_mm512_maskz_fnmadd_round_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)732 __m512 test_mm512_maskz_fnmadd_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
733 // CHECK-LABEL: @test_mm512_maskz_fnmadd_round_ps
734 // CHECK: fneg <16 x float> %{{.*}}
735 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
736 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
737 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
738 return _mm512_maskz_fnmadd_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
739 }
test_mm512_fnmsub_round_ps(__m512 __A,__m512 __B,__m512 __C)740 __m512 test_mm512_fnmsub_round_ps(__m512 __A, __m512 __B, __m512 __C) {
741 // CHECK-LABEL: @test_mm512_fnmsub_round_ps
742 // CHECK: fneg <16 x float> %{{.*}}
743 // CHECK: fneg <16 x float> %{{.*}}
744 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
745 return _mm512_fnmsub_round_ps(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
746 }
test_mm512_maskz_fnmsub_round_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)747 __m512 test_mm512_maskz_fnmsub_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
748 // CHECK-LABEL: @test_mm512_maskz_fnmsub_round_ps
749 // CHECK: fneg <16 x float> %{{.*}}
750 // CHECK: fneg <16 x float> %{{.*}}
751 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
752 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
753 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
754 return _mm512_maskz_fnmsub_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
755 }
test_mm512_fmadd_ps(__m512 __A,__m512 __B,__m512 __C)756 __m512 test_mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C) {
757 // CHECK-LABEL: @test_mm512_fmadd_ps
758 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
759 return _mm512_fmadd_ps(__A, __B, __C);
760 }
test_mm512_mask_fmadd_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)761 __m512 test_mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
762 // CHECK-LABEL: @test_mm512_mask_fmadd_ps
763 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
764 return _mm512_mask_fmadd_ps(__A, __U, __B, __C);
765 }
test_mm512_mask3_fmadd_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)766 __m512 test_mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
767 // CHECK-LABEL: @test_mm512_mask3_fmadd_ps
768 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
769 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
770 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
771 return _mm512_mask3_fmadd_ps(__A, __B, __C, __U);
772 }
test_mm512_maskz_fmadd_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)773 __m512 test_mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
774 // CHECK-LABEL: @test_mm512_maskz_fmadd_ps
775 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
776 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
777 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
778 return _mm512_maskz_fmadd_ps(__U, __A, __B, __C);
779 }
test_mm512_fmsub_ps(__m512 __A,__m512 __B,__m512 __C)780 __m512 test_mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C) {
781 // CHECK-LABEL: @test_mm512_fmsub_ps
782 // CHECK: fneg <16 x float> %{{.*}}
783 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
784 return _mm512_fmsub_ps(__A, __B, __C);
785 }
test_mm512_mask_fmsub_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)786 __m512 test_mm512_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
787 // CHECK-LABEL: @test_mm512_mask_fmsub_ps
788 // CHECK: fneg <16 x float> %{{.*}}
789 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
790 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
791 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
792 return _mm512_mask_fmsub_ps(__A, __U, __B, __C);
793 }
test_mm512_maskz_fmsub_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)794 __m512 test_mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
795 // CHECK-LABEL: @test_mm512_maskz_fmsub_ps
796 // CHECK: fneg <16 x float> %{{.*}}
797 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
798 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
799 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
800 return _mm512_maskz_fmsub_ps(__U, __A, __B, __C);
801 }
test_mm512_fnmadd_ps(__m512 __A,__m512 __B,__m512 __C)802 __m512 test_mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C) {
803 // CHECK-LABEL: @test_mm512_fnmadd_ps
804 // CHECK: fneg <16 x float> %{{.*}}
805 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
806 return _mm512_fnmadd_ps(__A, __B, __C);
807 }
test_mm512_mask3_fnmadd_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)808 __m512 test_mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
809 // CHECK-LABEL: @test_mm512_mask3_fnmadd_ps
810 // CHECK: fneg <16 x float> %{{.*}}
811 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
812 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
813 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
814 return _mm512_mask3_fnmadd_ps(__A, __B, __C, __U);
815 }
test_mm512_maskz_fnmadd_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)816 __m512 test_mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
817 // CHECK-LABEL: @test_mm512_maskz_fnmadd_ps
818 // CHECK: fneg <16 x float> %{{.*}}
819 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
820 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
821 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
822 return _mm512_maskz_fnmadd_ps(__U, __A, __B, __C);
823 }
test_mm512_fnmsub_ps(__m512 __A,__m512 __B,__m512 __C)824 __m512 test_mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C) {
825 // CHECK-LABEL: @test_mm512_fnmsub_ps
826 // CHECK: fneg <16 x float> %{{.*}}
827 // CHECK: fneg <16 x float> %{{.*}}
828 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
829 return _mm512_fnmsub_ps(__A, __B, __C);
830 }
test_mm512_maskz_fnmsub_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)831 __m512 test_mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
832 // CHECK-LABEL: @test_mm512_maskz_fnmsub_ps
833 // CHECK: fneg <16 x float> %{{.*}}
834 // CHECK: fneg <16 x float> %{{.*}}
835 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
836 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
837 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
838 return _mm512_maskz_fnmsub_ps(__U, __A, __B, __C);
839 }
test_mm512_fmaddsub_round_pd(__m512d __A,__m512d __B,__m512d __C)840 __m512d test_mm512_fmaddsub_round_pd(__m512d __A, __m512d __B, __m512d __C) {
841 // CHECK-LABEL: @test_mm512_fmaddsub_round_pd
842 // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
843 return _mm512_fmaddsub_round_pd(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
844 }
test_mm512_mask_fmaddsub_round_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)845 __m512d test_mm512_mask_fmaddsub_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
846 // CHECK-LABEL: @test_mm512_mask_fmaddsub_round_pd
847 // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
848 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
849 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
850 return _mm512_mask_fmaddsub_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
851 }
test_mm512_mask3_fmaddsub_round_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)852 __m512d test_mm512_mask3_fmaddsub_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
853 // CHECK-LABEL: @test_mm512_mask3_fmaddsub_round_pd
854 // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
855 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
856 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
857 return _mm512_mask3_fmaddsub_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
858 }
test_mm512_maskz_fmaddsub_round_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)859 __m512d test_mm512_maskz_fmaddsub_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
860 // CHECK-LABEL: @test_mm512_maskz_fmaddsub_round_pd
861 // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
862 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
863 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
864 return _mm512_maskz_fmaddsub_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
865 }
test_mm512_fmsubadd_round_pd(__m512d __A,__m512d __B,__m512d __C)866 __m512d test_mm512_fmsubadd_round_pd(__m512d __A, __m512d __B, __m512d __C) {
867 // CHECK-LABEL: @test_mm512_fmsubadd_round_pd
868 // CHECK: fneg <8 x double> %{{.*}}
869 // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
870 return _mm512_fmsubadd_round_pd(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
871 }
test_mm512_mask_fmsubadd_round_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)872 __m512d test_mm512_mask_fmsubadd_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
873 // CHECK-LABEL: @test_mm512_mask_fmsubadd_round_pd
874 // CHECK: fneg <8 x double> %{{.*}}
875 // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
876 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
877 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
878 return _mm512_mask_fmsubadd_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
879 }
test_mm512_maskz_fmsubadd_round_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)880 __m512d test_mm512_maskz_fmsubadd_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
881 // CHECK-LABEL: @test_mm512_maskz_fmsubadd_round_pd
882 // CHECK: fneg <8 x double> %{{.*}}
883 // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
884 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
885 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
886 return _mm512_maskz_fmsubadd_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
887 }
test_mm512_fmaddsub_pd(__m512d __A,__m512d __B,__m512d __C)888 __m512d test_mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C) {
889 // CHECK-LABEL: @test_mm512_fmaddsub_pd
890 // CHECK-NOT: fneg
891 // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}, i32 4)
892 return _mm512_fmaddsub_pd(__A, __B, __C);
893 }
test_mm512_mask_fmaddsub_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)894 __m512d test_mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
895 // CHECK-LABEL: @test_mm512_mask_fmaddsub_pd
896 // CHECK-NOT: fneg
897 // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}, i32 4)
898 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
899 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
900 return _mm512_mask_fmaddsub_pd(__A, __U, __B, __C);
901 }
test_mm512_mask3_fmaddsub_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)902 __m512d test_mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
903 // CHECK-LABEL: @test_mm512_mask3_fmaddsub_pd
904 // CHECK-NOT: fneg
905 // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}, i32 4)
906 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
907 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
908 return _mm512_mask3_fmaddsub_pd(__A, __B, __C, __U);
909 }
test_mm512_maskz_fmaddsub_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)910 __m512d test_mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
911 // CHECK-LABEL: @test_mm512_maskz_fmaddsub_pd
912 // CHECK-NOT: fneg
913 // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}, i32 4)
914 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
915 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
916 return _mm512_maskz_fmaddsub_pd(__U, __A, __B, __C);
917 }
test_mm512_fmsubadd_pd(__m512d __A,__m512d __B,__m512d __C)918 __m512d test_mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C) {
919 // CHECK-LABEL: @test_mm512_fmsubadd_pd
920 // CHECK: [[NEG:%.+]] = fneg <8 x double> %{{.*}}
921 // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]], i32 4)
922 return _mm512_fmsubadd_pd(__A, __B, __C);
923 }
test_mm512_mask_fmsubadd_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)924 __m512d test_mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
925 // CHECK-LABEL: @test_mm512_mask_fmsubadd_pd
926 // CHECK: [[NEG:%.+]] = fneg <8 x double> %{{.*}}
927 // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]], i32 4)
928 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
929 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
930 return _mm512_mask_fmsubadd_pd(__A, __U, __B, __C);
931 }
test_mm512_maskz_fmsubadd_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)932 __m512d test_mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
933 // CHECK-LABEL: @test_mm512_maskz_fmsubadd_pd
934 // CHECK: [[NEG:%.+]] = fneg <8 x double> %{{.*}}
935 // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]], i32 4)
936 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
937 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
938 return _mm512_maskz_fmsubadd_pd(__U, __A, __B, __C);
939 }
test_mm512_fmaddsub_round_ps(__m512 __A,__m512 __B,__m512 __C)940 __m512 test_mm512_fmaddsub_round_ps(__m512 __A, __m512 __B, __m512 __C) {
941 // CHECK-LABEL: @test_mm512_fmaddsub_round_ps
942 // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
943 return _mm512_fmaddsub_round_ps(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
944 }
test_mm512_mask_fmaddsub_round_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)945 __m512 test_mm512_mask_fmaddsub_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
946 // CHECK-LABEL: @test_mm512_mask_fmaddsub_round_ps
947 // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
948 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
949 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
950 return _mm512_mask_fmaddsub_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
951 }
test_mm512_mask3_fmaddsub_round_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)952 __m512 test_mm512_mask3_fmaddsub_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
953 // CHECK-LABEL: @test_mm512_mask3_fmaddsub_round_ps
954 // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
955 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
956 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
957 return _mm512_mask3_fmaddsub_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
958 }
test_mm512_maskz_fmaddsub_round_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)959 __m512 test_mm512_maskz_fmaddsub_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
960 // CHECK-LABEL: @test_mm512_maskz_fmaddsub_round_ps
961 // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
962 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
963 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
964 return _mm512_maskz_fmaddsub_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
965 }
test_mm512_fmsubadd_round_ps(__m512 __A,__m512 __B,__m512 __C)966 __m512 test_mm512_fmsubadd_round_ps(__m512 __A, __m512 __B, __m512 __C) {
967 // CHECK-LABEL: @test_mm512_fmsubadd_round_ps
968 // CHECK: fneg <16 x float> %{{.*}}
969 // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
970 return _mm512_fmsubadd_round_ps(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
971 }
test_mm512_mask_fmsubadd_round_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)972 __m512 test_mm512_mask_fmsubadd_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
973 // CHECK-LABEL: @test_mm512_mask_fmsubadd_round_ps
974 // CHECK: fneg <16 x float> %{{.*}}
975 // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
976 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
977 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
978 return _mm512_mask_fmsubadd_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
979 }
test_mm512_maskz_fmsubadd_round_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)980 __m512 test_mm512_maskz_fmsubadd_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
981 // CHECK-LABEL: @test_mm512_maskz_fmsubadd_round_ps
982 // CHECK: fneg <16 x float> %{{.*}}
983 // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
984 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
985 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
986 return _mm512_maskz_fmsubadd_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
987 }
test_mm512_fmaddsub_ps(__m512 __A,__m512 __B,__m512 __C)988 __m512 test_mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C) {
989 // CHECK-LABEL: @test_mm512_fmaddsub_ps
990 // CHECK-NOT: fneg
991 // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}, i32 4)
992 return _mm512_fmaddsub_ps(__A, __B, __C);
993 }
test_mm512_mask_fmaddsub_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)994 __m512 test_mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
995 // CHECK-LABEL: @test_mm512_mask_fmaddsub_ps
996 // CHECK-NOT: fneg
997 // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}, i32 4)
998 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
999 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1000 return _mm512_mask_fmaddsub_ps(__A, __U, __B, __C);
1001 }
test_mm512_mask3_fmaddsub_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)1002 __m512 test_mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
1003 // CHECK-LABEL: @test_mm512_mask3_fmaddsub_ps
1004 // CHECK-NOT: fneg
1005 // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}, i32 4)
1006 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1007 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1008 return _mm512_mask3_fmaddsub_ps(__A, __B, __C, __U);
1009 }
test_mm512_maskz_fmaddsub_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)1010 __m512 test_mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
1011 // CHECK-LABEL: @test_mm512_maskz_fmaddsub_ps
1012 // CHECK-NOT: fneg
1013 // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}, i32 4)
1014 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1015 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
1016 return _mm512_maskz_fmaddsub_ps(__U, __A, __B, __C);
1017 }
test_mm512_fmsubadd_ps(__m512 __A,__m512 __B,__m512 __C)1018 __m512 test_mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C) {
1019 // CHECK-LABEL: @test_mm512_fmsubadd_ps
1020 // CHECK: [[NEG:%.+]] = fneg <16 x float> %{{.*}}
1021 // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]], i32 4)
1022 return _mm512_fmsubadd_ps(__A, __B, __C);
1023 }
test_mm512_mask_fmsubadd_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)1024 __m512 test_mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
1025 // CHECK-LABEL: @test_mm512_mask_fmsubadd_ps
1026 // CHECK: [[NEG:%.+]] = fneg <16 x float> %{{.*}}
1027 // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]], i32 4)
1028 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1029 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1030 return _mm512_mask_fmsubadd_ps(__A, __U, __B, __C);
1031 }
test_mm512_maskz_fmsubadd_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)1032 __m512 test_mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
1033 // CHECK-LABEL: @test_mm512_maskz_fmsubadd_ps
1034 // CHECK: [[NEG:%.+]] = fneg <16 x float> %{{.*}}
1035 // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]], i32 4)
1036 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1037 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
1038 return _mm512_maskz_fmsubadd_ps(__U, __A, __B, __C);
1039 }
test_mm512_mask3_fmsub_round_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)1040 __m512d test_mm512_mask3_fmsub_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
1041 // CHECK-LABEL: @test_mm512_mask3_fmsub_round_pd
1042 // CHECK: fneg <8 x double> %{{.*}}
1043 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
1044 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1045 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1046 return _mm512_mask3_fmsub_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
1047 }
test_mm512_mask3_fmsub_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)1048 __m512d test_mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
1049 // CHECK-LABEL: @test_mm512_mask3_fmsub_pd
1050 // CHECK: fneg <8 x double> %{{.*}}
1051 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
1052 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1053 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1054 return _mm512_mask3_fmsub_pd(__A, __B, __C, __U);
1055 }
test_mm512_mask3_fmsub_round_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)1056 __m512 test_mm512_mask3_fmsub_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
1057 // CHECK-LABEL: @test_mm512_mask3_fmsub_round_ps
1058 // CHECK: fneg <16 x float> %{{.*}}
1059 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
1060 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1061 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1062 return _mm512_mask3_fmsub_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
1063 }
test_mm512_mask3_fmsub_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)1064 __m512 test_mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
1065 // CHECK-LABEL: @test_mm512_mask3_fmsub_ps
1066 // CHECK: fneg <16 x float> %{{.*}}
1067 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1068 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1069 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1070 return _mm512_mask3_fmsub_ps(__A, __B, __C, __U);
1071 }
test_mm512_mask3_fmsubadd_round_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)1072 __m512d test_mm512_mask3_fmsubadd_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
1073 // CHECK-LABEL: @test_mm512_mask3_fmsubadd_round_pd
1074 // CHECK: fneg <8 x double> %{{.*}}
1075 // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
1076 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1077 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1078 return _mm512_mask3_fmsubadd_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
1079 }
test_mm512_mask3_fmsubadd_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)1080 __m512d test_mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
1081 // CHECK-LABEL: @test_mm512_mask3_fmsubadd_pd
1082 // CHECK: [[NEG:%.+]] = fneg <8 x double> %{{.*}}
1083 // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]], i32 4)
1084 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1085 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1086 return _mm512_mask3_fmsubadd_pd(__A, __B, __C, __U);
1087 }
test_mm512_mask3_fmsubadd_round_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)1088 __m512 test_mm512_mask3_fmsubadd_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
1089 // CHECK-LABEL: @test_mm512_mask3_fmsubadd_round_ps
1090 // CHECK: fneg <16 x float> %{{.*}}
1091 // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
1092 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1093 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1094 return _mm512_mask3_fmsubadd_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
1095 }
test_mm512_mask3_fmsubadd_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)1096 __m512 test_mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
1097 // CHECK-LABEL: @test_mm512_mask3_fmsubadd_ps
1098 // CHECK: [[NEG:%.+]] = fneg <16 x float> %{{.*}}
1099 // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]], i32 4)
1100 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1101 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1102 return _mm512_mask3_fmsubadd_ps(__A, __B, __C, __U);
1103 }
test_mm512_mask_fnmadd_round_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)1104 __m512d test_mm512_mask_fnmadd_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
1105 // CHECK-LABEL: @test_mm512_mask_fnmadd_round_pd
1106 // CHECK: fneg <8 x double>
1107 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
1108 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1109 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1110 return _mm512_mask_fnmadd_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
1111 }
test_mm512_mask_fnmadd_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)1112 __m512d test_mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
1113 // CHECK-LABEL: @test_mm512_mask_fnmadd_pd
1114 // CHECK: fneg <8 x double> %{{.*}}
1115 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
1116 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1117 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1118 return _mm512_mask_fnmadd_pd(__A, __U, __B, __C);
1119 }
test_mm512_mask_fnmadd_round_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)1120 __m512 test_mm512_mask_fnmadd_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
1121 // CHECK-LABEL: @test_mm512_mask_fnmadd_round_ps
1122 // CHECK: fneg <16 x float> %{{.*}}
1123 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
1124 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1125 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1126 return _mm512_mask_fnmadd_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
1127 }
test_mm512_mask_fnmadd_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)1128 __m512 test_mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
1129 // CHECK-LABEL: @test_mm512_mask_fnmadd_ps
1130 // CHECK: fneg <16 x float> %{{.*}}
1131 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1132 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1133 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1134 return _mm512_mask_fnmadd_ps(__A, __U, __B, __C);
1135 }
test_mm512_mask_fnmsub_round_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)1136 __m512d test_mm512_mask_fnmsub_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
1137 // CHECK-LABEL: @test_mm512_mask_fnmsub_round_pd
1138 // CHECK: fneg <8 x double>
1139 // CHECK: fneg <8 x double>
1140 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
1141 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1142 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1143 return _mm512_mask_fnmsub_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
1144 }
test_mm512_mask3_fnmsub_round_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)1145 __m512d test_mm512_mask3_fnmsub_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
1146 // CHECK-LABEL: @test_mm512_mask3_fnmsub_round_pd
1147 // CHECK: fneg <8 x double>
1148 // CHECK: fneg <8 x double>
1149 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
1150 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1151 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1152 return _mm512_mask3_fnmsub_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
1153 }
test_mm512_mask_fnmsub_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)1154 __m512d test_mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
1155 // CHECK-LABEL: @test_mm512_mask_fnmsub_pd
1156 // CHECK: fneg <8 x double> %{{.*}}
1157 // CHECK: fneg <8 x double> %{{.*}}
1158 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
1159 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1160 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1161 return _mm512_mask_fnmsub_pd(__A, __U, __B, __C);
1162 }
test_mm512_mask3_fnmsub_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)1163 __m512d test_mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
1164 // CHECK-LABEL: @test_mm512_mask3_fnmsub_pd
1165 // CHECK: fneg <8 x double> %{{.*}}
1166 // CHECK: fneg <8 x double> %{{.*}}
1167 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
1168 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1169 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1170 return _mm512_mask3_fnmsub_pd(__A, __B, __C, __U);
1171 }
test_mm512_mask_fnmsub_round_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)1172 __m512 test_mm512_mask_fnmsub_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
1173 // CHECK-LABEL: @test_mm512_mask_fnmsub_round_ps
1174 // CHECK: fneg <16 x float> %{{.*}}
1175 // CHECK: fneg <16 x float> %{{.*}}
1176 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
1177 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1178 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1179 return _mm512_mask_fnmsub_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
1180 }
test_mm512_mask3_fnmsub_round_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)1181 __m512 test_mm512_mask3_fnmsub_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
1182 // CHECK-LABEL: @test_mm512_mask3_fnmsub_round_ps
1183 // CHECK: fneg <16 x float> %{{.*}}
1184 // CHECK: fneg <16 x float> %{{.*}}
1185 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
1186 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1187 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1188 return _mm512_mask3_fnmsub_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
1189 }
test_mm512_mask_fnmsub_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)1190 __m512 test_mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
1191 // CHECK-LABEL: @test_mm512_mask_fnmsub_ps
1192 // CHECK: fneg <16 x float> %{{.*}}
1193 // CHECK: fneg <16 x float> %{{.*}}
1194 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1195 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1196 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1197 return _mm512_mask_fnmsub_ps(__A, __U, __B, __C);
1198 }
test_mm512_mask3_fnmsub_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)1199 __m512 test_mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
1200 // CHECK-LABEL: @test_mm512_mask3_fnmsub_ps
1201 // CHECK: fneg <16 x float> %{{.*}}
1202 // CHECK: fneg <16 x float> %{{.*}}
1203 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1204 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1205 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1206 return _mm512_mask3_fnmsub_ps(__A, __B, __C, __U);
1207 }
1208
test_mm512_cmpeq_epi32_mask(__m512i __a,__m512i __b)1209 __mmask16 test_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
1210 // CHECK-LABEL: @test_mm512_cmpeq_epi32_mask
1211 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
1212 return (__mmask16)_mm512_cmpeq_epi32_mask(__a, __b);
1213 }
1214
test_mm512_mask_cmpeq_epi32_mask(__mmask16 __u,__m512i __a,__m512i __b)1215 __mmask16 test_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1216 // CHECK-LABEL: @test_mm512_mask_cmpeq_epi32_mask
1217 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
1218 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
1219 return (__mmask16)_mm512_mask_cmpeq_epi32_mask(__u, __a, __b);
1220 }
1221
test_mm512_mask_cmpeq_epi64_mask(__mmask8 __u,__m512i __a,__m512i __b)1222 __mmask8 test_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1223 // CHECK-LABEL: @test_mm512_mask_cmpeq_epi64_mask
1224 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
1225 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
1226 return (__mmask8)_mm512_mask_cmpeq_epi64_mask(__u, __a, __b);
1227 }
1228
test_mm512_cmpeq_epi64_mask(__m512i __a,__m512i __b)1229 __mmask8 test_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
1230 // CHECK-LABEL: @test_mm512_cmpeq_epi64_mask
1231 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
1232 return (__mmask8)_mm512_cmpeq_epi64_mask(__a, __b);
1233 }
1234
test_mm512_cmpgt_epi32_mask(__m512i __a,__m512i __b)1235 __mmask16 test_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
1236 // CHECK-LABEL: @test_mm512_cmpgt_epi32_mask
1237 // CHECK: icmp sgt <16 x i32> %{{.*}}, %{{.*}}
1238 return (__mmask16)_mm512_cmpgt_epi32_mask(__a, __b);
1239 }
1240
test_mm512_mask_cmpgt_epi32_mask(__mmask16 __u,__m512i __a,__m512i __b)1241 __mmask16 test_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1242 // CHECK-LABEL: @test_mm512_mask_cmpgt_epi32_mask
1243 // CHECK: icmp sgt <16 x i32> %{{.*}}, %{{.*}}
1244 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
1245 return (__mmask16)_mm512_mask_cmpgt_epi32_mask(__u, __a, __b);
1246 }
1247
test_mm512_mask_cmpgt_epi64_mask(__mmask8 __u,__m512i __a,__m512i __b)1248 __mmask8 test_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1249 // CHECK-LABEL: @test_mm512_mask_cmpgt_epi64_mask
1250 // CHECK: icmp sgt <8 x i64> %{{.*}}, %{{.*}}
1251 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
1252 return (__mmask8)_mm512_mask_cmpgt_epi64_mask(__u, __a, __b);
1253 }
1254
test_mm512_cmpgt_epi64_mask(__m512i __a,__m512i __b)1255 __mmask8 test_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
1256 // CHECK-LABEL: @test_mm512_cmpgt_epi64_mask
1257 // CHECK: icmp sgt <8 x i64> %{{.*}}, %{{.*}}
1258 return (__mmask8)_mm512_cmpgt_epi64_mask(__a, __b);
1259 }
1260
test_mm512_unpackhi_pd(__m512d a,__m512d b)1261 __m512d test_mm512_unpackhi_pd(__m512d a, __m512d b)
1262 {
1263 // CHECK-LABEL: @test_mm512_unpackhi_pd
1264 // CHECK: shufflevector <8 x double> {{.*}} <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
1265 return _mm512_unpackhi_pd(a, b);
1266 }
1267
test_mm512_unpacklo_pd(__m512d a,__m512d b)1268 __m512d test_mm512_unpacklo_pd(__m512d a, __m512d b)
1269 {
1270 // CHECK-LABEL: @test_mm512_unpacklo_pd
1271 // CHECK: shufflevector <8 x double> {{.*}} <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
1272 return _mm512_unpacklo_pd(a, b);
1273 }
1274
test_mm512_unpackhi_ps(__m512 a,__m512 b)1275 __m512 test_mm512_unpackhi_ps(__m512 a, __m512 b)
1276 {
1277 // CHECK-LABEL: @test_mm512_unpackhi_ps
1278 // CHECK: shufflevector <16 x float> {{.*}} <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31>
1279 return _mm512_unpackhi_ps(a, b);
1280 }
1281
test_mm512_unpacklo_ps(__m512 a,__m512 b)1282 __m512 test_mm512_unpacklo_ps(__m512 a, __m512 b)
1283 {
1284 // CHECK-LABEL: @test_mm512_unpacklo_ps
1285 // CHECK: shufflevector <16 x float> {{.*}} <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29>
1286 return _mm512_unpacklo_ps(a, b);
1287 }
1288
test_mm512_cmp_round_ps_mask(__m512 a,__m512 b)1289 __mmask16 test_mm512_cmp_round_ps_mask(__m512 a, __m512 b) {
1290 // CHECK-LABEL: @test_mm512_cmp_round_ps_mask
1291 // CHECK: fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1292 return _mm512_cmp_round_ps_mask(a, b, _CMP_EQ_OQ, _MM_FROUND_NO_EXC);
1293 }
1294
test_mm512_mask_cmp_round_ps_mask(__mmask16 m,__m512 a,__m512 b)1295 __mmask16 test_mm512_mask_cmp_round_ps_mask(__mmask16 m, __m512 a, __m512 b) {
1296 // CHECK-LABEL: @test_mm512_mask_cmp_round_ps_mask
1297 // CHECK: [[CMP:%.*]] = fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1298 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1299 return _mm512_mask_cmp_round_ps_mask(m, a, b, _CMP_EQ_OQ, _MM_FROUND_NO_EXC);
1300 }
1301
test_mm512_cmp_ps_mask_eq_oq(__m512 a,__m512 b)1302 __mmask16 test_mm512_cmp_ps_mask_eq_oq(__m512 a, __m512 b) {
1303 // CHECK-LABEL: @test_mm512_cmp_ps_mask_eq_oq
1304 // CHECK: fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1305 return _mm512_cmp_ps_mask(a, b, _CMP_EQ_OQ);
1306 }
1307
test_mm512_cmp_ps_mask_lt_os(__m512 a,__m512 b)1308 __mmask16 test_mm512_cmp_ps_mask_lt_os(__m512 a, __m512 b) {
1309 // CHECK-LABEL: test_mm512_cmp_ps_mask_lt_os
1310 // CHECK: fcmp olt <16 x float> %{{.*}}, %{{.*}}
1311 return _mm512_cmp_ps_mask(a, b, _CMP_LT_OS);
1312 }
1313
test_mm512_cmp_ps_mask_le_os(__m512 a,__m512 b)1314 __mmask16 test_mm512_cmp_ps_mask_le_os(__m512 a, __m512 b) {
1315 // CHECK-LABEL: test_mm512_cmp_ps_mask_le_os
1316 // CHECK: fcmp ole <16 x float> %{{.*}}, %{{.*}}
1317 return _mm512_cmp_ps_mask(a, b, _CMP_LE_OS);
1318 }
1319
test_mm512_cmp_ps_mask_unord_q(__m512 a,__m512 b)1320 __mmask16 test_mm512_cmp_ps_mask_unord_q(__m512 a, __m512 b) {
1321 // CHECK-LABEL: test_mm512_cmp_ps_mask_unord_q
1322 // CHECK: fcmp uno <16 x float> %{{.*}}, %{{.*}}
1323 return _mm512_cmp_ps_mask(a, b, _CMP_UNORD_Q);
1324 }
1325
test_mm512_cmp_ps_mask_neq_uq(__m512 a,__m512 b)1326 __mmask16 test_mm512_cmp_ps_mask_neq_uq(__m512 a, __m512 b) {
1327 // CHECK-LABEL: test_mm512_cmp_ps_mask_neq_uq
1328 // CHECK: fcmp une <16 x float> %{{.*}}, %{{.*}}
1329 return _mm512_cmp_ps_mask(a, b, _CMP_NEQ_UQ);
1330 }
1331
test_mm512_cmp_ps_mask_nlt_us(__m512 a,__m512 b)1332 __mmask16 test_mm512_cmp_ps_mask_nlt_us(__m512 a, __m512 b) {
1333 // CHECK-LABEL: test_mm512_cmp_ps_mask_nlt_us
1334 // CHECK: fcmp uge <16 x float> %{{.*}}, %{{.*}}
1335 return _mm512_cmp_ps_mask(a, b, _CMP_NLT_US);
1336 }
1337
test_mm512_cmp_ps_mask_nle_us(__m512 a,__m512 b)1338 __mmask16 test_mm512_cmp_ps_mask_nle_us(__m512 a, __m512 b) {
1339 // CHECK-LABEL: test_mm512_cmp_ps_mask_nle_us
1340 // CHECK: fcmp ugt <16 x float> %{{.*}}, %{{.*}}
1341 return _mm512_cmp_ps_mask(a, b, _CMP_NLE_US);
1342 }
1343
test_mm512_cmp_ps_mask_ord_q(__m512 a,__m512 b)1344 __mmask16 test_mm512_cmp_ps_mask_ord_q(__m512 a, __m512 b) {
1345 // CHECK-LABEL: test_mm512_cmp_ps_mask_ord_q
1346 // CHECK: fcmp ord <16 x float> %{{.*}}, %{{.*}}
1347 return _mm512_cmp_ps_mask(a, b, _CMP_ORD_Q);
1348 }
1349
test_mm512_cmp_ps_mask_eq_uq(__m512 a,__m512 b)1350 __mmask16 test_mm512_cmp_ps_mask_eq_uq(__m512 a, __m512 b) {
1351 // CHECK-LABEL: test_mm512_cmp_ps_mask_eq_uq
1352 // CHECK: fcmp ueq <16 x float> %{{.*}}, %{{.*}}
1353 return _mm512_cmp_ps_mask(a, b, _CMP_EQ_UQ);
1354 }
1355
test_mm512_cmp_ps_mask_nge_us(__m512 a,__m512 b)1356 __mmask16 test_mm512_cmp_ps_mask_nge_us(__m512 a, __m512 b) {
1357 // CHECK-LABEL: test_mm512_cmp_ps_mask_nge_us
1358 // CHECK: fcmp ult <16 x float> %{{.*}}, %{{.*}}
1359 return _mm512_cmp_ps_mask(a, b, _CMP_NGE_US);
1360 }
1361
test_mm512_cmp_ps_mask_ngt_us(__m512 a,__m512 b)1362 __mmask16 test_mm512_cmp_ps_mask_ngt_us(__m512 a, __m512 b) {
1363 // CHECK-LABEL: test_mm512_cmp_ps_mask_ngt_us
1364 // CHECK: fcmp ule <16 x float> %{{.*}}, %{{.*}}
1365 return _mm512_cmp_ps_mask(a, b, _CMP_NGT_US);
1366 }
1367
test_mm512_cmp_ps_mask_false_oq(__m512 a,__m512 b)1368 __mmask16 test_mm512_cmp_ps_mask_false_oq(__m512 a, __m512 b) {
1369 // CHECK-LABEL: test_mm512_cmp_ps_mask_false_oq
1370 // CHECK: fcmp false <16 x float> %{{.*}}, %{{.*}}
1371 return _mm512_cmp_ps_mask(a, b, _CMP_FALSE_OQ);
1372 }
1373
test_mm512_cmp_ps_mask_neq_oq(__m512 a,__m512 b)1374 __mmask16 test_mm512_cmp_ps_mask_neq_oq(__m512 a, __m512 b) {
1375 // CHECK-LABEL: test_mm512_cmp_ps_mask_neq_oq
1376 // CHECK: fcmp one <16 x float> %{{.*}}, %{{.*}}
1377 return _mm512_cmp_ps_mask(a, b, _CMP_NEQ_OQ);
1378 }
1379
test_mm512_cmp_ps_mask_ge_os(__m512 a,__m512 b)1380 __mmask16 test_mm512_cmp_ps_mask_ge_os(__m512 a, __m512 b) {
1381 // CHECK-LABEL: test_mm512_cmp_ps_mask_ge_os
1382 // CHECK: fcmp oge <16 x float> %{{.*}}, %{{.*}}
1383 return _mm512_cmp_ps_mask(a, b, _CMP_GE_OS);
1384 }
1385
test_mm512_cmp_ps_mask_gt_os(__m512 a,__m512 b)1386 __mmask16 test_mm512_cmp_ps_mask_gt_os(__m512 a, __m512 b) {
1387 // CHECK-LABEL: test_mm512_cmp_ps_mask_gt_os
1388 // CHECK: fcmp ogt <16 x float> %{{.*}}, %{{.*}}
1389 return _mm512_cmp_ps_mask(a, b, _CMP_GT_OS);
1390 }
1391
test_mm512_cmp_ps_mask_true_uq(__m512 a,__m512 b)1392 __mmask16 test_mm512_cmp_ps_mask_true_uq(__m512 a, __m512 b) {
1393 // CHECK-LABEL: test_mm512_cmp_ps_mask_true_uq
1394 // CHECK: fcmp true <16 x float> %{{.*}}, %{{.*}}
1395 return _mm512_cmp_ps_mask(a, b, _CMP_TRUE_UQ);
1396 }
1397
test_mm512_cmp_ps_mask_eq_os(__m512 a,__m512 b)1398 __mmask16 test_mm512_cmp_ps_mask_eq_os(__m512 a, __m512 b) {
1399 // CHECK-LABEL: test_mm512_cmp_ps_mask_eq_os
1400 // CHECK: fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1401 return _mm512_cmp_ps_mask(a, b, _CMP_EQ_OS);
1402 }
1403
test_mm512_cmp_ps_mask_lt_oq(__m512 a,__m512 b)1404 __mmask16 test_mm512_cmp_ps_mask_lt_oq(__m512 a, __m512 b) {
1405 // CHECK-LABEL: test_mm512_cmp_ps_mask_lt_oq
1406 // CHECK: fcmp olt <16 x float> %{{.*}}, %{{.*}}
1407 return _mm512_cmp_ps_mask(a, b, _CMP_LT_OQ);
1408 }
1409
test_mm512_cmp_ps_mask_le_oq(__m512 a,__m512 b)1410 __mmask16 test_mm512_cmp_ps_mask_le_oq(__m512 a, __m512 b) {
1411 // CHECK-LABEL: test_mm512_cmp_ps_mask_le_oq
1412 // CHECK: fcmp ole <16 x float> %{{.*}}, %{{.*}}
1413 return _mm512_cmp_ps_mask(a, b, _CMP_LE_OQ);
1414 }
1415
test_mm512_cmp_ps_mask_unord_s(__m512 a,__m512 b)1416 __mmask16 test_mm512_cmp_ps_mask_unord_s(__m512 a, __m512 b) {
1417 // CHECK-LABEL: test_mm512_cmp_ps_mask_unord_s
1418 // CHECK: fcmp uno <16 x float> %{{.*}}, %{{.*}}
1419 return _mm512_cmp_ps_mask(a, b, _CMP_UNORD_S);
1420 }
1421
test_mm512_cmp_ps_mask_neq_us(__m512 a,__m512 b)1422 __mmask16 test_mm512_cmp_ps_mask_neq_us(__m512 a, __m512 b) {
1423 // CHECK-LABEL: test_mm512_cmp_ps_mask_neq_us
1424 // CHECK: fcmp une <16 x float> %{{.*}}, %{{.*}}
1425 return _mm512_cmp_ps_mask(a, b, _CMP_NEQ_US);
1426 }
1427
test_mm512_cmp_ps_mask_nlt_uq(__m512 a,__m512 b)1428 __mmask16 test_mm512_cmp_ps_mask_nlt_uq(__m512 a, __m512 b) {
1429 // CHECK-LABEL: test_mm512_cmp_ps_mask_nlt_uq
1430 // CHECK: fcmp uge <16 x float> %{{.*}}, %{{.*}}
1431 return _mm512_cmp_ps_mask(a, b, _CMP_NLT_UQ);
1432 }
1433
test_mm512_cmp_ps_mask_nle_uq(__m512 a,__m512 b)1434 __mmask16 test_mm512_cmp_ps_mask_nle_uq(__m512 a, __m512 b) {
1435 // CHECK-LABEL: test_mm512_cmp_ps_mask_nle_uq
1436 // CHECK: fcmp ugt <16 x float> %{{.*}}, %{{.*}}
1437 return _mm512_cmp_ps_mask(a, b, _CMP_NLE_UQ);
1438 }
1439
test_mm512_cmp_ps_mask_ord_s(__m512 a,__m512 b)1440 __mmask16 test_mm512_cmp_ps_mask_ord_s(__m512 a, __m512 b) {
1441 // CHECK-LABEL: test_mm512_cmp_ps_mask_ord_s
1442 // CHECK: fcmp ord <16 x float> %{{.*}}, %{{.*}}
1443 return _mm512_cmp_ps_mask(a, b, _CMP_ORD_S);
1444 }
1445
test_mm512_cmp_ps_mask_eq_us(__m512 a,__m512 b)1446 __mmask16 test_mm512_cmp_ps_mask_eq_us(__m512 a, __m512 b) {
1447 // CHECK-LABEL: test_mm512_cmp_ps_mask_eq_us
1448 // CHECK: fcmp ueq <16 x float> %{{.*}}, %{{.*}}
1449 return _mm512_cmp_ps_mask(a, b, _CMP_EQ_US);
1450 }
1451
test_mm512_cmp_ps_mask_nge_uq(__m512 a,__m512 b)1452 __mmask16 test_mm512_cmp_ps_mask_nge_uq(__m512 a, __m512 b) {
1453 // CHECK-LABEL: test_mm512_cmp_ps_mask_nge_uq
1454 // CHECK: fcmp ult <16 x float> %{{.*}}, %{{.*}}
1455 return _mm512_cmp_ps_mask(a, b, _CMP_NGE_UQ);
1456 }
1457
test_mm512_cmp_ps_mask_ngt_uq(__m512 a,__m512 b)1458 __mmask16 test_mm512_cmp_ps_mask_ngt_uq(__m512 a, __m512 b) {
1459 // CHECK-LABEL: test_mm512_cmp_ps_mask_ngt_uq
1460 // CHECK: fcmp ule <16 x float> %{{.*}}, %{{.*}}
1461 return _mm512_cmp_ps_mask(a, b, _CMP_NGT_UQ);
1462 }
1463
test_mm512_cmp_ps_mask_false_os(__m512 a,__m512 b)1464 __mmask16 test_mm512_cmp_ps_mask_false_os(__m512 a, __m512 b) {
1465 // CHECK-LABEL: test_mm512_cmp_ps_mask_false_os
1466 // CHECK: fcmp false <16 x float> %{{.*}}, %{{.*}}
1467 return _mm512_cmp_ps_mask(a, b, _CMP_FALSE_OS);
1468 }
1469
test_mm512_cmp_ps_mask_neq_os(__m512 a,__m512 b)1470 __mmask16 test_mm512_cmp_ps_mask_neq_os(__m512 a, __m512 b) {
1471 // CHECK-LABEL: test_mm512_cmp_ps_mask_neq_os
1472 // CHECK: fcmp one <16 x float> %{{.*}}, %{{.*}}
1473 return _mm512_cmp_ps_mask(a, b, _CMP_NEQ_OS);
1474 }
1475
test_mm512_cmp_ps_mask_ge_oq(__m512 a,__m512 b)1476 __mmask16 test_mm512_cmp_ps_mask_ge_oq(__m512 a, __m512 b) {
1477 // CHECK-LABEL: test_mm512_cmp_ps_mask_ge_oq
1478 // CHECK: fcmp oge <16 x float> %{{.*}}, %{{.*}}
1479 return _mm512_cmp_ps_mask(a, b, _CMP_GE_OQ);
1480 }
1481
test_mm512_cmp_ps_mask_gt_oq(__m512 a,__m512 b)1482 __mmask16 test_mm512_cmp_ps_mask_gt_oq(__m512 a, __m512 b) {
1483 // CHECK-LABEL: test_mm512_cmp_ps_mask_gt_oq
1484 // CHECK: fcmp ogt <16 x float> %{{.*}}, %{{.*}}
1485 return _mm512_cmp_ps_mask(a, b, _CMP_GT_OQ);
1486 }
1487
test_mm512_cmp_ps_mask_true_us(__m512 a,__m512 b)1488 __mmask16 test_mm512_cmp_ps_mask_true_us(__m512 a, __m512 b) {
1489 // CHECK-LABEL: test_mm512_cmp_ps_mask_true_us
1490 // CHECK: fcmp true <16 x float> %{{.*}}, %{{.*}}
1491 return _mm512_cmp_ps_mask(a, b, _CMP_TRUE_US);
1492 }
1493
test_mm512_mask_cmp_ps_mask_eq_oq(__mmask16 m,__m512 a,__m512 b)1494 __mmask16 test_mm512_mask_cmp_ps_mask_eq_oq(__mmask16 m, __m512 a, __m512 b) {
1495 // CHECK-LABEL: @test_mm512_mask_cmp_ps_mask_eq_oq
1496 // CHECK: [[CMP:%.*]] = fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1497 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1498 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OQ);
1499 }
1500
test_mm512_mask_cmp_ps_mask_lt_os(__mmask16 m,__m512 a,__m512 b)1501 __mmask16 test_mm512_mask_cmp_ps_mask_lt_os(__mmask16 m, __m512 a, __m512 b) {
1502 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_lt_os
1503 // CHECK: [[CMP:%.*]] = fcmp olt <16 x float> %{{.*}}, %{{.*}}
1504 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1505 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_LT_OS);
1506 }
1507
test_mm512_mask_cmp_ps_mask_le_os(__mmask16 m,__m512 a,__m512 b)1508 __mmask16 test_mm512_mask_cmp_ps_mask_le_os(__mmask16 m, __m512 a, __m512 b) {
1509 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_le_os
1510 // CHECK: [[CMP:%.*]] = fcmp ole <16 x float> %{{.*}}, %{{.*}}
1511 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1512 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_LE_OS);
1513 }
1514
test_mm512_mask_cmp_ps_mask_unord_q(__mmask16 m,__m512 a,__m512 b)1515 __mmask16 test_mm512_mask_cmp_ps_mask_unord_q(__mmask16 m, __m512 a, __m512 b) {
1516 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_unord_q
1517 // CHECK: [[CMP:%.*]] = fcmp uno <16 x float> %{{.*}}, %{{.*}}
1518 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1519 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_Q);
1520 }
1521
test_mm512_mask_cmp_ps_mask_neq_uq(__mmask16 m,__m512 a,__m512 b)1522 __mmask16 test_mm512_mask_cmp_ps_mask_neq_uq(__mmask16 m, __m512 a, __m512 b) {
1523 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_neq_uq
1524 // CHECK: [[CMP:%.*]] = fcmp une <16 x float> %{{.*}}, %{{.*}}
1525 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1526 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_UQ);
1527 }
1528
test_mm512_mask_cmp_ps_mask_nlt_us(__mmask16 m,__m512 a,__m512 b)1529 __mmask16 test_mm512_mask_cmp_ps_mask_nlt_us(__mmask16 m, __m512 a, __m512 b) {
1530 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nlt_us
1531 // CHECK: [[CMP:%.*]] = fcmp uge <16 x float> %{{.*}}, %{{.*}}
1532 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1533 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NLT_US);
1534 }
1535
test_mm512_mask_cmp_ps_mask_nle_us(__mmask16 m,__m512 a,__m512 b)1536 __mmask16 test_mm512_mask_cmp_ps_mask_nle_us(__mmask16 m, __m512 a, __m512 b) {
1537 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nle_us
1538 // CHECK: [[CMP:%.*]] = fcmp ugt <16 x float> %{{.*}}, %{{.*}}
1539 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1540 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NLE_US);
1541 }
1542
test_mm512_mask_cmp_ps_mask_ord_q(__mmask16 m,__m512 a,__m512 b)1543 __mmask16 test_mm512_mask_cmp_ps_mask_ord_q(__mmask16 m, __m512 a, __m512 b) {
1544 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ord_q
1545 // CHECK: [[CMP:%.*]] = fcmp ord <16 x float> %{{.*}}, %{{.*}}
1546 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1547 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_ORD_Q);
1548 }
1549
test_mm512_mask_cmp_ps_mask_eq_uq(__mmask16 m,__m512 a,__m512 b)1550 __mmask16 test_mm512_mask_cmp_ps_mask_eq_uq(__mmask16 m, __m512 a, __m512 b) {
1551 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_eq_uq
1552 // CHECK: [[CMP:%.*]] = fcmp ueq <16 x float> %{{.*}}, %{{.*}}
1553 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1554 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_EQ_UQ);
1555 }
1556
test_mm512_mask_cmp_ps_mask_nge_us(__mmask16 m,__m512 a,__m512 b)1557 __mmask16 test_mm512_mask_cmp_ps_mask_nge_us(__mmask16 m, __m512 a, __m512 b) {
1558 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nge_us
1559 // CHECK: [[CMP:%.*]] = fcmp ult <16 x float> %{{.*}}, %{{.*}}
1560 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1561 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NGE_US);
1562 }
1563
test_mm512_mask_cmp_ps_mask_ngt_us(__mmask16 m,__m512 a,__m512 b)1564 __mmask16 test_mm512_mask_cmp_ps_mask_ngt_us(__mmask16 m, __m512 a, __m512 b) {
1565 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ngt_us
1566 // CHECK: [[CMP:%.*]] = fcmp ule <16 x float> %{{.*}}, %{{.*}}
1567 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1568 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NGT_US);
1569 }
1570
test_mm512_mask_cmp_ps_mask_false_oq(__mmask16 m,__m512 a,__m512 b)1571 __mmask16 test_mm512_mask_cmp_ps_mask_false_oq(__mmask16 m, __m512 a, __m512 b) {
1572 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_false_oq
1573 // CHECK: [[CMP:%.*]] = fcmp false <16 x float> %{{.*}}, %{{.*}}
1574 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1575 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OQ);
1576 }
1577
test_mm512_mask_cmp_ps_mask_neq_oq(__mmask16 m,__m512 a,__m512 b)1578 __mmask16 test_mm512_mask_cmp_ps_mask_neq_oq(__mmask16 m, __m512 a, __m512 b) {
1579 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_neq_oq
1580 // CHECK: [[CMP:%.*]] = fcmp one <16 x float> %{{.*}}, %{{.*}}
1581 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1582 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OQ);
1583 }
1584
test_mm512_mask_cmp_ps_mask_ge_os(__mmask16 m,__m512 a,__m512 b)1585 __mmask16 test_mm512_mask_cmp_ps_mask_ge_os(__mmask16 m, __m512 a, __m512 b) {
1586 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ge_os
1587 // CHECK: [[CMP:%.*]] = fcmp oge <16 x float> %{{.*}}, %{{.*}}
1588 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1589 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_GE_OS);
1590 }
1591
test_mm512_mask_cmp_ps_mask_gt_os(__mmask16 m,__m512 a,__m512 b)1592 __mmask16 test_mm512_mask_cmp_ps_mask_gt_os(__mmask16 m, __m512 a, __m512 b) {
1593 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_gt_os
1594 // CHECK: [[CMP:%.*]] = fcmp ogt <16 x float> %{{.*}}, %{{.*}}
1595 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1596 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_GT_OS);
1597 }
1598
test_mm512_mask_cmp_ps_mask_true_uq(__mmask16 m,__m512 a,__m512 b)1599 __mmask16 test_mm512_mask_cmp_ps_mask_true_uq(__mmask16 m, __m512 a, __m512 b) {
1600 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_true_uq
1601 // CHECK: [[CMP:%.*]] = fcmp true <16 x float> %{{.*}}, %{{.*}}
1602 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1603 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_UQ);
1604 }
1605
test_mm512_mask_cmp_ps_mask_eq_os(__mmask16 m,__m512 a,__m512 b)1606 __mmask16 test_mm512_mask_cmp_ps_mask_eq_os(__mmask16 m, __m512 a, __m512 b) {
1607 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_eq_os
1608 // CHECK: [[CMP:%.*]] = fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1609 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1610 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OS);
1611 }
1612
test_mm512_mask_cmp_ps_mask_lt_oq(__mmask16 m,__m512 a,__m512 b)1613 __mmask16 test_mm512_mask_cmp_ps_mask_lt_oq(__mmask16 m, __m512 a, __m512 b) {
1614 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_lt_oq
1615 // CHECK: [[CMP:%.*]] = fcmp olt <16 x float> %{{.*}}, %{{.*}}
1616 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1617 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_LT_OQ);
1618 }
1619
test_mm512_mask_cmp_ps_mask_le_oq(__mmask16 m,__m512 a,__m512 b)1620 __mmask16 test_mm512_mask_cmp_ps_mask_le_oq(__mmask16 m, __m512 a, __m512 b) {
1621 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_le_oq
1622 // CHECK: [[CMP:%.*]] = fcmp ole <16 x float> %{{.*}}, %{{.*}}
1623 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1624 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_LE_OQ);
1625 }
1626
test_mm512_mask_cmp_ps_mask_unord_s(__mmask16 m,__m512 a,__m512 b)1627 __mmask16 test_mm512_mask_cmp_ps_mask_unord_s(__mmask16 m, __m512 a, __m512 b) {
1628 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_unord_s
1629 // CHECK: [[CMP:%.*]] = fcmp uno <16 x float> %{{.*}}, %{{.*}}
1630 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1631 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_S);
1632 }
1633
test_mm512_mask_cmp_ps_mask_neq_us(__mmask16 m,__m512 a,__m512 b)1634 __mmask16 test_mm512_mask_cmp_ps_mask_neq_us(__mmask16 m, __m512 a, __m512 b) {
1635 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_neq_us
1636 // CHECK: [[CMP:%.*]] = fcmp une <16 x float> %{{.*}}, %{{.*}}
1637 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1638 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_US);
1639 }
1640
test_mm512_mask_cmp_ps_mask_nlt_uq(__mmask16 m,__m512 a,__m512 b)1641 __mmask16 test_mm512_mask_cmp_ps_mask_nlt_uq(__mmask16 m, __m512 a, __m512 b) {
1642 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nlt_uq
1643 // CHECK: [[CMP:%.*]] = fcmp uge <16 x float> %{{.*}}, %{{.*}}
1644 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1645 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NLT_UQ);
1646 }
1647
test_mm512_mask_cmp_ps_mask_nle_uq(__mmask16 m,__m512 a,__m512 b)1648 __mmask16 test_mm512_mask_cmp_ps_mask_nle_uq(__mmask16 m, __m512 a, __m512 b) {
1649 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nle_uq
1650 // CHECK: [[CMP:%.*]] = fcmp ugt <16 x float> %{{.*}}, %{{.*}}
1651 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1652 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NLE_UQ);
1653 }
1654
test_mm512_mask_cmp_ps_mask_ord_s(__mmask16 m,__m512 a,__m512 b)1655 __mmask16 test_mm512_mask_cmp_ps_mask_ord_s(__mmask16 m, __m512 a, __m512 b) {
1656 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ord_s
1657 // CHECK: [[CMP:%.*]] = fcmp ord <16 x float> %{{.*}}, %{{.*}}
1658 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1659 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_ORD_S);
1660 }
1661
test_mm512_mask_cmp_ps_mask_eq_us(__mmask16 m,__m512 a,__m512 b)1662 __mmask16 test_mm512_mask_cmp_ps_mask_eq_us(__mmask16 m, __m512 a, __m512 b) {
1663 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_eq_us
1664 // CHECK: [[CMP:%.*]] = fcmp ueq <16 x float> %{{.*}}, %{{.*}}
1665 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1666 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_EQ_US);
1667 }
1668
test_mm512_mask_cmp_ps_mask_nge_uq(__mmask16 m,__m512 a,__m512 b)1669 __mmask16 test_mm512_mask_cmp_ps_mask_nge_uq(__mmask16 m, __m512 a, __m512 b) {
1670 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nge_uq
1671 // CHECK: [[CMP:%.*]] = fcmp ult <16 x float> %{{.*}}, %{{.*}}
1672 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1673 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NGE_UQ);
1674 }
1675
test_mm512_mask_cmp_ps_mask_ngt_uq(__mmask16 m,__m512 a,__m512 b)1676 __mmask16 test_mm512_mask_cmp_ps_mask_ngt_uq(__mmask16 m, __m512 a, __m512 b) {
1677 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ngt_uq
1678 // CHECK: [[CMP:%.*]] = fcmp ule <16 x float> %{{.*}}, %{{.*}}
1679 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1680 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NGT_UQ);
1681 }
1682
test_mm512_mask_cmp_ps_mask_false_os(__mmask16 m,__m512 a,__m512 b)1683 __mmask16 test_mm512_mask_cmp_ps_mask_false_os(__mmask16 m, __m512 a, __m512 b) {
1684 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_false_os
1685 // CHECK: [[CMP:%.*]] = fcmp false <16 x float> %{{.*}}, %{{.*}}
1686 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1687 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OS);
1688 }
1689
test_mm512_mask_cmp_ps_mask_neq_os(__mmask16 m,__m512 a,__m512 b)1690 __mmask16 test_mm512_mask_cmp_ps_mask_neq_os(__mmask16 m, __m512 a, __m512 b) {
1691 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_neq_os
1692 // CHECK: [[CMP:%.*]] = fcmp one <16 x float> %{{.*}}, %{{.*}}
1693 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1694 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OS);
1695 }
1696
test_mm512_mask_cmp_ps_mask_ge_oq(__mmask16 m,__m512 a,__m512 b)1697 __mmask16 test_mm512_mask_cmp_ps_mask_ge_oq(__mmask16 m, __m512 a, __m512 b) {
1698 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ge_oq
1699 // CHECK: [[CMP:%.*]] = fcmp oge <16 x float> %{{.*}}, %{{.*}}
1700 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1701 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_GE_OQ);
1702 }
1703
test_mm512_mask_cmp_ps_mask_gt_oq(__mmask16 m,__m512 a,__m512 b)1704 __mmask16 test_mm512_mask_cmp_ps_mask_gt_oq(__mmask16 m, __m512 a, __m512 b) {
1705 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_gt_oq
1706 // CHECK: [[CMP:%.*]] = fcmp ogt <16 x float> %{{.*}}, %{{.*}}
1707 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1708 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_GT_OQ);
1709 }
1710
test_mm512_mask_cmp_ps_mask_true_us(__mmask16 m,__m512 a,__m512 b)1711 __mmask16 test_mm512_mask_cmp_ps_mask_true_us(__mmask16 m, __m512 a, __m512 b) {
1712 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_true_us
1713 // CHECK: [[CMP:%.*]] = fcmp true <16 x float> %{{.*}}, %{{.*}}
1714 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1715 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_US);
1716 }
1717
test_mm512_cmp_round_pd_mask(__m512d a,__m512d b)1718 __mmask8 test_mm512_cmp_round_pd_mask(__m512d a, __m512d b) {
1719 // CHECK-LABEL: @test_mm512_cmp_round_pd_mask
1720 // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
1721 return _mm512_cmp_round_pd_mask(a, b, _CMP_EQ_OQ, _MM_FROUND_NO_EXC);
1722 }
1723
test_mm512_mask_cmp_round_pd_mask(__mmask8 m,__m512d a,__m512d b)1724 __mmask8 test_mm512_mask_cmp_round_pd_mask(__mmask8 m, __m512d a, __m512d b) {
1725 // CHECK-LABEL: @test_mm512_mask_cmp_round_pd_mask
1726 // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
1727 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1728 return _mm512_mask_cmp_round_pd_mask(m, a, b, _CMP_EQ_OQ, _MM_FROUND_NO_EXC);
1729 }
1730
test_mm512_cmp_pd_mask_eq_oq(__m512d a,__m512d b)1731 __mmask8 test_mm512_cmp_pd_mask_eq_oq(__m512d a, __m512d b) {
1732 // CHECK-LABEL: @test_mm512_cmp_pd_mask_eq_oq
1733 // CHECK: fcmp oeq <8 x double> %{{.*}}, %{{.*}}
1734 return _mm512_cmp_pd_mask(a, b, _CMP_EQ_OQ);
1735 }
1736
test_mm512_cmp_pd_mask_lt_os(__m512d a,__m512d b)1737 __mmask8 test_mm512_cmp_pd_mask_lt_os(__m512d a, __m512d b) {
1738 // CHECK-LABEL: test_mm512_cmp_pd_mask_lt_os
1739 // CHECK: fcmp olt <8 x double> %{{.*}}, %{{.*}}
1740 return _mm512_cmp_pd_mask(a, b, _CMP_LT_OS);
1741 }
1742
test_mm512_cmp_pd_mask_le_os(__m512d a,__m512d b)1743 __mmask8 test_mm512_cmp_pd_mask_le_os(__m512d a, __m512d b) {
1744 // CHECK-LABEL: test_mm512_cmp_pd_mask_le_os
1745 // CHECK: fcmp ole <8 x double> %{{.*}}, %{{.*}}
1746 return _mm512_cmp_pd_mask(a, b, _CMP_LE_OS);
1747 }
1748
test_mm512_cmp_pd_mask_unord_q(__m512d a,__m512d b)1749 __mmask8 test_mm512_cmp_pd_mask_unord_q(__m512d a, __m512d b) {
1750 // CHECK-LABEL: test_mm512_cmp_pd_mask_unord_q
1751 // CHECK: fcmp uno <8 x double> %{{.*}}, %{{.*}}
1752 return _mm512_cmp_pd_mask(a, b, _CMP_UNORD_Q);
1753 }
1754
test_mm512_cmp_pd_mask_neq_uq(__m512d a,__m512d b)1755 __mmask8 test_mm512_cmp_pd_mask_neq_uq(__m512d a, __m512d b) {
1756 // CHECK-LABEL: test_mm512_cmp_pd_mask_neq_uq
1757 // CHECK: fcmp une <8 x double> %{{.*}}, %{{.*}}
1758 return _mm512_cmp_pd_mask(a, b, _CMP_NEQ_UQ);
1759 }
1760
test_mm512_cmp_pd_mask_nlt_us(__m512d a,__m512d b)1761 __mmask8 test_mm512_cmp_pd_mask_nlt_us(__m512d a, __m512d b) {
1762 // CHECK-LABEL: test_mm512_cmp_pd_mask_nlt_us
1763 // CHECK: fcmp uge <8 x double> %{{.*}}, %{{.*}}
1764 return _mm512_cmp_pd_mask(a, b, _CMP_NLT_US);
1765 }
1766
test_mm512_cmp_pd_mask_nle_us(__m512d a,__m512d b)1767 __mmask8 test_mm512_cmp_pd_mask_nle_us(__m512d a, __m512d b) {
1768 // CHECK-LABEL: test_mm512_cmp_pd_mask_nle_us
1769 // CHECK: fcmp ugt <8 x double> %{{.*}}, %{{.*}}
1770 return _mm512_cmp_pd_mask(a, b, _CMP_NLE_US);
1771 }
1772
test_mm512_cmp_pd_mask_ord_q(__m512d a,__m512d b)1773 __mmask8 test_mm512_cmp_pd_mask_ord_q(__m512d a, __m512d b) {
1774 // CHECK-LABEL: test_mm512_cmp_pd_mask_ord_q
1775 // CHECK: fcmp ord <8 x double> %{{.*}}, %{{.*}}
1776 return _mm512_cmp_pd_mask(a, b, _CMP_ORD_Q);
1777 }
1778
test_mm512_cmp_pd_mask_eq_uq(__m512d a,__m512d b)1779 __mmask8 test_mm512_cmp_pd_mask_eq_uq(__m512d a, __m512d b) {
1780 // CHECK-LABEL: test_mm512_cmp_pd_mask_eq_uq
1781 // CHECK: fcmp ueq <8 x double> %{{.*}}, %{{.*}}
1782 return _mm512_cmp_pd_mask(a, b, _CMP_EQ_UQ);
1783 }
1784
test_mm512_cmp_pd_mask_nge_us(__m512d a,__m512d b)1785 __mmask8 test_mm512_cmp_pd_mask_nge_us(__m512d a, __m512d b) {
1786 // CHECK-LABEL: test_mm512_cmp_pd_mask_nge_us
1787 // CHECK: fcmp ult <8 x double> %{{.*}}, %{{.*}}
1788 return _mm512_cmp_pd_mask(a, b, _CMP_NGE_US);
1789 }
1790
test_mm512_cmp_pd_mask_ngt_us(__m512d a,__m512d b)1791 __mmask8 test_mm512_cmp_pd_mask_ngt_us(__m512d a, __m512d b) {
1792 // CHECK-LABEL: test_mm512_cmp_pd_mask_ngt_us
1793 // CHECK: fcmp ule <8 x double> %{{.*}}, %{{.*}}
1794 return _mm512_cmp_pd_mask(a, b, _CMP_NGT_US);
1795 }
1796
test_mm512_cmp_pd_mask_false_oq(__m512d a,__m512d b)1797 __mmask8 test_mm512_cmp_pd_mask_false_oq(__m512d a, __m512d b) {
1798 // CHECK-LABEL: test_mm512_cmp_pd_mask_false_oq
1799 // CHECK: fcmp false <8 x double> %{{.*}}, %{{.*}}
1800 return _mm512_cmp_pd_mask(a, b, _CMP_FALSE_OQ);
1801 }
1802
test_mm512_cmp_pd_mask_neq_oq(__m512d a,__m512d b)1803 __mmask8 test_mm512_cmp_pd_mask_neq_oq(__m512d a, __m512d b) {
1804 // CHECK-LABEL: test_mm512_cmp_pd_mask_neq_oq
1805 // CHECK: fcmp one <8 x double> %{{.*}}, %{{.*}}
1806 return _mm512_cmp_pd_mask(a, b, _CMP_NEQ_OQ);
1807 }
1808
test_mm512_cmp_pd_mask_ge_os(__m512d a,__m512d b)1809 __mmask8 test_mm512_cmp_pd_mask_ge_os(__m512d a, __m512d b) {
1810 // CHECK-LABEL: test_mm512_cmp_pd_mask_ge_os
1811 // CHECK: fcmp oge <8 x double> %{{.*}}, %{{.*}}
1812 return _mm512_cmp_pd_mask(a, b, _CMP_GE_OS);
1813 }
1814
test_mm512_cmp_pd_mask_gt_os(__m512d a,__m512d b)1815 __mmask8 test_mm512_cmp_pd_mask_gt_os(__m512d a, __m512d b) {
1816 // CHECK-LABEL: test_mm512_cmp_pd_mask_gt_os
1817 // CHECK: fcmp ogt <8 x double> %{{.*}}, %{{.*}}
1818 return _mm512_cmp_pd_mask(a, b, _CMP_GT_OS);
1819 }
1820
test_mm512_cmp_pd_mask_true_uq(__m512d a,__m512d b)1821 __mmask8 test_mm512_cmp_pd_mask_true_uq(__m512d a, __m512d b) {
1822 // CHECK-LABEL: test_mm512_cmp_pd_mask_true_uq
1823 // CHECK: fcmp true <8 x double> %{{.*}}, %{{.*}}
1824 return _mm512_cmp_pd_mask(a, b, _CMP_TRUE_UQ);
1825 }
1826
test_mm512_cmp_pd_mask_eq_os(__m512d a,__m512d b)1827 __mmask8 test_mm512_cmp_pd_mask_eq_os(__m512d a, __m512d b) {
1828 // CHECK-LABEL: test_mm512_cmp_pd_mask_eq_os
1829 // CHECK: fcmp oeq <8 x double> %{{.*}}, %{{.*}}
1830 return _mm512_cmp_pd_mask(a, b, _CMP_EQ_OS);
1831 }
1832
test_mm512_cmp_pd_mask_lt_oq(__m512d a,__m512d b)1833 __mmask8 test_mm512_cmp_pd_mask_lt_oq(__m512d a, __m512d b) {
1834 // CHECK-LABEL: test_mm512_cmp_pd_mask_lt_oq
1835 // CHECK: fcmp olt <8 x double> %{{.*}}, %{{.*}}
1836 return _mm512_cmp_pd_mask(a, b, _CMP_LT_OQ);
1837 }
1838
test_mm512_cmp_pd_mask_le_oq(__m512d a,__m512d b)1839 __mmask8 test_mm512_cmp_pd_mask_le_oq(__m512d a, __m512d b) {
1840 // CHECK-LABEL: test_mm512_cmp_pd_mask_le_oq
1841 // CHECK: fcmp ole <8 x double> %{{.*}}, %{{.*}}
1842 return _mm512_cmp_pd_mask(a, b, _CMP_LE_OQ);
1843 }
1844
test_mm512_cmp_pd_mask_unord_s(__m512d a,__m512d b)1845 __mmask8 test_mm512_cmp_pd_mask_unord_s(__m512d a, __m512d b) {
1846 // CHECK-LABEL: test_mm512_cmp_pd_mask_unord_s
1847 // CHECK: fcmp uno <8 x double> %{{.*}}, %{{.*}}
1848 return _mm512_cmp_pd_mask(a, b, _CMP_UNORD_S);
1849 }
1850
test_mm512_cmp_pd_mask_neq_us(__m512d a,__m512d b)1851 __mmask8 test_mm512_cmp_pd_mask_neq_us(__m512d a, __m512d b) {
1852 // CHECK-LABEL: test_mm512_cmp_pd_mask_neq_us
1853 // CHECK: fcmp une <8 x double> %{{.*}}, %{{.*}}
1854 return _mm512_cmp_pd_mask(a, b, _CMP_NEQ_US);
1855 }
1856
test_mm512_cmp_pd_mask_nlt_uq(__m512d a,__m512d b)1857 __mmask8 test_mm512_cmp_pd_mask_nlt_uq(__m512d a, __m512d b) {
1858 // CHECK-LABEL: test_mm512_cmp_pd_mask_nlt_uq
1859 // CHECK: fcmp uge <8 x double> %{{.*}}, %{{.*}}
1860 return _mm512_cmp_pd_mask(a, b, _CMP_NLT_UQ);
1861 }
1862
test_mm512_cmp_pd_mask_nle_uq(__m512d a,__m512d b)1863 __mmask8 test_mm512_cmp_pd_mask_nle_uq(__m512d a, __m512d b) {
1864 // CHECK-LABEL: test_mm512_cmp_pd_mask_nle_uq
1865 // CHECK: fcmp ugt <8 x double> %{{.*}}, %{{.*}}
1866 return _mm512_cmp_pd_mask(a, b, _CMP_NLE_UQ);
1867 }
1868
test_mm512_cmp_pd_mask_ord_s(__m512d a,__m512d b)1869 __mmask8 test_mm512_cmp_pd_mask_ord_s(__m512d a, __m512d b) {
1870 // CHECK-LABEL: test_mm512_cmp_pd_mask_ord_s
1871 // CHECK: fcmp ord <8 x double> %{{.*}}, %{{.*}}
1872 return _mm512_cmp_pd_mask(a, b, _CMP_ORD_S);
1873 }
1874
test_mm512_cmp_pd_mask_eq_us(__m512d a,__m512d b)1875 __mmask8 test_mm512_cmp_pd_mask_eq_us(__m512d a, __m512d b) {
1876 // CHECK-LABEL: test_mm512_cmp_pd_mask_eq_us
1877 // CHECK: fcmp ueq <8 x double> %{{.*}}, %{{.*}}
1878 return _mm512_cmp_pd_mask(a, b, _CMP_EQ_US);
1879 }
1880
test_mm512_cmp_pd_mask_nge_uq(__m512d a,__m512d b)1881 __mmask8 test_mm512_cmp_pd_mask_nge_uq(__m512d a, __m512d b) {
1882 // CHECK-LABEL: test_mm512_cmp_pd_mask_nge_uq
1883 // CHECK: fcmp ult <8 x double> %{{.*}}, %{{.*}}
1884 return _mm512_cmp_pd_mask(a, b, _CMP_NGE_UQ);
1885 }
1886
test_mm512_cmp_pd_mask_ngt_uq(__m512d a,__m512d b)1887 __mmask8 test_mm512_cmp_pd_mask_ngt_uq(__m512d a, __m512d b) {
1888 // CHECK-LABEL: test_mm512_cmp_pd_mask_ngt_uq
1889 // CHECK: fcmp ule <8 x double> %{{.*}}, %{{.*}}
1890 return _mm512_cmp_pd_mask(a, b, _CMP_NGT_UQ);
1891 }
1892
test_mm512_cmp_pd_mask_false_os(__m512d a,__m512d b)1893 __mmask8 test_mm512_cmp_pd_mask_false_os(__m512d a, __m512d b) {
1894 // CHECK-LABEL: test_mm512_cmp_pd_mask_false_os
1895 // CHECK: fcmp false <8 x double> %{{.*}}, %{{.*}}
1896 return _mm512_cmp_pd_mask(a, b, _CMP_FALSE_OS);
1897 }
1898
test_mm512_cmp_pd_mask_neq_os(__m512d a,__m512d b)1899 __mmask8 test_mm512_cmp_pd_mask_neq_os(__m512d a, __m512d b) {
1900 // CHECK-LABEL: test_mm512_cmp_pd_mask_neq_os
1901 // CHECK: fcmp one <8 x double> %{{.*}}, %{{.*}}
1902 return _mm512_cmp_pd_mask(a, b, _CMP_NEQ_OS);
1903 }
1904
test_mm512_cmp_pd_mask_ge_oq(__m512d a,__m512d b)1905 __mmask8 test_mm512_cmp_pd_mask_ge_oq(__m512d a, __m512d b) {
1906 // CHECK-LABEL: test_mm512_cmp_pd_mask_ge_oq
1907 // CHECK: fcmp oge <8 x double> %{{.*}}, %{{.*}}
1908 return _mm512_cmp_pd_mask(a, b, _CMP_GE_OQ);
1909 }
1910
test_mm512_cmp_pd_mask_gt_oq(__m512d a,__m512d b)1911 __mmask8 test_mm512_cmp_pd_mask_gt_oq(__m512d a, __m512d b) {
1912 // CHECK-LABEL: test_mm512_cmp_pd_mask_gt_oq
1913 // CHECK: fcmp ogt <8 x double> %{{.*}}, %{{.*}}
1914 return _mm512_cmp_pd_mask(a, b, _CMP_GT_OQ);
1915 }
1916
test_mm512_cmp_pd_mask_true_us(__m512d a,__m512d b)1917 __mmask8 test_mm512_cmp_pd_mask_true_us(__m512d a, __m512d b) {
1918 // CHECK-LABEL: test_mm512_cmp_pd_mask_true_us
1919 // CHECK: fcmp true <8 x double> %{{.*}}, %{{.*}}
1920 return _mm512_cmp_pd_mask(a, b, _CMP_TRUE_US);
1921 }
1922
test_mm512_mask_cmp_pd_mask_eq_oq(__mmask8 m,__m512d a,__m512d b)1923 __mmask8 test_mm512_mask_cmp_pd_mask_eq_oq(__mmask8 m, __m512d a, __m512d b) {
1924 // CHECK-LABEL: @test_mm512_mask_cmp_pd_mask_eq_oq
1925 // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
1926 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1927 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OQ);
1928 }
1929
test_mm512_mask_cmp_pd_mask_lt_os(__mmask8 m,__m512d a,__m512d b)1930 __mmask8 test_mm512_mask_cmp_pd_mask_lt_os(__mmask8 m, __m512d a, __m512d b) {
1931 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_lt_os
1932 // CHECK: [[CMP:%.*]] = fcmp olt <8 x double> %{{.*}}, %{{.*}}
1933 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1934 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_LT_OS);
1935 }
1936
test_mm512_mask_cmp_pd_mask_le_os(__mmask8 m,__m512d a,__m512d b)1937 __mmask8 test_mm512_mask_cmp_pd_mask_le_os(__mmask8 m, __m512d a, __m512d b) {
1938 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_le_os
1939 // CHECK: [[CMP:%.*]] = fcmp ole <8 x double> %{{.*}}, %{{.*}}
1940 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1941 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_LE_OS);
1942 }
1943
test_mm512_mask_cmp_pd_mask_unord_q(__mmask8 m,__m512d a,__m512d b)1944 __mmask8 test_mm512_mask_cmp_pd_mask_unord_q(__mmask8 m, __m512d a, __m512d b) {
1945 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_unord_q
1946 // CHECK: [[CMP:%.*]] = fcmp uno <8 x double> %{{.*}}, %{{.*}}
1947 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1948 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_Q);
1949 }
1950
test_mm512_mask_cmp_pd_mask_neq_uq(__mmask8 m,__m512d a,__m512d b)1951 __mmask8 test_mm512_mask_cmp_pd_mask_neq_uq(__mmask8 m, __m512d a, __m512d b) {
1952 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_neq_uq
1953 // CHECK: [[CMP:%.*]] = fcmp une <8 x double> %{{.*}}, %{{.*}}
1954 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1955 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_UQ);
1956 }
1957
test_mm512_mask_cmp_pd_mask_nlt_us(__mmask8 m,__m512d a,__m512d b)1958 __mmask8 test_mm512_mask_cmp_pd_mask_nlt_us(__mmask8 m, __m512d a, __m512d b) {
1959 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nlt_us
1960 // CHECK: [[CMP:%.*]] = fcmp uge <8 x double> %{{.*}}, %{{.*}}
1961 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1962 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NLT_US);
1963 }
1964
test_mm512_mask_cmp_pd_mask_nle_us(__mmask8 m,__m512d a,__m512d b)1965 __mmask8 test_mm512_mask_cmp_pd_mask_nle_us(__mmask8 m, __m512d a, __m512d b) {
1966 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nle_us
1967 // CHECK: [[CMP:%.*]] = fcmp ugt <8 x double> %{{.*}}, %{{.*}}
1968 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1969 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NLE_US);
1970 }
1971
test_mm512_mask_cmp_pd_mask_ord_q(__mmask8 m,__m512d a,__m512d b)1972 __mmask8 test_mm512_mask_cmp_pd_mask_ord_q(__mmask8 m, __m512d a, __m512d b) {
1973 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ord_q
1974 // CHECK: [[CMP:%.*]] = fcmp ord <8 x double> %{{.*}}, %{{.*}}
1975 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1976 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_ORD_Q);
1977 }
1978
test_mm512_mask_cmp_pd_mask_eq_uq(__mmask8 m,__m512d a,__m512d b)1979 __mmask8 test_mm512_mask_cmp_pd_mask_eq_uq(__mmask8 m, __m512d a, __m512d b) {
1980 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_eq_uq
1981 // CHECK: [[CMP:%.*]] = fcmp ueq <8 x double> %{{.*}}, %{{.*}}
1982 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1983 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_EQ_UQ);
1984 }
1985
test_mm512_mask_cmp_pd_mask_nge_us(__mmask8 m,__m512d a,__m512d b)1986 __mmask8 test_mm512_mask_cmp_pd_mask_nge_us(__mmask8 m, __m512d a, __m512d b) {
1987 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nge_us
1988 // CHECK: [[CMP:%.*]] = fcmp ult <8 x double> %{{.*}}, %{{.*}}
1989 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1990 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NGE_US);
1991 }
1992
test_mm512_mask_cmp_pd_mask_ngt_us(__mmask8 m,__m512d a,__m512d b)1993 __mmask8 test_mm512_mask_cmp_pd_mask_ngt_us(__mmask8 m, __m512d a, __m512d b) {
1994 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ngt_us
1995 // CHECK: [[CMP:%.*]] = fcmp ule <8 x double> %{{.*}}, %{{.*}}
1996 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1997 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NGT_US);
1998 }
1999
test_mm512_mask_cmp_pd_mask_false_oq(__mmask8 m,__m512d a,__m512d b)2000 __mmask8 test_mm512_mask_cmp_pd_mask_false_oq(__mmask8 m, __m512d a, __m512d b) {
2001 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_false_oq
2002 // CHECK: [[CMP:%.*]] = fcmp false <8 x double> %{{.*}}, %{{.*}}
2003 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2004 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OQ);
2005 }
2006
test_mm512_mask_cmp_pd_mask_neq_oq(__mmask8 m,__m512d a,__m512d b)2007 __mmask8 test_mm512_mask_cmp_pd_mask_neq_oq(__mmask8 m, __m512d a, __m512d b) {
2008 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_neq_oq
2009 // CHECK: [[CMP:%.*]] = fcmp one <8 x double> %{{.*}}, %{{.*}}
2010 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2011 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OQ);
2012 }
2013
test_mm512_mask_cmp_pd_mask_ge_os(__mmask8 m,__m512d a,__m512d b)2014 __mmask8 test_mm512_mask_cmp_pd_mask_ge_os(__mmask8 m, __m512d a, __m512d b) {
2015 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ge_os
2016 // CHECK: [[CMP:%.*]] = fcmp oge <8 x double> %{{.*}}, %{{.*}}
2017 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2018 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_GE_OS);
2019 }
2020
test_mm512_mask_cmp_pd_mask_gt_os(__mmask8 m,__m512d a,__m512d b)2021 __mmask8 test_mm512_mask_cmp_pd_mask_gt_os(__mmask8 m, __m512d a, __m512d b) {
2022 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_gt_os
2023 // CHECK: [[CMP:%.*]] = fcmp ogt <8 x double> %{{.*}}, %{{.*}}
2024 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2025 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_GT_OS);
2026 }
2027
test_mm512_mask_cmp_pd_mask_true_uq(__mmask8 m,__m512d a,__m512d b)2028 __mmask8 test_mm512_mask_cmp_pd_mask_true_uq(__mmask8 m, __m512d a, __m512d b) {
2029 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_true_uq
2030 // CHECK: [[CMP:%.*]] = fcmp true <8 x double> %{{.*}}, %{{.*}}
2031 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2032 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_UQ);
2033 }
2034
test_mm512_mask_cmp_pd_mask_eq_os(__mmask8 m,__m512d a,__m512d b)2035 __mmask8 test_mm512_mask_cmp_pd_mask_eq_os(__mmask8 m, __m512d a, __m512d b) {
2036 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_eq_os
2037 // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
2038 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2039 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OS);
2040 }
2041
test_mm512_mask_cmp_pd_mask_lt_oq(__mmask8 m,__m512d a,__m512d b)2042 __mmask8 test_mm512_mask_cmp_pd_mask_lt_oq(__mmask8 m, __m512d a, __m512d b) {
2043 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_lt_oq
2044 // CHECK: [[CMP:%.*]] = fcmp olt <8 x double> %{{.*}}, %{{.*}}
2045 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2046 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_LT_OQ);
2047 }
2048
test_mm512_mask_cmp_pd_mask_le_oq(__mmask8 m,__m512d a,__m512d b)2049 __mmask8 test_mm512_mask_cmp_pd_mask_le_oq(__mmask8 m, __m512d a, __m512d b) {
2050 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_le_oq
2051 // CHECK: [[CMP:%.*]] = fcmp ole <8 x double> %{{.*}}, %{{.*}}
2052 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2053 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_LE_OQ);
2054 }
2055
test_mm512_mask_cmp_pd_mask_unord_s(__mmask8 m,__m512d a,__m512d b)2056 __mmask8 test_mm512_mask_cmp_pd_mask_unord_s(__mmask8 m, __m512d a, __m512d b) {
2057 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_unord_s
2058 // CHECK: [[CMP:%.*]] = fcmp uno <8 x double> %{{.*}}, %{{.*}}
2059 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2060 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_S);
2061 }
2062
test_mm512_mask_cmp_pd_mask_neq_us(__mmask8 m,__m512d a,__m512d b)2063 __mmask8 test_mm512_mask_cmp_pd_mask_neq_us(__mmask8 m, __m512d a, __m512d b) {
2064 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_neq_us
2065 // CHECK: [[CMP:%.*]] = fcmp une <8 x double> %{{.*}}, %{{.*}}
2066 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2067 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_US);
2068 }
2069
test_mm512_mask_cmp_pd_mask_nlt_uq(__mmask8 m,__m512d a,__m512d b)2070 __mmask8 test_mm512_mask_cmp_pd_mask_nlt_uq(__mmask8 m, __m512d a, __m512d b) {
2071 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nlt_uq
2072 // CHECK: [[CMP:%.*]] = fcmp uge <8 x double> %{{.*}}, %{{.*}}
2073 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2074 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NLT_UQ);
2075 }
2076
test_mm512_mask_cmp_pd_mask_nle_uq(__mmask8 m,__m512d a,__m512d b)2077 __mmask8 test_mm512_mask_cmp_pd_mask_nle_uq(__mmask8 m, __m512d a, __m512d b) {
2078 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nle_uq
2079 // CHECK: [[CMP:%.*]] = fcmp ugt <8 x double> %{{.*}}, %{{.*}}
2080 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2081 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NLE_UQ);
2082 }
2083
test_mm512_mask_cmp_pd_mask_ord_s(__mmask8 m,__m512d a,__m512d b)2084 __mmask8 test_mm512_mask_cmp_pd_mask_ord_s(__mmask8 m, __m512d a, __m512d b) {
2085 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ord_s
2086 // CHECK: [[CMP:%.*]] = fcmp ord <8 x double> %{{.*}}, %{{.*}}
2087 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2088 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_ORD_S);
2089 }
2090
test_mm512_mask_cmp_pd_mask_eq_us(__mmask8 m,__m512d a,__m512d b)2091 __mmask8 test_mm512_mask_cmp_pd_mask_eq_us(__mmask8 m, __m512d a, __m512d b) {
2092 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_eq_us
2093 // CHECK: [[CMP:%.*]] = fcmp ueq <8 x double> %{{.*}}, %{{.*}}
2094 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2095 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_EQ_US);
2096 }
2097
test_mm512_mask_cmp_pd_mask_nge_uq(__mmask8 m,__m512d a,__m512d b)2098 __mmask8 test_mm512_mask_cmp_pd_mask_nge_uq(__mmask8 m, __m512d a, __m512d b) {
2099 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nge_uq
2100 // CHECK: [[CMP:%.*]] = fcmp ult <8 x double> %{{.*}}, %{{.*}}
2101 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2102 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NGE_UQ);
2103 }
2104
test_mm512_mask_cmp_pd_mask_ngt_uq(__mmask8 m,__m512d a,__m512d b)2105 __mmask8 test_mm512_mask_cmp_pd_mask_ngt_uq(__mmask8 m, __m512d a, __m512d b) {
2106 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ngt_uq
2107 // CHECK: [[CMP:%.*]] = fcmp ule <8 x double> %{{.*}}, %{{.*}}
2108 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2109 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NGT_UQ);
2110 }
2111
test_mm512_mask_cmp_pd_mask_false_os(__mmask8 m,__m512d a,__m512d b)2112 __mmask8 test_mm512_mask_cmp_pd_mask_false_os(__mmask8 m, __m512d a, __m512d b) {
2113 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_false_os
2114 // CHECK: [[CMP:%.*]] = fcmp false <8 x double> %{{.*}}, %{{.*}}
2115 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2116 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OS);
2117 }
2118
test_mm512_mask_cmp_pd_mask_neq_os(__mmask8 m,__m512d a,__m512d b)2119 __mmask8 test_mm512_mask_cmp_pd_mask_neq_os(__mmask8 m, __m512d a, __m512d b) {
2120 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_neq_os
2121 // CHECK: [[CMP:%.*]] = fcmp one <8 x double> %{{.*}}, %{{.*}}
2122 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2123 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OS);
2124 }
2125
test_mm512_mask_cmp_pd_mask_ge_oq(__mmask8 m,__m512d a,__m512d b)2126 __mmask8 test_mm512_mask_cmp_pd_mask_ge_oq(__mmask8 m, __m512d a, __m512d b) {
2127 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ge_oq
2128 // CHECK: [[CMP:%.*]] = fcmp oge <8 x double> %{{.*}}, %{{.*}}
2129 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2130 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_GE_OQ);
2131 }
2132
test_mm512_mask_cmp_pd_mask_gt_oq(__mmask8 m,__m512d a,__m512d b)2133 __mmask8 test_mm512_mask_cmp_pd_mask_gt_oq(__mmask8 m, __m512d a, __m512d b) {
2134 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_gt_oq
2135 // CHECK: [[CMP:%.*]] = fcmp ogt <8 x double> %{{.*}}, %{{.*}}
2136 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2137 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_GT_OQ);
2138 }
2139
test_mm512_mask_cmp_pd_mask_true_us(__mmask8 m,__m512d a,__m512d b)2140 __mmask8 test_mm512_mask_cmp_pd_mask_true_us(__mmask8 m, __m512d a, __m512d b) {
2141 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_true_us
2142 // CHECK: [[CMP:%.*]] = fcmp true <8 x double> %{{.*}}, %{{.*}}
2143 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2144 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_US);
2145 }
2146
test_mm512_mask_cmp_pd_mask(__mmask8 m,__m512d a,__m512d b)2147 __mmask8 test_mm512_mask_cmp_pd_mask(__mmask8 m, __m512d a, __m512d b) {
2148 // CHECK-LABEL: @test_mm512_mask_cmp_pd_mask
2149 // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
2150 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2151 return _mm512_mask_cmp_pd_mask(m, a, b, 0);
2152 }
2153
test_mm512_cmpeq_pd_mask(__m512d a,__m512d b)2154 __mmask8 test_mm512_cmpeq_pd_mask(__m512d a, __m512d b) {
2155 // CHECK-LABEL: @test_mm512_cmpeq_pd_mask
2156 // CHECK: fcmp oeq <8 x double> %{{.*}}, %{{.*}}
2157 return _mm512_cmpeq_pd_mask(a, b);
2158 }
2159
test_mm512_cmpeq_ps_mask(__m512 a,__m512 b)2160 __mmask16 test_mm512_cmpeq_ps_mask(__m512 a, __m512 b) {
2161 // CHECK-LABEL: @test_mm512_cmpeq_ps_mask
2162 // CHECK: fcmp oeq <16 x float> %{{.*}}, %{{.*}}
2163 return _mm512_cmpeq_ps_mask(a, b);
2164 }
2165
test_mm512_mask_cmpeq_pd_mask(__mmask8 k,__m512d a,__m512d b)2166 __mmask8 test_mm512_mask_cmpeq_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2167 // CHECK-LABEL: @test_mm512_mask_cmpeq_pd_mask
2168 // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
2169 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2170 return _mm512_mask_cmpeq_pd_mask(k, a, b);
2171 }
2172
test_mm512_mask_cmpeq_ps_mask(__mmask16 k,__m512 a,__m512 b)2173 __mmask16 test_mm512_mask_cmpeq_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2174 // CHECK-LABEL: @test_mm512_mask_cmpeq_ps_mask
2175 // CHECK: [[CMP:%.*]] = fcmp oeq <16 x float> %{{.*}}, %{{.*}}
2176 // CHECK: and <16 x i1> [[CMP]], {{.*}}
2177 return _mm512_mask_cmpeq_ps_mask(k, a, b);
2178 }
2179
test_mm512_cmple_pd_mask(__m512d a,__m512d b)2180 __mmask8 test_mm512_cmple_pd_mask(__m512d a, __m512d b) {
2181 // CHECK-LABEL: @test_mm512_cmple_pd_mask
2182 // CHECK: fcmp ole <8 x double> %{{.*}}, %{{.*}}
2183 return _mm512_cmple_pd_mask(a, b);
2184 }
2185
test_mm512_cmple_ps_mask(__m512 a,__m512 b)2186 __mmask16 test_mm512_cmple_ps_mask(__m512 a, __m512 b) {
2187 // CHECK-LABEL: @test_mm512_cmple_ps_mask
2188 // CHECK: fcmp ole <16 x float> %{{.*}}, %{{.*}}
2189 return _mm512_cmple_ps_mask(a, b);
2190 }
2191
test_mm512_mask_cmple_pd_mask(__mmask8 k,__m512d a,__m512d b)2192 __mmask8 test_mm512_mask_cmple_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2193 // CHECK-LABEL: @test_mm512_mask_cmple_pd_mask
2194 // CHECK: [[CMP:%.*]] = fcmp ole <8 x double> %{{.*}}, %{{.*}}
2195 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2196 return _mm512_mask_cmple_pd_mask(k, a, b);
2197 }
2198
test_mm512_mask_cmple_ps_mask(__mmask16 k,__m512 a,__m512 b)2199 __mmask16 test_mm512_mask_cmple_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2200 // CHECK-LABEL: @test_mm512_mask_cmple_ps_mask
2201 // CHECK: [[CMP:%.*]] = fcmp ole <16 x float> %{{.*}}, %{{.*}}
2202 // CHECK: and <16 x i1> [[CMP]], {{.*}}
2203 return _mm512_mask_cmple_ps_mask(k, a, b);
2204 }
2205
test_mm512_cmplt_pd_mask(__m512d a,__m512d b)2206 __mmask8 test_mm512_cmplt_pd_mask(__m512d a, __m512d b) {
2207 // CHECK-LABEL: @test_mm512_cmplt_pd_mask
2208 // CHECK: fcmp olt <8 x double> %{{.*}}, %{{.*}}
2209 return _mm512_cmplt_pd_mask(a, b);
2210 }
2211
test_mm512_cmplt_ps_mask(__m512 a,__m512 b)2212 __mmask16 test_mm512_cmplt_ps_mask(__m512 a, __m512 b) {
2213 // CHECK-LABEL: @test_mm512_cmplt_ps_mask
2214 // CHECK: fcmp olt <16 x float> %{{.*}}, %{{.*}}
2215 return _mm512_cmplt_ps_mask(a, b);
2216 }
2217
test_mm512_mask_cmplt_pd_mask(__mmask8 k,__m512d a,__m512d b)2218 __mmask8 test_mm512_mask_cmplt_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2219 // CHECK-LABEL: @test_mm512_mask_cmplt_pd_mask
2220 // CHECK: [[CMP:%.*]] = fcmp olt <8 x double> %{{.*}}, %{{.*}}
2221 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2222 return _mm512_mask_cmplt_pd_mask(k, a, b);
2223 }
2224
test_mm512_mask_cmplt_ps_mask(__mmask16 k,__m512 a,__m512 b)2225 __mmask16 test_mm512_mask_cmplt_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2226 // CHECK-LABEL: @test_mm512_mask_cmplt_ps_mask
2227 // CHECK: [[CMP:%.*]] = fcmp olt <16 x float> %{{.*}}, %{{.*}}
2228 // CHECK: and <16 x i1> [[CMP]], {{.*}}
2229 return _mm512_mask_cmplt_ps_mask(k, a, b);
2230 }
2231
test_mm512_cmpneq_pd_mask(__m512d a,__m512d b)2232 __mmask8 test_mm512_cmpneq_pd_mask(__m512d a, __m512d b) {
2233 // CHECK-LABEL: @test_mm512_cmpneq_pd_mask
2234 // CHECK: fcmp une <8 x double> %{{.*}}, %{{.*}}
2235 return _mm512_cmpneq_pd_mask(a, b);
2236 }
2237
test_mm512_cmpneq_ps_mask(__m512 a,__m512 b)2238 __mmask16 test_mm512_cmpneq_ps_mask(__m512 a, __m512 b) {
2239 // CHECK-LABEL: @test_mm512_cmpneq_ps_mask
2240 // CHECK: fcmp une <16 x float> %{{.*}}, %{{.*}}
2241 return _mm512_cmpneq_ps_mask(a, b);
2242 }
2243
test_mm512_mask_cmpneq_pd_mask(__mmask8 k,__m512d a,__m512d b)2244 __mmask8 test_mm512_mask_cmpneq_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2245 // CHECK-LABEL: @test_mm512_mask_cmpneq_pd_mask
2246 // CHECK: [[CMP:%.*]] = fcmp une <8 x double> %{{.*}}, %{{.*}}
2247 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2248 return _mm512_mask_cmpneq_pd_mask(k, a, b);
2249 }
2250
test_mm512_mask_cmpneq_ps_mask(__mmask16 k,__m512 a,__m512 b)2251 __mmask16 test_mm512_mask_cmpneq_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2252 // CHECK-LABEL: @test_mm512_mask_cmpneq_ps_mask
2253 // CHECK: [[CMP:%.*]] = fcmp une <16 x float> %{{.*}}, %{{.*}}
2254 // CHECK: and <16 x i1> [[CMP]], {{.*}}
2255 return _mm512_mask_cmpneq_ps_mask(k, a, b);
2256 }
2257
test_mm512_cmpnle_pd_mask(__m512d a,__m512d b)2258 __mmask8 test_mm512_cmpnle_pd_mask(__m512d a, __m512d b) {
2259 // CHECK-LABEL: @test_mm512_cmpnle_pd_mask
2260 // CHECK: fcmp ugt <8 x double> %{{.*}}, %{{.*}}
2261 return _mm512_cmpnle_pd_mask(a, b);
2262 }
2263
test_mm512_cmpnle_ps_mask(__m512 a,__m512 b)2264 __mmask16 test_mm512_cmpnle_ps_mask(__m512 a, __m512 b) {
2265 // CHECK-LABEL: @test_mm512_cmpnle_ps_mask
2266 // CHECK: fcmp ugt <16 x float> %{{.*}}, %{{.*}}
2267 return _mm512_cmpnle_ps_mask(a, b);
2268 }
2269
test_mm512_mask_cmpnle_pd_mask(__mmask8 k,__m512d a,__m512d b)2270 __mmask8 test_mm512_mask_cmpnle_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2271 // CHECK-LABEL: @test_mm512_mask_cmpnle_pd_mask
2272 // CHECK: [[CMP:%.*]] = fcmp ugt <8 x double> %{{.*}}, %{{.*}}
2273 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2274 return _mm512_mask_cmpnle_pd_mask(k, a, b);
2275 }
2276
test_mm512_mask_cmpnle_ps_mask(__mmask16 k,__m512 a,__m512 b)2277 __mmask16 test_mm512_mask_cmpnle_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2278 // CHECK-LABEL: @test_mm512_mask_cmpnle_ps_mask
2279 // CHECK: [[CMP:%.*]] = fcmp ugt <16 x float> %{{.*}}, %{{.*}}
2280 // CHECK: and <16 x i1> [[CMP]], {{.*}}
2281 return _mm512_mask_cmpnle_ps_mask(k, a, b);
2282 }
2283
test_mm512_cmpnlt_pd_mask(__m512d a,__m512d b)2284 __mmask8 test_mm512_cmpnlt_pd_mask(__m512d a, __m512d b) {
2285 // CHECK-LABEL: @test_mm512_cmpnlt_pd_mask
2286 // CHECK: fcmp uge <8 x double> %{{.*}}, %{{.*}}
2287 return _mm512_cmpnlt_pd_mask(a, b);
2288 }
2289
test_mm512_cmpnlt_ps_mask(__m512 a,__m512 b)2290 __mmask16 test_mm512_cmpnlt_ps_mask(__m512 a, __m512 b) {
2291 // CHECK-LABEL: @test_mm512_cmpnlt_ps_mask
2292 // CHECK: fcmp uge <16 x float> %{{.*}}, %{{.*}}
2293 return _mm512_cmpnlt_ps_mask(a, b);
2294 }
2295
test_mm512_mask_cmpnlt_pd_mask(__mmask8 k,__m512d a,__m512d b)2296 __mmask8 test_mm512_mask_cmpnlt_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2297 // CHECK-LABEL: @test_mm512_mask_cmpnlt_pd_mask
2298 // CHECK: [[CMP:%.*]] = fcmp uge <8 x double> %{{.*}}, %{{.*}}
2299 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2300 return _mm512_mask_cmpnlt_pd_mask(k, a, b);
2301 }
2302
test_mm512_mask_cmpnlt_ps_mask(__mmask16 k,__m512 a,__m512 b)2303 __mmask16 test_mm512_mask_cmpnlt_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2304 // CHECK-LABEL: @test_mm512_mask_cmpnlt_ps_mask
2305 // CHECK: [[CMP:%.*]] = fcmp uge <16 x float> %{{.*}}, %{{.*}}
2306 // CHECK: and <16 x i1> [[CMP]], {{.*}}
2307 return _mm512_mask_cmpnlt_ps_mask(k, a, b);
2308 }
2309
test_mm512_cmpord_pd_mask(__m512d a,__m512d b)2310 __mmask8 test_mm512_cmpord_pd_mask(__m512d a, __m512d b) {
2311 // CHECK-LABEL: @test_mm512_cmpord_pd_mask
2312 // CHECK: fcmp ord <8 x double> %{{.*}}, %{{.*}}
2313 return _mm512_cmpord_pd_mask(a, b);
2314 }
2315
test_mm512_cmpord_ps_mask(__m512 a,__m512 b)2316 __mmask16 test_mm512_cmpord_ps_mask(__m512 a, __m512 b) {
2317 // CHECK-LABEL: @test_mm512_cmpord_ps_mask
2318 // CHECK: fcmp ord <16 x float> %{{.*}}, %{{.*}}
2319 return _mm512_cmpord_ps_mask(a, b);
2320 }
2321
test_mm512_mask_cmpord_pd_mask(__mmask8 k,__m512d a,__m512d b)2322 __mmask8 test_mm512_mask_cmpord_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2323 // CHECK-LABEL: @test_mm512_mask_cmpord_pd_mask
2324 // CHECK: [[CMP:%.*]] = fcmp ord <8 x double> %{{.*}}, %{{.*}}
2325 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2326 return _mm512_mask_cmpord_pd_mask(k, a, b);
2327 }
2328
test_mm512_mask_cmpord_ps_mask(__mmask16 k,__m512 a,__m512 b)2329 __mmask16 test_mm512_mask_cmpord_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2330 // CHECK-LABEL: @test_mm512_mask_cmpord_ps_mask
2331 // CHECK: [[CMP:%.*]] = fcmp ord <16 x float> %{{.*}}, %{{.*}}
2332 // CHECK: and <16 x i1> [[CMP]], {{.*}}
2333 return _mm512_mask_cmpord_ps_mask(k, a, b);
2334 }
2335
test_mm512_cmpunord_pd_mask(__m512d a,__m512d b)2336 __mmask8 test_mm512_cmpunord_pd_mask(__m512d a, __m512d b) {
2337 // CHECK-LABEL: @test_mm512_cmpunord_pd_mask
2338 // CHECK: fcmp uno <8 x double> %{{.*}}, %{{.*}}
2339 return _mm512_cmpunord_pd_mask(a, b);
2340 }
2341
test_mm512_cmpunord_ps_mask(__m512 a,__m512 b)2342 __mmask16 test_mm512_cmpunord_ps_mask(__m512 a, __m512 b) {
2343 // CHECK-LABEL: @test_mm512_cmpunord_ps_mask
2344 // CHECK: fcmp uno <16 x float> %{{.*}}, %{{.*}}
2345 return _mm512_cmpunord_ps_mask(a, b);
2346 }
2347
test_mm512_mask_cmpunord_pd_mask(__mmask8 k,__m512d a,__m512d b)2348 __mmask8 test_mm512_mask_cmpunord_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2349 // CHECK-LABEL: @test_mm512_mask_cmpunord_pd_mask
2350 // CHECK: [[CMP:%.*]] = fcmp uno <8 x double> %{{.*}}, %{{.*}}
2351 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2352 return _mm512_mask_cmpunord_pd_mask(k, a, b);
2353 }
2354
test_mm512_mask_cmpunord_ps_mask(__mmask16 k,__m512 a,__m512 b)2355 __mmask16 test_mm512_mask_cmpunord_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2356 // CHECK-LABEL: @test_mm512_mask_cmpunord_ps_mask
2357 // CHECK: [[CMP:%.*]] = fcmp uno <16 x float> %{{.*}}, %{{.*}}
2358 // CHECK: and <16 x i1> [[CMP]], {{.*}}
2359 return _mm512_mask_cmpunord_ps_mask(k, a, b);
2360 }
2361
test_mm512_extractf64x4_pd(__m512d a)2362 __m256d test_mm512_extractf64x4_pd(__m512d a)
2363 {
2364 // CHECK-LABEL: @test_mm512_extractf64x4_pd
2365 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2366 return _mm512_extractf64x4_pd(a, 1);
2367 }
2368
test_mm512_mask_extractf64x4_pd(__m256d __W,__mmask8 __U,__m512d __A)2369 __m256d test_mm512_mask_extractf64x4_pd(__m256d __W,__mmask8 __U,__m512d __A){
2370 // CHECK-LABEL:@test_mm512_mask_extractf64x4_pd
2371 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2372 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2373 return _mm512_mask_extractf64x4_pd( __W, __U, __A, 1);
2374 }
2375
test_mm512_maskz_extractf64x4_pd(__mmask8 __U,__m512d __A)2376 __m256d test_mm512_maskz_extractf64x4_pd(__mmask8 __U,__m512d __A){
2377 // CHECK-LABEL:@test_mm512_maskz_extractf64x4_pd
2378 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2379 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2380 return _mm512_maskz_extractf64x4_pd( __U, __A, 1);
2381 }
2382
test_mm512_extractf32x4_ps(__m512 a)2383 __m128 test_mm512_extractf32x4_ps(__m512 a)
2384 {
2385 // CHECK-LABEL: @test_mm512_extractf32x4_ps
2386 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2387 return _mm512_extractf32x4_ps(a, 1);
2388 }
2389
test_mm512_mask_extractf32x4_ps(__m128 __W,__mmask8 __U,__m512 __A)2390 __m128 test_mm512_mask_extractf32x4_ps(__m128 __W, __mmask8 __U,__m512 __A){
2391 // CHECK-LABEL:@test_mm512_mask_extractf32x4_ps
2392 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2393 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
2394 return _mm512_mask_extractf32x4_ps( __W, __U, __A, 1);
2395 }
2396
test_mm512_maskz_extractf32x4_ps(__mmask8 __U,__m512 __A)2397 __m128 test_mm512_maskz_extractf32x4_ps( __mmask8 __U,__m512 __A){
2398 // CHECK-LABEL:@test_mm512_maskz_extractf32x4_ps
2399 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2400 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
2401 return _mm512_maskz_extractf32x4_ps( __U, __A, 1);
2402 }
2403
test_mm512_cmpeq_epu32_mask(__m512i __a,__m512i __b)2404 __mmask16 test_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
2405 // CHECK-LABEL: @test_mm512_cmpeq_epu32_mask
2406 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2407 return (__mmask16)_mm512_cmpeq_epu32_mask(__a, __b);
2408 }
2409
test_mm512_mask_cmpeq_epu32_mask(__mmask16 __u,__m512i __a,__m512i __b)2410 __mmask16 test_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2411 // CHECK-LABEL: @test_mm512_mask_cmpeq_epu32_mask
2412 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2413 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2414 return (__mmask16)_mm512_mask_cmpeq_epu32_mask(__u, __a, __b);
2415 }
2416
test_mm512_cmpeq_epu64_mask(__m512i __a,__m512i __b)2417 __mmask8 test_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
2418 // CHECK-LABEL: @test_mm512_cmpeq_epu64_mask
2419 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2420 return (__mmask8)_mm512_cmpeq_epu64_mask(__a, __b);
2421 }
2422
test_mm512_mask_cmpeq_epu64_mask(__mmask8 __u,__m512i __a,__m512i __b)2423 __mmask8 test_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2424 // CHECK-LABEL: @test_mm512_mask_cmpeq_epu64_mask
2425 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2426 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2427 return (__mmask8)_mm512_mask_cmpeq_epu64_mask(__u, __a, __b);
2428 }
2429
test_mm512_cmpge_epi32_mask(__m512i __a,__m512i __b)2430 __mmask16 test_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
2431 // CHECK-LABEL: @test_mm512_cmpge_epi32_mask
2432 // CHECK: icmp sge <16 x i32> %{{.*}}, %{{.*}}
2433 return (__mmask16)_mm512_cmpge_epi32_mask(__a, __b);
2434 }
2435
test_mm512_mask_cmpge_epi32_mask(__mmask16 __u,__m512i __a,__m512i __b)2436 __mmask16 test_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2437 // CHECK-LABEL: @test_mm512_mask_cmpge_epi32_mask
2438 // CHECK: icmp sge <16 x i32> %{{.*}}, %{{.*}}
2439 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2440 return (__mmask16)_mm512_mask_cmpge_epi32_mask(__u, __a, __b);
2441 }
2442
test_mm512_cmpge_epi64_mask(__m512i __a,__m512i __b)2443 __mmask8 test_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
2444 // CHECK-LABEL: @test_mm512_cmpge_epi64_mask
2445 // CHECK: icmp sge <8 x i64> %{{.*}}, %{{.*}}
2446 return (__mmask8)_mm512_cmpge_epi64_mask(__a, __b);
2447 }
2448
test_mm512_mask_cmpge_epi64_mask(__mmask8 __u,__m512i __a,__m512i __b)2449 __mmask8 test_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2450 // CHECK-LABEL: @test_mm512_mask_cmpge_epi64_mask
2451 // CHECK: icmp sge <8 x i64> %{{.*}}, %{{.*}}
2452 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2453 return (__mmask8)_mm512_mask_cmpge_epi64_mask(__u, __a, __b);
2454 }
2455
test_mm512_cmpge_epu32_mask(__m512i __a,__m512i __b)2456 __mmask16 test_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
2457 // CHECK-LABEL: @test_mm512_cmpge_epu32_mask
2458 // CHECK: icmp uge <16 x i32> %{{.*}}, %{{.*}}
2459 return (__mmask16)_mm512_cmpge_epu32_mask(__a, __b);
2460 }
2461
test_mm512_mask_cmpge_epu32_mask(__mmask16 __u,__m512i __a,__m512i __b)2462 __mmask16 test_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2463 // CHECK-LABEL: @test_mm512_mask_cmpge_epu32_mask
2464 // CHECK: icmp uge <16 x i32> %{{.*}}, %{{.*}}
2465 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2466 return (__mmask16)_mm512_mask_cmpge_epu32_mask(__u, __a, __b);
2467 }
2468
test_mm512_cmpge_epu64_mask(__m512i __a,__m512i __b)2469 __mmask8 test_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
2470 // CHECK-LABEL: @test_mm512_cmpge_epu64_mask
2471 // CHECK: icmp uge <8 x i64> %{{.*}}, %{{.*}}
2472 return (__mmask8)_mm512_cmpge_epu64_mask(__a, __b);
2473 }
2474
test_mm512_mask_cmpge_epu64_mask(__mmask8 __u,__m512i __a,__m512i __b)2475 __mmask8 test_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2476 // CHECK-LABEL: @test_mm512_mask_cmpge_epu64_mask
2477 // CHECK: icmp uge <8 x i64> %{{.*}}, %{{.*}}
2478 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2479 return (__mmask8)_mm512_mask_cmpge_epu64_mask(__u, __a, __b);
2480 }
2481
test_mm512_cmpgt_epu32_mask(__m512i __a,__m512i __b)2482 __mmask16 test_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
2483 // CHECK-LABEL: @test_mm512_cmpgt_epu32_mask
2484 // CHECK: icmp ugt <16 x i32> %{{.*}}, %{{.*}}
2485 return (__mmask16)_mm512_cmpgt_epu32_mask(__a, __b);
2486 }
2487
test_mm512_mask_cmpgt_epu32_mask(__mmask16 __u,__m512i __a,__m512i __b)2488 __mmask16 test_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2489 // CHECK-LABEL: @test_mm512_mask_cmpgt_epu32_mask
2490 // CHECK: icmp ugt <16 x i32> %{{.*}}, %{{.*}}
2491 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2492 return (__mmask16)_mm512_mask_cmpgt_epu32_mask(__u, __a, __b);
2493 }
2494
test_mm512_cmpgt_epu64_mask(__m512i __a,__m512i __b)2495 __mmask8 test_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
2496 // CHECK-LABEL: @test_mm512_cmpgt_epu64_mask
2497 // CHECK: icmp ugt <8 x i64> %{{.*}}, %{{.*}}
2498 return (__mmask8)_mm512_cmpgt_epu64_mask(__a, __b);
2499 }
2500
test_mm512_mask_cmpgt_epu64_mask(__mmask8 __u,__m512i __a,__m512i __b)2501 __mmask8 test_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2502 // CHECK-LABEL: @test_mm512_mask_cmpgt_epu64_mask
2503 // CHECK: icmp ugt <8 x i64> %{{.*}}, %{{.*}}
2504 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2505 return (__mmask8)_mm512_mask_cmpgt_epu64_mask(__u, __a, __b);
2506 }
2507
test_mm512_cmple_epi32_mask(__m512i __a,__m512i __b)2508 __mmask16 test_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
2509 // CHECK-LABEL: @test_mm512_cmple_epi32_mask
2510 // CHECK: icmp sle <16 x i32> %{{.*}}, %{{.*}}
2511 return (__mmask16)_mm512_cmple_epi32_mask(__a, __b);
2512 }
2513
test_mm512_mask_cmple_epi32_mask(__mmask16 __u,__m512i __a,__m512i __b)2514 __mmask16 test_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2515 // CHECK-LABEL: @test_mm512_mask_cmple_epi32_mask
2516 // CHECK: icmp sle <16 x i32> %{{.*}}, %{{.*}}
2517 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2518 return (__mmask16)_mm512_mask_cmple_epi32_mask(__u, __a, __b);
2519 }
2520
test_mm512_cmple_epi64_mask(__m512i __a,__m512i __b)2521 __mmask8 test_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
2522 // CHECK-LABEL: @test_mm512_cmple_epi64_mask
2523 // CHECK: icmp sle <8 x i64> %{{.*}}, %{{.*}}
2524 return (__mmask8)_mm512_cmple_epi64_mask(__a, __b);
2525 }
2526
test_mm512_mask_cmple_epi64_mask(__mmask8 __u,__m512i __a,__m512i __b)2527 __mmask8 test_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2528 // CHECK-LABEL: @test_mm512_mask_cmple_epi64_mask
2529 // CHECK: icmp sle <8 x i64> %{{.*}}, %{{.*}}
2530 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2531 return (__mmask8)_mm512_mask_cmple_epi64_mask(__u, __a, __b);
2532 }
2533
test_mm512_cmple_epu32_mask(__m512i __a,__m512i __b)2534 __mmask16 test_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
2535 // CHECK-LABEL: @test_mm512_cmple_epu32_mask
2536 // CHECK: icmp ule <16 x i32> %{{.*}}, %{{.*}}
2537 return (__mmask16)_mm512_cmple_epu32_mask(__a, __b);
2538 }
2539
test_mm512_mask_cmple_epu32_mask(__mmask16 __u,__m512i __a,__m512i __b)2540 __mmask16 test_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2541 // CHECK-LABEL: @test_mm512_mask_cmple_epu32_mask
2542 // CHECK: icmp ule <16 x i32> %{{.*}}, %{{.*}}
2543 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2544 return (__mmask16)_mm512_mask_cmple_epu32_mask(__u, __a, __b);
2545 }
2546
test_mm512_cmple_epu64_mask(__m512i __a,__m512i __b)2547 __mmask8 test_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
2548 // CHECK-LABEL: @test_mm512_cmple_epu64_mask
2549 // CHECK: icmp ule <8 x i64> %{{.*}}, %{{.*}}
2550 return (__mmask8)_mm512_cmple_epu64_mask(__a, __b);
2551 }
2552
test_mm512_mask_cmple_epu64_mask(__mmask8 __u,__m512i __a,__m512i __b)2553 __mmask8 test_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2554 // CHECK-LABEL: @test_mm512_mask_cmple_epu64_mask
2555 // CHECK: icmp ule <8 x i64> %{{.*}}, %{{.*}}
2556 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2557 return (__mmask8)_mm512_mask_cmple_epu64_mask(__u, __a, __b);
2558 }
2559
test_mm512_cmplt_epi32_mask(__m512i __a,__m512i __b)2560 __mmask16 test_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
2561 // CHECK-LABEL: @test_mm512_cmplt_epi32_mask
2562 // CHECK: icmp slt <16 x i32> %{{.*}}, %{{.*}}
2563 return (__mmask16)_mm512_cmplt_epi32_mask(__a, __b);
2564 }
2565
test_mm512_mask_cmplt_epi32_mask(__mmask16 __u,__m512i __a,__m512i __b)2566 __mmask16 test_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2567 // CHECK-LABEL: @test_mm512_mask_cmplt_epi32_mask
2568 // CHECK: icmp slt <16 x i32> %{{.*}}, %{{.*}}
2569 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2570 return (__mmask16)_mm512_mask_cmplt_epi32_mask(__u, __a, __b);
2571 }
2572
test_mm512_cmplt_epi64_mask(__m512i __a,__m512i __b)2573 __mmask8 test_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
2574 // CHECK-LABEL: @test_mm512_cmplt_epi64_mask
2575 // CHECK: icmp slt <8 x i64> %{{.*}}, %{{.*}}
2576 return (__mmask8)_mm512_cmplt_epi64_mask(__a, __b);
2577 }
2578
test_mm512_mask_cmplt_epi64_mask(__mmask8 __u,__m512i __a,__m512i __b)2579 __mmask8 test_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2580 // CHECK-LABEL: @test_mm512_mask_cmplt_epi64_mask
2581 // CHECK: icmp slt <8 x i64> %{{.*}}, %{{.*}}
2582 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2583 return (__mmask8)_mm512_mask_cmplt_epi64_mask(__u, __a, __b);
2584 }
2585
test_mm512_cmplt_epu32_mask(__m512i __a,__m512i __b)2586 __mmask16 test_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
2587 // CHECK-LABEL: @test_mm512_cmplt_epu32_mask
2588 // CHECK: icmp ult <16 x i32> %{{.*}}, %{{.*}}
2589 return (__mmask16)_mm512_cmplt_epu32_mask(__a, __b);
2590 }
2591
test_mm512_mask_cmplt_epu32_mask(__mmask16 __u,__m512i __a,__m512i __b)2592 __mmask16 test_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2593 // CHECK-LABEL: @test_mm512_mask_cmplt_epu32_mask
2594 // CHECK: icmp ult <16 x i32> %{{.*}}, %{{.*}}
2595 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2596 return (__mmask16)_mm512_mask_cmplt_epu32_mask(__u, __a, __b);
2597 }
2598
test_mm512_cmplt_epu64_mask(__m512i __a,__m512i __b)2599 __mmask8 test_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
2600 // CHECK-LABEL: @test_mm512_cmplt_epu64_mask
2601 // CHECK: icmp ult <8 x i64> %{{.*}}, %{{.*}}
2602 return (__mmask8)_mm512_cmplt_epu64_mask(__a, __b);
2603 }
2604
test_mm512_mask_cmplt_epu64_mask(__mmask8 __u,__m512i __a,__m512i __b)2605 __mmask8 test_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2606 // CHECK-LABEL: @test_mm512_mask_cmplt_epu64_mask
2607 // CHECK: icmp ult <8 x i64> %{{.*}}, %{{.*}}
2608 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2609 return (__mmask8)_mm512_mask_cmplt_epu64_mask(__u, __a, __b);
2610 }
2611
test_mm512_cmpneq_epi32_mask(__m512i __a,__m512i __b)2612 __mmask16 test_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
2613 // CHECK-LABEL: @test_mm512_cmpneq_epi32_mask
2614 // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
2615 return (__mmask16)_mm512_cmpneq_epi32_mask(__a, __b);
2616 }
2617
test_mm512_mask_cmpneq_epi32_mask(__mmask16 __u,__m512i __a,__m512i __b)2618 __mmask16 test_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2619 // CHECK-LABEL: @test_mm512_mask_cmpneq_epi32_mask
2620 // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
2621 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2622 return (__mmask16)_mm512_mask_cmpneq_epi32_mask(__u, __a, __b);
2623 }
2624
test_mm512_cmpneq_epi64_mask(__m512i __a,__m512i __b)2625 __mmask8 test_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
2626 // CHECK-LABEL: @test_mm512_cmpneq_epi64_mask
2627 // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
2628 return (__mmask8)_mm512_cmpneq_epi64_mask(__a, __b);
2629 }
2630
test_mm512_mask_cmpneq_epi64_mask(__mmask8 __u,__m512i __a,__m512i __b)2631 __mmask8 test_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2632 // CHECK-LABEL: @test_mm512_mask_cmpneq_epi64_mask
2633 // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
2634 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2635 return (__mmask8)_mm512_mask_cmpneq_epi64_mask(__u, __a, __b);
2636 }
2637
test_mm512_cmpneq_epu32_mask(__m512i __a,__m512i __b)2638 __mmask16 test_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
2639 // CHECK-LABEL: @test_mm512_cmpneq_epu32_mask
2640 // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
2641 return (__mmask16)_mm512_cmpneq_epu32_mask(__a, __b);
2642 }
2643
test_mm512_mask_cmpneq_epu32_mask(__mmask16 __u,__m512i __a,__m512i __b)2644 __mmask16 test_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2645 // CHECK-LABEL: @test_mm512_mask_cmpneq_epu32_mask
2646 // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
2647 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2648 return (__mmask16)_mm512_mask_cmpneq_epu32_mask(__u, __a, __b);
2649 }
2650
test_mm512_cmpneq_epu64_mask(__m512i __a,__m512i __b)2651 __mmask8 test_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
2652 // CHECK-LABEL: @test_mm512_cmpneq_epu64_mask
2653 // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
2654 return (__mmask8)_mm512_cmpneq_epu64_mask(__a, __b);
2655 }
2656
test_mm512_mask_cmpneq_epu64_mask(__mmask8 __u,__m512i __a,__m512i __b)2657 __mmask8 test_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2658 // CHECK-LABEL: @test_mm512_mask_cmpneq_epu64_mask
2659 // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
2660 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2661 return (__mmask8)_mm512_mask_cmpneq_epu64_mask(__u, __a, __b);
2662 }
2663
test_mm512_cmp_eq_epi32_mask(__m512i __a,__m512i __b)2664 __mmask16 test_mm512_cmp_eq_epi32_mask(__m512i __a, __m512i __b) {
2665 // CHECK-LABEL: @test_mm512_cmp_eq_epi32_mask
2666 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2667 return (__mmask16)_mm512_cmp_epi32_mask(__a, __b, _MM_CMPINT_EQ);
2668 }
2669
test_mm512_mask_cmp_eq_epi32_mask(__mmask16 __u,__m512i __a,__m512i __b)2670 __mmask16 test_mm512_mask_cmp_eq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2671 // CHECK-LABEL: @test_mm512_mask_cmp_eq_epi32_mask
2672 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2673 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2674 return (__mmask16)_mm512_mask_cmp_epi32_mask(__u, __a, __b, _MM_CMPINT_EQ);
2675 }
2676
test_mm512_cmp_eq_epi64_mask(__m512i __a,__m512i __b)2677 __mmask8 test_mm512_cmp_eq_epi64_mask(__m512i __a, __m512i __b) {
2678 // CHECK-LABEL: @test_mm512_cmp_eq_epi64_mask
2679 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2680 return (__mmask8)_mm512_cmp_epi64_mask(__a, __b, _MM_CMPINT_EQ);
2681 }
2682
test_mm512_mask_cmp_eq_epi64_mask(__mmask8 __u,__m512i __a,__m512i __b)2683 __mmask8 test_mm512_mask_cmp_eq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2684 // CHECK-LABEL: @test_mm512_mask_cmp_eq_epi64_mask
2685 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2686 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2687 return (__mmask8)_mm512_mask_cmp_epi64_mask(__u, __a, __b, _MM_CMPINT_EQ);
2688 }
2689
test_mm512_cmp_epu32_mask(__m512i __a,__m512i __b)2690 __mmask16 test_mm512_cmp_epu32_mask(__m512i __a, __m512i __b) {
2691 // CHECK-LABEL: @test_mm512_cmp_epu32_mask
2692 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2693 return (__mmask16)_mm512_cmp_epu32_mask(__a, __b, 0);
2694 }
2695
test_mm512_mask_cmp_epu32_mask(__mmask16 __u,__m512i __a,__m512i __b)2696 __mmask16 test_mm512_mask_cmp_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2697 // CHECK-LABEL: @test_mm512_mask_cmp_epu32_mask
2698 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2699 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2700 return (__mmask16)_mm512_mask_cmp_epu32_mask(__u, __a, __b, 0);
2701 }
2702
test_mm512_cmp_epu64_mask(__m512i __a,__m512i __b)2703 __mmask8 test_mm512_cmp_epu64_mask(__m512i __a, __m512i __b) {
2704 // CHECK-LABEL: @test_mm512_cmp_epu64_mask
2705 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2706 return (__mmask8)_mm512_cmp_epu64_mask(__a, __b, 0);
2707 }
2708
test_mm512_mask_cmp_epu64_mask(__mmask8 __u,__m512i __a,__m512i __b)2709 __mmask8 test_mm512_mask_cmp_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2710 // CHECK-LABEL: @test_mm512_mask_cmp_epu64_mask
2711 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2712 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2713 return (__mmask8)_mm512_mask_cmp_epu64_mask(__u, __a, __b, 0);
2714 }
2715
test_mm512_mask_and_epi32(__m512i __src,__mmask16 __k,__m512i __a,__m512i __b)2716 __m512i test_mm512_mask_and_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
2717 // CHECK-LABEL: @test_mm512_mask_and_epi32
2718 // CHECK: and <16 x i32>
2719 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2720 // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2721 return _mm512_mask_and_epi32(__src, __k,__a, __b);
2722 }
2723
test_mm512_maskz_and_epi32(__mmask16 __k,__m512i __a,__m512i __b)2724 __m512i test_mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b) {
2725 // CHECK-LABEL: @test_mm512_maskz_and_epi32
2726 // CHECK: and <16 x i32>
2727 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2728 // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2729 return _mm512_maskz_and_epi32(__k,__a, __b);
2730 }
2731
test_mm512_mask_and_epi64(__m512i __src,__mmask8 __k,__m512i __a,__m512i __b)2732 __m512i test_mm512_mask_and_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
2733 // CHECK-LABEL: @test_mm512_mask_and_epi64
2734 // CHECK: %[[AND_RES:.*]] = and <8 x i64>
2735 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2736 // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[AND_RES]], <8 x i64> %{{.*}}
2737 return _mm512_mask_and_epi64(__src, __k,__a, __b);
2738 }
2739
test_mm512_maskz_and_epi64(__mmask8 __k,__m512i __a,__m512i __b)2740 __m512i test_mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b) {
2741 // CHECK-LABEL: @test_mm512_maskz_and_epi64
2742 // CHECK: %[[AND_RES:.*]] = and <8 x i64>
2743 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2744 // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[AND_RES]], <8 x i64> %{{.*}}
2745 return _mm512_maskz_and_epi64(__k,__a, __b);
2746 }
2747
test_mm512_mask_or_epi32(__m512i __src,__mmask16 __k,__m512i __a,__m512i __b)2748 __m512i test_mm512_mask_or_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
2749 // CHECK-LABEL: @test_mm512_mask_or_epi32
2750 // CHECK: or <16 x i32>
2751 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2752 // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2753 return _mm512_mask_or_epi32(__src, __k,__a, __b);
2754 }
2755
test_mm512_maskz_or_epi32(__mmask16 __k,__m512i __a,__m512i __b)2756 __m512i test_mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b) {
2757 // CHECK-LABEL: @test_mm512_maskz_or_epi32
2758 // CHECK: or <16 x i32>
2759 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2760 // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2761 return _mm512_maskz_or_epi32(__k,__a, __b);
2762 }
2763
test_mm512_mask_or_epi64(__m512i __src,__mmask8 __k,__m512i __a,__m512i __b)2764 __m512i test_mm512_mask_or_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
2765 // CHECK-LABEL: @test_mm512_mask_or_epi64
2766 // CHECK: %[[OR_RES:.*]] = or <8 x i64>
2767 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2768 // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[OR_RES]], <8 x i64> %{{.*}}
2769 return _mm512_mask_or_epi64(__src, __k,__a, __b);
2770 }
2771
test_mm512_maskz_or_epi64(__mmask8 __k,__m512i __a,__m512i __b)2772 __m512i test_mm512_maskz_or_epi64(__mmask8 __k, __m512i __a, __m512i __b) {
2773 // CHECK-LABEL: @test_mm512_maskz_or_epi64
2774 // CHECK: %[[OR_RES:.*]] = or <8 x i64>
2775 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2776 // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[OR_RES]], <8 x i64> %{{.*}}
2777 return _mm512_maskz_or_epi64(__k,__a, __b);
2778 }
2779
test_mm512_mask_xor_epi32(__m512i __src,__mmask16 __k,__m512i __a,__m512i __b)2780 __m512i test_mm512_mask_xor_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
2781 // CHECK-LABEL: @test_mm512_mask_xor_epi32
2782 // CHECK: xor <16 x i32>
2783 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2784 // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2785 return _mm512_mask_xor_epi32(__src, __k,__a, __b);
2786 }
2787
test_mm512_maskz_xor_epi32(__mmask16 __k,__m512i __a,__m512i __b)2788 __m512i test_mm512_maskz_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b) {
2789 // CHECK-LABEL: @test_mm512_maskz_xor_epi32
2790 // CHECK: xor <16 x i32>
2791 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2792 // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2793 return _mm512_maskz_xor_epi32(__k,__a, __b);
2794 }
2795
test_mm512_mask_xor_epi64(__m512i __src,__mmask8 __k,__m512i __a,__m512i __b)2796 __m512i test_mm512_mask_xor_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
2797 // CHECK-LABEL: @test_mm512_mask_xor_epi64
2798 // CHECK: %[[XOR_RES:.*]] = xor <8 x i64>
2799 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2800 // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[XOR_RES]], <8 x i64> %{{.*}}
2801 return _mm512_mask_xor_epi64(__src, __k,__a, __b);
2802 }
2803
test_mm512_maskz_xor_epi64(__mmask8 __k,__m512i __a,__m512i __b)2804 __m512i test_mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b) {
2805 // CHECK-LABEL: @test_mm512_maskz_xor_epi64
2806 // CHECK: %[[XOR_RES:.*]] = xor <8 x i64>
2807 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2808 // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[XOR_RES]], <8 x i64> %{{.*}}
2809 return _mm512_maskz_xor_epi64(__k,__a, __b);
2810 }
2811
test_mm512_and_epi32(__m512i __src,__mmask16 __k,__m512i __a,__m512i __b)2812 __m512i test_mm512_and_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
2813 // CHECK-LABEL: @test_mm512_and_epi32
2814 // CHECK: and <16 x i32>
2815 return _mm512_and_epi32(__a, __b);
2816 }
2817
test_mm512_and_epi64(__m512i __src,__mmask8 __k,__m512i __a,__m512i __b)2818 __m512i test_mm512_and_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
2819 // CHECK-LABEL: @test_mm512_and_epi64
2820 // CHECK: and <8 x i64>
2821 return _mm512_and_epi64(__a, __b);
2822 }
2823
test_mm512_or_epi32(__m512i __src,__mmask16 __k,__m512i __a,__m512i __b)2824 __m512i test_mm512_or_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
2825 // CHECK-LABEL: @test_mm512_or_epi32
2826 // CHECK: or <16 x i32>
2827 return _mm512_or_epi32(__a, __b);
2828 }
2829
test_mm512_or_epi64(__m512i __src,__mmask8 __k,__m512i __a,__m512i __b)2830 __m512i test_mm512_or_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
2831 // CHECK-LABEL: @test_mm512_or_epi64
2832 // CHECK: or <8 x i64>
2833 return _mm512_or_epi64(__a, __b);
2834 }
2835
test_mm512_xor_epi32(__m512i __src,__mmask16 __k,__m512i __a,__m512i __b)2836 __m512i test_mm512_xor_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
2837 // CHECK-LABEL: @test_mm512_xor_epi32
2838 // CHECK: xor <16 x i32>
2839 return _mm512_xor_epi32(__a, __b);
2840 }
2841
test_mm512_xor_epi64(__m512i __src,__mmask8 __k,__m512i __a,__m512i __b)2842 __m512i test_mm512_xor_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
2843 // CHECK-LABEL: @test_mm512_xor_epi64
2844 // CHECK: xor <8 x i64>
2845 return _mm512_xor_epi64(__a, __b);
2846 }
2847
test_mm512_maskz_andnot_epi32(__mmask16 __k,__m512i __A,__m512i __B)2848 __m512i test_mm512_maskz_andnot_epi32 (__mmask16 __k,__m512i __A, __m512i __B){
2849 // CHECK-LABEL: @test_mm512_maskz_andnot_epi32
2850 // CHECK: xor <16 x i32> %{{.*}}, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
2851 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2852 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2853 return _mm512_maskz_andnot_epi32(__k,__A,__B);
2854 }
2855
test_mm512_mask_andnot_epi32(__mmask16 __k,__m512i __A,__m512i __B,__m512i __src)2856 __m512i test_mm512_mask_andnot_epi32 (__mmask16 __k,__m512i __A, __m512i __B,
2857 __m512i __src) {
2858 // CHECK-LABEL: @test_mm512_mask_andnot_epi32
2859 // CHECK: xor <16 x i32> %{{.*}}, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
2860 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2861 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2862 return _mm512_mask_andnot_epi32(__src,__k,__A,__B);
2863 }
2864
test_mm512_andnot_si512(__m512i __A,__m512i __B)2865 __m512i test_mm512_andnot_si512(__m512i __A, __m512i __B)
2866 {
2867 //CHECK-LABEL: @test_mm512_andnot_si512
2868 //CHECK: load {{.*}}%__A.addr.i, align 64
2869 //CHECK: %neg.i = xor{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
2870 //CHECK: load {{.*}}%__B.addr.i, align 64
2871 //CHECK: and <8 x i64> %neg.i,{{.*}}
2872
2873 return _mm512_andnot_si512(__A, __B);
2874 }
2875
test_mm512_andnot_epi32(__m512i __A,__m512i __B)2876 __m512i test_mm512_andnot_epi32(__m512i __A, __m512i __B) {
2877 // CHECK-LABEL: @test_mm512_andnot_epi32
2878 // CHECK: xor <16 x i32> %{{.*}}, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
2879 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2880 return _mm512_andnot_epi32(__A,__B);
2881 }
2882
test_mm512_maskz_andnot_epi64(__mmask8 __k,__m512i __A,__m512i __B)2883 __m512i test_mm512_maskz_andnot_epi64 (__mmask8 __k,__m512i __A, __m512i __B) {
2884 // CHECK-LABEL: @test_mm512_maskz_andnot_epi64
2885 // CHECK: xor <8 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
2886 // CHECK: and <8 x i64> %{{.*}}, %{{.*}}
2887 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2888 return _mm512_maskz_andnot_epi64(__k,__A,__B);
2889 }
2890
test_mm512_mask_andnot_epi64(__mmask8 __k,__m512i __A,__m512i __B,__m512i __src)2891 __m512i test_mm512_mask_andnot_epi64 (__mmask8 __k,__m512i __A, __m512i __B,
2892 __m512i __src) {
2893 //CHECK-LABEL: @test_mm512_mask_andnot_epi64
2894 // CHECK: xor <8 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
2895 // CHECK: and <8 x i64> %{{.*}}, %{{.*}}
2896 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2897 return _mm512_mask_andnot_epi64(__src,__k,__A,__B);
2898 }
2899
test_mm512_andnot_epi64(__m512i __A,__m512i __B)2900 __m512i test_mm512_andnot_epi64(__m512i __A, __m512i __B) {
2901 //CHECK-LABEL: @test_mm512_andnot_epi64
2902 // CHECK: xor <8 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
2903 // CHECK: and <8 x i64> %{{.*}}, %{{.*}}
2904 return _mm512_andnot_epi64(__A,__B);
2905 }
2906
test_mm512_maskz_sub_epi32(__mmask16 __k,__m512i __A,__m512i __B)2907 __m512i test_mm512_maskz_sub_epi32 (__mmask16 __k,__m512i __A, __m512i __B) {
2908 //CHECK-LABEL: @test_mm512_maskz_sub_epi32
2909 //CHECK: sub <16 x i32> %{{.*}}, %{{.*}}
2910 //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2911 return _mm512_maskz_sub_epi32(__k,__A,__B);
2912 }
2913
test_mm512_mask_sub_epi32(__mmask16 __k,__m512i __A,__m512i __B,__m512i __src)2914 __m512i test_mm512_mask_sub_epi32 (__mmask16 __k,__m512i __A, __m512i __B,
2915 __m512i __src) {
2916 //CHECK-LABEL: @test_mm512_mask_sub_epi32
2917 //CHECK: sub <16 x i32> %{{.*}}, %{{.*}}
2918 //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2919 return _mm512_mask_sub_epi32(__src,__k,__A,__B);
2920 }
2921
test_mm512_sub_epi32(__m512i __A,__m512i __B)2922 __m512i test_mm512_sub_epi32(__m512i __A, __m512i __B) {
2923 //CHECK-LABEL: @test_mm512_sub_epi32
2924 //CHECK: sub <16 x i32>
2925 return _mm512_sub_epi32(__A,__B);
2926 }
2927
test_mm512_maskz_sub_epi64(__mmask8 __k,__m512i __A,__m512i __B)2928 __m512i test_mm512_maskz_sub_epi64 (__mmask8 __k,__m512i __A, __m512i __B) {
2929 //CHECK-LABEL: @test_mm512_maskz_sub_epi64
2930 //CHECK: sub <8 x i64> %{{.*}}, %{{.*}}
2931 //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2932 return _mm512_maskz_sub_epi64(__k,__A,__B);
2933 }
2934
test_mm512_mask_sub_epi64(__mmask8 __k,__m512i __A,__m512i __B,__m512i __src)2935 __m512i test_mm512_mask_sub_epi64 (__mmask8 __k,__m512i __A, __m512i __B,
2936 __m512i __src) {
2937 //CHECK-LABEL: @test_mm512_mask_sub_epi64
2938 //CHECK: sub <8 x i64> %{{.*}}, %{{.*}}
2939 //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2940 return _mm512_mask_sub_epi64(__src,__k,__A,__B);
2941 }
2942
test_mm512_sub_epi64(__m512i __A,__m512i __B)2943 __m512i test_mm512_sub_epi64(__m512i __A, __m512i __B) {
2944 //CHECK-LABEL: @test_mm512_sub_epi64
2945 //CHECK: sub <8 x i64>
2946 return _mm512_sub_epi64(__A,__B);
2947 }
2948
test_mm512_maskz_add_epi32(__mmask16 __k,__m512i __A,__m512i __B)2949 __m512i test_mm512_maskz_add_epi32 (__mmask16 __k,__m512i __A, __m512i __B) {
2950 //CHECK-LABEL: @test_mm512_maskz_add_epi32
2951 //CHECK: add <16 x i32> %{{.*}}, %{{.*}}
2952 //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2953 return _mm512_maskz_add_epi32(__k,__A,__B);
2954 }
2955
test_mm512_mask_add_epi32(__mmask16 __k,__m512i __A,__m512i __B,__m512i __src)2956 __m512i test_mm512_mask_add_epi32 (__mmask16 __k,__m512i __A, __m512i __B,
2957 __m512i __src) {
2958 //CHECK-LABEL: @test_mm512_mask_add_epi32
2959 //CHECK: add <16 x i32> %{{.*}}, %{{.*}}
2960 //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2961 return _mm512_mask_add_epi32(__src,__k,__A,__B);
2962 }
2963
test_mm512_add_epi32(__m512i __A,__m512i __B)2964 __m512i test_mm512_add_epi32(__m512i __A, __m512i __B) {
2965 //CHECK-LABEL: @test_mm512_add_epi32
2966 //CHECK: add <16 x i32>
2967 return _mm512_add_epi32(__A,__B);
2968 }
2969
test_mm512_maskz_add_epi64(__mmask8 __k,__m512i __A,__m512i __B)2970 __m512i test_mm512_maskz_add_epi64 (__mmask8 __k,__m512i __A, __m512i __B) {
2971 //CHECK-LABEL: @test_mm512_maskz_add_epi64
2972 //CHECK: add <8 x i64> %{{.*}}, %{{.*}}
2973 //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2974 return _mm512_maskz_add_epi64(__k,__A,__B);
2975 }
2976
test_mm512_mask_add_epi64(__mmask8 __k,__m512i __A,__m512i __B,__m512i __src)2977 __m512i test_mm512_mask_add_epi64 (__mmask8 __k,__m512i __A, __m512i __B,
2978 __m512i __src) {
2979 //CHECK-LABEL: @test_mm512_mask_add_epi64
2980 //CHECK: add <8 x i64> %{{.*}}, %{{.*}}
2981 //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2982 return _mm512_mask_add_epi64(__src,__k,__A,__B);
2983 }
2984
test_mm512_add_epi64(__m512i __A,__m512i __B)2985 __m512i test_mm512_add_epi64(__m512i __A, __m512i __B) {
2986 //CHECK-LABEL: @test_mm512_add_epi64
2987 //CHECK: add <8 x i64>
2988 return _mm512_add_epi64(__A,__B);
2989 }
2990
test_mm512_mul_epi32(__m512i __A,__m512i __B)2991 __m512i test_mm512_mul_epi32(__m512i __A, __m512i __B) {
2992 //CHECK-LABEL: @test_mm512_mul_epi32
2993 //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
2994 //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
2995 //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
2996 //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
2997 //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
2998 return _mm512_mul_epi32(__A,__B);
2999 }
3000
test_mm512_maskz_mul_epi32(__mmask8 __k,__m512i __A,__m512i __B)3001 __m512i test_mm512_maskz_mul_epi32 (__mmask8 __k,__m512i __A, __m512i __B) {
3002 //CHECK-LABEL: @test_mm512_maskz_mul_epi32
3003 //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3004 //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3005 //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3006 //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3007 //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3008 //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3009 return _mm512_maskz_mul_epi32(__k,__A,__B);
3010 }
3011
test_mm512_mask_mul_epi32(__mmask8 __k,__m512i __A,__m512i __B,__m512i __src)3012 __m512i test_mm512_mask_mul_epi32 (__mmask8 __k,__m512i __A, __m512i __B, __m512i __src) {
3013 //CHECK-LABEL: @test_mm512_mask_mul_epi32
3014 //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3015 //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3016 //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3017 //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3018 //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3019 //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3020 return _mm512_mask_mul_epi32(__src,__k,__A,__B);
3021 }
3022
test_mm512_mul_epu32(__m512i __A,__m512i __B)3023 __m512i test_mm512_mul_epu32 (__m512i __A, __m512i __B) {
3024 //CHECK-LABEL: @test_mm512_mul_epu32
3025 //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3026 //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3027 //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3028 return _mm512_mul_epu32(__A,__B);
3029 }
3030
test_mm512_maskz_mul_epu32(__mmask8 __k,__m512i __A,__m512i __B)3031 __m512i test_mm512_maskz_mul_epu32 (__mmask8 __k,__m512i __A, __m512i __B) {
3032 //CHECK-LABEL: @test_mm512_maskz_mul_epu32
3033 //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3034 //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3035 //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3036 //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3037 return _mm512_maskz_mul_epu32(__k,__A,__B);
3038 }
3039
test_mm512_mask_mul_epu32(__mmask8 __k,__m512i __A,__m512i __B,__m512i __src)3040 __m512i test_mm512_mask_mul_epu32 (__mmask8 __k,__m512i __A, __m512i __B, __m512i __src) {
3041 //CHECK-LABEL: @test_mm512_mask_mul_epu32
3042 //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3043 //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3044 //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3045 //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3046 return _mm512_mask_mul_epu32(__src,__k,__A,__B);
3047 }
3048
test_mm512_maskz_mullo_epi32(__mmask16 __k,__m512i __A,__m512i __B)3049 __m512i test_mm512_maskz_mullo_epi32 (__mmask16 __k,__m512i __A, __m512i __B) {
3050 //CHECK-LABEL: @test_mm512_maskz_mullo_epi32
3051 //CHECK: mul <16 x i32> %{{.*}}, %{{.*}}
3052 //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3053 return _mm512_maskz_mullo_epi32(__k,__A,__B);
3054 }
3055
test_mm512_mask_mullo_epi32(__mmask16 __k,__m512i __A,__m512i __B,__m512i __src)3056 __m512i test_mm512_mask_mullo_epi32 (__mmask16 __k,__m512i __A, __m512i __B, __m512i __src) {
3057 //CHECK-LABEL: @test_mm512_mask_mullo_epi32
3058 //CHECK: mul <16 x i32> %{{.*}}, %{{.*}}
3059 //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3060 return _mm512_mask_mullo_epi32(__src,__k,__A,__B);
3061 }
3062
test_mm512_mullo_epi32(__m512i __A,__m512i __B)3063 __m512i test_mm512_mullo_epi32(__m512i __A, __m512i __B) {
3064 //CHECK-LABEL: @test_mm512_mullo_epi32
3065 //CHECK: mul <16 x i32>
3066 return _mm512_mullo_epi32(__A,__B);
3067 }
3068
test_mm512_mullox_epi64(__m512i __A,__m512i __B)3069 __m512i test_mm512_mullox_epi64 (__m512i __A, __m512i __B) {
3070 // CHECK-LABEL: @test_mm512_mullox_epi64
3071 // CHECK: mul <8 x i64>
3072 return (__m512i) _mm512_mullox_epi64(__A, __B);
3073 }
3074
test_mm512_mask_mullox_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m512i __B)3075 __m512i test_mm512_mask_mullox_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
3076 // CHECK-LABEL: @test_mm512_mask_mullox_epi64
3077 // CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3078 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3079 return (__m512i) _mm512_mask_mullox_epi64(__W, __U, __A, __B);
3080 }
3081
test_mm512_add_round_pd(__m512d __A,__m512d __B)3082 __m512d test_mm512_add_round_pd(__m512d __A, __m512d __B) {
3083 // CHECK-LABEL: @test_mm512_add_round_pd
3084 // CHECK: @llvm.x86.avx512.add.pd.512
3085 return _mm512_add_round_pd(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3086 }
test_mm512_mask_add_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)3087 __m512d test_mm512_mask_add_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3088 // CHECK-LABEL: @test_mm512_mask_add_round_pd
3089 // CHECK: @llvm.x86.avx512.add.pd.512
3090 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3091 return _mm512_mask_add_round_pd(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3092 }
test_mm512_maskz_add_round_pd(__mmask8 __U,__m512d __A,__m512d __B)3093 __m512d test_mm512_maskz_add_round_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3094 // CHECK-LABEL: @test_mm512_maskz_add_round_pd
3095 // CHECK: @llvm.x86.avx512.add.pd.512
3096 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3097 return _mm512_maskz_add_round_pd(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3098 }
test_mm512_mask_add_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)3099 __m512d test_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3100 // CHECK-LABEL: @test_mm512_mask_add_pd
3101 // CHECK: fadd <8 x double> %{{.*}}, %{{.*}}
3102 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3103 return _mm512_mask_add_pd(__W,__U,__A,__B);
3104 }
test_mm512_maskz_add_pd(__mmask8 __U,__m512d __A,__m512d __B)3105 __m512d test_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3106 // CHECK-LABEL: @test_mm512_maskz_add_pd
3107 // CHECK: fadd <8 x double> %{{.*}}, %{{.*}}
3108 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3109 return _mm512_maskz_add_pd(__U,__A,__B);
3110 }
test_mm512_add_round_ps(__m512 __A,__m512 __B)3111 __m512 test_mm512_add_round_ps(__m512 __A, __m512 __B) {
3112 // CHECK-LABEL: @test_mm512_add_round_ps
3113 // CHECK: @llvm.x86.avx512.add.ps.512
3114 return _mm512_add_round_ps(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3115 }
test_mm512_mask_add_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3116 __m512 test_mm512_mask_add_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3117 // CHECK-LABEL: @test_mm512_mask_add_round_ps
3118 // CHECK: @llvm.x86.avx512.add.ps.512
3119 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3120 return _mm512_mask_add_round_ps(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3121 }
test_mm512_maskz_add_round_ps(__mmask16 __U,__m512 __A,__m512 __B)3122 __m512 test_mm512_maskz_add_round_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3123 // CHECK-LABEL: @test_mm512_maskz_add_round_ps
3124 // CHECK: @llvm.x86.avx512.add.ps.512
3125 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3126 return _mm512_maskz_add_round_ps(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3127 }
test_mm512_mask_add_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3128 __m512 test_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3129 // CHECK-LABEL: @test_mm512_mask_add_ps
3130 // CHECK: fadd <16 x float> %{{.*}}, %{{.*}}
3131 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3132 return _mm512_mask_add_ps(__W,__U,__A,__B);
3133 }
test_mm512_maskz_add_ps(__mmask16 __U,__m512 __A,__m512 __B)3134 __m512 test_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3135 // CHECK-LABEL: @test_mm512_maskz_add_ps
3136 // CHECK: fadd <16 x float> %{{.*}}, %{{.*}}
3137 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3138 return _mm512_maskz_add_ps(__U,__A,__B);
3139 }
test_mm_add_round_ss(__m128 __A,__m128 __B)3140 __m128 test_mm_add_round_ss(__m128 __A, __m128 __B) {
3141 // CHECK-LABEL: @test_mm_add_round_ss
3142 // CHECK: @llvm.x86.avx512.mask.add.ss.round
3143 return _mm_add_round_ss(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3144 }
test_mm_mask_add_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3145 __m128 test_mm_mask_add_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3146 // CHECK-LABEL: @test_mm_mask_add_round_ss
3147 // CHECK: @llvm.x86.avx512.mask.add.ss.round
3148 return _mm_mask_add_round_ss(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3149 }
test_mm_maskz_add_round_ss(__mmask8 __U,__m128 __A,__m128 __B)3150 __m128 test_mm_maskz_add_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3151 // CHECK-LABEL: @test_mm_maskz_add_round_ss
3152 // CHECK: @llvm.x86.avx512.mask.add.ss.round
3153 return _mm_maskz_add_round_ss(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3154 }
test_mm_mask_add_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3155 __m128 test_mm_mask_add_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3156 // CHECK-LABEL: @test_mm_mask_add_ss
3157 // CHECK-NOT: @llvm.x86.avx512.mask.add.ss.round
3158 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3159 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3160 // CHECK: fadd float %{{.*}}, %{{.*}}
3161 // CHECK: insertelement <4 x float> %{{.*}}, i32 0
3162 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3163 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3164 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3165 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3166 // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3167 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3168 return _mm_mask_add_ss(__W,__U,__A,__B);
3169 }
test_mm_maskz_add_ss(__mmask8 __U,__m128 __A,__m128 __B)3170 __m128 test_mm_maskz_add_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3171 // CHECK-LABEL: @test_mm_maskz_add_ss
3172 // CHECK-NOT: @llvm.x86.avx512.mask.add.ss.round
3173 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3174 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3175 // CHECK: fadd float %{{.*}}, %{{.*}}
3176 // CHECK: insertelement <4 x float> %{{.*}}, i32 0
3177 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3178 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3179 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3180 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3181 // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3182 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3183 return _mm_maskz_add_ss(__U,__A,__B);
3184 }
test_mm_add_round_sd(__m128d __A,__m128d __B)3185 __m128d test_mm_add_round_sd(__m128d __A, __m128d __B) {
3186 // CHECK-LABEL: @test_mm_add_round_sd
3187 // CHECK: @llvm.x86.avx512.mask.add.sd.round
3188 return _mm_add_round_sd(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3189 }
test_mm_mask_add_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3190 __m128d test_mm_mask_add_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3191 // CHECK-LABEL: @test_mm_mask_add_round_sd
3192 // CHECK: @llvm.x86.avx512.mask.add.sd.round
3193 return _mm_mask_add_round_sd(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3194 }
test_mm_maskz_add_round_sd(__mmask8 __U,__m128d __A,__m128d __B)3195 __m128d test_mm_maskz_add_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3196 // CHECK-LABEL: @test_mm_maskz_add_round_sd
3197 // CHECK: @llvm.x86.avx512.mask.add.sd.round
3198 return _mm_maskz_add_round_sd(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3199 }
test_mm_mask_add_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3200 __m128d test_mm_mask_add_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3201 // CHECK-LABEL: @test_mm_mask_add_sd
3202 // CHECK-NOT: @llvm.x86.avx512.mask.add.sd.round
3203 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3204 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3205 // CHECK: fadd double %{{.*}}, %{{.*}}
3206 // CHECK: insertelement <2 x double> {{.*}}, i32 0
3207 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3208 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3209 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3210 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3211 // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3212 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3213 return _mm_mask_add_sd(__W,__U,__A,__B);
3214 }
test_mm_maskz_add_sd(__mmask8 __U,__m128d __A,__m128d __B)3215 __m128d test_mm_maskz_add_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3216 // CHECK-LABEL: @test_mm_maskz_add_sd
3217 // CHECK-NOT: @llvm.x86.avx512.mask.add.sd.round
3218 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3219 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3220 // CHECK: fadd double %{{.*}}, %{{.*}}
3221 // CHECK: insertelement <2 x double> {{.*}}, i32 0
3222 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3223 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3224 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3225 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3226 // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3227 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3228 return _mm_maskz_add_sd(__U,__A,__B);
3229 }
test_mm512_sub_round_pd(__m512d __A,__m512d __B)3230 __m512d test_mm512_sub_round_pd(__m512d __A, __m512d __B) {
3231 // CHECK-LABEL: @test_mm512_sub_round_pd
3232 // CHECK: @llvm.x86.avx512.sub.pd.512
3233 return _mm512_sub_round_pd(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3234 }
test_mm512_mask_sub_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)3235 __m512d test_mm512_mask_sub_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3236 // CHECK-LABEL: @test_mm512_mask_sub_round_pd
3237 // CHECK: @llvm.x86.avx512.sub.pd.512
3238 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3239 return _mm512_mask_sub_round_pd(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3240 }
test_mm512_maskz_sub_round_pd(__mmask8 __U,__m512d __A,__m512d __B)3241 __m512d test_mm512_maskz_sub_round_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3242 // CHECK-LABEL: @test_mm512_maskz_sub_round_pd
3243 // CHECK: @llvm.x86.avx512.sub.pd.512
3244 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3245 return _mm512_maskz_sub_round_pd(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3246 }
test_mm512_mask_sub_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)3247 __m512d test_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3248 // CHECK-LABEL: @test_mm512_mask_sub_pd
3249 // CHECK: fsub <8 x double> %{{.*}}, %{{.*}}
3250 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3251 return _mm512_mask_sub_pd(__W,__U,__A,__B);
3252 }
test_mm512_maskz_sub_pd(__mmask8 __U,__m512d __A,__m512d __B)3253 __m512d test_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3254 // CHECK-LABEL: @test_mm512_maskz_sub_pd
3255 // CHECK: fsub <8 x double> %{{.*}}, %{{.*}}
3256 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3257 return _mm512_maskz_sub_pd(__U,__A,__B);
3258 }
test_mm512_sub_round_ps(__m512 __A,__m512 __B)3259 __m512 test_mm512_sub_round_ps(__m512 __A, __m512 __B) {
3260 // CHECK-LABEL: @test_mm512_sub_round_ps
3261 // CHECK: @llvm.x86.avx512.sub.ps.512
3262 return _mm512_sub_round_ps(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3263 }
test_mm512_mask_sub_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3264 __m512 test_mm512_mask_sub_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3265 // CHECK-LABEL: @test_mm512_mask_sub_round_ps
3266 // CHECK: @llvm.x86.avx512.sub.ps.512
3267 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3268 return _mm512_mask_sub_round_ps(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3269 }
test_mm512_maskz_sub_round_ps(__mmask16 __U,__m512 __A,__m512 __B)3270 __m512 test_mm512_maskz_sub_round_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3271 // CHECK-LABEL: @test_mm512_maskz_sub_round_ps
3272 // CHECK: @llvm.x86.avx512.sub.ps.512
3273 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3274 return _mm512_maskz_sub_round_ps(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3275 }
test_mm512_mask_sub_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3276 __m512 test_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3277 // CHECK-LABEL: @test_mm512_mask_sub_ps
3278 // CHECK: fsub <16 x float> %{{.*}}, %{{.*}}
3279 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3280 return _mm512_mask_sub_ps(__W,__U,__A,__B);
3281 }
test_mm512_maskz_sub_ps(__mmask16 __U,__m512 __A,__m512 __B)3282 __m512 test_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3283 // CHECK-LABEL: @test_mm512_maskz_sub_ps
3284 // CHECK: fsub <16 x float> %{{.*}}, %{{.*}}
3285 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3286 return _mm512_maskz_sub_ps(__U,__A,__B);
3287 }
test_mm_sub_round_ss(__m128 __A,__m128 __B)3288 __m128 test_mm_sub_round_ss(__m128 __A, __m128 __B) {
3289 // CHECK-LABEL: @test_mm_sub_round_ss
3290 // CHECK: @llvm.x86.avx512.mask.sub.ss.round
3291 return _mm_sub_round_ss(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3292 }
test_mm_mask_sub_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3293 __m128 test_mm_mask_sub_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3294 // CHECK-LABEL: @test_mm_mask_sub_round_ss
3295 // CHECK: @llvm.x86.avx512.mask.sub.ss.round
3296 return _mm_mask_sub_round_ss(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3297 }
test_mm_maskz_sub_round_ss(__mmask8 __U,__m128 __A,__m128 __B)3298 __m128 test_mm_maskz_sub_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3299 // CHECK-LABEL: @test_mm_maskz_sub_round_ss
3300 // CHECK: @llvm.x86.avx512.mask.sub.ss.round
3301 return _mm_maskz_sub_round_ss(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3302 }
test_mm_mask_sub_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3303 __m128 test_mm_mask_sub_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3304 // CHECK-LABEL: @test_mm_mask_sub_ss
3305 // CHECK-NOT: @llvm.x86.avx512.mask.sub.ss.round
3306 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3307 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3308 // CHECK: fsub float %{{.*}}, %{{.*}}
3309 // CHECK: insertelement <4 x float> {{.*}}, i32 0
3310 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3311 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3312 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3313 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3314 // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3315 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3316 return _mm_mask_sub_ss(__W,__U,__A,__B);
3317 }
test_mm_maskz_sub_ss(__mmask8 __U,__m128 __A,__m128 __B)3318 __m128 test_mm_maskz_sub_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3319 // CHECK-LABEL: @test_mm_maskz_sub_ss
3320 // CHECK-NOT: @llvm.x86.avx512.mask.sub.ss.round
3321 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3322 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3323 // CHECK: fsub float %{{.*}}, %{{.*}}
3324 // CHECK: insertelement <4 x float> {{.*}}, i32 0
3325 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3326 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3327 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3328 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3329 // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3330 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3331 return _mm_maskz_sub_ss(__U,__A,__B);
3332 }
test_mm_sub_round_sd(__m128d __A,__m128d __B)3333 __m128d test_mm_sub_round_sd(__m128d __A, __m128d __B) {
3334 // CHECK-LABEL: @test_mm_sub_round_sd
3335 // CHECK: @llvm.x86.avx512.mask.sub.sd.round
3336 return _mm_sub_round_sd(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3337 }
test_mm_mask_sub_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3338 __m128d test_mm_mask_sub_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3339 // CHECK-LABEL: @test_mm_mask_sub_round_sd
3340 // CHECK: @llvm.x86.avx512.mask.sub.sd.round
3341 return _mm_mask_sub_round_sd(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3342 }
test_mm_maskz_sub_round_sd(__mmask8 __U,__m128d __A,__m128d __B)3343 __m128d test_mm_maskz_sub_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3344 // CHECK-LABEL: @test_mm_maskz_sub_round_sd
3345 // CHECK: @llvm.x86.avx512.mask.sub.sd.round
3346 return _mm_maskz_sub_round_sd(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3347 }
test_mm_mask_sub_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3348 __m128d test_mm_mask_sub_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3349 // CHECK-LABEL: @test_mm_mask_sub_sd
3350 // CHECK-NOT: @llvm.x86.avx512.mask.sub.sd.round
3351 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3352 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3353 // CHECK: fsub double %{{.*}}, %{{.*}}
3354 // CHECK: insertelement <2 x double> {{.*}}, i32 0
3355 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3356 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3357 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3358 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3359 // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3360 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3361 return _mm_mask_sub_sd(__W,__U,__A,__B);
3362 }
test_mm_maskz_sub_sd(__mmask8 __U,__m128d __A,__m128d __B)3363 __m128d test_mm_maskz_sub_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3364 // CHECK-LABEL: @test_mm_maskz_sub_sd
3365 // CHECK-NOT: @llvm.x86.avx512.mask.sub.sd.round
3366 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3367 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3368 // CHECK: fsub double %{{.*}}, %{{.*}}
3369 // CHECK: insertelement <2 x double> {{.*}}, i32 0
3370 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3371 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3372 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3373 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3374 // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3375 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3376 return _mm_maskz_sub_sd(__U,__A,__B);
3377 }
test_mm512_mul_round_pd(__m512d __A,__m512d __B)3378 __m512d test_mm512_mul_round_pd(__m512d __A, __m512d __B) {
3379 // CHECK-LABEL: @test_mm512_mul_round_pd
3380 // CHECK: @llvm.x86.avx512.mul.pd.512
3381 return _mm512_mul_round_pd(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3382 }
test_mm512_mask_mul_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)3383 __m512d test_mm512_mask_mul_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3384 // CHECK-LABEL: @test_mm512_mask_mul_round_pd
3385 // CHECK: @llvm.x86.avx512.mul.pd.512
3386 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3387 return _mm512_mask_mul_round_pd(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3388 }
test_mm512_maskz_mul_round_pd(__mmask8 __U,__m512d __A,__m512d __B)3389 __m512d test_mm512_maskz_mul_round_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3390 // CHECK-LABEL: @test_mm512_maskz_mul_round_pd
3391 // CHECK: @llvm.x86.avx512.mul.pd.512
3392 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3393 return _mm512_maskz_mul_round_pd(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3394 }
test_mm512_mask_mul_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)3395 __m512d test_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3396 // CHECK-LABEL: @test_mm512_mask_mul_pd
3397 // CHECK: fmul <8 x double> %{{.*}}, %{{.*}}
3398 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3399 return _mm512_mask_mul_pd(__W,__U,__A,__B);
3400 }
test_mm512_maskz_mul_pd(__mmask8 __U,__m512d __A,__m512d __B)3401 __m512d test_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3402 // CHECK-LABEL: @test_mm512_maskz_mul_pd
3403 // CHECK: fmul <8 x double> %{{.*}}, %{{.*}}
3404 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3405 return _mm512_maskz_mul_pd(__U,__A,__B);
3406 }
test_mm512_mul_round_ps(__m512 __A,__m512 __B)3407 __m512 test_mm512_mul_round_ps(__m512 __A, __m512 __B) {
3408 // CHECK-LABEL: @test_mm512_mul_round_ps
3409 // CHECK: @llvm.x86.avx512.mul.ps.512
3410 return _mm512_mul_round_ps(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3411 }
test_mm512_mask_mul_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3412 __m512 test_mm512_mask_mul_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3413 // CHECK-LABEL: @test_mm512_mask_mul_round_ps
3414 // CHECK: @llvm.x86.avx512.mul.ps.512
3415 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3416 return _mm512_mask_mul_round_ps(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3417 }
test_mm512_maskz_mul_round_ps(__mmask16 __U,__m512 __A,__m512 __B)3418 __m512 test_mm512_maskz_mul_round_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3419 // CHECK-LABEL: @test_mm512_maskz_mul_round_ps
3420 // CHECK: @llvm.x86.avx512.mul.ps.512
3421 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3422 return _mm512_maskz_mul_round_ps(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3423 }
test_mm512_mask_mul_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3424 __m512 test_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3425 // CHECK-LABEL: @test_mm512_mask_mul_ps
3426 // CHECK: fmul <16 x float> %{{.*}}, %{{.*}}
3427 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3428 return _mm512_mask_mul_ps(__W,__U,__A,__B);
3429 }
test_mm512_maskz_mul_ps(__mmask16 __U,__m512 __A,__m512 __B)3430 __m512 test_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3431 // CHECK-LABEL: @test_mm512_maskz_mul_ps
3432 // CHECK: fmul <16 x float> %{{.*}}, %{{.*}}
3433 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3434 return _mm512_maskz_mul_ps(__U,__A,__B);
3435 }
test_mm_mul_round_ss(__m128 __A,__m128 __B)3436 __m128 test_mm_mul_round_ss(__m128 __A, __m128 __B) {
3437 // CHECK-LABEL: @test_mm_mul_round_ss
3438 // CHECK: @llvm.x86.avx512.mask.mul.ss.round
3439 return _mm_mul_round_ss(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3440 }
test_mm_mask_mul_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3441 __m128 test_mm_mask_mul_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3442 // CHECK-LABEL: @test_mm_mask_mul_round_ss
3443 // CHECK: @llvm.x86.avx512.mask.mul.ss.round
3444 return _mm_mask_mul_round_ss(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3445 }
test_mm_maskz_mul_round_ss(__mmask8 __U,__m128 __A,__m128 __B)3446 __m128 test_mm_maskz_mul_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3447 // CHECK-LABEL: @test_mm_maskz_mul_round_ss
3448 // CHECK: @llvm.x86.avx512.mask.mul.ss.round
3449 return _mm_maskz_mul_round_ss(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3450 }
test_mm_mask_mul_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3451 __m128 test_mm_mask_mul_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3452 // CHECK-LABEL: @test_mm_mask_mul_ss
3453 // CHECK-NOT: @llvm.x86.avx512.mask.mul.ss.round
3454 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3455 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3456 // CHECK: fmul float %{{.*}}, %{{.*}}
3457 // CHECK: insertelement <4 x float> {{.*}}, i32 0
3458 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3459 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3460 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3461 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3462 // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3463 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3464 return _mm_mask_mul_ss(__W,__U,__A,__B);
3465 }
test_mm_maskz_mul_ss(__mmask8 __U,__m128 __A,__m128 __B)3466 __m128 test_mm_maskz_mul_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3467 // CHECK-LABEL: @test_mm_maskz_mul_ss
3468 // CHECK-NOT: @llvm.x86.avx512.mask.mul.ss.round
3469 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3470 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3471 // CHECK: fmul float %{{.*}}, %{{.*}}
3472 // CHECK: insertelement <4 x float> {{.*}}, i32 0
3473 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3474 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3475 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3476 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3477 // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3478 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3479 return _mm_maskz_mul_ss(__U,__A,__B);
3480 }
test_mm_mul_round_sd(__m128d __A,__m128d __B)3481 __m128d test_mm_mul_round_sd(__m128d __A, __m128d __B) {
3482 // CHECK-LABEL: @test_mm_mul_round_sd
3483 // CHECK: @llvm.x86.avx512.mask.mul.sd.round
3484 return _mm_mul_round_sd(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3485 }
test_mm_mask_mul_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3486 __m128d test_mm_mask_mul_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3487 // CHECK-LABEL: @test_mm_mask_mul_round_sd
3488 // CHECK: @llvm.x86.avx512.mask.mul.sd.round
3489 return _mm_mask_mul_round_sd(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3490 }
test_mm_maskz_mul_round_sd(__mmask8 __U,__m128d __A,__m128d __B)3491 __m128d test_mm_maskz_mul_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3492 // CHECK-LABEL: @test_mm_maskz_mul_round_sd
3493 // CHECK: @llvm.x86.avx512.mask.mul.sd.round
3494 return _mm_maskz_mul_round_sd(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3495 }
test_mm_mask_mul_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3496 __m128d test_mm_mask_mul_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3497 // CHECK-LABEL: @test_mm_mask_mul_sd
3498 // CHECK-NOT: @llvm.x86.avx512.mask.mul.sd.round
3499 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3500 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3501 // CHECK: fmul double %{{.*}}, %{{.*}}
3502 // CHECK: insertelement <2 x double> {{.*}}, i32 0
3503 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3504 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3505 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3506 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3507 // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3508 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3509 return _mm_mask_mul_sd(__W,__U,__A,__B);
3510 }
test_mm_maskz_mul_sd(__mmask8 __U,__m128d __A,__m128d __B)3511 __m128d test_mm_maskz_mul_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3512 // CHECK-LABEL: @test_mm_maskz_mul_sd
3513 // CHECK-NOT: @llvm.x86.avx512.mask.mul.sd.round
3514 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3515 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3516 // CHECK: fmul double %{{.*}}, %{{.*}}
3517 // CHECK: insertelement <2 x double> {{.*}}, i32 0
3518 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3519 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3520 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3521 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3522 // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3523 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3524 return _mm_maskz_mul_sd(__U,__A,__B);
3525 }
test_mm512_div_round_pd(__m512d __A,__m512d __B)3526 __m512d test_mm512_div_round_pd(__m512d __A, __m512d __B) {
3527 // CHECK-LABEL: @test_mm512_div_round_pd
3528 // CHECK: @llvm.x86.avx512.div.pd.512
3529 return _mm512_div_round_pd(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3530 }
test_mm512_mask_div_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)3531 __m512d test_mm512_mask_div_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3532 // CHECK-LABEL: @test_mm512_mask_div_round_pd
3533 // CHECK: @llvm.x86.avx512.div.pd.512
3534 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3535 return _mm512_mask_div_round_pd(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3536 }
test_mm512_maskz_div_round_pd(__mmask8 __U,__m512d __A,__m512d __B)3537 __m512d test_mm512_maskz_div_round_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3538 // CHECK-LABEL: @test_mm512_maskz_div_round_pd
3539 // CHECK: @llvm.x86.avx512.div.pd.512
3540 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3541 return _mm512_maskz_div_round_pd(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3542 }
test_mm512_div_pd(__m512d __a,__m512d __b)3543 __m512d test_mm512_div_pd(__m512d __a, __m512d __b) {
3544 // CHECK-LABEL: @test_mm512_div_pd
3545 // CHECK: fdiv <8 x double>
3546 return _mm512_div_pd(__a,__b);
3547 }
test_mm512_mask_div_pd(__m512d __w,__mmask8 __u,__m512d __a,__m512d __b)3548 __m512d test_mm512_mask_div_pd(__m512d __w, __mmask8 __u, __m512d __a, __m512d __b) {
3549 // CHECK-LABEL: @test_mm512_mask_div_pd
3550 // CHECK: fdiv <8 x double> %{{.*}}, %{{.*}}
3551 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3552 return _mm512_mask_div_pd(__w,__u,__a,__b);
3553 }
test_mm512_maskz_div_pd(__mmask8 __U,__m512d __A,__m512d __B)3554 __m512d test_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3555 // CHECK-LABEL: @test_mm512_maskz_div_pd
3556 // CHECK: fdiv <8 x double> %{{.*}}, %{{.*}}
3557 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3558 return _mm512_maskz_div_pd(__U,__A,__B);
3559 }
test_mm512_div_round_ps(__m512 __A,__m512 __B)3560 __m512 test_mm512_div_round_ps(__m512 __A, __m512 __B) {
3561 // CHECK-LABEL: @test_mm512_div_round_ps
3562 // CHECK: @llvm.x86.avx512.div.ps.512
3563 return _mm512_div_round_ps(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3564 }
test_mm512_mask_div_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3565 __m512 test_mm512_mask_div_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3566 // CHECK-LABEL: @test_mm512_mask_div_round_ps
3567 // CHECK: @llvm.x86.avx512.div.ps.512
3568 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3569 return _mm512_mask_div_round_ps(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3570 }
test_mm512_maskz_div_round_ps(__mmask16 __U,__m512 __A,__m512 __B)3571 __m512 test_mm512_maskz_div_round_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3572 // CHECK-LABEL: @test_mm512_maskz_div_round_ps
3573 // CHECK: @llvm.x86.avx512.div.ps.512
3574 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3575 return _mm512_maskz_div_round_ps(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3576 }
test_mm512_div_ps(__m512 __A,__m512 __B)3577 __m512 test_mm512_div_ps(__m512 __A, __m512 __B) {
3578 // CHECK-LABEL: @test_mm512_div_ps
3579 // CHECK: fdiv <16 x float>
3580 return _mm512_div_ps(__A,__B);
3581 }
test_mm512_mask_div_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3582 __m512 test_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3583 // CHECK-LABEL: @test_mm512_mask_div_ps
3584 // CHECK: fdiv <16 x float> %{{.*}}, %{{.*}}
3585 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3586 return _mm512_mask_div_ps(__W,__U,__A,__B);
3587 }
test_mm512_maskz_div_ps(__mmask16 __U,__m512 __A,__m512 __B)3588 __m512 test_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3589 // CHECK-LABEL: @test_mm512_maskz_div_ps
3590 // CHECK: fdiv <16 x float> %{{.*}}, %{{.*}}
3591 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3592 return _mm512_maskz_div_ps(__U,__A,__B);
3593 }
test_mm_div_round_ss(__m128 __A,__m128 __B)3594 __m128 test_mm_div_round_ss(__m128 __A, __m128 __B) {
3595 // CHECK-LABEL: @test_mm_div_round_ss
3596 // CHECK: @llvm.x86.avx512.mask.div.ss.round
3597 return _mm_div_round_ss(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3598 }
test_mm_mask_div_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3599 __m128 test_mm_mask_div_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3600 // CHECK-LABEL: @test_mm_mask_div_round_ss
3601 // CHECK: @llvm.x86.avx512.mask.div.ss.round
3602 return _mm_mask_div_round_ss(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3603 }
test_mm_maskz_div_round_ss(__mmask8 __U,__m128 __A,__m128 __B)3604 __m128 test_mm_maskz_div_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3605 // CHECK-LABEL: @test_mm_maskz_div_round_ss
3606 // CHECK: @llvm.x86.avx512.mask.div.ss.round
3607 return _mm_maskz_div_round_ss(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3608 }
test_mm_mask_div_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3609 __m128 test_mm_mask_div_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3610 // CHECK-LABEL: @test_mm_mask_div_ss
3611 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3612 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3613 // CHECK: fdiv float %{{.*}}, %{{.*}}
3614 // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
3615 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3616 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3617 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3618 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3619 // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3620 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3621 return _mm_mask_div_ss(__W,__U,__A,__B);
3622 }
test_mm_maskz_div_ss(__mmask8 __U,__m128 __A,__m128 __B)3623 __m128 test_mm_maskz_div_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3624 // CHECK-LABEL: @test_mm_maskz_div_ss
3625 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3626 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3627 // CHECK: fdiv float %{{.*}}, %{{.*}}
3628 // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
3629 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3630 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3631 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3632 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3633 // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3634 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3635 return _mm_maskz_div_ss(__U,__A,__B);
3636 }
test_mm_div_round_sd(__m128d __A,__m128d __B)3637 __m128d test_mm_div_round_sd(__m128d __A, __m128d __B) {
3638 // CHECK-LABEL: @test_mm_div_round_sd
3639 // CHECK: @llvm.x86.avx512.mask.div.sd.round
3640 return _mm_div_round_sd(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3641 }
test_mm_mask_div_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3642 __m128d test_mm_mask_div_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3643 // CHECK-LABEL: @test_mm_mask_div_round_sd
3644 // CHECK: @llvm.x86.avx512.mask.div.sd.round
3645 return _mm_mask_div_round_sd(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3646 }
test_mm_maskz_div_round_sd(__mmask8 __U,__m128d __A,__m128d __B)3647 __m128d test_mm_maskz_div_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3648 // CHECK-LABEL: @test_mm_maskz_div_round_sd
3649 // CHECK: @llvm.x86.avx512.mask.div.sd.round
3650 return _mm_maskz_div_round_sd(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3651 }
test_mm_mask_div_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3652 __m128d test_mm_mask_div_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3653 // CHECK-LABEL: @test_mm_mask_div_sd
3654 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3655 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3656 // CHECK: fdiv double %{{.*}}, %{{.*}}
3657 // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
3658 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3659 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3660 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3661 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3662 // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3663 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3664 return _mm_mask_div_sd(__W,__U,__A,__B);
3665 }
test_mm_maskz_div_sd(__mmask8 __U,__m128d __A,__m128d __B)3666 __m128d test_mm_maskz_div_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3667 // CHECK-LABEL: @test_mm_maskz_div_sd
3668 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3669 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3670 // CHECK: fdiv double %{{.*}}, %{{.*}}
3671 // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
3672 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3673 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3674 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3675 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3676 // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3677 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3678 return _mm_maskz_div_sd(__U,__A,__B);
3679 }
test_mm_max_round_ss(__m128 __A,__m128 __B)3680 __m128 test_mm_max_round_ss(__m128 __A, __m128 __B) {
3681 // CHECK-LABEL: @test_mm_max_round_ss
3682 // CHECK: @llvm.x86.avx512.mask.max.ss.round
3683 return _mm_max_round_ss(__A,__B,0x08);
3684 }
test_mm_mask_max_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3685 __m128 test_mm_mask_max_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3686 // CHECK-LABEL: @test_mm_mask_max_round_ss
3687 // CHECK: @llvm.x86.avx512.mask.max.ss.round
3688 return _mm_mask_max_round_ss(__W,__U,__A,__B,0x08);
3689 }
test_mm_maskz_max_round_ss(__mmask8 __U,__m128 __A,__m128 __B)3690 __m128 test_mm_maskz_max_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3691 // CHECK-LABEL: @test_mm_maskz_max_round_ss
3692 // CHECK: @llvm.x86.avx512.mask.max.ss.round
3693 return _mm_maskz_max_round_ss(__U,__A,__B,0x08);
3694 }
test_mm_mask_max_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3695 __m128 test_mm_mask_max_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3696 // CHECK-LABEL: @test_mm_mask_max_ss
3697 // CHECK: @llvm.x86.avx512.mask.max.ss.round
3698 return _mm_mask_max_ss(__W,__U,__A,__B);
3699 }
test_mm_maskz_max_ss(__mmask8 __U,__m128 __A,__m128 __B)3700 __m128 test_mm_maskz_max_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3701 // CHECK-LABEL: @test_mm_maskz_max_ss
3702 // CHECK: @llvm.x86.avx512.mask.max.ss.round
3703 return _mm_maskz_max_ss(__U,__A,__B);
3704 }
test_mm_max_round_sd(__m128d __A,__m128d __B)3705 __m128d test_mm_max_round_sd(__m128d __A, __m128d __B) {
3706 // CHECK-LABEL: @test_mm_max_round_sd
3707 // CHECK: @llvm.x86.avx512.mask.max.sd.round
3708 return _mm_max_round_sd(__A,__B,0x08);
3709 }
test_mm_mask_max_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3710 __m128d test_mm_mask_max_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3711 // CHECK-LABEL: @test_mm_mask_max_round_sd
3712 // CHECK: @llvm.x86.avx512.mask.max.sd.round
3713 return _mm_mask_max_round_sd(__W,__U,__A,__B,0x08);
3714 }
test_mm_maskz_max_round_sd(__mmask8 __U,__m128d __A,__m128d __B)3715 __m128d test_mm_maskz_max_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3716 // CHECK-LABEL: @test_mm_maskz_max_round_sd
3717 // CHECK: @llvm.x86.avx512.mask.max.sd.round
3718 return _mm_maskz_max_round_sd(__U,__A,__B,0x08);
3719 }
test_mm_mask_max_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3720 __m128d test_mm_mask_max_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3721 // CHECK-LABEL: @test_mm_mask_max_sd
3722 // CHECK: @llvm.x86.avx512.mask.max.sd.round
3723 return _mm_mask_max_sd(__W,__U,__A,__B);
3724 }
test_mm_maskz_max_sd(__mmask8 __U,__m128d __A,__m128d __B)3725 __m128d test_mm_maskz_max_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3726 // CHECK-LABEL: @test_mm_maskz_max_sd
3727 // CHECK: @llvm.x86.avx512.mask.max.sd.round
3728 return _mm_maskz_max_sd(__U,__A,__B);
3729 }
test_mm_min_round_ss(__m128 __A,__m128 __B)3730 __m128 test_mm_min_round_ss(__m128 __A, __m128 __B) {
3731 // CHECK-LABEL: @test_mm_min_round_ss
3732 // CHECK: @llvm.x86.avx512.mask.min.ss.round
3733 return _mm_min_round_ss(__A,__B,0x08);
3734 }
test_mm_mask_min_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3735 __m128 test_mm_mask_min_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3736 // CHECK-LABEL: @test_mm_mask_min_round_ss
3737 // CHECK: @llvm.x86.avx512.mask.min.ss.round
3738 return _mm_mask_min_round_ss(__W,__U,__A,__B,0x08);
3739 }
test_mm_maskz_min_round_ss(__mmask8 __U,__m128 __A,__m128 __B)3740 __m128 test_mm_maskz_min_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3741 // CHECK-LABEL: @test_mm_maskz_min_round_ss
3742 // CHECK: @llvm.x86.avx512.mask.min.ss.round
3743 return _mm_maskz_min_round_ss(__U,__A,__B,0x08);
3744 }
test_mm_mask_min_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3745 __m128 test_mm_mask_min_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3746 // CHECK-LABEL: @test_mm_mask_min_ss
3747 // CHECK: @llvm.x86.avx512.mask.min.ss.round
3748 return _mm_mask_min_ss(__W,__U,__A,__B);
3749 }
test_mm_maskz_min_ss(__mmask8 __U,__m128 __A,__m128 __B)3750 __m128 test_mm_maskz_min_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3751 // CHECK-LABEL: @test_mm_maskz_min_ss
3752 // CHECK: @llvm.x86.avx512.mask.min.ss.round
3753 return _mm_maskz_min_ss(__U,__A,__B);
3754 }
test_mm_min_round_sd(__m128d __A,__m128d __B)3755 __m128d test_mm_min_round_sd(__m128d __A, __m128d __B) {
3756 // CHECK-LABEL: @test_mm_min_round_sd
3757 // CHECK: @llvm.x86.avx512.mask.min.sd.round
3758 return _mm_min_round_sd(__A,__B,0x08);
3759 }
test_mm_mask_min_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3760 __m128d test_mm_mask_min_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3761 // CHECK-LABEL: @test_mm_mask_min_round_sd
3762 // CHECK: @llvm.x86.avx512.mask.min.sd.round
3763 return _mm_mask_min_round_sd(__W,__U,__A,__B,0x08);
3764 }
test_mm_maskz_min_round_sd(__mmask8 __U,__m128d __A,__m128d __B)3765 __m128d test_mm_maskz_min_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3766 // CHECK-LABEL: @test_mm_maskz_min_round_sd
3767 // CHECK: @llvm.x86.avx512.mask.min.sd.round
3768 return _mm_maskz_min_round_sd(__U,__A,__B,0x08);
3769 }
test_mm_mask_min_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3770 __m128d test_mm_mask_min_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3771 // CHECK-LABEL: @test_mm_mask_min_sd
3772 // CHECK: @llvm.x86.avx512.mask.min.sd.round
3773 return _mm_mask_min_sd(__W,__U,__A,__B);
3774 }
test_mm_maskz_min_sd(__mmask8 __U,__m128d __A,__m128d __B)3775 __m128d test_mm_maskz_min_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3776 // CHECK-LABEL: @test_mm_maskz_min_sd
3777 // CHECK: @llvm.x86.avx512.mask.min.sd.round
3778 return _mm_maskz_min_sd(__U,__A,__B);
3779 }
3780
test_mm512_undefined()3781 __m512 test_mm512_undefined() {
3782 // CHECK-LABEL: @test_mm512_undefined
3783 // CHECK: ret <16 x float> zeroinitializer
3784 return _mm512_undefined();
3785 }
3786
test_mm512_undefined_ps()3787 __m512 test_mm512_undefined_ps() {
3788 // CHECK-LABEL: @test_mm512_undefined_ps
3789 // CHECK: ret <16 x float> zeroinitializer
3790 return _mm512_undefined_ps();
3791 }
3792
test_mm512_undefined_pd()3793 __m512d test_mm512_undefined_pd() {
3794 // CHECK-LABEL: @test_mm512_undefined_pd
3795 // CHECK: ret <8 x double> zeroinitializer
3796 return _mm512_undefined_pd();
3797 }
3798
test_mm512_undefined_epi32()3799 __m512i test_mm512_undefined_epi32() {
3800 // CHECK-LABEL: @test_mm512_undefined_epi32
3801 // CHECK: ret <8 x i64> zeroinitializer
3802 return _mm512_undefined_epi32();
3803 }
3804
test_mm512_cvtepi8_epi32(__m128i __A)3805 __m512i test_mm512_cvtepi8_epi32(__m128i __A) {
3806 // CHECK-LABEL: @test_mm512_cvtepi8_epi32
3807 // CHECK: sext <16 x i8> %{{.*}} to <16 x i32>
3808 return _mm512_cvtepi8_epi32(__A);
3809 }
3810
test_mm512_mask_cvtepi8_epi32(__m512i __W,__mmask16 __U,__m128i __A)3811 __m512i test_mm512_mask_cvtepi8_epi32(__m512i __W, __mmask16 __U, __m128i __A) {
3812 // CHECK-LABEL: @test_mm512_mask_cvtepi8_epi32
3813 // CHECK: sext <16 x i8> %{{.*}} to <16 x i32>
3814 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3815 return _mm512_mask_cvtepi8_epi32(__W, __U, __A);
3816 }
3817
test_mm512_maskz_cvtepi8_epi32(__mmask16 __U,__m128i __A)3818 __m512i test_mm512_maskz_cvtepi8_epi32(__mmask16 __U, __m128i __A) {
3819 // CHECK-LABEL: @test_mm512_maskz_cvtepi8_epi32
3820 // CHECK: sext <16 x i8> %{{.*}} to <16 x i32>
3821 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3822 return _mm512_maskz_cvtepi8_epi32(__U, __A);
3823 }
3824
test_mm512_cvtepi8_epi64(__m128i __A)3825 __m512i test_mm512_cvtepi8_epi64(__m128i __A) {
3826 // CHECK-LABEL: @test_mm512_cvtepi8_epi64
3827 // CHECK: sext <8 x i8> %{{.*}} to <8 x i64>
3828 return _mm512_cvtepi8_epi64(__A);
3829 }
3830
test_mm512_mask_cvtepi8_epi64(__m512i __W,__mmask8 __U,__m128i __A)3831 __m512i test_mm512_mask_cvtepi8_epi64(__m512i __W, __mmask8 __U, __m128i __A) {
3832 // CHECK-LABEL: @test_mm512_mask_cvtepi8_epi64
3833 // CHECK: sext <8 x i8> %{{.*}} to <8 x i64>
3834 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3835 return _mm512_mask_cvtepi8_epi64(__W, __U, __A);
3836 }
3837
test_mm512_maskz_cvtepi8_epi64(__mmask8 __U,__m128i __A)3838 __m512i test_mm512_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A) {
3839 // CHECK-LABEL: @test_mm512_maskz_cvtepi8_epi64
3840 // CHECK: sext <8 x i8> %{{.*}} to <8 x i64>
3841 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3842 return _mm512_maskz_cvtepi8_epi64(__U, __A);
3843 }
3844
test_mm512_cvtepi32_epi64(__m256i __X)3845 __m512i test_mm512_cvtepi32_epi64(__m256i __X) {
3846 // CHECK-LABEL: @test_mm512_cvtepi32_epi64
3847 // CHECK: sext <8 x i32> %{{.*}} to <8 x i64>
3848 return _mm512_cvtepi32_epi64(__X);
3849 }
3850
test_mm512_mask_cvtepi32_epi64(__m512i __W,__mmask8 __U,__m256i __X)3851 __m512i test_mm512_mask_cvtepi32_epi64(__m512i __W, __mmask8 __U, __m256i __X) {
3852 // CHECK-LABEL: @test_mm512_mask_cvtepi32_epi64
3853 // CHECK: sext <8 x i32> %{{.*}} to <8 x i64>
3854 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3855 return _mm512_mask_cvtepi32_epi64(__W, __U, __X);
3856 }
3857
test_mm512_maskz_cvtepi32_epi64(__mmask8 __U,__m256i __X)3858 __m512i test_mm512_maskz_cvtepi32_epi64(__mmask8 __U, __m256i __X) {
3859 // CHECK-LABEL: @test_mm512_maskz_cvtepi32_epi64
3860 // CHECK: sext <8 x i32> %{{.*}} to <8 x i64>
3861 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3862 return _mm512_maskz_cvtepi32_epi64(__U, __X);
3863 }
3864
test_mm512_cvtepi16_epi32(__m256i __A)3865 __m512i test_mm512_cvtepi16_epi32(__m256i __A) {
3866 // CHECK-LABEL: @test_mm512_cvtepi16_epi32
3867 // CHECK: sext <16 x i16> %{{.*}} to <16 x i32>
3868 return _mm512_cvtepi16_epi32(__A);
3869 }
3870
test_mm512_mask_cvtepi16_epi32(__m512i __W,__mmask16 __U,__m256i __A)3871 __m512i test_mm512_mask_cvtepi16_epi32(__m512i __W, __mmask16 __U, __m256i __A) {
3872 // CHECK-LABEL: @test_mm512_mask_cvtepi16_epi32
3873 // CHECK: sext <16 x i16> %{{.*}} to <16 x i32>
3874 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3875 return _mm512_mask_cvtepi16_epi32(__W, __U, __A);
3876 }
3877
test_mm512_maskz_cvtepi16_epi32(__mmask16 __U,__m256i __A)3878 __m512i test_mm512_maskz_cvtepi16_epi32(__mmask16 __U, __m256i __A) {
3879 // CHECK-LABEL: @test_mm512_maskz_cvtepi16_epi32
3880 // CHECK: sext <16 x i16> %{{.*}} to <16 x i32>
3881 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3882 return _mm512_maskz_cvtepi16_epi32(__U, __A);
3883 }
3884
test_mm512_cvtepi16_epi64(__m128i __A)3885 __m512i test_mm512_cvtepi16_epi64(__m128i __A) {
3886 // CHECK-LABEL: @test_mm512_cvtepi16_epi64
3887 // CHECK: sext <8 x i16> %{{.*}} to <8 x i64>
3888 return _mm512_cvtepi16_epi64(__A);
3889 }
3890
test_mm512_mask_cvtepi16_epi64(__m512i __W,__mmask8 __U,__m128i __A)3891 __m512i test_mm512_mask_cvtepi16_epi64(__m512i __W, __mmask8 __U, __m128i __A) {
3892 // CHECK-LABEL: @test_mm512_mask_cvtepi16_epi64
3893 // CHECK: sext <8 x i16> %{{.*}} to <8 x i64>
3894 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3895 return _mm512_mask_cvtepi16_epi64(__W, __U, __A);
3896 }
3897
test_mm512_maskz_cvtepi16_epi64(__mmask8 __U,__m128i __A)3898 __m512i test_mm512_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A) {
3899 // CHECK-LABEL: @test_mm512_maskz_cvtepi16_epi64
3900 // CHECK: sext <8 x i16> %{{.*}} to <8 x i64>
3901 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3902 return _mm512_maskz_cvtepi16_epi64(__U, __A);
3903 }
3904
test_mm512_cvtepu8_epi32(__m128i __A)3905 __m512i test_mm512_cvtepu8_epi32(__m128i __A) {
3906 // CHECK-LABEL: @test_mm512_cvtepu8_epi32
3907 // CHECK: zext <16 x i8> %{{.*}} to <16 x i32>
3908 return _mm512_cvtepu8_epi32(__A);
3909 }
3910
test_mm512_mask_cvtepu8_epi32(__m512i __W,__mmask16 __U,__m128i __A)3911 __m512i test_mm512_mask_cvtepu8_epi32(__m512i __W, __mmask16 __U, __m128i __A) {
3912 // CHECK-LABEL: @test_mm512_mask_cvtepu8_epi32
3913 // CHECK: zext <16 x i8> %{{.*}} to <16 x i32>
3914 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3915 return _mm512_mask_cvtepu8_epi32(__W, __U, __A);
3916 }
3917
test_mm512_maskz_cvtepu8_epi32(__mmask16 __U,__m128i __A)3918 __m512i test_mm512_maskz_cvtepu8_epi32(__mmask16 __U, __m128i __A) {
3919 // CHECK-LABEL: @test_mm512_maskz_cvtepu8_epi32
3920 // CHECK: zext <16 x i8> %{{.*}} to <16 x i32>
3921 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3922 return _mm512_maskz_cvtepu8_epi32(__U, __A);
3923 }
3924
test_mm512_cvtepu8_epi64(__m128i __A)3925 __m512i test_mm512_cvtepu8_epi64(__m128i __A) {
3926 // CHECK-LABEL: @test_mm512_cvtepu8_epi64
3927 // CHECK: zext <8 x i8> %{{.*}} to <8 x i64>
3928 return _mm512_cvtepu8_epi64(__A);
3929 }
3930
test_mm512_mask_cvtepu8_epi64(__m512i __W,__mmask8 __U,__m128i __A)3931 __m512i test_mm512_mask_cvtepu8_epi64(__m512i __W, __mmask8 __U, __m128i __A) {
3932 // CHECK-LABEL: @test_mm512_mask_cvtepu8_epi64
3933 // CHECK: zext <8 x i8> %{{.*}} to <8 x i64>
3934 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3935 return _mm512_mask_cvtepu8_epi64(__W, __U, __A);
3936 }
3937
test_mm512_maskz_cvtepu8_epi64(__mmask8 __U,__m128i __A)3938 __m512i test_mm512_maskz_cvtepu8_epi64(__mmask8 __U, __m128i __A) {
3939 // CHECK-LABEL: @test_mm512_maskz_cvtepu8_epi64
3940 // CHECK: zext <8 x i8> %{{.*}} to <8 x i64>
3941 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3942 return _mm512_maskz_cvtepu8_epi64(__U, __A);
3943 }
3944
test_mm512_cvtepu32_epi64(__m256i __X)3945 __m512i test_mm512_cvtepu32_epi64(__m256i __X) {
3946 // CHECK-LABEL: @test_mm512_cvtepu32_epi64
3947 // CHECK: zext <8 x i32> %{{.*}} to <8 x i64>
3948 return _mm512_cvtepu32_epi64(__X);
3949 }
3950
test_mm512_mask_cvtepu32_epi64(__m512i __W,__mmask8 __U,__m256i __X)3951 __m512i test_mm512_mask_cvtepu32_epi64(__m512i __W, __mmask8 __U, __m256i __X) {
3952 // CHECK-LABEL: @test_mm512_mask_cvtepu32_epi64
3953 // CHECK: zext <8 x i32> %{{.*}} to <8 x i64>
3954 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3955 return _mm512_mask_cvtepu32_epi64(__W, __U, __X);
3956 }
3957
test_mm512_maskz_cvtepu32_epi64(__mmask8 __U,__m256i __X)3958 __m512i test_mm512_maskz_cvtepu32_epi64(__mmask8 __U, __m256i __X) {
3959 // CHECK-LABEL: @test_mm512_maskz_cvtepu32_epi64
3960 // CHECK: zext <8 x i32> %{{.*}} to <8 x i64>
3961 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3962 return _mm512_maskz_cvtepu32_epi64(__U, __X);
3963 }
3964
test_mm512_cvtepu16_epi32(__m256i __A)3965 __m512i test_mm512_cvtepu16_epi32(__m256i __A) {
3966 // CHECK-LABEL: @test_mm512_cvtepu16_epi32
3967 // CHECK: zext <16 x i16> %{{.*}} to <16 x i32>
3968 return _mm512_cvtepu16_epi32(__A);
3969 }
3970
test_mm512_mask_cvtepu16_epi32(__m512i __W,__mmask16 __U,__m256i __A)3971 __m512i test_mm512_mask_cvtepu16_epi32(__m512i __W, __mmask16 __U, __m256i __A) {
3972 // CHECK-LABEL: @test_mm512_mask_cvtepu16_epi32
3973 // CHECK: zext <16 x i16> %{{.*}} to <16 x i32>
3974 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3975 return _mm512_mask_cvtepu16_epi32(__W, __U, __A);
3976 }
3977
test_mm512_maskz_cvtepu16_epi32(__mmask16 __U,__m256i __A)3978 __m512i test_mm512_maskz_cvtepu16_epi32(__mmask16 __U, __m256i __A) {
3979 // CHECK-LABEL: @test_mm512_maskz_cvtepu16_epi32
3980 // CHECK: zext <16 x i16> %{{.*}} to <16 x i32>
3981 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3982 return _mm512_maskz_cvtepu16_epi32(__U, __A);
3983 }
3984
test_mm512_cvtepu16_epi64(__m128i __A)3985 __m512i test_mm512_cvtepu16_epi64(__m128i __A) {
3986 // CHECK-LABEL: @test_mm512_cvtepu16_epi64
3987 // CHECK: zext <8 x i16> %{{.*}} to <8 x i64>
3988 return _mm512_cvtepu16_epi64(__A);
3989 }
3990
test_mm512_mask_cvtepu16_epi64(__m512i __W,__mmask8 __U,__m128i __A)3991 __m512i test_mm512_mask_cvtepu16_epi64(__m512i __W, __mmask8 __U, __m128i __A) {
3992 // CHECK-LABEL: @test_mm512_mask_cvtepu16_epi64
3993 // CHECK: zext <8 x i16> %{{.*}} to <8 x i64>
3994 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3995 return _mm512_mask_cvtepu16_epi64(__W, __U, __A);
3996 }
3997
test_mm512_maskz_cvtepu16_epi64(__mmask8 __U,__m128i __A)3998 __m512i test_mm512_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A) {
3999 // CHECK-LABEL: @test_mm512_maskz_cvtepu16_epi64
4000 // CHECK: zext <8 x i16> %{{.*}} to <8 x i64>
4001 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4002 return _mm512_maskz_cvtepu16_epi64(__U, __A);
4003 }
4004
4005
test_mm512_rol_epi32(__m512i __A)4006 __m512i test_mm512_rol_epi32(__m512i __A) {
4007 // CHECK-LABEL: @test_mm512_rol_epi32
4008 // CHECK: @llvm.fshl.v16i32
4009 return _mm512_rol_epi32(__A, 5);
4010 }
4011
test_mm512_mask_rol_epi32(__m512i __W,__mmask16 __U,__m512i __A)4012 __m512i test_mm512_mask_rol_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
4013 // CHECK-LABEL: @test_mm512_mask_rol_epi32
4014 // CHECK: @llvm.fshl.v16i32
4015 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4016 return _mm512_mask_rol_epi32(__W, __U, __A, 5);
4017 }
4018
test_mm512_maskz_rol_epi32(__mmask16 __U,__m512i __A)4019 __m512i test_mm512_maskz_rol_epi32(__mmask16 __U, __m512i __A) {
4020 // CHECK-LABEL: @test_mm512_maskz_rol_epi32
4021 // CHECK: @llvm.fshl.v16i32
4022 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4023 return _mm512_maskz_rol_epi32(__U, __A, 5);
4024 }
4025
test_mm512_rol_epi64(__m512i __A)4026 __m512i test_mm512_rol_epi64(__m512i __A) {
4027 // CHECK-LABEL: @test_mm512_rol_epi64
4028 // CHECK: @llvm.fshl.v8i64
4029 return _mm512_rol_epi64(__A, 5);
4030 }
4031
test_mm512_mask_rol_epi64(__m512i __W,__mmask8 __U,__m512i __A)4032 __m512i test_mm512_mask_rol_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
4033 // CHECK-LABEL: @test_mm512_mask_rol_epi64
4034 // CHECK: @llvm.fshl.v8i64
4035 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4036 return _mm512_mask_rol_epi64(__W, __U, __A, 5);
4037 }
4038
test_mm512_maskz_rol_epi64(__mmask8 __U,__m512i __A)4039 __m512i test_mm512_maskz_rol_epi64(__mmask8 __U, __m512i __A) {
4040 // CHECK-LABEL: @test_mm512_maskz_rol_epi64
4041 // CHECK: @llvm.fshl.v8i64
4042 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4043 return _mm512_maskz_rol_epi64(__U, __A, 5);
4044 }
4045
test_mm512_rolv_epi32(__m512i __A,__m512i __B)4046 __m512i test_mm512_rolv_epi32(__m512i __A, __m512i __B) {
4047 // CHECK-LABEL: @test_mm512_rolv_epi32
4048 // CHECK: @llvm.fshl.v16i32
4049 return _mm512_rolv_epi32(__A, __B);
4050 }
4051
test_mm512_mask_rolv_epi32(__m512i __W,__mmask16 __U,__m512i __A,__m512i __B)4052 __m512i test_mm512_mask_rolv_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
4053 // CHECK-LABEL: @test_mm512_mask_rolv_epi32
4054 // CHECK: @llvm.fshl.v16i32
4055 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4056 return _mm512_mask_rolv_epi32(__W, __U, __A, __B);
4057 }
4058
test_mm512_maskz_rolv_epi32(__mmask16 __U,__m512i __A,__m512i __B)4059 __m512i test_mm512_maskz_rolv_epi32(__mmask16 __U, __m512i __A, __m512i __B) {
4060 // CHECK-LABEL: @test_mm512_maskz_rolv_epi32
4061 // CHECK: @llvm.fshl.v16i32
4062 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4063 return _mm512_maskz_rolv_epi32(__U, __A, __B);
4064 }
4065
test_mm512_rolv_epi64(__m512i __A,__m512i __B)4066 __m512i test_mm512_rolv_epi64(__m512i __A, __m512i __B) {
4067 // CHECK-LABEL: @test_mm512_rolv_epi64
4068 // CHECK: @llvm.fshl.v8i64
4069 return _mm512_rolv_epi64(__A, __B);
4070 }
4071
test_mm512_mask_rolv_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m512i __B)4072 __m512i test_mm512_mask_rolv_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
4073 // CHECK-LABEL: @test_mm512_mask_rolv_epi64
4074 // CHECK: @llvm.fshl.v8i64
4075 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4076 return _mm512_mask_rolv_epi64(__W, __U, __A, __B);
4077 }
4078
test_mm512_maskz_rolv_epi64(__mmask8 __U,__m512i __A,__m512i __B)4079 __m512i test_mm512_maskz_rolv_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
4080 // CHECK-LABEL: @test_mm512_maskz_rolv_epi64
4081 // CHECK: @llvm.fshl.v8i64
4082 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4083 return _mm512_maskz_rolv_epi64(__U, __A, __B);
4084 }
4085
test_mm512_ror_epi32(__m512i __A)4086 __m512i test_mm512_ror_epi32(__m512i __A) {
4087 // CHECK-LABEL: @test_mm512_ror_epi32
4088 // CHECK: @llvm.fshr.v16i32
4089 return _mm512_ror_epi32(__A, 5);
4090 }
4091
test_mm512_mask_ror_epi32(__m512i __W,__mmask16 __U,__m512i __A)4092 __m512i test_mm512_mask_ror_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
4093 // CHECK-LABEL: @test_mm512_mask_ror_epi32
4094 // CHECK: @llvm.fshr.v16i32
4095 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4096 return _mm512_mask_ror_epi32(__W, __U, __A, 5);
4097 }
4098
test_mm512_maskz_ror_epi32(__mmask16 __U,__m512i __A)4099 __m512i test_mm512_maskz_ror_epi32(__mmask16 __U, __m512i __A) {
4100 // CHECK-LABEL: @test_mm512_maskz_ror_epi32
4101 // CHECK: @llvm.fshr.v16i32
4102 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4103 return _mm512_maskz_ror_epi32(__U, __A, 5);
4104 }
4105
test_mm512_ror_epi64(__m512i __A)4106 __m512i test_mm512_ror_epi64(__m512i __A) {
4107 // CHECK-LABEL: @test_mm512_ror_epi64
4108 // CHECK: @llvm.fshr.v8i64
4109 return _mm512_ror_epi64(__A, 5);
4110 }
4111
test_mm512_mask_ror_epi64(__m512i __W,__mmask8 __U,__m512i __A)4112 __m512i test_mm512_mask_ror_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
4113 // CHECK-LABEL: @test_mm512_mask_ror_epi64
4114 // CHECK: @llvm.fshr.v8i64
4115 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4116 return _mm512_mask_ror_epi64(__W, __U, __A, 5);
4117 }
4118
test_mm512_maskz_ror_epi64(__mmask8 __U,__m512i __A)4119 __m512i test_mm512_maskz_ror_epi64(__mmask8 __U, __m512i __A) {
4120 // CHECK-LABEL: @test_mm512_maskz_ror_epi64
4121 // CHECK: @llvm.fshr.v8i64
4122 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4123 return _mm512_maskz_ror_epi64(__U, __A, 5);
4124 }
4125
4126
test_mm512_rorv_epi32(__m512i __A,__m512i __B)4127 __m512i test_mm512_rorv_epi32(__m512i __A, __m512i __B) {
4128 // CHECK-LABEL: @test_mm512_rorv_epi32
4129 // CHECK: @llvm.fshr.v16i32
4130 return _mm512_rorv_epi32(__A, __B);
4131 }
4132
test_mm512_mask_rorv_epi32(__m512i __W,__mmask16 __U,__m512i __A,__m512i __B)4133 __m512i test_mm512_mask_rorv_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
4134 // CHECK-LABEL: @test_mm512_mask_rorv_epi32
4135 // CHECK: @llvm.fshr.v16i32
4136 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4137 return _mm512_mask_rorv_epi32(__W, __U, __A, __B);
4138 }
4139
test_mm512_maskz_rorv_epi32(__mmask16 __U,__m512i __A,__m512i __B)4140 __m512i test_mm512_maskz_rorv_epi32(__mmask16 __U, __m512i __A, __m512i __B) {
4141 // CHECK-LABEL: @test_mm512_maskz_rorv_epi32
4142 // CHECK: @llvm.fshr.v16i32
4143 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4144 return _mm512_maskz_rorv_epi32(__U, __A, __B);
4145 }
4146
test_mm512_rorv_epi64(__m512i __A,__m512i __B)4147 __m512i test_mm512_rorv_epi64(__m512i __A, __m512i __B) {
4148 // CHECK-LABEL: @test_mm512_rorv_epi64
4149 // CHECK: @llvm.fshr.v8i64
4150 return _mm512_rorv_epi64(__A, __B);
4151 }
4152
test_mm512_mask_rorv_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m512i __B)4153 __m512i test_mm512_mask_rorv_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
4154 // CHECK-LABEL: @test_mm512_mask_rorv_epi64
4155 // CHECK: @llvm.fshr.v8i64
4156 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4157 return _mm512_mask_rorv_epi64(__W, __U, __A, __B);
4158 }
4159
test_mm512_maskz_rorv_epi64(__mmask8 __U,__m512i __A,__m512i __B)4160 __m512i test_mm512_maskz_rorv_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
4161 // CHECK-LABEL: @test_mm512_maskz_rorv_epi64
4162 // CHECK: @llvm.fshr.v8i64
4163 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4164 return _mm512_maskz_rorv_epi64(__U, __A, __B);
4165 }
4166
test_mm512_slli_epi32(__m512i __A)4167 __m512i test_mm512_slli_epi32(__m512i __A) {
4168 // CHECK-LABEL: @test_mm512_slli_epi32
4169 // CHECK: @llvm.x86.avx512.pslli.d.512
4170 return _mm512_slli_epi32(__A, 5);
4171 }
4172
test_mm512_slli_epi32_2(__m512i __A,unsigned int __B)4173 __m512i test_mm512_slli_epi32_2(__m512i __A, unsigned int __B) {
4174 // CHECK-LABEL: @test_mm512_slli_epi32_2
4175 // CHECK: @llvm.x86.avx512.pslli.d.512
4176 return _mm512_slli_epi32(__A, __B);
4177 }
4178
test_mm512_mask_slli_epi32(__m512i __W,__mmask16 __U,__m512i __A)4179 __m512i test_mm512_mask_slli_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
4180 // CHECK-LABEL: @test_mm512_mask_slli_epi32
4181 // CHECK: @llvm.x86.avx512.pslli.d.512
4182 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4183 return _mm512_mask_slli_epi32(__W, __U, __A, 5);
4184 }
4185
test_mm512_mask_slli_epi32_2(__m512i __W,__mmask16 __U,__m512i __A,unsigned int __B)4186 __m512i test_mm512_mask_slli_epi32_2(__m512i __W, __mmask16 __U, __m512i __A, unsigned int __B) {
4187 // CHECK-LABEL: @test_mm512_mask_slli_epi32_2
4188 // CHECK: @llvm.x86.avx512.pslli.d.512
4189 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4190 return _mm512_mask_slli_epi32(__W, __U, __A, __B);
4191 }
4192
test_mm512_maskz_slli_epi32(__mmask16 __U,__m512i __A)4193 __m512i test_mm512_maskz_slli_epi32(__mmask16 __U, __m512i __A) {
4194 // CHECK-LABEL: @test_mm512_maskz_slli_epi32
4195 // CHECK: @llvm.x86.avx512.pslli.d.512
4196 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4197 return _mm512_maskz_slli_epi32(__U, __A, 5);
4198 }
4199
test_mm512_maskz_slli_epi32_2(__mmask16 __U,__m512i __A,unsigned int __B)4200 __m512i test_mm512_maskz_slli_epi32_2(__mmask16 __U, __m512i __A, unsigned int __B) {
4201 // CHECK-LABEL: @test_mm512_maskz_slli_epi32_2
4202 // CHECK: @llvm.x86.avx512.pslli.d.512
4203 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4204 return _mm512_maskz_slli_epi32(__U, __A, __B);
4205 }
4206
test_mm512_slli_epi64(__m512i __A)4207 __m512i test_mm512_slli_epi64(__m512i __A) {
4208 // CHECK-LABEL: @test_mm512_slli_epi64
4209 // CHECK: @llvm.x86.avx512.pslli.q.512
4210 return _mm512_slli_epi64(__A, 5);
4211 }
4212
test_mm512_slli_epi64_2(__m512i __A,unsigned int __B)4213 __m512i test_mm512_slli_epi64_2(__m512i __A, unsigned int __B) {
4214 // CHECK-LABEL: @test_mm512_slli_epi64_2
4215 // CHECK: @llvm.x86.avx512.pslli.q.512
4216 return _mm512_slli_epi64(__A, __B);
4217 }
4218
test_mm512_mask_slli_epi64(__m512i __W,__mmask8 __U,__m512i __A)4219 __m512i test_mm512_mask_slli_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
4220 // CHECK-LABEL: @test_mm512_mask_slli_epi64
4221 // CHECK: @llvm.x86.avx512.pslli.q.512
4222 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4223 return _mm512_mask_slli_epi64(__W, __U, __A, 5);
4224 }
4225
test_mm512_mask_slli_epi64_2(__m512i __W,__mmask8 __U,__m512i __A,unsigned int __B)4226 __m512i test_mm512_mask_slli_epi64_2(__m512i __W, __mmask8 __U, __m512i __A, unsigned int __B) {
4227 // CHECK-LABEL: @test_mm512_mask_slli_epi64_2
4228 // CHECK: @llvm.x86.avx512.pslli.q.512
4229 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4230 return _mm512_mask_slli_epi64(__W, __U, __A, __B);
4231 }
4232
test_mm512_maskz_slli_epi64(__mmask8 __U,__m512i __A)4233 __m512i test_mm512_maskz_slli_epi64(__mmask8 __U, __m512i __A) {
4234 // CHECK-LABEL: @test_mm512_maskz_slli_epi64
4235 // CHECK: @llvm.x86.avx512.pslli.q.512
4236 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4237 return _mm512_maskz_slli_epi64(__U, __A, 5);
4238 }
4239
test_mm512_maskz_slli_epi64_2(__mmask8 __U,__m512i __A,unsigned int __B)4240 __m512i test_mm512_maskz_slli_epi64_2(__mmask8 __U, __m512i __A, unsigned int __B) {
4241 // CHECK-LABEL: @test_mm512_maskz_slli_epi64_2
4242 // CHECK: @llvm.x86.avx512.pslli.q.512
4243 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4244 return _mm512_maskz_slli_epi64(__U, __A, __B);
4245 }
4246
test_mm512_srli_epi32(__m512i __A)4247 __m512i test_mm512_srli_epi32(__m512i __A) {
4248 // CHECK-LABEL: @test_mm512_srli_epi32
4249 // CHECK: @llvm.x86.avx512.psrli.d.512
4250 return _mm512_srli_epi32(__A, 5);
4251 }
4252
test_mm512_srli_epi32_2(__m512i __A,unsigned int __B)4253 __m512i test_mm512_srli_epi32_2(__m512i __A, unsigned int __B) {
4254 // CHECK-LABEL: @test_mm512_srli_epi32_2
4255 // CHECK: @llvm.x86.avx512.psrli.d.512
4256 return _mm512_srli_epi32(__A, __B);
4257 }
4258
test_mm512_mask_srli_epi32(__m512i __W,__mmask16 __U,__m512i __A)4259 __m512i test_mm512_mask_srli_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
4260 // CHECK-LABEL: @test_mm512_mask_srli_epi32
4261 // CHECK: @llvm.x86.avx512.psrli.d.512
4262 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4263 return _mm512_mask_srli_epi32(__W, __U, __A, 5);
4264 }
4265
test_mm512_mask_srli_epi32_2(__m512i __W,__mmask16 __U,__m512i __A,unsigned int __B)4266 __m512i test_mm512_mask_srli_epi32_2(__m512i __W, __mmask16 __U, __m512i __A, unsigned int __B) {
4267 // CHECK-LABEL: @test_mm512_mask_srli_epi32_2
4268 // CHECK: @llvm.x86.avx512.psrli.d.512
4269 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4270 return _mm512_mask_srli_epi32(__W, __U, __A, __B);
4271 }
4272
test_mm512_maskz_srli_epi32(__mmask16 __U,__m512i __A)4273 __m512i test_mm512_maskz_srli_epi32(__mmask16 __U, __m512i __A) {
4274 // CHECK-LABEL: @test_mm512_maskz_srli_epi32
4275 // CHECK: @llvm.x86.avx512.psrli.d.512
4276 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4277 return _mm512_maskz_srli_epi32(__U, __A, 5);
4278 }
4279
test_mm512_maskz_srli_epi32_2(__mmask16 __U,__m512i __A,unsigned int __B)4280 __m512i test_mm512_maskz_srli_epi32_2(__mmask16 __U, __m512i __A, unsigned int __B) {
4281 // CHECK-LABEL: @test_mm512_maskz_srli_epi32_2
4282 // CHECK: @llvm.x86.avx512.psrli.d.512
4283 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4284 return _mm512_maskz_srli_epi32(__U, __A, __B);
4285 }
4286
test_mm512_srli_epi64(__m512i __A)4287 __m512i test_mm512_srli_epi64(__m512i __A) {
4288 // CHECK-LABEL: @test_mm512_srli_epi64
4289 // CHECK: @llvm.x86.avx512.psrli.q.512
4290 return _mm512_srli_epi64(__A, 5);
4291 }
4292
test_mm512_srli_epi64_2(__m512i __A,unsigned int __B)4293 __m512i test_mm512_srli_epi64_2(__m512i __A, unsigned int __B) {
4294 // CHECK-LABEL: @test_mm512_srli_epi64_2
4295 // CHECK: @llvm.x86.avx512.psrli.q.512
4296 return _mm512_srli_epi64(__A, __B);
4297 }
4298
test_mm512_mask_srli_epi64(__m512i __W,__mmask8 __U,__m512i __A)4299 __m512i test_mm512_mask_srli_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
4300 // CHECK-LABEL: @test_mm512_mask_srli_epi64
4301 // CHECK: @llvm.x86.avx512.psrli.q.512
4302 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4303 return _mm512_mask_srli_epi64(__W, __U, __A, 5);
4304 }
4305
test_mm512_mask_srli_epi64_2(__m512i __W,__mmask8 __U,__m512i __A,unsigned int __B)4306 __m512i test_mm512_mask_srli_epi64_2(__m512i __W, __mmask8 __U, __m512i __A, unsigned int __B) {
4307 // CHECK-LABEL: @test_mm512_mask_srli_epi64_2
4308 // CHECK: @llvm.x86.avx512.psrli.q.512
4309 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4310 return _mm512_mask_srli_epi64(__W, __U, __A, __B);
4311 }
4312
test_mm512_maskz_srli_epi64(__mmask8 __U,__m512i __A)4313 __m512i test_mm512_maskz_srli_epi64(__mmask8 __U, __m512i __A) {
4314 // CHECK-LABEL: @test_mm512_maskz_srli_epi64
4315 // CHECK: @llvm.x86.avx512.psrli.q.512
4316 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4317 return _mm512_maskz_srli_epi64(__U, __A, 5);
4318 }
4319
test_mm512_maskz_srli_epi64_2(__mmask8 __U,__m512i __A,unsigned int __B)4320 __m512i test_mm512_maskz_srli_epi64_2(__mmask8 __U, __m512i __A, unsigned int __B) {
4321 // CHECK-LABEL: @test_mm512_maskz_srli_epi64_2
4322 // CHECK: @llvm.x86.avx512.psrli.q.512
4323 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4324 return _mm512_maskz_srli_epi64(__U, __A, __B);
4325 }
4326
test_mm512_mask_load_epi32(__m512i __W,__mmask16 __U,void const * __P)4327 __m512i test_mm512_mask_load_epi32(__m512i __W, __mmask16 __U, void const *__P) {
4328 // CHECK-LABEL: @test_mm512_mask_load_epi32
4329 // CHECK: @llvm.masked.load.v16i32.p0v16i32(<16 x i32>* %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
4330 return _mm512_mask_load_epi32(__W, __U, __P);
4331 }
4332
test_mm512_maskz_load_epi32(__mmask16 __U,void const * __P)4333 __m512i test_mm512_maskz_load_epi32(__mmask16 __U, void const *__P) {
4334 // CHECK-LABEL: @test_mm512_maskz_load_epi32
4335 // CHECK: @llvm.masked.load.v16i32.p0v16i32(<16 x i32>* %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
4336 return _mm512_maskz_load_epi32(__U, __P);
4337 }
4338
test_mm512_mask_mov_epi32(__m512i __W,__mmask16 __U,__m512i __A)4339 __m512i test_mm512_mask_mov_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
4340 // CHECK-LABEL: @test_mm512_mask_mov_epi32
4341 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4342 return _mm512_mask_mov_epi32(__W, __U, __A);
4343 }
4344
test_mm512_maskz_mov_epi32(__mmask16 __U,__m512i __A)4345 __m512i test_mm512_maskz_mov_epi32(__mmask16 __U, __m512i __A) {
4346 // CHECK-LABEL: @test_mm512_maskz_mov_epi32
4347 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4348 return _mm512_maskz_mov_epi32(__U, __A);
4349 }
4350
test_mm512_mask_mov_epi64(__m512i __W,__mmask8 __U,__m512i __A)4351 __m512i test_mm512_mask_mov_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
4352 // CHECK-LABEL: @test_mm512_mask_mov_epi64
4353 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4354 return _mm512_mask_mov_epi64(__W, __U, __A);
4355 }
4356
test_mm512_maskz_mov_epi64(__mmask8 __U,__m512i __A)4357 __m512i test_mm512_maskz_mov_epi64(__mmask8 __U, __m512i __A) {
4358 // CHECK-LABEL: @test_mm512_maskz_mov_epi64
4359 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4360 return _mm512_maskz_mov_epi64(__U, __A);
4361 }
4362
test_mm512_mask_load_epi64(__m512i __W,__mmask8 __U,void const * __P)4363 __m512i test_mm512_mask_load_epi64(__m512i __W, __mmask8 __U, void const *__P) {
4364 // CHECK-LABEL: @test_mm512_mask_load_epi64
4365 // CHECK: @llvm.masked.load.v8i64.p0v8i64(<8 x i64>* %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
4366 return _mm512_mask_load_epi64(__W, __U, __P);
4367 }
4368
test_mm512_maskz_load_epi64(__mmask8 __U,void const * __P)4369 __m512i test_mm512_maskz_load_epi64(__mmask8 __U, void const *__P) {
4370 // CHECK-LABEL: @test_mm512_maskz_load_epi64
4371 // CHECK: @llvm.masked.load.v8i64.p0v8i64(<8 x i64>* %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
4372 return _mm512_maskz_load_epi64(__U, __P);
4373 }
4374
test_mm512_mask_store_epi32(void * __P,__mmask16 __U,__m512i __A)4375 void test_mm512_mask_store_epi32(void *__P, __mmask16 __U, __m512i __A) {
4376 // CHECK-LABEL: @test_mm512_mask_store_epi32
4377 // CHECK: @llvm.masked.store.v16i32.p0v16i32(<16 x i32> %{{.*}}, <16 x i32>* %{{.*}}, i32 64, <16 x i1> %{{.*}})
4378 return _mm512_mask_store_epi32(__P, __U, __A);
4379 }
4380
test_mm512_mask_store_epi64(void * __P,__mmask8 __U,__m512i __A)4381 void test_mm512_mask_store_epi64(void *__P, __mmask8 __U, __m512i __A) {
4382 // CHECK-LABEL: @test_mm512_mask_store_epi64
4383 // CHECK: @llvm.masked.store.v8i64.p0v8i64(<8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, i32 64, <8 x i1> %{{.*}})
4384 return _mm512_mask_store_epi64(__P, __U, __A);
4385 }
4386
test_mm512_movedup_pd(__m512d __A)4387 __m512d test_mm512_movedup_pd(__m512d __A) {
4388 // CHECK-LABEL: @test_mm512_movedup_pd
4389 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
4390 return _mm512_movedup_pd(__A);
4391 }
4392
test_mm512_mask_movedup_pd(__m512d __W,__mmask8 __U,__m512d __A)4393 __m512d test_mm512_mask_movedup_pd(__m512d __W, __mmask8 __U, __m512d __A) {
4394 // CHECK-LABEL: @test_mm512_mask_movedup_pd
4395 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
4396 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4397 return _mm512_mask_movedup_pd(__W, __U, __A);
4398 }
4399
test_mm512_maskz_movedup_pd(__mmask8 __U,__m512d __A)4400 __m512d test_mm512_maskz_movedup_pd(__mmask8 __U, __m512d __A) {
4401 // CHECK-LABEL: @test_mm512_maskz_movedup_pd
4402 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
4403 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4404 return _mm512_maskz_movedup_pd(__U, __A);
4405 }
4406
test_mm_comi_round_sd(__m128d __A,__m128d __B)4407 int test_mm_comi_round_sd(__m128d __A, __m128d __B) {
4408 // CHECK-LABEL: @test_mm_comi_round_sd
4409 // CHECK: @llvm.x86.avx512.vcomi.sd
4410 return _mm_comi_round_sd(__A, __B, 5, _MM_FROUND_NO_EXC);
4411 }
4412
test_mm_comi_round_ss(__m128 __A,__m128 __B)4413 int test_mm_comi_round_ss(__m128 __A, __m128 __B) {
4414 // CHECK-LABEL: @test_mm_comi_round_ss
4415 // CHECK: @llvm.x86.avx512.vcomi.ss
4416 return _mm_comi_round_ss(__A, __B, 5, _MM_FROUND_NO_EXC);
4417 }
4418
test_mm512_fixupimm_round_pd(__m512d __A,__m512d __B,__m512i __C)4419 __m512d test_mm512_fixupimm_round_pd(__m512d __A, __m512d __B, __m512i __C) {
4420 // CHECK-LABEL: @test_mm512_fixupimm_round_pd
4421 // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.512
4422 return _mm512_fixupimm_round_pd(__A, __B, __C, 5, 8);
4423 }
4424
test_mm512_mask_fixupimm_round_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512i __C)4425 __m512d test_mm512_mask_fixupimm_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512i __C) {
4426 // CHECK-LABEL: @test_mm512_mask_fixupimm_round_pd
4427 // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.512
4428 return _mm512_mask_fixupimm_round_pd(__A, __U, __B, __C, 5, 8);
4429 }
4430
test_mm512_fixupimm_pd(__m512d __A,__m512d __B,__m512i __C)4431 __m512d test_mm512_fixupimm_pd(__m512d __A, __m512d __B, __m512i __C) {
4432 // CHECK-LABEL: @test_mm512_fixupimm_pd
4433 // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.512
4434 return _mm512_fixupimm_pd(__A, __B, __C, 5);
4435 }
4436
test_mm512_mask_fixupimm_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512i __C)4437 __m512d test_mm512_mask_fixupimm_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512i __C) {
4438 // CHECK-LABEL: @test_mm512_mask_fixupimm_pd
4439 // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.512
4440 return _mm512_mask_fixupimm_pd(__A, __U, __B, __C, 5);
4441 }
4442
test_mm512_maskz_fixupimm_round_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512i __C)4443 __m512d test_mm512_maskz_fixupimm_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512i __C) {
4444 // CHECK-LABEL: @test_mm512_maskz_fixupimm_round_pd
4445 // CHECK: @llvm.x86.avx512.maskz.fixupimm.pd.512
4446 return _mm512_maskz_fixupimm_round_pd(__U, __A, __B, __C, 5, 8);
4447 }
4448
test_mm512_maskz_fixupimm_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512i __C)4449 __m512d test_mm512_maskz_fixupimm_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512i __C) {
4450 // CHECK-LABEL: @test_mm512_maskz_fixupimm_pd
4451 // CHECK: @llvm.x86.avx512.maskz.fixupimm.pd.512
4452 return _mm512_maskz_fixupimm_pd(__U, __A, __B, __C, 5);
4453 }
4454
test_mm512_fixupimm_round_ps(__m512 __A,__m512 __B,__m512i __C)4455 __m512 test_mm512_fixupimm_round_ps(__m512 __A, __m512 __B, __m512i __C) {
4456 // CHECK-LABEL: @test_mm512_fixupimm_round_ps
4457 // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.512
4458 return _mm512_fixupimm_round_ps(__A, __B, __C, 5, 8);
4459 }
4460
test_mm512_mask_fixupimm_round_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512i __C)4461 __m512 test_mm512_mask_fixupimm_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512i __C) {
4462 // CHECK-LABEL: @test_mm512_mask_fixupimm_round_ps
4463 // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.512
4464 return _mm512_mask_fixupimm_round_ps(__A, __U, __B, __C, 5, 8);
4465 }
4466
test_mm512_fixupimm_ps(__m512 __A,__m512 __B,__m512i __C)4467 __m512 test_mm512_fixupimm_ps(__m512 __A, __m512 __B, __m512i __C) {
4468 // CHECK-LABEL: @test_mm512_fixupimm_ps
4469 // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.512
4470 return _mm512_fixupimm_ps(__A, __B, __C, 5);
4471 }
4472
test_mm512_mask_fixupimm_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512i __C)4473 __m512 test_mm512_mask_fixupimm_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512i __C) {
4474 // CHECK-LABEL: @test_mm512_mask_fixupimm_ps
4475 // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.512
4476 return _mm512_mask_fixupimm_ps(__A, __U, __B, __C, 5);
4477 }
4478
test_mm512_maskz_fixupimm_round_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512i __C)4479 __m512 test_mm512_maskz_fixupimm_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512i __C) {
4480 // CHECK-LABEL: @test_mm512_maskz_fixupimm_round_ps
4481 // CHECK: @llvm.x86.avx512.maskz.fixupimm.ps.512
4482 return _mm512_maskz_fixupimm_round_ps(__U, __A, __B, __C, 5, 8);
4483 }
4484
test_mm512_maskz_fixupimm_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512i __C)4485 __m512 test_mm512_maskz_fixupimm_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512i __C) {
4486 // CHECK-LABEL: @test_mm512_maskz_fixupimm_ps
4487 // CHECK: @llvm.x86.avx512.maskz.fixupimm.ps.512
4488 return _mm512_maskz_fixupimm_ps(__U, __A, __B, __C, 5);
4489 }
4490
test_mm_fixupimm_round_sd(__m128d __A,__m128d __B,__m128i __C)4491 __m128d test_mm_fixupimm_round_sd(__m128d __A, __m128d __B, __m128i __C) {
4492 // CHECK-LABEL: @test_mm_fixupimm_round_sd
4493 // CHECK: @llvm.x86.avx512.mask.fixupimm
4494 return _mm_fixupimm_round_sd(__A, __B, __C, 5, 8);
4495 }
4496
test_mm_mask_fixupimm_round_sd(__m128d __A,__mmask8 __U,__m128d __B,__m128i __C)4497 __m128d test_mm_mask_fixupimm_round_sd(__m128d __A, __mmask8 __U, __m128d __B, __m128i __C) {
4498 // CHECK-LABEL: @test_mm_mask_fixupimm_round_sd
4499 // CHECK: @llvm.x86.avx512.mask.fixupimm
4500 return _mm_mask_fixupimm_round_sd(__A, __U, __B, __C, 5, 8);
4501 }
4502
test_mm_fixupimm_sd(__m128d __A,__m128d __B,__m128i __C)4503 __m128d test_mm_fixupimm_sd(__m128d __A, __m128d __B, __m128i __C) {
4504 // CHECK-LABEL: @test_mm_fixupimm_sd
4505 // CHECK: @llvm.x86.avx512.mask.fixupimm
4506 return _mm_fixupimm_sd(__A, __B, __C, 5);
4507 }
4508
test_mm_mask_fixupimm_sd(__m128d __A,__mmask8 __U,__m128d __B,__m128i __C)4509 __m128d test_mm_mask_fixupimm_sd(__m128d __A, __mmask8 __U, __m128d __B, __m128i __C) {
4510 // CHECK-LABEL: @test_mm_mask_fixupimm_sd
4511 // CHECK: @llvm.x86.avx512.mask.fixupimm
4512 return _mm_mask_fixupimm_sd(__A, __U, __B, __C, 5);
4513 }
4514
test_mm_maskz_fixupimm_round_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128i __C)4515 __m128d test_mm_maskz_fixupimm_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128i __C) {
4516 // CHECK-LABEL: @test_mm_maskz_fixupimm_round_sd
4517 // CHECK: @llvm.x86.avx512.maskz.fixupimm
4518 return _mm_maskz_fixupimm_round_sd(__U, __A, __B, __C, 5, 8);
4519 }
4520
test_mm_maskz_fixupimm_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128i __C)4521 __m128d test_mm_maskz_fixupimm_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128i __C) {
4522 // CHECK-LABEL: @test_mm_maskz_fixupimm_sd
4523 // CHECK: @llvm.x86.avx512.maskz.fixupimm
4524 return _mm_maskz_fixupimm_sd(__U, __A, __B, __C, 5);
4525 }
4526
test_mm_fixupimm_round_ss(__m128 __A,__m128 __B,__m128i __C)4527 __m128 test_mm_fixupimm_round_ss(__m128 __A, __m128 __B, __m128i __C) {
4528 // CHECK-LABEL: @test_mm_fixupimm_round_ss
4529 // CHECK: @llvm.x86.avx512.mask.fixupimm
4530 return _mm_fixupimm_round_ss(__A, __B, __C, 5, 8);
4531 }
4532
test_mm_mask_fixupimm_round_ss(__m128 __A,__mmask8 __U,__m128 __B,__m128i __C)4533 __m128 test_mm_mask_fixupimm_round_ss(__m128 __A, __mmask8 __U, __m128 __B, __m128i __C) {
4534 // CHECK-LABEL: @test_mm_mask_fixupimm_round_ss
4535 // CHECK: @llvm.x86.avx512.mask.fixupimm
4536 return _mm_mask_fixupimm_round_ss(__A, __U, __B, __C, 5, 8);
4537 }
4538
test_mm_fixupimm_ss(__m128 __A,__m128 __B,__m128i __C)4539 __m128 test_mm_fixupimm_ss(__m128 __A, __m128 __B, __m128i __C) {
4540 // CHECK-LABEL: @test_mm_fixupimm_ss
4541 // CHECK: @llvm.x86.avx512.mask.fixupimm
4542 return _mm_fixupimm_ss(__A, __B, __C, 5);
4543 }
4544
test_mm_mask_fixupimm_ss(__m128 __A,__mmask8 __U,__m128 __B,__m128i __C)4545 __m128 test_mm_mask_fixupimm_ss(__m128 __A, __mmask8 __U, __m128 __B, __m128i __C) {
4546 // CHECK-LABEL: @test_mm_mask_fixupimm_ss
4547 // CHECK: @llvm.x86.avx512.mask.fixupimm
4548 return _mm_mask_fixupimm_ss(__A, __U, __B, __C, 5);
4549 }
4550
test_mm_maskz_fixupimm_round_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128i __C)4551 __m128 test_mm_maskz_fixupimm_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128i __C) {
4552 // CHECK-LABEL: @test_mm_maskz_fixupimm_round_ss
4553 // CHECK: @llvm.x86.avx512.maskz.fixupimm
4554 return _mm_maskz_fixupimm_round_ss(__U, __A, __B, __C, 5, 8);
4555 }
4556
test_mm_maskz_fixupimm_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128i __C)4557 __m128 test_mm_maskz_fixupimm_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128i __C) {
4558 // CHECK-LABEL: @test_mm_maskz_fixupimm_ss
4559 // CHECK: @llvm.x86.avx512.maskz.fixupimm
4560 return _mm_maskz_fixupimm_ss(__U, __A, __B, __C, 5);
4561 }
4562
test_mm_getexp_round_sd(__m128d __A,__m128d __B)4563 __m128d test_mm_getexp_round_sd(__m128d __A, __m128d __B) {
4564 // CHECK-LABEL: @test_mm_getexp_round_sd
4565 // CHECK: @llvm.x86.avx512.mask.getexp.sd
4566 return _mm_getexp_round_sd(__A, __B, 8);
4567 }
4568
test_mm_getexp_sd(__m128d __A,__m128d __B)4569 __m128d test_mm_getexp_sd(__m128d __A, __m128d __B) {
4570 // CHECK-LABEL: @test_mm_getexp_sd
4571 // CHECK: @llvm.x86.avx512.mask.getexp.sd
4572 return _mm_getexp_sd(__A, __B);
4573 }
4574
test_mm_getexp_round_ss(__m128 __A,__m128 __B)4575 __m128 test_mm_getexp_round_ss(__m128 __A, __m128 __B) {
4576 // CHECK-LABEL: @test_mm_getexp_round_ss
4577 // CHECK: @llvm.x86.avx512.mask.getexp.ss
4578 return _mm_getexp_round_ss(__A, __B, 8);
4579 }
4580
test_mm_getexp_ss(__m128 __A,__m128 __B)4581 __m128 test_mm_getexp_ss(__m128 __A, __m128 __B) {
4582 // CHECK-LABEL: @test_mm_getexp_ss
4583 // CHECK: @llvm.x86.avx512.mask.getexp.ss
4584 return _mm_getexp_ss(__A, __B);
4585 }
4586
test_mm_getmant_round_sd(__m128d __A,__m128d __B)4587 __m128d test_mm_getmant_round_sd(__m128d __A, __m128d __B) {
4588 // CHECK-LABEL: @test_mm_getmant_round_sd
4589 // CHECK: @llvm.x86.avx512.mask.getmant.sd
4590 return _mm_getmant_round_sd(__A, __B, _MM_MANT_NORM_1_2, _MM_MANT_SIGN_src, 8);
4591 }
4592
test_mm_getmant_sd(__m128d __A,__m128d __B)4593 __m128d test_mm_getmant_sd(__m128d __A, __m128d __B) {
4594 // CHECK-LABEL: @test_mm_getmant_sd
4595 // CHECK: @llvm.x86.avx512.mask.getmant.sd
4596 return _mm_getmant_sd(__A, __B, _MM_MANT_NORM_1_2, _MM_MANT_SIGN_src);
4597 }
4598
test_mm_getmant_round_ss(__m128 __A,__m128 __B)4599 __m128 test_mm_getmant_round_ss(__m128 __A, __m128 __B) {
4600 // CHECK-LABEL: @test_mm_getmant_round_ss
4601 // CHECK: @llvm.x86.avx512.mask.getmant.ss
4602 return _mm_getmant_round_ss(__A, __B, _MM_MANT_NORM_1_2, _MM_MANT_SIGN_src, 8);
4603 }
4604
test_mm_getmant_ss(__m128 __A,__m128 __B)4605 __m128 test_mm_getmant_ss(__m128 __A, __m128 __B) {
4606 // CHECK-LABEL: @test_mm_getmant_ss
4607 // CHECK: @llvm.x86.avx512.mask.getmant.ss
4608 return _mm_getmant_ss(__A, __B, _MM_MANT_NORM_1_2, _MM_MANT_SIGN_src);
4609 }
4610
test_mm512_kmov(__mmask16 __A)4611 __mmask16 test_mm512_kmov(__mmask16 __A) {
4612 // CHECK-LABEL: @test_mm512_kmov
4613 // CHECK: load i16, i16* %__A.addr.i, align 2
4614 return _mm512_kmov(__A);
4615 }
4616
test_mm512_mask_unpackhi_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)4617 __m512d test_mm512_mask_unpackhi_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
4618 // CHECK-LABEL: @test_mm512_mask_unpackhi_pd
4619 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
4620 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4621 return _mm512_mask_unpackhi_pd(__W, __U, __A, __B);
4622 }
4623 #if __x86_64__
test_mm_cvt_roundsd_si64(__m128d __A)4624 long long test_mm_cvt_roundsd_si64(__m128d __A) {
4625 // CHECK-LABEL: @test_mm_cvt_roundsd_si64
4626 // CHECK: @llvm.x86.avx512.vcvtsd2si64
4627 return _mm_cvt_roundsd_si64(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4628 }
4629 #endif
test_mm512_mask2_permutex2var_epi32(__m512i __A,__m512i __I,__mmask16 __U,__m512i __B)4630 __m512i test_mm512_mask2_permutex2var_epi32(__m512i __A, __m512i __I, __mmask16 __U, __m512i __B) {
4631 // CHECK-LABEL: @test_mm512_mask2_permutex2var_epi32
4632 // CHECK: @llvm.x86.avx512.vpermi2var.d.512
4633 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4634 return _mm512_mask2_permutex2var_epi32(__A, __I, __U, __B);
4635 }
test_mm512_unpackhi_epi32(__m512i __A,__m512i __B)4636 __m512i test_mm512_unpackhi_epi32(__m512i __A, __m512i __B) {
4637 // CHECK-LABEL: @test_mm512_unpackhi_epi32
4638 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31>
4639 return _mm512_unpackhi_epi32(__A, __B);
4640 }
4641
test_mm512_maskz_unpackhi_pd(__mmask8 __U,__m512d __A,__m512d __B)4642 __m512d test_mm512_maskz_unpackhi_pd(__mmask8 __U, __m512d __A, __m512d __B) {
4643 // CHECK-LABEL: @test_mm512_maskz_unpackhi_pd
4644 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
4645 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4646 return _mm512_maskz_unpackhi_pd(__U, __A, __B);
4647 }
4648 #if __x86_64__
test_mm_cvt_roundsd_i64(__m128d __A)4649 long long test_mm_cvt_roundsd_i64(__m128d __A) {
4650 // CHECK-LABEL: @test_mm_cvt_roundsd_i64
4651 // CHECK: @llvm.x86.avx512.vcvtsd2si64
4652 return _mm_cvt_roundsd_i64(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4653 }
4654 #endif
test_mm512_mask2_permutex2var_pd(__m512d __A,__m512i __I,__mmask8 __U,__m512d __B)4655 __m512d test_mm512_mask2_permutex2var_pd(__m512d __A, __m512i __I, __mmask8 __U, __m512d __B) {
4656 // CHECK-LABEL: @test_mm512_mask2_permutex2var_pd
4657 // CHECK: @llvm.x86.avx512.vpermi2var.pd.512
4658 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4659 return _mm512_mask2_permutex2var_pd(__A, __I, __U, __B);
4660 }
test_mm512_mask_unpackhi_epi32(__m512i __W,__mmask16 __U,__m512i __A,__m512i __B)4661 __m512i test_mm512_mask_unpackhi_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
4662 // CHECK-LABEL: @test_mm512_mask_unpackhi_epi32
4663 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31>
4664 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4665 return _mm512_mask_unpackhi_epi32(__W, __U, __A, __B);
4666 }
4667
test_mm512_mask_unpackhi_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)4668 __m512 test_mm512_mask_unpackhi_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
4669 // CHECK-LABEL: @test_mm512_mask_unpackhi_ps
4670 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31>
4671 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
4672 return _mm512_mask_unpackhi_ps(__W, __U, __A, __B);
4673 }
4674
test_mm512_maskz_unpackhi_ps(__mmask16 __U,__m512 __A,__m512 __B)4675 __m512 test_mm512_maskz_unpackhi_ps(__mmask16 __U, __m512 __A, __m512 __B) {
4676 // CHECK-LABEL: @test_mm512_maskz_unpackhi_ps
4677 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31>
4678 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
4679 return _mm512_maskz_unpackhi_ps(__U, __A, __B);
4680 }
4681
test_mm512_mask_unpacklo_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)4682 __m512d test_mm512_mask_unpacklo_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
4683 // CHECK-LABEL: @test_mm512_mask_unpacklo_pd
4684 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
4685 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4686 return _mm512_mask_unpacklo_pd(__W, __U, __A, __B);
4687 }
4688
test_mm512_maskz_unpacklo_pd(__mmask8 __U,__m512d __A,__m512d __B)4689 __m512d test_mm512_maskz_unpacklo_pd(__mmask8 __U, __m512d __A, __m512d __B) {
4690 // CHECK-LABEL: @test_mm512_maskz_unpacklo_pd
4691 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
4692 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4693 return _mm512_maskz_unpacklo_pd(__U, __A, __B);
4694 }
4695
test_mm512_mask_unpacklo_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)4696 __m512 test_mm512_mask_unpacklo_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
4697 // CHECK-LABEL: @test_mm512_mask_unpacklo_ps
4698 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29>
4699 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
4700 return _mm512_mask_unpacklo_ps(__W, __U, __A, __B);
4701 }
4702
test_mm512_maskz_unpacklo_ps(__mmask16 __U,__m512 __A,__m512 __B)4703 __m512 test_mm512_maskz_unpacklo_ps(__mmask16 __U, __m512 __A, __m512 __B) {
4704 // CHECK-LABEL: @test_mm512_maskz_unpacklo_ps
4705 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29>
4706 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
4707 return _mm512_maskz_unpacklo_ps(__U, __A, __B);
4708 }
test_mm_cvt_roundsd_si32(__m128d __A)4709 int test_mm_cvt_roundsd_si32(__m128d __A) {
4710 // CHECK-LABEL: @test_mm_cvt_roundsd_si32
4711 // CHECK: @llvm.x86.avx512.vcvtsd2si32
4712 return _mm_cvt_roundsd_si32(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4713 }
4714
test_mm_cvt_roundsd_i32(__m128d __A)4715 int test_mm_cvt_roundsd_i32(__m128d __A) {
4716 // CHECK-LABEL: @test_mm_cvt_roundsd_i32
4717 // CHECK: @llvm.x86.avx512.vcvtsd2si32
4718 return _mm_cvt_roundsd_i32(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4719 }
4720
test_mm_cvt_roundsd_u32(__m128d __A)4721 unsigned test_mm_cvt_roundsd_u32(__m128d __A) {
4722 // CHECK-LABEL: @test_mm_cvt_roundsd_u32
4723 // CHECK: @llvm.x86.avx512.vcvtsd2usi32
4724 return _mm_cvt_roundsd_u32(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4725 }
4726
test_mm_cvtsd_u32(__m128d __A)4727 unsigned test_mm_cvtsd_u32(__m128d __A) {
4728 // CHECK-LABEL: @test_mm_cvtsd_u32
4729 // CHECK: @llvm.x86.avx512.vcvtsd2usi32
4730 return _mm_cvtsd_u32(__A);
4731 }
4732
test_mm512_cvtsi512_si32(__m512i a)4733 int test_mm512_cvtsi512_si32(__m512i a) {
4734 // CHECK-LABEL: test_mm512_cvtsi512_si32
4735 // CHECK: %{{.*}} = extractelement <16 x i32> %{{.*}}, i32 0
4736 return _mm512_cvtsi512_si32(a);
4737 }
4738
4739 #ifdef __x86_64__
test_mm_cvt_roundsd_u64(__m128d __A)4740 unsigned long long test_mm_cvt_roundsd_u64(__m128d __A) {
4741 // CHECK-LABEL: @test_mm_cvt_roundsd_u64
4742 // CHECK: @llvm.x86.avx512.vcvtsd2usi64
4743 return _mm_cvt_roundsd_u64(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4744 }
4745
test_mm_cvtsd_u64(__m128d __A)4746 unsigned long long test_mm_cvtsd_u64(__m128d __A) {
4747 // CHECK-LABEL: @test_mm_cvtsd_u64
4748 // CHECK: @llvm.x86.avx512.vcvtsd2usi64
4749 return _mm_cvtsd_u64(__A);
4750 }
4751 #endif
4752
test_mm_cvt_roundss_si32(__m128 __A)4753 int test_mm_cvt_roundss_si32(__m128 __A) {
4754 // CHECK-LABEL: @test_mm_cvt_roundss_si32
4755 // CHECK: @llvm.x86.avx512.vcvtss2si32
4756 return _mm_cvt_roundss_si32(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4757 }
4758
test_mm_cvt_roundss_i32(__m128 __A)4759 int test_mm_cvt_roundss_i32(__m128 __A) {
4760 // CHECK-LABEL: @test_mm_cvt_roundss_i32
4761 // CHECK: @llvm.x86.avx512.vcvtss2si32
4762 return _mm_cvt_roundss_i32(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4763 }
4764
4765 #ifdef __x86_64__
test_mm_cvt_roundss_si64(__m128 __A)4766 long long test_mm_cvt_roundss_si64(__m128 __A) {
4767 // CHECK-LABEL: @test_mm_cvt_roundss_si64
4768 // CHECK: @llvm.x86.avx512.vcvtss2si64
4769 return _mm_cvt_roundss_si64(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4770 }
4771
test_mm_cvt_roundss_i64(__m128 __A)4772 long long test_mm_cvt_roundss_i64(__m128 __A) {
4773 // CHECK-LABEL: @test_mm_cvt_roundss_i64
4774 // CHECK: @llvm.x86.avx512.vcvtss2si64
4775 return _mm_cvt_roundss_i64(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4776 }
4777 #endif
4778
test_mm_cvt_roundss_u32(__m128 __A)4779 unsigned test_mm_cvt_roundss_u32(__m128 __A) {
4780 // CHECK-LABEL: @test_mm_cvt_roundss_u32
4781 // CHECK: @llvm.x86.avx512.vcvtss2usi32
4782 return _mm_cvt_roundss_u32(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4783 }
4784
test_mm_cvtss_u32(__m128 __A)4785 unsigned test_mm_cvtss_u32(__m128 __A) {
4786 // CHECK-LABEL: @test_mm_cvtss_u32
4787 // CHECK: @llvm.x86.avx512.vcvtss2usi32
4788 return _mm_cvtss_u32(__A);
4789 }
4790
4791 #ifdef __x86_64__
test_mm_cvt_roundss_u64(__m128 __A)4792 unsigned long long test_mm_cvt_roundss_u64(__m128 __A) {
4793 // CHECK-LABEL: @test_mm_cvt_roundss_u64
4794 // CHECK: @llvm.x86.avx512.vcvtss2usi64
4795 return _mm_cvt_roundss_u64(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4796 }
4797
test_mm_cvtss_u64(__m128 __A)4798 unsigned long long test_mm_cvtss_u64(__m128 __A) {
4799 // CHECK-LABEL: @test_mm_cvtss_u64
4800 // CHECK: @llvm.x86.avx512.vcvtss2usi64
4801 return _mm_cvtss_u64(__A);
4802 }
4803 #endif
4804
test_mm_cvtt_roundsd_i32(__m128d __A)4805 int test_mm_cvtt_roundsd_i32(__m128d __A) {
4806 // CHECK-LABEL: @test_mm_cvtt_roundsd_i32
4807 // CHECK: @llvm.x86.avx512.cvttsd2si
4808 return _mm_cvtt_roundsd_i32(__A, _MM_FROUND_NO_EXC);
4809 }
4810
test_mm_cvtt_roundsd_si32(__m128d __A)4811 int test_mm_cvtt_roundsd_si32(__m128d __A) {
4812 // CHECK-LABEL: @test_mm_cvtt_roundsd_si32
4813 // CHECK: @llvm.x86.avx512.cvttsd2si
4814 return _mm_cvtt_roundsd_si32(__A, _MM_FROUND_NO_EXC);
4815 }
4816
test_mm_cvttsd_i32(__m128d __A)4817 int test_mm_cvttsd_i32(__m128d __A) {
4818 // CHECK-LABEL: @test_mm_cvttsd_i32
4819 // CHECK: @llvm.x86.avx512.cvttsd2si
4820 return _mm_cvttsd_i32(__A);
4821 }
4822
4823 #ifdef __x86_64__
test_mm_cvtt_roundsd_si64(__m128d __A)4824 long long test_mm_cvtt_roundsd_si64(__m128d __A) {
4825 // CHECK-LABEL: @test_mm_cvtt_roundsd_si64
4826 // CHECK: @llvm.x86.avx512.cvttsd2si64
4827 return _mm_cvtt_roundsd_si64(__A, _MM_FROUND_NO_EXC);
4828 }
4829
test_mm_cvtt_roundsd_i64(__m128d __A)4830 long long test_mm_cvtt_roundsd_i64(__m128d __A) {
4831 // CHECK-LABEL: @test_mm_cvtt_roundsd_i64
4832 // CHECK: @llvm.x86.avx512.cvttsd2si64
4833 return _mm_cvtt_roundsd_i64(__A, _MM_FROUND_NO_EXC);
4834 }
4835
test_mm_cvttsd_i64(__m128d __A)4836 long long test_mm_cvttsd_i64(__m128d __A) {
4837 // CHECK-LABEL: @test_mm_cvttsd_i64
4838 // CHECK: @llvm.x86.avx512.cvttsd2si64
4839 return _mm_cvttsd_i64(__A);
4840 }
4841 #endif
4842
test_mm_cvtt_roundsd_u32(__m128d __A)4843 unsigned test_mm_cvtt_roundsd_u32(__m128d __A) {
4844 // CHECK-LABEL: @test_mm_cvtt_roundsd_u32
4845 // CHECK: @llvm.x86.avx512.cvttsd2usi
4846 return _mm_cvtt_roundsd_u32(__A, _MM_FROUND_NO_EXC);
4847 }
4848
test_mm_cvttsd_u32(__m128d __A)4849 unsigned test_mm_cvttsd_u32(__m128d __A) {
4850 // CHECK-LABEL: @test_mm_cvttsd_u32
4851 // CHECK: @llvm.x86.avx512.cvttsd2usi
4852 return _mm_cvttsd_u32(__A);
4853 }
4854
4855 #ifdef __x86_64__
test_mm_cvtt_roundsd_u64(__m128d __A)4856 unsigned long long test_mm_cvtt_roundsd_u64(__m128d __A) {
4857 // CHECK-LABEL: @test_mm_cvtt_roundsd_u64
4858 // CHECK: @llvm.x86.avx512.cvttsd2usi64
4859 return _mm_cvtt_roundsd_u64(__A, _MM_FROUND_NO_EXC);
4860 }
4861
test_mm_cvttsd_u64(__m128d __A)4862 unsigned long long test_mm_cvttsd_u64(__m128d __A) {
4863 // CHECK-LABEL: @test_mm_cvttsd_u64
4864 // CHECK: @llvm.x86.avx512.cvttsd2usi64
4865 return _mm_cvttsd_u64(__A);
4866 }
4867 #endif
4868
test_mm_cvtt_roundss_i32(__m128 __A)4869 int test_mm_cvtt_roundss_i32(__m128 __A) {
4870 // CHECK-LABEL: @test_mm_cvtt_roundss_i32
4871 // CHECK: @llvm.x86.avx512.cvttss2si
4872 return _mm_cvtt_roundss_i32(__A, _MM_FROUND_NO_EXC);
4873 }
4874
test_mm_cvtt_roundss_si32(__m128 __A)4875 int test_mm_cvtt_roundss_si32(__m128 __A) {
4876 // CHECK-LABEL: @test_mm_cvtt_roundss_si32
4877 // CHECK: @llvm.x86.avx512.cvttss2si
4878 return _mm_cvtt_roundss_si32(__A, _MM_FROUND_NO_EXC);
4879 }
4880
test_mm_cvttss_i32(__m128 __A)4881 int test_mm_cvttss_i32(__m128 __A) {
4882 // CHECK-LABEL: @test_mm_cvttss_i32
4883 // CHECK: @llvm.x86.avx512.cvttss2si
4884 return _mm_cvttss_i32(__A);
4885 }
4886
4887 #ifdef __x86_64__
test_mm_cvtt_roundss_i64(__m128 __A)4888 float test_mm_cvtt_roundss_i64(__m128 __A) {
4889 // CHECK-LABEL: @test_mm_cvtt_roundss_i64
4890 // CHECK: @llvm.x86.avx512.cvttss2si64
4891 return _mm_cvtt_roundss_i64(__A, _MM_FROUND_NO_EXC);
4892 }
4893
test_mm_cvtt_roundss_si64(__m128 __A)4894 long long test_mm_cvtt_roundss_si64(__m128 __A) {
4895 // CHECK-LABEL: @test_mm_cvtt_roundss_si64
4896 // CHECK: @llvm.x86.avx512.cvttss2si64
4897 return _mm_cvtt_roundss_si64(__A, _MM_FROUND_NO_EXC);
4898 }
4899
test_mm_cvttss_i64(__m128 __A)4900 long long test_mm_cvttss_i64(__m128 __A) {
4901 // CHECK-LABEL: @test_mm_cvttss_i64
4902 // CHECK: @llvm.x86.avx512.cvttss2si64
4903 return _mm_cvttss_i64(__A);
4904 }
4905 #endif
4906
test_mm_cvtt_roundss_u32(__m128 __A)4907 unsigned test_mm_cvtt_roundss_u32(__m128 __A) {
4908 // CHECK-LABEL: @test_mm_cvtt_roundss_u32
4909 // CHECK: @llvm.x86.avx512.cvttss2usi
4910 return _mm_cvtt_roundss_u32(__A, _MM_FROUND_NO_EXC);
4911 }
4912
test_mm_cvttss_u32(__m128 __A)4913 unsigned test_mm_cvttss_u32(__m128 __A) {
4914 // CHECK-LABEL: @test_mm_cvttss_u32
4915 // CHECK: @llvm.x86.avx512.cvttss2usi
4916 return _mm_cvttss_u32(__A);
4917 }
4918
4919 #ifdef __x86_64__
test_mm_cvtt_roundss_u64(__m128 __A)4920 unsigned long long test_mm_cvtt_roundss_u64(__m128 __A) {
4921 // CHECK-LABEL: @test_mm_cvtt_roundss_u64
4922 // CHECK: @llvm.x86.avx512.cvttss2usi64
4923 return _mm_cvtt_roundss_u64(__A, _MM_FROUND_NO_EXC);
4924 }
4925
test_mm_cvttss_u64(__m128 __A)4926 unsigned long long test_mm_cvttss_u64(__m128 __A) {
4927 // CHECK-LABEL: @test_mm_cvttss_u64
4928 // CHECK: @llvm.x86.avx512.cvttss2usi64
4929 return _mm_cvttss_u64(__A);
4930 }
4931 #endif
4932
test_mm512_cvtt_roundps_epu32(__m512 __A)4933 __m512i test_mm512_cvtt_roundps_epu32(__m512 __A)
4934 {
4935 // CHECK-LABEL: @test_mm512_cvtt_roundps_epu32
4936 // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
4937 return _mm512_cvtt_roundps_epu32(__A, _MM_FROUND_NO_EXC);
4938 }
4939
test_mm512_mask_cvtt_roundps_epu32(__m512i __W,__mmask16 __U,__m512 __A)4940 __m512i test_mm512_mask_cvtt_roundps_epu32(__m512i __W, __mmask16 __U, __m512 __A)
4941 {
4942 // CHECK-LABEL: @test_mm512_mask_cvtt_roundps_epu32
4943 // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
4944 return _mm512_mask_cvtt_roundps_epu32(__W, __U, __A, _MM_FROUND_NO_EXC);
4945 }
4946
test_mm512_maskz_cvtt_roundps_epu32(__mmask16 __U,__m512 __A)4947 __m512i test_mm512_maskz_cvtt_roundps_epu32( __mmask16 __U, __m512 __A)
4948 {
4949 // CHECK-LABEL: @test_mm512_maskz_cvtt_roundps_epu32
4950 // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
4951
4952 return _mm512_maskz_cvtt_roundps_epu32(__U, __A, _MM_FROUND_NO_EXC);
4953 }
4954
test_mm512_cvt_roundps_ph(__m512 __A)4955 __m256i test_mm512_cvt_roundps_ph(__m512 __A)
4956 {
4957 // CHECK-LABEL: @test_mm512_cvt_roundps_ph
4958 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
4959 return _mm512_cvt_roundps_ph(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4960 }
4961
test_mm512_mask_cvt_roundps_ph(__m256i __W,__mmask16 __U,__m512 __A)4962 __m256i test_mm512_mask_cvt_roundps_ph(__m256i __W , __mmask16 __U, __m512 __A)
4963 {
4964 // CHECK-LABEL: @test_mm512_mask_cvt_roundps_ph
4965 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
4966 return _mm512_mask_cvt_roundps_ph(__W, __U, __A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4967 }
4968
test_mm512_maskz_cvt_roundps_ph(__mmask16 __U,__m512 __A)4969 __m256i test_mm512_maskz_cvt_roundps_ph(__mmask16 __U, __m512 __A)
4970 {
4971 // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_ph
4972 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
4973 return _mm512_maskz_cvt_roundps_ph(__U, __A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4974 }
4975
test_mm512_cvt_roundph_ps(__m256i __A)4976 __m512 test_mm512_cvt_roundph_ps(__m256i __A)
4977 {
4978 // CHECK-LABEL: @test_mm512_cvt_roundph_ps
4979 // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512(
4980 return _mm512_cvt_roundph_ps(__A, _MM_FROUND_NO_EXC);
4981 }
4982
test_mm512_mask_cvt_roundph_ps(__m512 __W,__mmask16 __U,__m256i __A)4983 __m512 test_mm512_mask_cvt_roundph_ps(__m512 __W, __mmask16 __U, __m256i __A)
4984 {
4985 // CHECK-LABEL: @test_mm512_mask_cvt_roundph_ps
4986 // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512(
4987 return _mm512_mask_cvt_roundph_ps(__W, __U, __A, _MM_FROUND_NO_EXC);
4988 }
4989
test_mm512_maskz_cvt_roundph_ps(__mmask16 __U,__m256i __A)4990 __m512 test_mm512_maskz_cvt_roundph_ps(__mmask16 __U, __m256i __A)
4991 {
4992 // CHECK-LABEL: @test_mm512_maskz_cvt_roundph_ps
4993 // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512(
4994 return _mm512_maskz_cvt_roundph_ps(__U, __A, _MM_FROUND_NO_EXC);
4995 }
4996
test_mm512_cvt_roundepi32_ps(__m512i __A)4997 __m512 test_mm512_cvt_roundepi32_ps( __m512i __A)
4998 {
4999 // CHECK-LABEL: @test_mm512_cvt_roundepi32_ps
5000 // CHECK: @llvm.x86.avx512.sitofp.round.v16f32.v16i32
5001 return _mm512_cvt_roundepi32_ps(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5002 }
5003
test_mm512_mask_cvt_roundepi32_ps(__m512 __W,__mmask16 __U,__m512i __A)5004 __m512 test_mm512_mask_cvt_roundepi32_ps(__m512 __W, __mmask16 __U, __m512i __A)
5005 {
5006 // CHECK-LABEL: @test_mm512_mask_cvt_roundepi32_ps
5007 // CHECK: @llvm.x86.avx512.sitofp.round.v16f32.v16i32
5008 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5009 return _mm512_mask_cvt_roundepi32_ps(__W,__U,__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5010 }
5011
test_mm512_maskz_cvt_roundepi32_ps(__mmask16 __U,__m512i __A)5012 __m512 test_mm512_maskz_cvt_roundepi32_ps(__mmask16 __U, __m512i __A)
5013 {
5014 // CHECK-LABEL: @test_mm512_maskz_cvt_roundepi32_ps
5015 // CHECK: @llvm.x86.avx512.sitofp.round.v16f32.v16i32
5016 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5017 return _mm512_maskz_cvt_roundepi32_ps(__U,__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5018 }
5019
test_mm512_cvt_roundepu32_ps(__m512i __A)5020 __m512 test_mm512_cvt_roundepu32_ps(__m512i __A)
5021 {
5022 // CHECK-LABEL: @test_mm512_cvt_roundepu32_ps
5023 // CHECK: @llvm.x86.avx512.uitofp.round.v16f32.v16i32
5024 return _mm512_cvt_roundepu32_ps(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5025 }
5026
test_mm512_mask_cvt_roundepu32_ps(__m512 __W,__mmask16 __U,__m512i __A)5027 __m512 test_mm512_mask_cvt_roundepu32_ps(__m512 __W, __mmask16 __U,__m512i __A)
5028 {
5029 // CHECK-LABEL: @test_mm512_mask_cvt_roundepu32_ps
5030 // CHECK: @llvm.x86.avx512.uitofp.round.v16f32.v16i32
5031 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5032 return _mm512_mask_cvt_roundepu32_ps(__W,__U,__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5033 }
5034
test_mm512_maskz_cvt_roundepu32_ps(__mmask16 __U,__m512i __A)5035 __m512 test_mm512_maskz_cvt_roundepu32_ps(__mmask16 __U,__m512i __A)
5036 {
5037 // CHECK-LABEL: @test_mm512_maskz_cvt_roundepu32_ps
5038 // CHECK: @llvm.x86.avx512.uitofp.round.v16f32.v16i32
5039 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5040 return _mm512_maskz_cvt_roundepu32_ps(__U,__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5041 }
5042
test_mm512_cvt_roundpd_ps(__m512d A)5043 __m256 test_mm512_cvt_roundpd_ps(__m512d A)
5044 {
5045 // CHECK-LABEL: @test_mm512_cvt_roundpd_ps
5046 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
5047 return _mm512_cvt_roundpd_ps(A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5048 }
5049
test_mm512_mask_cvt_roundpd_ps(__m256 W,__mmask8 U,__m512d A)5050 __m256 test_mm512_mask_cvt_roundpd_ps(__m256 W, __mmask8 U,__m512d A)
5051 {
5052 // CHECK-LABEL: @test_mm512_mask_cvt_roundpd_ps
5053 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
5054 return _mm512_mask_cvt_roundpd_ps(W,U,A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5055 }
5056
test_mm512_maskz_cvt_roundpd_ps(__mmask8 U,__m512d A)5057 __m256 test_mm512_maskz_cvt_roundpd_ps(__mmask8 U, __m512d A)
5058 {
5059 // CHECK-LABEL: @test_mm512_maskz_cvt_roundpd_ps
5060 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
5061 return _mm512_maskz_cvt_roundpd_ps(U,A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5062 }
5063
test_mm512_cvtt_roundpd_epi32(__m512d A)5064 __m256i test_mm512_cvtt_roundpd_epi32(__m512d A)
5065 {
5066 // CHECK-LABEL: @test_mm512_cvtt_roundpd_epi32
5067 // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512
5068 return _mm512_cvtt_roundpd_epi32(A,_MM_FROUND_NO_EXC);
5069 }
5070
test_mm512_mask_cvtt_roundpd_epi32(__m256i W,__mmask8 U,__m512d A)5071 __m256i test_mm512_mask_cvtt_roundpd_epi32(__m256i W, __mmask8 U, __m512d A)
5072 {
5073 // CHECK-LABEL: @test_mm512_mask_cvtt_roundpd_epi32
5074 // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512
5075 return _mm512_mask_cvtt_roundpd_epi32(W,U,A,_MM_FROUND_NO_EXC);
5076 }
5077
test_mm512_maskz_cvtt_roundpd_epi32(__mmask8 U,__m512d A)5078 __m256i test_mm512_maskz_cvtt_roundpd_epi32(__mmask8 U, __m512d A)
5079 {
5080 // CHECK-LABEL: @test_mm512_maskz_cvtt_roundpd_epi32
5081 // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512
5082 return _mm512_maskz_cvtt_roundpd_epi32(U,A,_MM_FROUND_NO_EXC);
5083 }
5084
test_mm512_cvtt_roundps_epi32(__m512 A)5085 __m512i test_mm512_cvtt_roundps_epi32(__m512 A)
5086 {
5087 // CHECK-LABEL: @test_mm512_cvtt_roundps_epi32
5088 // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512
5089 return _mm512_cvtt_roundps_epi32(A,_MM_FROUND_NO_EXC);
5090 }
5091
test_mm512_mask_cvtt_roundps_epi32(__m512i W,__mmask16 U,__m512 A)5092 __m512i test_mm512_mask_cvtt_roundps_epi32(__m512i W,__mmask16 U, __m512 A)
5093 {
5094 // CHECK-LABEL: @test_mm512_mask_cvtt_roundps_epi32
5095 // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512
5096 return _mm512_mask_cvtt_roundps_epi32(W,U,A,_MM_FROUND_NO_EXC);
5097 }
5098
test_mm512_maskz_cvtt_roundps_epi32(__mmask16 U,__m512 A)5099 __m512i test_mm512_maskz_cvtt_roundps_epi32(__mmask16 U, __m512 A)
5100 {
5101 // CHECK-LABEL: @test_mm512_maskz_cvtt_roundps_epi32
5102 // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512
5103 return _mm512_maskz_cvtt_roundps_epi32(U,A,_MM_FROUND_NO_EXC);
5104 }
5105
test_mm512_cvt_roundps_epi32(__m512 __A)5106 __m512i test_mm512_cvt_roundps_epi32(__m512 __A)
5107 {
5108 // CHECK-LABEL: @test_mm512_cvt_roundps_epi32
5109 // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
5110 return _mm512_cvt_roundps_epi32(__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5111 }
5112
test_mm512_mask_cvt_roundps_epi32(__m512i __W,__mmask16 __U,__m512 __A)5113 __m512i test_mm512_mask_cvt_roundps_epi32(__m512i __W,__mmask16 __U,__m512 __A)
5114 {
5115 // CHECK-LABEL: @test_mm512_mask_cvt_roundps_epi32
5116 // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
5117 return _mm512_mask_cvt_roundps_epi32(__W,__U,__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5118 }
5119
test_mm512_maskz_cvt_roundps_epi32(__mmask16 __U,__m512 __A)5120 __m512i test_mm512_maskz_cvt_roundps_epi32(__mmask16 __U, __m512 __A)
5121 {
5122 // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_epi32
5123 // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
5124 return _mm512_maskz_cvt_roundps_epi32(__U,__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5125 }
5126
test_mm512_cvt_roundpd_epi32(__m512d A)5127 __m256i test_mm512_cvt_roundpd_epi32(__m512d A)
5128 {
5129 // CHECK-LABEL: @test_mm512_cvt_roundpd_epi32
5130 // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
5131 return _mm512_cvt_roundpd_epi32(A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5132 }
5133
test_mm512_mask_cvt_roundpd_epi32(__m256i W,__mmask8 U,__m512d A)5134 __m256i test_mm512_mask_cvt_roundpd_epi32(__m256i W,__mmask8 U,__m512d A)
5135 {
5136 // CHECK-LABEL: @test_mm512_mask_cvt_roundpd_epi32
5137 // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
5138 return _mm512_mask_cvt_roundpd_epi32(W,U,A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5139 }
5140
test_mm512_maskz_cvt_roundpd_epi32(__mmask8 U,__m512d A)5141 __m256i test_mm512_maskz_cvt_roundpd_epi32(__mmask8 U, __m512d A)
5142 {
5143 // CHECK-LABEL: @test_mm512_maskz_cvt_roundpd_epi32
5144 // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
5145 return _mm512_maskz_cvt_roundpd_epi32(U,A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5146 }
5147
test_mm512_cvt_roundps_epu32(__m512 __A)5148 __m512i test_mm512_cvt_roundps_epu32(__m512 __A)
5149 {
5150 // CHECK-LABEL: @test_mm512_cvt_roundps_epu32
5151 // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
5152 return _mm512_cvt_roundps_epu32(__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5153 }
5154
test_mm512_mask_cvt_roundps_epu32(__m512i __W,__mmask16 __U,__m512 __A)5155 __m512i test_mm512_mask_cvt_roundps_epu32(__m512i __W,__mmask16 __U,__m512 __A)
5156 {
5157 // CHECK-LABEL: @test_mm512_mask_cvt_roundps_epu32
5158 // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
5159 return _mm512_mask_cvt_roundps_epu32(__W,__U,__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5160 }
5161
test_mm512_maskz_cvt_roundps_epu32(__mmask16 __U,__m512 __A)5162 __m512i test_mm512_maskz_cvt_roundps_epu32(__mmask16 __U,__m512 __A)
5163 {
5164 // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_epu32
5165 // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
5166 return _mm512_maskz_cvt_roundps_epu32(__U,__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5167 }
5168
test_mm512_cvt_roundpd_epu32(__m512d A)5169 __m256i test_mm512_cvt_roundpd_epu32(__m512d A)
5170 {
5171 // CHECK-LABEL: @test_mm512_cvt_roundpd_epu32
5172 // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
5173 return _mm512_cvt_roundpd_epu32(A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5174 }
5175
test_mm512_mask_cvt_roundpd_epu32(__m256i W,__mmask8 U,__m512d A)5176 __m256i test_mm512_mask_cvt_roundpd_epu32(__m256i W, __mmask8 U, __m512d A)
5177 {
5178 // CHECK-LABEL: @test_mm512_mask_cvt_roundpd_epu32
5179 // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
5180 return _mm512_mask_cvt_roundpd_epu32(W,U,A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5181 }
5182
test_mm512_maskz_cvt_roundpd_epu32(__mmask8 U,__m512d A)5183 __m256i test_mm512_maskz_cvt_roundpd_epu32(__mmask8 U, __m512d A)
5184 {
5185 // CHECK-LABEL: @test_mm512_maskz_cvt_roundpd_epu32
5186 // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
5187 return _mm512_maskz_cvt_roundpd_epu32(U, A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5188 }
5189
test_mm512_mask2_permutex2var_ps(__m512 __A,__m512i __I,__mmask16 __U,__m512 __B)5190 __m512 test_mm512_mask2_permutex2var_ps(__m512 __A, __m512i __I, __mmask16 __U, __m512 __B) {
5191 // CHECK-LABEL: @test_mm512_mask2_permutex2var_ps
5192 // CHECK: @llvm.x86.avx512.vpermi2var.ps.512
5193 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5194 return _mm512_mask2_permutex2var_ps(__A, __I, __U, __B);
5195 }
5196
test_mm512_mask2_permutex2var_epi64(__m512i __A,__m512i __I,__mmask8 __U,__m512i __B)5197 __m512i test_mm512_mask2_permutex2var_epi64(__m512i __A, __m512i __I, __mmask8 __U, __m512i __B) {
5198 // CHECK-LABEL: @test_mm512_mask2_permutex2var_epi64
5199 // CHECK: @llvm.x86.avx512.vpermi2var.q.512
5200 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5201 return _mm512_mask2_permutex2var_epi64(__A, __I, __U, __B);
5202 }
5203
test_mm512_permute_pd(__m512d __X)5204 __m512d test_mm512_permute_pd(__m512d __X) {
5205 // CHECK-LABEL: @test_mm512_permute_pd
5206 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
5207 return _mm512_permute_pd(__X, 2);
5208 }
5209
test_mm512_mask_permute_pd(__m512d __W,__mmask8 __U,__m512d __X)5210 __m512d test_mm512_mask_permute_pd(__m512d __W, __mmask8 __U, __m512d __X) {
5211 // CHECK-LABEL: @test_mm512_mask_permute_pd
5212 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
5213 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5214 return _mm512_mask_permute_pd(__W, __U, __X, 2);
5215 }
5216
test_mm512_maskz_permute_pd(__mmask8 __U,__m512d __X)5217 __m512d test_mm512_maskz_permute_pd(__mmask8 __U, __m512d __X) {
5218 // CHECK-LABEL: @test_mm512_maskz_permute_pd
5219 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
5220 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5221 return _mm512_maskz_permute_pd(__U, __X, 2);
5222 }
5223
test_mm512_permute_ps(__m512 __X)5224 __m512 test_mm512_permute_ps(__m512 __X) {
5225 // CHECK-LABEL: @test_mm512_permute_ps
5226 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> undef, <16 x i32> <i32 2, i32 0, i32 0, i32 0, i32 6, i32 4, i32 4, i32 4, i32 10, i32 8, i32 8, i32 8, i32 14, i32 12, i32 12, i32 12>
5227 return _mm512_permute_ps(__X, 2);
5228 }
5229
test_mm512_mask_permute_ps(__m512 __W,__mmask16 __U,__m512 __X)5230 __m512 test_mm512_mask_permute_ps(__m512 __W, __mmask16 __U, __m512 __X) {
5231 // CHECK-LABEL: @test_mm512_mask_permute_ps
5232 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> undef, <16 x i32> <i32 2, i32 0, i32 0, i32 0, i32 6, i32 4, i32 4, i32 4, i32 10, i32 8, i32 8, i32 8, i32 14, i32 12, i32 12, i32 12>
5233 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5234 return _mm512_mask_permute_ps(__W, __U, __X, 2);
5235 }
5236
test_mm512_maskz_permute_ps(__mmask16 __U,__m512 __X)5237 __m512 test_mm512_maskz_permute_ps(__mmask16 __U, __m512 __X) {
5238 // CHECK-LABEL: @test_mm512_maskz_permute_ps
5239 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> undef, <16 x i32> <i32 2, i32 0, i32 0, i32 0, i32 6, i32 4, i32 4, i32 4, i32 10, i32 8, i32 8, i32 8, i32 14, i32 12, i32 12, i32 12>
5240 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5241 return _mm512_maskz_permute_ps(__U, __X, 2);
5242 }
5243
test_mm512_permutevar_pd(__m512d __A,__m512i __C)5244 __m512d test_mm512_permutevar_pd(__m512d __A, __m512i __C) {
5245 // CHECK-LABEL: @test_mm512_permutevar_pd
5246 // CHECK: @llvm.x86.avx512.vpermilvar.pd.512
5247 return _mm512_permutevar_pd(__A, __C);
5248 }
5249
test_mm512_mask_permutevar_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512i __C)5250 __m512d test_mm512_mask_permutevar_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512i __C) {
5251 // CHECK-LABEL: @test_mm512_mask_permutevar_pd
5252 // CHECK: @llvm.x86.avx512.vpermilvar.pd.512
5253 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5254 return _mm512_mask_permutevar_pd(__W, __U, __A, __C);
5255 }
5256
test_mm512_maskz_permutevar_pd(__mmask8 __U,__m512d __A,__m512i __C)5257 __m512d test_mm512_maskz_permutevar_pd(__mmask8 __U, __m512d __A, __m512i __C) {
5258 // CHECK-LABEL: @test_mm512_maskz_permutevar_pd
5259 // CHECK: @llvm.x86.avx512.vpermilvar.pd.512
5260 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5261 return _mm512_maskz_permutevar_pd(__U, __A, __C);
5262 }
5263
test_mm512_permutevar_ps(__m512 __A,__m512i __C)5264 __m512 test_mm512_permutevar_ps(__m512 __A, __m512i __C) {
5265 // CHECK-LABEL: @test_mm512_permutevar_ps
5266 // CHECK: @llvm.x86.avx512.vpermilvar.ps.512
5267 return _mm512_permutevar_ps(__A, __C);
5268 }
5269
test_mm512_mask_permutevar_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512i __C)5270 __m512 test_mm512_mask_permutevar_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512i __C) {
5271 // CHECK-LABEL: @test_mm512_mask_permutevar_ps
5272 // CHECK: @llvm.x86.avx512.vpermilvar.ps.512
5273 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5274 return _mm512_mask_permutevar_ps(__W, __U, __A, __C);
5275 }
5276
test_mm512_maskz_permutevar_ps(__mmask16 __U,__m512 __A,__m512i __C)5277 __m512 test_mm512_maskz_permutevar_ps(__mmask16 __U, __m512 __A, __m512i __C) {
5278 // CHECK-LABEL: @test_mm512_maskz_permutevar_ps
5279 // CHECK: @llvm.x86.avx512.vpermilvar.ps.512
5280 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5281 return _mm512_maskz_permutevar_ps(__U, __A, __C);
5282 }
5283
test_mm512_permutex2var_epi32(__m512i __A,__m512i __I,__m512i __B)5284 __m512i test_mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B) {
5285 // CHECK-LABEL: @test_mm512_permutex2var_epi32
5286 // CHECK: @llvm.x86.avx512.vpermi2var.d.512
5287 return _mm512_permutex2var_epi32(__A, __I, __B);
5288 }
5289
test_mm512_maskz_permutex2var_epi32(__mmask16 __U,__m512i __A,__m512i __I,__m512i __B)5290 __m512i test_mm512_maskz_permutex2var_epi32(__mmask16 __U, __m512i __A, __m512i __I, __m512i __B) {
5291 // CHECK-LABEL: @test_mm512_maskz_permutex2var_epi32
5292 // CHECK: @llvm.x86.avx512.vpermi2var.d.512
5293 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5294 return _mm512_maskz_permutex2var_epi32(__U, __A, __I, __B);
5295 }
5296
test_mm512_mask_permutex2var_epi32(__m512i __A,__mmask16 __U,__m512i __I,__m512i __B)5297 __m512i test_mm512_mask_permutex2var_epi32 (__m512i __A, __mmask16 __U, __m512i __I, __m512i __B)
5298 {
5299 // CHECK-LABEL: @test_mm512_mask_permutex2var_epi32
5300 // CHECK: @llvm.x86.avx512.vpermi2var.d.512
5301 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5302 return _mm512_mask_permutex2var_epi32 (__A,__U,__I,__B);
5303 }
5304
test_mm512_permutex2var_pd(__m512d __A,__m512i __I,__m512d __B)5305 __m512d test_mm512_permutex2var_pd (__m512d __A, __m512i __I, __m512d __B)
5306 {
5307 // CHECK-LABEL: @test_mm512_permutex2var_pd
5308 // CHECK: @llvm.x86.avx512.vpermi2var.pd.512
5309 return _mm512_permutex2var_pd (__A, __I,__B);
5310 }
5311
test_mm512_mask_permutex2var_pd(__m512d __A,__mmask8 __U,__m512i __I,__m512d __B)5312 __m512d test_mm512_mask_permutex2var_pd (__m512d __A, __mmask8 __U, __m512i __I, __m512d __B)
5313 {
5314 // CHECK-LABEL: @test_mm512_mask_permutex2var_pd
5315 // CHECK: @llvm.x86.avx512.vpermi2var.pd.512
5316 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5317 return _mm512_mask_permutex2var_pd (__A,__U,__I,__B);
5318 }
5319
test_mm512_maskz_permutex2var_pd(__mmask8 __U,__m512d __A,__m512i __I,__m512d __B)5320 __m512d test_mm512_maskz_permutex2var_pd(__mmask8 __U, __m512d __A, __m512i __I, __m512d __B) {
5321 // CHECK-LABEL: @test_mm512_maskz_permutex2var_pd
5322 // CHECK: @llvm.x86.avx512.vpermi2var.pd.512
5323 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5324 return _mm512_maskz_permutex2var_pd(__U, __A, __I, __B);
5325 }
5326
test_mm512_permutex2var_ps(__m512 __A,__m512i __I,__m512 __B)5327 __m512 test_mm512_permutex2var_ps (__m512 __A, __m512i __I, __m512 __B)
5328 {
5329 // CHECK-LABEL: @test_mm512_permutex2var_ps
5330 // CHECK: @llvm.x86.avx512.vpermi2var.ps.512
5331 return _mm512_permutex2var_ps (__A, __I, __B);
5332 }
5333
test_mm512_mask_permutex2var_ps(__m512 __A,__mmask16 __U,__m512i __I,__m512 __B)5334 __m512 test_mm512_mask_permutex2var_ps (__m512 __A, __mmask16 __U, __m512i __I, __m512 __B)
5335 {
5336 // CHECK-LABEL: @test_mm512_mask_permutex2var_ps
5337 // CHECK: @llvm.x86.avx512.vpermi2var.ps.512
5338 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5339 return _mm512_mask_permutex2var_ps (__A,__U,__I,__B);
5340 }
5341
test_mm512_maskz_permutex2var_ps(__mmask16 __U,__m512 __A,__m512i __I,__m512 __B)5342 __m512 test_mm512_maskz_permutex2var_ps(__mmask16 __U, __m512 __A, __m512i __I, __m512 __B) {
5343 // CHECK-LABEL: @test_mm512_maskz_permutex2var_ps
5344 // CHECK: @llvm.x86.avx512.vpermi2var.ps.512
5345 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5346 return _mm512_maskz_permutex2var_ps(__U, __A, __I, __B);
5347 }
5348
test_mm512_permutex2var_epi64(__m512i __A,__m512i __I,__m512i __B)5349 __m512i test_mm512_permutex2var_epi64 (__m512i __A, __m512i __I, __m512i __B){
5350 // CHECK-LABEL: @test_mm512_permutex2var_epi64
5351 // CHECK: @llvm.x86.avx512.vpermi2var.q.512
5352 return _mm512_permutex2var_epi64(__A, __I, __B);
5353 }
5354
test_mm512_mask_permutex2var_epi64(__m512i __A,__mmask8 __U,__m512i __I,__m512i __B)5355 __m512i test_mm512_mask_permutex2var_epi64 (__m512i __A, __mmask8 __U, __m512i __I, __m512i __B){
5356 // CHECK-LABEL: @test_mm512_mask_permutex2var_epi64
5357 // CHECK: @llvm.x86.avx512.vpermi2var.q.512
5358 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5359 return _mm512_mask_permutex2var_epi64(__A, __U, __I, __B);
5360 }
5361
test_mm512_maskz_permutex2var_epi64(__mmask8 __U,__m512i __A,__m512i __I,__m512i __B)5362 __m512i test_mm512_maskz_permutex2var_epi64(__mmask8 __U, __m512i __A, __m512i __I, __m512i __B) {
5363 // CHECK-LABEL: @test_mm512_maskz_permutex2var_epi64
5364 // CHECK: @llvm.x86.avx512.vpermi2var.q.512
5365 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5366 return _mm512_maskz_permutex2var_epi64(__U, __A, __I, __B);
5367 }
test_mm512_testn_epi32_mask(__m512i __A,__m512i __B)5368 __mmask16 test_mm512_testn_epi32_mask(__m512i __A, __m512i __B) {
5369 // CHECK-LABEL: @test_mm512_testn_epi32_mask
5370 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5371 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
5372 return _mm512_testn_epi32_mask(__A, __B);
5373 }
5374
test_mm512_mask_testn_epi32_mask(__mmask16 __U,__m512i __A,__m512i __B)5375 __mmask16 test_mm512_mask_testn_epi32_mask(__mmask16 __U, __m512i __A, __m512i __B) {
5376 // CHECK-LABEL: @test_mm512_mask_testn_epi32_mask
5377 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5378 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
5379 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
5380 return _mm512_mask_testn_epi32_mask(__U, __A, __B);
5381 }
5382
test_mm512_testn_epi64_mask(__m512i __A,__m512i __B)5383 __mmask8 test_mm512_testn_epi64_mask(__m512i __A, __m512i __B) {
5384 // CHECK-LABEL: @test_mm512_testn_epi64_mask
5385 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5386 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
5387 return _mm512_testn_epi64_mask(__A, __B);
5388 }
5389
test_mm512_mask_testn_epi64_mask(__mmask8 __U,__m512i __A,__m512i __B)5390 __mmask8 test_mm512_mask_testn_epi64_mask(__mmask8 __U, __m512i __A, __m512i __B) {
5391 // CHECK-LABEL: @test_mm512_mask_testn_epi64_mask
5392 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5393 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
5394 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
5395 return _mm512_mask_testn_epi64_mask(__U, __A, __B);
5396 }
5397
test_mm512_mask_test_epi32_mask(__mmask16 __U,__m512i __A,__m512i __B)5398 __mmask16 test_mm512_mask_test_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
5399 {
5400 // CHECK-LABEL: @test_mm512_mask_test_epi32_mask
5401 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5402 // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
5403 return _mm512_mask_test_epi32_mask (__U,__A,__B);
5404 }
5405
test_mm512_mask_test_epi64_mask(__mmask8 __U,__m512i __A,__m512i __B)5406 __mmask8 test_mm512_mask_test_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
5407 {
5408 // CHECK-LABEL: @test_mm512_mask_test_epi64_mask
5409 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5410 // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
5411 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
5412 return _mm512_mask_test_epi64_mask (__U,__A,__B);
5413 }
5414
test_mm512_maskz_unpackhi_epi32(__mmask16 __U,__m512i __A,__m512i __B)5415 __m512i test_mm512_maskz_unpackhi_epi32(__mmask16 __U, __m512i __A, __m512i __B) {
5416 // CHECK-LABEL: @test_mm512_maskz_unpackhi_epi32
5417 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31>
5418 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5419 return _mm512_maskz_unpackhi_epi32(__U, __A, __B);
5420 }
5421
test_mm512_unpackhi_epi64(__m512i __A,__m512i __B)5422 __m512i test_mm512_unpackhi_epi64(__m512i __A, __m512i __B) {
5423 // CHECK-LABEL: @test_mm512_unpackhi_epi64
5424 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
5425 return _mm512_unpackhi_epi64(__A, __B);
5426 }
5427
test_mm512_mask_unpackhi_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m512i __B)5428 __m512i test_mm512_mask_unpackhi_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
5429 // CHECK-LABEL: @test_mm512_mask_unpackhi_epi64
5430 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
5431 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5432 return _mm512_mask_unpackhi_epi64(__W, __U, __A, __B);
5433 }
5434
test_mm512_maskz_unpackhi_epi64(__mmask8 __U,__m512i __A,__m512i __B)5435 __m512i test_mm512_maskz_unpackhi_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
5436 // CHECK-LABEL: @test_mm512_maskz_unpackhi_epi64
5437 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
5438 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5439 return _mm512_maskz_unpackhi_epi64(__U, __A, __B);
5440 }
5441
test_mm512_unpacklo_epi32(__m512i __A,__m512i __B)5442 __m512i test_mm512_unpacklo_epi32(__m512i __A, __m512i __B) {
5443 // CHECK-LABEL: @test_mm512_unpacklo_epi32
5444 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29>
5445 return _mm512_unpacklo_epi32(__A, __B);
5446 }
5447
test_mm512_mask_unpacklo_epi32(__m512i __W,__mmask16 __U,__m512i __A,__m512i __B)5448 __m512i test_mm512_mask_unpacklo_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
5449 // CHECK-LABEL: @test_mm512_mask_unpacklo_epi32
5450 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29>
5451 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5452 return _mm512_mask_unpacklo_epi32(__W, __U, __A, __B);
5453 }
5454
test_mm512_maskz_unpacklo_epi32(__mmask16 __U,__m512i __A,__m512i __B)5455 __m512i test_mm512_maskz_unpacklo_epi32(__mmask16 __U, __m512i __A, __m512i __B) {
5456 // CHECK-LABEL: @test_mm512_maskz_unpacklo_epi32
5457 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29>
5458 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5459 return _mm512_maskz_unpacklo_epi32(__U, __A, __B);
5460 }
5461
test_mm512_unpacklo_epi64(__m512i __A,__m512i __B)5462 __m512i test_mm512_unpacklo_epi64(__m512i __A, __m512i __B) {
5463 // CHECK-LABEL: @test_mm512_unpacklo_epi64
5464 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
5465 return _mm512_unpacklo_epi64(__A, __B);
5466 }
5467
test_mm512_mask_unpacklo_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m512i __B)5468 __m512i test_mm512_mask_unpacklo_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
5469 // CHECK-LABEL: @test_mm512_mask_unpacklo_epi64
5470 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
5471 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5472 return _mm512_mask_unpacklo_epi64(__W, __U, __A, __B);
5473 }
5474
test_mm512_maskz_unpacklo_epi64(__mmask8 __U,__m512i __A,__m512i __B)5475 __m512i test_mm512_maskz_unpacklo_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
5476 // CHECK-LABEL: @test_mm512_maskz_unpacklo_epi64
5477 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
5478 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5479 return _mm512_maskz_unpacklo_epi64(__U, __A, __B);
5480 }
5481
test_mm_roundscale_round_sd(__m128d __A,__m128d __B)5482 __m128d test_mm_roundscale_round_sd(__m128d __A, __m128d __B) {
5483 // CHECK-LABEL: @test_mm_roundscale_round_sd
5484 // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5485 return _mm_roundscale_round_sd(__A, __B, 3, _MM_FROUND_NO_EXC);
5486 }
5487
test_mm_roundscale_sd(__m128d __A,__m128d __B)5488 __m128d test_mm_roundscale_sd(__m128d __A, __m128d __B) {
5489 // CHECK-LABEL: @test_mm_roundscale_sd
5490 // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5491 return _mm_roundscale_sd(__A, __B, 3);
5492 }
5493
test_mm_mask_roundscale_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)5494 __m128d test_mm_mask_roundscale_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
5495 // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5496 return _mm_mask_roundscale_sd(__W,__U,__A,__B,3);
5497 }
5498
test_mm_mask_roundscale_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)5499 __m128d test_mm_mask_roundscale_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
5500 // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5501 return _mm_mask_roundscale_round_sd(__W,__U,__A,__B,3,_MM_FROUND_NO_EXC);
5502 }
5503
test_mm_maskz_roundscale_sd(__mmask8 __U,__m128d __A,__m128d __B)5504 __m128d test_mm_maskz_roundscale_sd(__mmask8 __U, __m128d __A, __m128d __B){
5505 // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5506 return _mm_maskz_roundscale_sd(__U,__A,__B,3);
5507 }
5508
test_mm_maskz_roundscale_round_sd(__mmask8 __U,__m128d __A,__m128d __B)5509 __m128d test_mm_maskz_roundscale_round_sd(__mmask8 __U, __m128d __A, __m128d __B){
5510 // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5511 return _mm_maskz_roundscale_round_sd(__U,__A,__B,3,_MM_FROUND_NO_EXC );
5512 }
5513
test_mm_roundscale_round_ss(__m128 __A,__m128 __B)5514 __m128 test_mm_roundscale_round_ss(__m128 __A, __m128 __B) {
5515 // CHECK-LABEL: @test_mm_roundscale_round_ss
5516 // CHECK: @llvm.x86.avx512.mask.rndscale.ss
5517 return _mm_roundscale_round_ss(__A, __B, 3, _MM_FROUND_NO_EXC);
5518 }
5519
test_mm_roundscale_ss(__m128 __A,__m128 __B)5520 __m128 test_mm_roundscale_ss(__m128 __A, __m128 __B) {
5521 // CHECK-LABEL: @test_mm_roundscale_ss
5522 // CHECK: @llvm.x86.avx512.mask.rndscale.ss
5523 return _mm_roundscale_ss(__A, __B, 3);
5524 }
5525
test_mm_mask_roundscale_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)5526 __m128 test_mm_mask_roundscale_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
5527 // CHECK-LABEL: @test_mm_mask_roundscale_ss
5528 // CHECK: @llvm.x86.avx512.mask.rndscale.ss
5529 return _mm_mask_roundscale_ss(__W,__U,__A,__B,3);
5530 }
5531
test_mm_maskz_roundscale_round_ss(__mmask8 __U,__m128 __A,__m128 __B)5532 __m128 test_mm_maskz_roundscale_round_ss( __mmask8 __U, __m128 __A, __m128 __B){
5533 // CHECK-LABEL: @test_mm_maskz_roundscale_round_ss
5534 // CHECK: @llvm.x86.avx512.mask.rndscale.ss
5535 return _mm_maskz_roundscale_round_ss(__U,__A,__B,3,_MM_FROUND_NO_EXC);
5536 }
5537
test_mm_maskz_roundscale_ss(__mmask8 __U,__m128 __A,__m128 __B)5538 __m128 test_mm_maskz_roundscale_ss(__mmask8 __U, __m128 __A, __m128 __B){
5539 // CHECK-LABEL: @test_mm_maskz_roundscale_ss
5540 // CHECK: @llvm.x86.avx512.mask.rndscale.ss
5541 return _mm_maskz_roundscale_ss(__U,__A,__B,3);
5542 }
5543
test_mm512_scalef_round_pd(__m512d __A,__m512d __B)5544 __m512d test_mm512_scalef_round_pd(__m512d __A, __m512d __B) {
5545 // CHECK-LABEL: @test_mm512_scalef_round_pd
5546 // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5547 return _mm512_scalef_round_pd(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5548 }
5549
test_mm512_mask_scalef_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)5550 __m512d test_mm512_mask_scalef_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
5551 // CHECK-LABEL: @test_mm512_mask_scalef_round_pd
5552 // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5553 return _mm512_mask_scalef_round_pd(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5554 }
5555
test_mm512_maskz_scalef_round_pd(__mmask8 __U,__m512d __A,__m512d __B)5556 __m512d test_mm512_maskz_scalef_round_pd(__mmask8 __U, __m512d __A, __m512d __B) {
5557 // CHECK-LABEL: @test_mm512_maskz_scalef_round_pd
5558 // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5559 return _mm512_maskz_scalef_round_pd(__U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5560 }
5561
test_mm512_scalef_pd(__m512d __A,__m512d __B)5562 __m512d test_mm512_scalef_pd(__m512d __A, __m512d __B) {
5563 // CHECK-LABEL: @test_mm512_scalef_pd
5564 // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5565 return _mm512_scalef_pd(__A, __B);
5566 }
5567
test_mm512_mask_scalef_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)5568 __m512d test_mm512_mask_scalef_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
5569 // CHECK-LABEL: @test_mm512_mask_scalef_pd
5570 // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5571 return _mm512_mask_scalef_pd(__W, __U, __A, __B);
5572 }
5573
test_mm512_maskz_scalef_pd(__mmask8 __U,__m512d __A,__m512d __B)5574 __m512d test_mm512_maskz_scalef_pd(__mmask8 __U, __m512d __A, __m512d __B) {
5575 // CHECK-LABEL: @test_mm512_maskz_scalef_pd
5576 // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5577 return _mm512_maskz_scalef_pd(__U, __A, __B);
5578 }
5579
test_mm512_scalef_round_ps(__m512 __A,__m512 __B)5580 __m512 test_mm512_scalef_round_ps(__m512 __A, __m512 __B) {
5581 // CHECK-LABEL: @test_mm512_scalef_round_ps
5582 // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5583 return _mm512_scalef_round_ps(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5584 }
5585
test_mm512_mask_scalef_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)5586 __m512 test_mm512_mask_scalef_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
5587 // CHECK-LABEL: @test_mm512_mask_scalef_round_ps
5588 // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5589 return _mm512_mask_scalef_round_ps(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5590 }
5591
test_mm512_maskz_scalef_round_ps(__mmask16 __U,__m512 __A,__m512 __B)5592 __m512 test_mm512_maskz_scalef_round_ps(__mmask16 __U, __m512 __A, __m512 __B) {
5593 // CHECK-LABEL: @test_mm512_maskz_scalef_round_ps
5594 // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5595 return _mm512_maskz_scalef_round_ps(__U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5596 }
5597
test_mm512_scalef_ps(__m512 __A,__m512 __B)5598 __m512 test_mm512_scalef_ps(__m512 __A, __m512 __B) {
5599 // CHECK-LABEL: @test_mm512_scalef_ps
5600 // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5601 return _mm512_scalef_ps(__A, __B);
5602 }
5603
test_mm512_mask_scalef_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)5604 __m512 test_mm512_mask_scalef_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
5605 // CHECK-LABEL: @test_mm512_mask_scalef_ps
5606 // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5607 return _mm512_mask_scalef_ps(__W, __U, __A, __B);
5608 }
5609
test_mm512_maskz_scalef_ps(__mmask16 __U,__m512 __A,__m512 __B)5610 __m512 test_mm512_maskz_scalef_ps(__mmask16 __U, __m512 __A, __m512 __B) {
5611 // CHECK-LABEL: @test_mm512_maskz_scalef_ps
5612 // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5613 return _mm512_maskz_scalef_ps(__U, __A, __B);
5614 }
5615
test_mm_scalef_round_sd(__m128d __A,__m128d __B)5616 __m128d test_mm_scalef_round_sd(__m128d __A, __m128d __B) {
5617 // CHECK-LABEL: @test_mm_scalef_round_sd
5618 // CHECK: @llvm.x86.avx512.mask.scalef.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %2, i8 -1, i32 11)
5619 return _mm_scalef_round_sd(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5620 }
5621
test_mm_scalef_sd(__m128d __A,__m128d __B)5622 __m128d test_mm_scalef_sd(__m128d __A, __m128d __B) {
5623 // CHECK-LABEL: @test_mm_scalef_sd
5624 // CHECK: @llvm.x86.avx512.mask.scalef
5625 return _mm_scalef_sd(__A, __B);
5626 }
5627
test_mm_mask_scalef_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)5628 __m128d test_mm_mask_scalef_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
5629 // CHECK-LABEL: @test_mm_mask_scalef_sd
5630 // CHECK: @llvm.x86.avx512.mask.scalef.sd
5631 return _mm_mask_scalef_sd(__W, __U, __A, __B);
5632 }
5633
test_mm_mask_scalef_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)5634 __m128d test_mm_mask_scalef_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
5635 // CHECK-LABEL: @test_mm_mask_scalef_round_sd
5636 // CHECK: @llvm.x86.avx512.mask.scalef.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 %{{.*}}, i32 11)
5637 return _mm_mask_scalef_round_sd(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5638 }
5639
test_mm_maskz_scalef_sd(__mmask8 __U,__m128d __A,__m128d __B)5640 __m128d test_mm_maskz_scalef_sd(__mmask8 __U, __m128d __A, __m128d __B){
5641 // CHECK-LABEL: @test_mm_maskz_scalef_sd
5642 // CHECK: @llvm.x86.avx512.mask.scalef.sd
5643 return _mm_maskz_scalef_sd(__U, __A, __B);
5644 }
5645
test_mm_maskz_scalef_round_sd(__mmask8 __U,__m128d __A,__m128d __B)5646 __m128d test_mm_maskz_scalef_round_sd(__mmask8 __U, __m128d __A, __m128d __B){
5647 // CHECK-LABEL: @test_mm_maskz_scalef_round_sd
5648 // CHECK: @llvm.x86.avx512.mask.scalef.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 %{{.*}}, i32 11)
5649 return _mm_maskz_scalef_round_sd(__U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5650 }
5651
test_mm_scalef_round_ss(__m128 __A,__m128 __B)5652 __m128 test_mm_scalef_round_ss(__m128 __A, __m128 __B) {
5653 // CHECK-LABEL: @test_mm_scalef_round_ss
5654 // CHECK: @llvm.x86.avx512.mask.scalef.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 -1, i32 11)
5655 return _mm_scalef_round_ss(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5656 }
5657
test_mm_scalef_ss(__m128 __A,__m128 __B)5658 __m128 test_mm_scalef_ss(__m128 __A, __m128 __B) {
5659 // CHECK-LABEL: @test_mm_scalef_ss
5660 // CHECK: @llvm.x86.avx512.mask.scalef.ss
5661 return _mm_scalef_ss(__A, __B);
5662 }
5663
test_mm_mask_scalef_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)5664 __m128 test_mm_mask_scalef_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
5665 // CHECK-LABEL: @test_mm_mask_scalef_ss
5666 // CHECK: @llvm.x86.avx512.mask.scalef.ss
5667 return _mm_mask_scalef_ss(__W, __U, __A, __B);
5668 }
5669
test_mm_mask_scalef_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)5670 __m128 test_mm_mask_scalef_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
5671 // CHECK-LABEL: @test_mm_mask_scalef_round_ss
5672 // CHECK: @llvm.x86.avx512.mask.scalef.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 %{{.*}}, i32 11)
5673 return _mm_mask_scalef_round_ss(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5674 }
5675
test_mm_maskz_scalef_ss(__mmask8 __U,__m128 __A,__m128 __B)5676 __m128 test_mm_maskz_scalef_ss(__mmask8 __U, __m128 __A, __m128 __B){
5677 // CHECK-LABEL: @test_mm_maskz_scalef_ss
5678 // CHECK: @llvm.x86.avx512.mask.scalef.ss
5679 return _mm_maskz_scalef_ss(__U, __A, __B);
5680 }
5681
test_mm_maskz_scalef_round_ss(__mmask8 __U,__m128 __A,__m128 __B)5682 __m128 test_mm_maskz_scalef_round_ss(__mmask8 __U, __m128 __A, __m128 __B){
5683 // CHECK-LABEL: @test_mm_maskz_scalef_round_ss
5684 // CHECK: @llvm.x86.avx512.mask.scalef.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 %{{.*}}, i32 11)
5685 return _mm_maskz_scalef_round_ss(__U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5686 }
5687
test_mm512_srai_epi32(__m512i __A)5688 __m512i test_mm512_srai_epi32(__m512i __A) {
5689 // CHECK-LABEL: @test_mm512_srai_epi32
5690 // CHECK: @llvm.x86.avx512.psrai.d.512
5691 return _mm512_srai_epi32(__A, 5);
5692 }
5693
test_mm512_srai_epi32_2(__m512i __A,unsigned int __B)5694 __m512i test_mm512_srai_epi32_2(__m512i __A, unsigned int __B) {
5695 // CHECK-LABEL: @test_mm512_srai_epi32_2
5696 // CHECK: @llvm.x86.avx512.psrai.d.512
5697 return _mm512_srai_epi32(__A, __B);
5698 }
5699
test_mm512_mask_srai_epi32(__m512i __W,__mmask16 __U,__m512i __A)5700 __m512i test_mm512_mask_srai_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
5701 // CHECK-LABEL: @test_mm512_mask_srai_epi32
5702 // CHECK: @llvm.x86.avx512.psrai.d.512
5703 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5704 return _mm512_mask_srai_epi32(__W, __U, __A, 5);
5705 }
5706
test_mm512_mask_srai_epi32_2(__m512i __W,__mmask16 __U,__m512i __A,unsigned int __B)5707 __m512i test_mm512_mask_srai_epi32_2(__m512i __W, __mmask16 __U, __m512i __A, unsigned int __B) {
5708 // CHECK-LABEL: @test_mm512_mask_srai_epi32_2
5709 // CHECK: @llvm.x86.avx512.psrai.d.512
5710 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5711 return _mm512_mask_srai_epi32(__W, __U, __A, __B);
5712 }
5713
test_mm512_maskz_srai_epi32(__mmask16 __U,__m512i __A)5714 __m512i test_mm512_maskz_srai_epi32(__mmask16 __U, __m512i __A) {
5715 // CHECK-LABEL: @test_mm512_maskz_srai_epi32
5716 // CHECK: @llvm.x86.avx512.psrai.d.512
5717 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5718 return _mm512_maskz_srai_epi32(__U, __A, 5);
5719 }
5720
test_mm512_maskz_srai_epi32_2(__mmask16 __U,__m512i __A,unsigned int __B)5721 __m512i test_mm512_maskz_srai_epi32_2(__mmask16 __U, __m512i __A, unsigned int __B) {
5722 // CHECK-LABEL: @test_mm512_maskz_srai_epi32_2
5723 // CHECK: @llvm.x86.avx512.psrai.d.512
5724 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5725 return _mm512_maskz_srai_epi32(__U, __A, __B);
5726 }
5727
test_mm512_srai_epi64(__m512i __A)5728 __m512i test_mm512_srai_epi64(__m512i __A) {
5729 // CHECK-LABEL: @test_mm512_srai_epi64
5730 // CHECK: @llvm.x86.avx512.psrai.q.512
5731 return _mm512_srai_epi64(__A, 5);
5732 }
5733
test_mm512_srai_epi64_2(__m512i __A,unsigned int __B)5734 __m512i test_mm512_srai_epi64_2(__m512i __A, unsigned int __B) {
5735 // CHECK-LABEL: @test_mm512_srai_epi64_2
5736 // CHECK: @llvm.x86.avx512.psrai.q.512
5737 return _mm512_srai_epi64(__A, __B);
5738 }
5739
test_mm512_mask_srai_epi64(__m512i __W,__mmask8 __U,__m512i __A)5740 __m512i test_mm512_mask_srai_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
5741 // CHECK-LABEL: @test_mm512_mask_srai_epi64
5742 // CHECK: @llvm.x86.avx512.psrai.q.512
5743 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5744 return _mm512_mask_srai_epi64(__W, __U, __A, 5);
5745 }
5746
test_mm512_mask_srai_epi64_2(__m512i __W,__mmask8 __U,__m512i __A,unsigned int __B)5747 __m512i test_mm512_mask_srai_epi64_2(__m512i __W, __mmask8 __U, __m512i __A, unsigned int __B) {
5748 // CHECK-LABEL: @test_mm512_mask_srai_epi64_2
5749 // CHECK: @llvm.x86.avx512.psrai.q.512
5750 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5751 return _mm512_mask_srai_epi64(__W, __U, __A, __B);
5752 }
5753
test_mm512_maskz_srai_epi64(__mmask8 __U,__m512i __A)5754 __m512i test_mm512_maskz_srai_epi64(__mmask8 __U, __m512i __A) {
5755 // CHECK-LABEL: @test_mm512_maskz_srai_epi64
5756 // CHECK: @llvm.x86.avx512.psrai.q.512
5757 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5758 return _mm512_maskz_srai_epi64(__U, __A, 5);
5759 }
5760
test_mm512_maskz_srai_epi64_2(__mmask8 __U,__m512i __A,unsigned int __B)5761 __m512i test_mm512_maskz_srai_epi64_2(__mmask8 __U, __m512i __A, unsigned int __B) {
5762 // CHECK-LABEL: @test_mm512_maskz_srai_epi64_2
5763 // CHECK: @llvm.x86.avx512.psrai.q.512
5764 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5765 return _mm512_maskz_srai_epi64(__U, __A, __B);
5766 }
5767
test_mm512_sll_epi32(__m512i __A,__m128i __B)5768 __m512i test_mm512_sll_epi32(__m512i __A, __m128i __B) {
5769 // CHECK-LABEL: @test_mm512_sll_epi32
5770 // CHECK: @llvm.x86.avx512.psll.d.512
5771 return _mm512_sll_epi32(__A, __B);
5772 }
5773
test_mm512_mask_sll_epi32(__m512i __W,__mmask16 __U,__m512i __A,__m128i __B)5774 __m512i test_mm512_mask_sll_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m128i __B) {
5775 // CHECK-LABEL: @test_mm512_mask_sll_epi32
5776 // CHECK: @llvm.x86.avx512.psll.d.512
5777 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5778 return _mm512_mask_sll_epi32(__W, __U, __A, __B);
5779 }
5780
test_mm512_maskz_sll_epi32(__mmask16 __U,__m512i __A,__m128i __B)5781 __m512i test_mm512_maskz_sll_epi32(__mmask16 __U, __m512i __A, __m128i __B) {
5782 // CHECK-LABEL: @test_mm512_maskz_sll_epi32
5783 // CHECK: @llvm.x86.avx512.psll.d.512
5784 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5785 return _mm512_maskz_sll_epi32(__U, __A, __B);
5786 }
5787
test_mm512_sll_epi64(__m512i __A,__m128i __B)5788 __m512i test_mm512_sll_epi64(__m512i __A, __m128i __B) {
5789 // CHECK-LABEL: @test_mm512_sll_epi64
5790 // CHECK: @llvm.x86.avx512.psll.q.512
5791 return _mm512_sll_epi64(__A, __B);
5792 }
5793
test_mm512_mask_sll_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m128i __B)5794 __m512i test_mm512_mask_sll_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m128i __B) {
5795 // CHECK-LABEL: @test_mm512_mask_sll_epi64
5796 // CHECK: @llvm.x86.avx512.psll.q.512
5797 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5798 return _mm512_mask_sll_epi64(__W, __U, __A, __B);
5799 }
5800
test_mm512_maskz_sll_epi64(__mmask8 __U,__m512i __A,__m128i __B)5801 __m512i test_mm512_maskz_sll_epi64(__mmask8 __U, __m512i __A, __m128i __B) {
5802 // CHECK-LABEL: @test_mm512_maskz_sll_epi64
5803 // CHECK: @llvm.x86.avx512.psll.q.512
5804 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5805 return _mm512_maskz_sll_epi64(__U, __A, __B);
5806 }
5807
test_mm512_sllv_epi32(__m512i __X,__m512i __Y)5808 __m512i test_mm512_sllv_epi32(__m512i __X, __m512i __Y) {
5809 // CHECK-LABEL: @test_mm512_sllv_epi32
5810 // CHECK: @llvm.x86.avx512.psllv.d.512
5811 return _mm512_sllv_epi32(__X, __Y);
5812 }
5813
test_mm512_mask_sllv_epi32(__m512i __W,__mmask16 __U,__m512i __X,__m512i __Y)5814 __m512i test_mm512_mask_sllv_epi32(__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y) {
5815 // CHECK-LABEL: @test_mm512_mask_sllv_epi32
5816 // CHECK: @llvm.x86.avx512.psllv.d.512
5817 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5818 return _mm512_mask_sllv_epi32(__W, __U, __X, __Y);
5819 }
5820
test_mm512_maskz_sllv_epi32(__mmask16 __U,__m512i __X,__m512i __Y)5821 __m512i test_mm512_maskz_sllv_epi32(__mmask16 __U, __m512i __X, __m512i __Y) {
5822 // CHECK-LABEL: @test_mm512_maskz_sllv_epi32
5823 // CHECK: @llvm.x86.avx512.psllv.d.512
5824 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5825 return _mm512_maskz_sllv_epi32(__U, __X, __Y);
5826 }
5827
test_mm512_sllv_epi64(__m512i __X,__m512i __Y)5828 __m512i test_mm512_sllv_epi64(__m512i __X, __m512i __Y) {
5829 // CHECK-LABEL: @test_mm512_sllv_epi64
5830 // CHECK: @llvm.x86.avx512.psllv.q.512
5831 return _mm512_sllv_epi64(__X, __Y);
5832 }
5833
test_mm512_mask_sllv_epi64(__m512i __W,__mmask8 __U,__m512i __X,__m512i __Y)5834 __m512i test_mm512_mask_sllv_epi64(__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y) {
5835 // CHECK-LABEL: @test_mm512_mask_sllv_epi64
5836 // CHECK: @llvm.x86.avx512.psllv.q.512
5837 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5838 return _mm512_mask_sllv_epi64(__W, __U, __X, __Y);
5839 }
5840
test_mm512_maskz_sllv_epi64(__mmask8 __U,__m512i __X,__m512i __Y)5841 __m512i test_mm512_maskz_sllv_epi64(__mmask8 __U, __m512i __X, __m512i __Y) {
5842 // CHECK-LABEL: @test_mm512_maskz_sllv_epi64
5843 // CHECK: @llvm.x86.avx512.psllv.q.512
5844 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5845 return _mm512_maskz_sllv_epi64(__U, __X, __Y);
5846 }
5847
test_mm512_sra_epi32(__m512i __A,__m128i __B)5848 __m512i test_mm512_sra_epi32(__m512i __A, __m128i __B) {
5849 // CHECK-LABEL: @test_mm512_sra_epi32
5850 // CHECK: @llvm.x86.avx512.psra.d.512
5851 return _mm512_sra_epi32(__A, __B);
5852 }
5853
test_mm512_mask_sra_epi32(__m512i __W,__mmask16 __U,__m512i __A,__m128i __B)5854 __m512i test_mm512_mask_sra_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m128i __B) {
5855 // CHECK-LABEL: @test_mm512_mask_sra_epi32
5856 // CHECK: @llvm.x86.avx512.psra.d.512
5857 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5858 return _mm512_mask_sra_epi32(__W, __U, __A, __B);
5859 }
5860
test_mm512_maskz_sra_epi32(__mmask16 __U,__m512i __A,__m128i __B)5861 __m512i test_mm512_maskz_sra_epi32(__mmask16 __U, __m512i __A, __m128i __B) {
5862 // CHECK-LABEL: @test_mm512_maskz_sra_epi32
5863 // CHECK: @llvm.x86.avx512.psra.d.512
5864 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5865 return _mm512_maskz_sra_epi32(__U, __A, __B);
5866 }
5867
test_mm512_sra_epi64(__m512i __A,__m128i __B)5868 __m512i test_mm512_sra_epi64(__m512i __A, __m128i __B) {
5869 // CHECK-LABEL: @test_mm512_sra_epi64
5870 // CHECK: @llvm.x86.avx512.psra.q.512
5871 return _mm512_sra_epi64(__A, __B);
5872 }
5873
test_mm512_mask_sra_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m128i __B)5874 __m512i test_mm512_mask_sra_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m128i __B) {
5875 // CHECK-LABEL: @test_mm512_mask_sra_epi64
5876 // CHECK: @llvm.x86.avx512.psra.q.512
5877 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5878 return _mm512_mask_sra_epi64(__W, __U, __A, __B);
5879 }
5880
test_mm512_maskz_sra_epi64(__mmask8 __U,__m512i __A,__m128i __B)5881 __m512i test_mm512_maskz_sra_epi64(__mmask8 __U, __m512i __A, __m128i __B) {
5882 // CHECK-LABEL: @test_mm512_maskz_sra_epi64
5883 // CHECK: @llvm.x86.avx512.psra.q.512
5884 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5885 return _mm512_maskz_sra_epi64(__U, __A, __B);
5886 }
5887
test_mm512_srav_epi32(__m512i __X,__m512i __Y)5888 __m512i test_mm512_srav_epi32(__m512i __X, __m512i __Y) {
5889 // CHECK-LABEL: @test_mm512_srav_epi32
5890 // CHECK: @llvm.x86.avx512.psrav.d.512
5891 return _mm512_srav_epi32(__X, __Y);
5892 }
5893
test_mm512_mask_srav_epi32(__m512i __W,__mmask16 __U,__m512i __X,__m512i __Y)5894 __m512i test_mm512_mask_srav_epi32(__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y) {
5895 // CHECK-LABEL: @test_mm512_mask_srav_epi32
5896 // CHECK: @llvm.x86.avx512.psrav.d.512
5897 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5898 return _mm512_mask_srav_epi32(__W, __U, __X, __Y);
5899 }
5900
test_mm512_maskz_srav_epi32(__mmask16 __U,__m512i __X,__m512i __Y)5901 __m512i test_mm512_maskz_srav_epi32(__mmask16 __U, __m512i __X, __m512i __Y) {
5902 // CHECK-LABEL: @test_mm512_maskz_srav_epi32
5903 // CHECK: @llvm.x86.avx512.psrav.d.512
5904 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5905 return _mm512_maskz_srav_epi32(__U, __X, __Y);
5906 }
5907
test_mm512_srav_epi64(__m512i __X,__m512i __Y)5908 __m512i test_mm512_srav_epi64(__m512i __X, __m512i __Y) {
5909 // CHECK-LABEL: @test_mm512_srav_epi64
5910 // CHECK: @llvm.x86.avx512.psrav.q.512
5911 return _mm512_srav_epi64(__X, __Y);
5912 }
5913
test_mm512_mask_srav_epi64(__m512i __W,__mmask8 __U,__m512i __X,__m512i __Y)5914 __m512i test_mm512_mask_srav_epi64(__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y) {
5915 // CHECK-LABEL: @test_mm512_mask_srav_epi64
5916 // CHECK: @llvm.x86.avx512.psrav.q.512
5917 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5918 return _mm512_mask_srav_epi64(__W, __U, __X, __Y);
5919 }
5920
test_mm512_maskz_srav_epi64(__mmask8 __U,__m512i __X,__m512i __Y)5921 __m512i test_mm512_maskz_srav_epi64(__mmask8 __U, __m512i __X, __m512i __Y) {
5922 // CHECK-LABEL: @test_mm512_maskz_srav_epi64
5923 // CHECK: @llvm.x86.avx512.psrav.q.512
5924 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5925 return _mm512_maskz_srav_epi64(__U, __X, __Y);
5926 }
5927
test_mm512_srl_epi32(__m512i __A,__m128i __B)5928 __m512i test_mm512_srl_epi32(__m512i __A, __m128i __B) {
5929 // CHECK-LABEL: @test_mm512_srl_epi32
5930 // CHECK: @llvm.x86.avx512.psrl.d.512
5931 return _mm512_srl_epi32(__A, __B);
5932 }
5933
test_mm512_mask_srl_epi32(__m512i __W,__mmask16 __U,__m512i __A,__m128i __B)5934 __m512i test_mm512_mask_srl_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m128i __B) {
5935 // CHECK-LABEL: @test_mm512_mask_srl_epi32
5936 // CHECK: @llvm.x86.avx512.psrl.d.512
5937 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5938 return _mm512_mask_srl_epi32(__W, __U, __A, __B);
5939 }
5940
test_mm512_maskz_srl_epi32(__mmask16 __U,__m512i __A,__m128i __B)5941 __m512i test_mm512_maskz_srl_epi32(__mmask16 __U, __m512i __A, __m128i __B) {
5942 // CHECK-LABEL: @test_mm512_maskz_srl_epi32
5943 // CHECK: @llvm.x86.avx512.psrl.d.512
5944 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5945 return _mm512_maskz_srl_epi32(__U, __A, __B);
5946 }
5947
test_mm512_srl_epi64(__m512i __A,__m128i __B)5948 __m512i test_mm512_srl_epi64(__m512i __A, __m128i __B) {
5949 // CHECK-LABEL: @test_mm512_srl_epi64
5950 // CHECK: @llvm.x86.avx512.psrl.q.512
5951 return _mm512_srl_epi64(__A, __B);
5952 }
5953
test_mm512_mask_srl_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m128i __B)5954 __m512i test_mm512_mask_srl_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m128i __B) {
5955 // CHECK-LABEL: @test_mm512_mask_srl_epi64
5956 // CHECK: @llvm.x86.avx512.psrl.q.512
5957 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5958 return _mm512_mask_srl_epi64(__W, __U, __A, __B);
5959 }
5960
test_mm512_maskz_srl_epi64(__mmask8 __U,__m512i __A,__m128i __B)5961 __m512i test_mm512_maskz_srl_epi64(__mmask8 __U, __m512i __A, __m128i __B) {
5962 // CHECK-LABEL: @test_mm512_maskz_srl_epi64
5963 // CHECK: @llvm.x86.avx512.psrl.q.512
5964 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5965 return _mm512_maskz_srl_epi64(__U, __A, __B);
5966 }
5967
test_mm512_srlv_epi32(__m512i __X,__m512i __Y)5968 __m512i test_mm512_srlv_epi32(__m512i __X, __m512i __Y) {
5969 // CHECK-LABEL: @test_mm512_srlv_epi32
5970 // CHECK: @llvm.x86.avx512.psrlv.d.512
5971 return _mm512_srlv_epi32(__X, __Y);
5972 }
5973
test_mm512_mask_srlv_epi32(__m512i __W,__mmask16 __U,__m512i __X,__m512i __Y)5974 __m512i test_mm512_mask_srlv_epi32(__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y) {
5975 // CHECK-LABEL: @test_mm512_mask_srlv_epi32
5976 // CHECK: @llvm.x86.avx512.psrlv.d.512
5977 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5978 return _mm512_mask_srlv_epi32(__W, __U, __X, __Y);
5979 }
5980
test_mm512_maskz_srlv_epi32(__mmask16 __U,__m512i __X,__m512i __Y)5981 __m512i test_mm512_maskz_srlv_epi32(__mmask16 __U, __m512i __X, __m512i __Y) {
5982 // CHECK-LABEL: @test_mm512_maskz_srlv_epi32
5983 // CHECK: @llvm.x86.avx512.psrlv.d.512
5984 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5985 return _mm512_maskz_srlv_epi32(__U, __X, __Y);
5986 }
5987
test_mm512_srlv_epi64(__m512i __X,__m512i __Y)5988 __m512i test_mm512_srlv_epi64(__m512i __X, __m512i __Y) {
5989 // CHECK-LABEL: @test_mm512_srlv_epi64
5990 // CHECK: @llvm.x86.avx512.psrlv.q.512
5991 return _mm512_srlv_epi64(__X, __Y);
5992 }
5993
test_mm512_mask_srlv_epi64(__m512i __W,__mmask8 __U,__m512i __X,__m512i __Y)5994 __m512i test_mm512_mask_srlv_epi64(__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y) {
5995 // CHECK-LABEL: @test_mm512_mask_srlv_epi64
5996 // CHECK: @llvm.x86.avx512.psrlv.q.512
5997 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5998 return _mm512_mask_srlv_epi64(__W, __U, __X, __Y);
5999 }
6000
test_mm512_maskz_srlv_epi64(__mmask8 __U,__m512i __X,__m512i __Y)6001 __m512i test_mm512_maskz_srlv_epi64(__mmask8 __U, __m512i __X, __m512i __Y) {
6002 // CHECK-LABEL: @test_mm512_maskz_srlv_epi64
6003 // CHECK: @llvm.x86.avx512.psrlv.q.512
6004 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6005 return _mm512_maskz_srlv_epi64(__U, __X, __Y);
6006 }
6007
test_mm512_ternarylogic_epi32(__m512i __A,__m512i __B,__m512i __C)6008 __m512i test_mm512_ternarylogic_epi32(__m512i __A, __m512i __B, __m512i __C) {
6009 // CHECK-LABEL: @test_mm512_ternarylogic_epi32
6010 // CHECK: @llvm.x86.avx512.pternlog.d.512
6011 return _mm512_ternarylogic_epi32(__A, __B, __C, 4);
6012 }
6013
test_mm512_mask_ternarylogic_epi32(__m512i __A,__mmask16 __U,__m512i __B,__m512i __C)6014 __m512i test_mm512_mask_ternarylogic_epi32(__m512i __A, __mmask16 __U, __m512i __B, __m512i __C) {
6015 // CHECK-LABEL: @test_mm512_mask_ternarylogic_epi32
6016 // CHECK: @llvm.x86.avx512.pternlog.d.512
6017 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6018 return _mm512_mask_ternarylogic_epi32(__A, __U, __B, __C, 4);
6019 }
6020
test_mm512_maskz_ternarylogic_epi32(__mmask16 __U,__m512i __A,__m512i __B,__m512i __C)6021 __m512i test_mm512_maskz_ternarylogic_epi32(__mmask16 __U, __m512i __A, __m512i __B, __m512i __C) {
6022 // CHECK-LABEL: @test_mm512_maskz_ternarylogic_epi32
6023 // CHECK: @llvm.x86.avx512.pternlog.d.512
6024 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> zeroinitializer
6025 return _mm512_maskz_ternarylogic_epi32(__U, __A, __B, __C, 4);
6026 }
6027
test_mm512_ternarylogic_epi64(__m512i __A,__m512i __B,__m512i __C)6028 __m512i test_mm512_ternarylogic_epi64(__m512i __A, __m512i __B, __m512i __C) {
6029 // CHECK-LABEL: @test_mm512_ternarylogic_epi64
6030 // CHECK: @llvm.x86.avx512.pternlog.q.512
6031 return _mm512_ternarylogic_epi64(__A, __B, __C, 4);
6032 }
6033
test_mm512_mask_ternarylogic_epi64(__m512i __A,__mmask8 __U,__m512i __B,__m512i __C)6034 __m512i test_mm512_mask_ternarylogic_epi64(__m512i __A, __mmask8 __U, __m512i __B, __m512i __C) {
6035 // CHECK-LABEL: @test_mm512_mask_ternarylogic_epi64
6036 // CHECK: @llvm.x86.avx512.pternlog.q.512
6037 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6038 return _mm512_mask_ternarylogic_epi64(__A, __U, __B, __C, 4);
6039 }
6040
test_mm512_maskz_ternarylogic_epi64(__mmask8 __U,__m512i __A,__m512i __B,__m512i __C)6041 __m512i test_mm512_maskz_ternarylogic_epi64(__mmask8 __U, __m512i __A, __m512i __B, __m512i __C) {
6042 // CHECK-LABEL: @test_mm512_maskz_ternarylogic_epi64
6043 // CHECK: @llvm.x86.avx512.pternlog.q.512
6044 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> zeroinitializer
6045 return _mm512_maskz_ternarylogic_epi64(__U, __A, __B, __C, 4);
6046 }
6047
test_mm512_shuffle_f32x4(__m512 __A,__m512 __B)6048 __m512 test_mm512_shuffle_f32x4(__m512 __A, __m512 __B) {
6049 // CHECK-LABEL: @test_mm512_shuffle_f32x4
6050 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 16, i32 17, i32 18, i32 19>
6051 return _mm512_shuffle_f32x4(__A, __B, 4);
6052 }
6053
test_mm512_mask_shuffle_f32x4(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)6054 __m512 test_mm512_mask_shuffle_f32x4(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
6055 // CHECK-LABEL: @test_mm512_mask_shuffle_f32x4
6056 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 16, i32 17, i32 18, i32 19>
6057 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6058 return _mm512_mask_shuffle_f32x4(__W, __U, __A, __B, 4);
6059 }
6060
test_mm512_maskz_shuffle_f32x4(__mmask16 __U,__m512 __A,__m512 __B)6061 __m512 test_mm512_maskz_shuffle_f32x4(__mmask16 __U, __m512 __A, __m512 __B) {
6062 // CHECK-LABEL: @test_mm512_maskz_shuffle_f32x4
6063 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 16, i32 17, i32 18, i32 19>
6064 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6065 return _mm512_maskz_shuffle_f32x4(__U, __A, __B, 4);
6066 }
6067
test_mm512_shuffle_f64x2(__m512d __A,__m512d __B)6068 __m512d test_mm512_shuffle_f64x2(__m512d __A, __m512d __B) {
6069 // CHECK-LABEL: @test_mm512_shuffle_f64x2
6070 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 8, i32 9>
6071 return _mm512_shuffle_f64x2(__A, __B, 4);
6072 }
6073
test_mm512_mask_shuffle_f64x2(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)6074 __m512d test_mm512_mask_shuffle_f64x2(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
6075 // CHECK-LABEL: @test_mm512_mask_shuffle_f64x2
6076 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 8, i32 9>
6077 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6078 return _mm512_mask_shuffle_f64x2(__W, __U, __A, __B, 4);
6079 }
6080
test_mm512_maskz_shuffle_f64x2(__mmask8 __U,__m512d __A,__m512d __B)6081 __m512d test_mm512_maskz_shuffle_f64x2(__mmask8 __U, __m512d __A, __m512d __B) {
6082 // CHECK-LABEL: @test_mm512_maskz_shuffle_f64x2
6083 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 8, i32 9>
6084 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6085 return _mm512_maskz_shuffle_f64x2(__U, __A, __B, 4);
6086 }
6087
test_mm512_shuffle_i32x4(__m512i __A,__m512i __B)6088 __m512i test_mm512_shuffle_i32x4(__m512i __A, __m512i __B) {
6089 // CHECK-LABEL: @test_mm512_shuffle_i32x4
6090 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 16, i32 17, i32 18, i32 19>
6091 return _mm512_shuffle_i32x4(__A, __B, 4);
6092 }
6093
test_mm512_mask_shuffle_i32x4(__m512i __W,__mmask16 __U,__m512i __A,__m512i __B)6094 __m512i test_mm512_mask_shuffle_i32x4(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
6095 // CHECK-LABEL: @test_mm512_mask_shuffle_i32x4
6096 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 16, i32 17, i32 18, i32 19>
6097 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6098 return _mm512_mask_shuffle_i32x4(__W, __U, __A, __B, 4);
6099 }
6100
test_mm512_maskz_shuffle_i32x4(__mmask16 __U,__m512i __A,__m512i __B)6101 __m512i test_mm512_maskz_shuffle_i32x4(__mmask16 __U, __m512i __A, __m512i __B) {
6102 // CHECK-LABEL: @test_mm512_maskz_shuffle_i32x4
6103 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 16, i32 17, i32 18, i32 19>
6104 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6105 return _mm512_maskz_shuffle_i32x4(__U, __A, __B, 4);
6106 }
6107
test_mm512_shuffle_i64x2(__m512i __A,__m512i __B)6108 __m512i test_mm512_shuffle_i64x2(__m512i __A, __m512i __B) {
6109 // CHECK-LABEL: @test_mm512_shuffle_i64x2
6110 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 8, i32 9>
6111 return _mm512_shuffle_i64x2(__A, __B, 4);
6112 }
6113
test_mm512_mask_shuffle_i64x2(__m512i __W,__mmask8 __U,__m512i __A,__m512i __B)6114 __m512i test_mm512_mask_shuffle_i64x2(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
6115 // CHECK-LABEL: @test_mm512_mask_shuffle_i64x2
6116 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 8, i32 9>
6117 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6118 return _mm512_mask_shuffle_i64x2(__W, __U, __A, __B, 4);
6119 }
6120
test_mm512_maskz_shuffle_i64x2(__mmask8 __U,__m512i __A,__m512i __B)6121 __m512i test_mm512_maskz_shuffle_i64x2(__mmask8 __U, __m512i __A, __m512i __B) {
6122 // CHECK-LABEL: @test_mm512_maskz_shuffle_i64x2
6123 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 8, i32 9>
6124 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6125 return _mm512_maskz_shuffle_i64x2(__U, __A, __B, 4);
6126 }
6127
test_mm512_shuffle_pd(__m512d __M,__m512d __V)6128 __m512d test_mm512_shuffle_pd(__m512d __M, __m512d __V) {
6129 // CHECK-LABEL: @test_mm512_shuffle_pd
6130 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 3, i32 10, i32 4, i32 12, i32 6, i32 14>
6131 return _mm512_shuffle_pd(__M, __V, 4);
6132 }
6133
test_mm512_mask_shuffle_pd(__m512d __W,__mmask8 __U,__m512d __M,__m512d __V)6134 __m512d test_mm512_mask_shuffle_pd(__m512d __W, __mmask8 __U, __m512d __M, __m512d __V) {
6135 // CHECK-LABEL: @test_mm512_mask_shuffle_pd
6136 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 3, i32 10, i32 4, i32 12, i32 6, i32 14>
6137 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6138 return _mm512_mask_shuffle_pd(__W, __U, __M, __V, 4);
6139 }
6140
test_mm512_maskz_shuffle_pd(__mmask8 __U,__m512d __M,__m512d __V)6141 __m512d test_mm512_maskz_shuffle_pd(__mmask8 __U, __m512d __M, __m512d __V) {
6142 // CHECK-LABEL: @test_mm512_maskz_shuffle_pd
6143 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 3, i32 10, i32 4, i32 12, i32 6, i32 14>
6144 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6145 return _mm512_maskz_shuffle_pd(__U, __M, __V, 4);
6146 }
6147
test_mm512_shuffle_ps(__m512 __M,__m512 __V)6148 __m512 test_mm512_shuffle_ps(__m512 __M, __m512 __V) {
6149 // CHECK-LABEL: @test_mm512_shuffle_ps
6150 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 16, i32 16, i32 4, i32 5, i32 20, i32 20, i32 8, i32 9, i32 24, i32 24, i32 12, i32 13, i32 28, i32 28>
6151 return _mm512_shuffle_ps(__M, __V, 4);
6152 }
6153
test_mm512_mask_shuffle_ps(__m512 __W,__mmask16 __U,__m512 __M,__m512 __V)6154 __m512 test_mm512_mask_shuffle_ps(__m512 __W, __mmask16 __U, __m512 __M, __m512 __V) {
6155 // CHECK-LABEL: @test_mm512_mask_shuffle_ps
6156 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 16, i32 16, i32 4, i32 5, i32 20, i32 20, i32 8, i32 9, i32 24, i32 24, i32 12, i32 13, i32 28, i32 28>
6157 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6158 return _mm512_mask_shuffle_ps(__W, __U, __M, __V, 4);
6159 }
6160
test_mm512_maskz_shuffle_ps(__mmask16 __U,__m512 __M,__m512 __V)6161 __m512 test_mm512_maskz_shuffle_ps(__mmask16 __U, __m512 __M, __m512 __V) {
6162 // CHECK-LABEL: @test_mm512_maskz_shuffle_ps
6163 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 16, i32 16, i32 4, i32 5, i32 20, i32 20, i32 8, i32 9, i32 24, i32 24, i32 12, i32 13, i32 28, i32 28>
6164 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6165 return _mm512_maskz_shuffle_ps(__U, __M, __V, 4);
6166 }
6167
test_mm_sqrt_round_sd(__m128d __A,__m128d __B)6168 __m128d test_mm_sqrt_round_sd(__m128d __A, __m128d __B) {
6169 // CHECK-LABEL: @test_mm_sqrt_round_sd
6170 // CHECK: call <2 x double> @llvm.x86.avx512.mask.sqrt.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 -1, i32 11)
6171 return _mm_sqrt_round_sd(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
6172 }
6173
test_mm_mask_sqrt_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)6174 __m128d test_mm_mask_sqrt_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
6175 // CHECK-LABEL: @test_mm_mask_sqrt_sd
6176 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
6177 // CHECK-NEXT: call double @llvm.sqrt.f64(double %{{.*}})
6178 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
6179 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
6180 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
6181 // CHECK-NEXT: select i1 {{.*}}, double {{.*}}, double {{.*}}
6182 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double {{.*}}, i64 0
6183 return _mm_mask_sqrt_sd(__W,__U,__A,__B);
6184 }
6185
test_mm_mask_sqrt_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)6186 __m128d test_mm_mask_sqrt_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
6187 // CHECK-LABEL: @test_mm_mask_sqrt_round_sd
6188 // CHECK: call <2 x double> @llvm.x86.avx512.mask.sqrt.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 %{{.*}}, i32 11)
6189 return _mm_mask_sqrt_round_sd(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
6190 }
6191
test_mm_maskz_sqrt_sd(__mmask8 __U,__m128d __A,__m128d __B)6192 __m128d test_mm_maskz_sqrt_sd(__mmask8 __U, __m128d __A, __m128d __B){
6193 // CHECK-LABEL: @test_mm_maskz_sqrt_sd
6194 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
6195 // CHECK-NEXT: call double @llvm.sqrt.f64(double %{{.*}})
6196 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
6197 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
6198 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
6199 // CHECK-NEXT: select i1 {{.*}}, double {{.*}}, double {{.*}}
6200 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double {{.*}}, i64 0
6201 return _mm_maskz_sqrt_sd(__U,__A,__B);
6202 }
6203
test_mm_maskz_sqrt_round_sd(__mmask8 __U,__m128d __A,__m128d __B)6204 __m128d test_mm_maskz_sqrt_round_sd(__mmask8 __U, __m128d __A, __m128d __B){
6205 // CHECK-LABEL: @test_mm_maskz_sqrt_round_sd
6206 // CHECK: call <2 x double> @llvm.x86.avx512.mask.sqrt.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 %{{.*}}, i32 11)
6207 return _mm_maskz_sqrt_round_sd(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
6208 }
6209
test_mm_sqrt_round_ss(__m128 __A,__m128 __B)6210 __m128 test_mm_sqrt_round_ss(__m128 __A, __m128 __B) {
6211 // CHECK-LABEL: @test_mm_sqrt_round_ss
6212 // CHECK: call <4 x float> @llvm.x86.avx512.mask.sqrt.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 -1, i32 11)
6213 return _mm_sqrt_round_ss(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
6214 }
6215
test_mm_mask_sqrt_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)6216 __m128 test_mm_mask_sqrt_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
6217 // CHECK-LABEL: @test_mm_mask_sqrt_ss
6218 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
6219 // CHECK-NEXT: call float @llvm.sqrt.f32(float %{{.*}})
6220 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
6221 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
6222 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
6223 // CHECK-NEXT: select i1 {{.*}}, float {{.*}}, float {{.*}}
6224 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float {{.*}}, i64 0
6225 return _mm_mask_sqrt_ss(__W,__U,__A,__B);
6226 }
6227
test_mm_mask_sqrt_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)6228 __m128 test_mm_mask_sqrt_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
6229 // CHECK-LABEL: @test_mm_mask_sqrt_round_ss
6230 // CHECK: call <4 x float> @llvm.x86.avx512.mask.sqrt.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 {{.*}}, i32 11)
6231 return _mm_mask_sqrt_round_ss(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
6232 }
6233
test_mm_maskz_sqrt_ss(__mmask8 __U,__m128 __A,__m128 __B)6234 __m128 test_mm_maskz_sqrt_ss(__mmask8 __U, __m128 __A, __m128 __B){
6235 // CHECK-LABEL: @test_mm_maskz_sqrt_ss
6236 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
6237 // CHECK-NEXT: call float @llvm.sqrt.f32(float %{{.*}})
6238 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
6239 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
6240 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
6241 // CHECK-NEXT: select i1 {{.*}}, float {{.*}}, float {{.*}}
6242 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float {{.*}}, i64 0
6243 return _mm_maskz_sqrt_ss(__U,__A,__B);
6244 }
6245
test_mm_maskz_sqrt_round_ss(__mmask8 __U,__m128 __A,__m128 __B)6246 __m128 test_mm_maskz_sqrt_round_ss(__mmask8 __U, __m128 __A, __m128 __B){
6247 // CHECK-LABEL: @test_mm_maskz_sqrt_round_ss
6248 // CHECK: call <4 x float> @llvm.x86.avx512.mask.sqrt.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 {{.*}}, i32 11)
6249 return _mm_maskz_sqrt_round_ss(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
6250 }
6251
test_mm512_broadcast_f32x4(float const * __A)6252 __m512 test_mm512_broadcast_f32x4(float const* __A) {
6253 // CHECK-LABEL: @test_mm512_broadcast_f32x4
6254 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6255 return _mm512_broadcast_f32x4(_mm_loadu_ps(__A));
6256 }
6257
test_mm512_mask_broadcast_f32x4(__m512 __O,__mmask16 __M,float const * __A)6258 __m512 test_mm512_mask_broadcast_f32x4(__m512 __O, __mmask16 __M, float const* __A) {
6259 // CHECK-LABEL: @test_mm512_mask_broadcast_f32x4
6260 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6261 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6262 return _mm512_mask_broadcast_f32x4(__O, __M, _mm_loadu_ps(__A));
6263 }
6264
test_mm512_maskz_broadcast_f32x4(__mmask16 __M,float const * __A)6265 __m512 test_mm512_maskz_broadcast_f32x4(__mmask16 __M, float const* __A) {
6266 // CHECK-LABEL: @test_mm512_maskz_broadcast_f32x4
6267 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6268 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6269 return _mm512_maskz_broadcast_f32x4(__M, _mm_loadu_ps(__A));
6270 }
6271
test_mm512_broadcast_f64x4(double const * __A)6272 __m512d test_mm512_broadcast_f64x4(double const* __A) {
6273 // CHECK-LABEL: @test_mm512_broadcast_f64x4
6274 // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6275 return _mm512_broadcast_f64x4(_mm256_loadu_pd(__A));
6276 }
6277
test_mm512_mask_broadcast_f64x4(__m512d __O,__mmask8 __M,double const * __A)6278 __m512d test_mm512_mask_broadcast_f64x4(__m512d __O, __mmask8 __M, double const* __A) {
6279 // CHECK-LABEL: @test_mm512_mask_broadcast_f64x4
6280 // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6281 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6282 return _mm512_mask_broadcast_f64x4(__O, __M, _mm256_loadu_pd(__A));
6283 }
6284
test_mm512_maskz_broadcast_f64x4(__mmask8 __M,double const * __A)6285 __m512d test_mm512_maskz_broadcast_f64x4(__mmask8 __M, double const* __A) {
6286 // CHECK-LABEL: @test_mm512_maskz_broadcast_f64x4
6287 // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6288 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6289 return _mm512_maskz_broadcast_f64x4(__M, _mm256_loadu_pd(__A));
6290 }
6291
test_mm512_broadcast_i32x4(__m128i const * __A)6292 __m512i test_mm512_broadcast_i32x4(__m128i const* __A) {
6293 // CHECK-LABEL: @test_mm512_broadcast_i32x4
6294 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6295 return _mm512_broadcast_i32x4(_mm_loadu_si128(__A));
6296 }
6297
test_mm512_mask_broadcast_i32x4(__m512i __O,__mmask16 __M,__m128i const * __A)6298 __m512i test_mm512_mask_broadcast_i32x4(__m512i __O, __mmask16 __M, __m128i const* __A) {
6299 // CHECK-LABEL: @test_mm512_mask_broadcast_i32x4
6300 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6301 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6302 return _mm512_mask_broadcast_i32x4(__O, __M, _mm_loadu_si128(__A));
6303 }
6304
test_mm512_maskz_broadcast_i32x4(__mmask16 __M,__m128i const * __A)6305 __m512i test_mm512_maskz_broadcast_i32x4(__mmask16 __M, __m128i const* __A) {
6306 // CHECK-LABEL: @test_mm512_maskz_broadcast_i32x4
6307 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6308 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6309 return _mm512_maskz_broadcast_i32x4(__M, _mm_loadu_si128(__A));
6310 }
6311
test_mm512_broadcast_i64x4(__m256i const * __A)6312 __m512i test_mm512_broadcast_i64x4(__m256i const* __A) {
6313 // CHECK-LABEL: @test_mm512_broadcast_i64x4
6314 // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6315 return _mm512_broadcast_i64x4(_mm256_loadu_si256(__A));
6316 }
6317
test_mm512_mask_broadcast_i64x4(__m512i __O,__mmask8 __M,__m256i const * __A)6318 __m512i test_mm512_mask_broadcast_i64x4(__m512i __O, __mmask8 __M, __m256i const* __A) {
6319 // CHECK-LABEL: @test_mm512_mask_broadcast_i64x4
6320 // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6321 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6322 return _mm512_mask_broadcast_i64x4(__O, __M, _mm256_loadu_si256(__A));
6323 }
6324
test_mm512_maskz_broadcast_i64x4(__mmask8 __M,__m256i const * __A)6325 __m512i test_mm512_maskz_broadcast_i64x4(__mmask8 __M, __m256i const* __A) {
6326 // CHECK-LABEL: @test_mm512_maskz_broadcast_i64x4
6327 // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6328 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6329 return _mm512_maskz_broadcast_i64x4(__M, _mm256_loadu_si256(__A));
6330 }
6331
test_mm512_broadcastsd_pd(__m128d __A)6332 __m512d test_mm512_broadcastsd_pd(__m128d __A) {
6333 // CHECK-LABEL: @test_mm512_broadcastsd_pd
6334 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> zeroinitializer
6335 return _mm512_broadcastsd_pd(__A);
6336 }
6337
test_mm512_mask_broadcastsd_pd(__m512d __O,__mmask8 __M,__m128d __A)6338 __m512d test_mm512_mask_broadcastsd_pd(__m512d __O, __mmask8 __M, __m128d __A) {
6339 // CHECK-LABEL: @test_mm512_mask_broadcastsd_pd
6340 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> zeroinitializer
6341 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6342 return _mm512_mask_broadcastsd_pd(__O, __M, __A);
6343 }
6344
test_mm512_maskz_broadcastsd_pd(__mmask8 __M,__m128d __A)6345 __m512d test_mm512_maskz_broadcastsd_pd(__mmask8 __M, __m128d __A) {
6346 // CHECK-LABEL: @test_mm512_maskz_broadcastsd_pd
6347 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> zeroinitializer
6348 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6349 return _mm512_maskz_broadcastsd_pd(__M, __A);
6350 }
6351
test_mm512_broadcastss_ps(__m128 __A)6352 __m512 test_mm512_broadcastss_ps(__m128 __A) {
6353 // CHECK-LABEL: @test_mm512_broadcastss_ps
6354 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> zeroinitializer
6355 return _mm512_broadcastss_ps(__A);
6356 }
6357
test_mm512_mask_broadcastss_ps(__m512 __O,__mmask16 __M,__m128 __A)6358 __m512 test_mm512_mask_broadcastss_ps(__m512 __O, __mmask16 __M, __m128 __A) {
6359 // CHECK-LABEL: @test_mm512_mask_broadcastss_ps
6360 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> zeroinitializer
6361 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6362 return _mm512_mask_broadcastss_ps(__O, __M, __A);
6363 }
6364
test_mm512_maskz_broadcastss_ps(__mmask16 __M,__m128 __A)6365 __m512 test_mm512_maskz_broadcastss_ps(__mmask16 __M, __m128 __A) {
6366 // CHECK-LABEL: @test_mm512_maskz_broadcastss_ps
6367 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> zeroinitializer
6368 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6369 return _mm512_maskz_broadcastss_ps(__M, __A);
6370 }
6371
test_mm512_broadcastd_epi32(__m128i __A)6372 __m512i test_mm512_broadcastd_epi32(__m128i __A) {
6373 // CHECK-LABEL: @test_mm512_broadcastd_epi32
6374 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> zeroinitializer
6375 return _mm512_broadcastd_epi32(__A);
6376 }
6377
test_mm512_mask_broadcastd_epi32(__m512i __O,__mmask16 __M,__m128i __A)6378 __m512i test_mm512_mask_broadcastd_epi32(__m512i __O, __mmask16 __M, __m128i __A) {
6379 // CHECK-LABEL: @test_mm512_mask_broadcastd_epi32
6380 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> zeroinitializer
6381 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6382 return _mm512_mask_broadcastd_epi32(__O, __M, __A);
6383 }
6384
test_mm512_maskz_broadcastd_epi32(__mmask16 __M,__m128i __A)6385 __m512i test_mm512_maskz_broadcastd_epi32(__mmask16 __M, __m128i __A) {
6386 // CHECK-LABEL: @test_mm512_maskz_broadcastd_epi32
6387 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> zeroinitializer
6388 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6389 return _mm512_maskz_broadcastd_epi32(__M, __A);
6390 }
6391
test_mm512_broadcastq_epi64(__m128i __A)6392 __m512i test_mm512_broadcastq_epi64(__m128i __A) {
6393 // CHECK-LABEL: @test_mm512_broadcastq_epi64
6394 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> zeroinitializer
6395 return _mm512_broadcastq_epi64(__A);
6396 }
6397
test_mm512_mask_broadcastq_epi64(__m512i __O,__mmask8 __M,__m128i __A)6398 __m512i test_mm512_mask_broadcastq_epi64(__m512i __O, __mmask8 __M, __m128i __A) {
6399 // CHECK-LABEL: @test_mm512_mask_broadcastq_epi64
6400 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> zeroinitializer
6401 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6402 return _mm512_mask_broadcastq_epi64(__O, __M, __A);
6403 }
6404
test_mm512_maskz_broadcastq_epi64(__mmask8 __M,__m128i __A)6405 __m512i test_mm512_maskz_broadcastq_epi64(__mmask8 __M, __m128i __A) {
6406 // CHECK-LABEL: @test_mm512_maskz_broadcastq_epi64
6407 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> zeroinitializer
6408 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6409 return _mm512_maskz_broadcastq_epi64(__M, __A);
6410 }
6411
test_mm512_cvtsepi32_epi8(__m512i __A)6412 __m128i test_mm512_cvtsepi32_epi8(__m512i __A) {
6413 // CHECK-LABEL: @test_mm512_cvtsepi32_epi8
6414 // CHECK: @llvm.x86.avx512.mask.pmovs.db.512
6415 return _mm512_cvtsepi32_epi8(__A);
6416 }
6417
test_mm512_mask_cvtsepi32_epi8(__m128i __O,__mmask16 __M,__m512i __A)6418 __m128i test_mm512_mask_cvtsepi32_epi8(__m128i __O, __mmask16 __M, __m512i __A) {
6419 // CHECK-LABEL: @test_mm512_mask_cvtsepi32_epi8
6420 // CHECK: @llvm.x86.avx512.mask.pmovs.db.512
6421 return _mm512_mask_cvtsepi32_epi8(__O, __M, __A);
6422 }
6423
test_mm512_maskz_cvtsepi32_epi8(__mmask16 __M,__m512i __A)6424 __m128i test_mm512_maskz_cvtsepi32_epi8(__mmask16 __M, __m512i __A) {
6425 // CHECK-LABEL: @test_mm512_maskz_cvtsepi32_epi8
6426 // CHECK: @llvm.x86.avx512.mask.pmovs.db.512
6427 return _mm512_maskz_cvtsepi32_epi8(__M, __A);
6428 }
6429
test_mm512_mask_cvtsepi32_storeu_epi8(void * __P,__mmask16 __M,__m512i __A)6430 void test_mm512_mask_cvtsepi32_storeu_epi8(void * __P, __mmask16 __M, __m512i __A) {
6431 // CHECK-LABEL: @test_mm512_mask_cvtsepi32_storeu_epi8
6432 // CHECK: @llvm.x86.avx512.mask.pmovs.db.mem.512
6433 return _mm512_mask_cvtsepi32_storeu_epi8(__P, __M, __A);
6434 }
6435
test_mm512_cvtsepi32_epi16(__m512i __A)6436 __m256i test_mm512_cvtsepi32_epi16(__m512i __A) {
6437 // CHECK-LABEL: @test_mm512_cvtsepi32_epi16
6438 // CHECK: @llvm.x86.avx512.mask.pmovs.dw.512
6439 return _mm512_cvtsepi32_epi16(__A);
6440 }
6441
test_mm512_mask_cvtsepi32_epi16(__m256i __O,__mmask16 __M,__m512i __A)6442 __m256i test_mm512_mask_cvtsepi32_epi16(__m256i __O, __mmask16 __M, __m512i __A) {
6443 // CHECK-LABEL: @test_mm512_mask_cvtsepi32_epi16
6444 // CHECK: @llvm.x86.avx512.mask.pmovs.dw.512
6445 return _mm512_mask_cvtsepi32_epi16(__O, __M, __A);
6446 }
6447
test_mm512_maskz_cvtsepi32_epi16(__mmask16 __M,__m512i __A)6448 __m256i test_mm512_maskz_cvtsepi32_epi16(__mmask16 __M, __m512i __A) {
6449 // CHECK-LABEL: @test_mm512_maskz_cvtsepi32_epi16
6450 // CHECK: @llvm.x86.avx512.mask.pmovs.dw.512
6451 return _mm512_maskz_cvtsepi32_epi16(__M, __A);
6452 }
6453
test_mm512_mask_cvtsepi32_storeu_epi16(void * __P,__mmask16 __M,__m512i __A)6454 void test_mm512_mask_cvtsepi32_storeu_epi16(void *__P, __mmask16 __M, __m512i __A) {
6455 // CHECK-LABEL: @test_mm512_mask_cvtsepi32_storeu_epi16
6456 // CHECK: @llvm.x86.avx512.mask.pmovs.dw.mem.512
6457 return _mm512_mask_cvtsepi32_storeu_epi16(__P, __M, __A);
6458 }
6459
test_mm512_cvtsepi64_epi8(__m512i __A)6460 __m128i test_mm512_cvtsepi64_epi8(__m512i __A) {
6461 // CHECK-LABEL: @test_mm512_cvtsepi64_epi8
6462 // CHECK: @llvm.x86.avx512.mask.pmovs.qb.512
6463 return _mm512_cvtsepi64_epi8(__A);
6464 }
6465
test_mm512_mask_cvtsepi64_epi8(__m128i __O,__mmask8 __M,__m512i __A)6466 __m128i test_mm512_mask_cvtsepi64_epi8(__m128i __O, __mmask8 __M, __m512i __A) {
6467 // CHECK-LABEL: @test_mm512_mask_cvtsepi64_epi8
6468 // CHECK: @llvm.x86.avx512.mask.pmovs.qb.512
6469 return _mm512_mask_cvtsepi64_epi8(__O, __M, __A);
6470 }
6471
test_mm512_maskz_cvtsepi64_epi8(__mmask8 __M,__m512i __A)6472 __m128i test_mm512_maskz_cvtsepi64_epi8(__mmask8 __M, __m512i __A) {
6473 // CHECK-LABEL: @test_mm512_maskz_cvtsepi64_epi8
6474 // CHECK: @llvm.x86.avx512.mask.pmovs.qb.512
6475 return _mm512_maskz_cvtsepi64_epi8(__M, __A);
6476 }
6477
test_mm512_mask_cvtsepi64_storeu_epi8(void * __P,__mmask8 __M,__m512i __A)6478 void test_mm512_mask_cvtsepi64_storeu_epi8(void * __P, __mmask8 __M, __m512i __A) {
6479 // CHECK-LABEL: @test_mm512_mask_cvtsepi64_storeu_epi8
6480 // CHECK: @llvm.x86.avx512.mask.pmovs.qb.mem.512
6481 return _mm512_mask_cvtsepi64_storeu_epi8(__P, __M, __A);
6482 }
6483
test_mm512_cvtsepi64_epi32(__m512i __A)6484 __m256i test_mm512_cvtsepi64_epi32(__m512i __A) {
6485 // CHECK-LABEL: @test_mm512_cvtsepi64_epi32
6486 // CHECK: @llvm.x86.avx512.mask.pmovs.qd.512
6487 return _mm512_cvtsepi64_epi32(__A);
6488 }
6489
test_mm512_mask_cvtsepi64_epi32(__m256i __O,__mmask8 __M,__m512i __A)6490 __m256i test_mm512_mask_cvtsepi64_epi32(__m256i __O, __mmask8 __M, __m512i __A) {
6491 // CHECK-LABEL: @test_mm512_mask_cvtsepi64_epi32
6492 // CHECK: @llvm.x86.avx512.mask.pmovs.qd.512
6493 return _mm512_mask_cvtsepi64_epi32(__O, __M, __A);
6494 }
6495
test_mm512_maskz_cvtsepi64_epi32(__mmask8 __M,__m512i __A)6496 __m256i test_mm512_maskz_cvtsepi64_epi32(__mmask8 __M, __m512i __A) {
6497 // CHECK-LABEL: @test_mm512_maskz_cvtsepi64_epi32
6498 // CHECK: @llvm.x86.avx512.mask.pmovs.qd.512
6499 return _mm512_maskz_cvtsepi64_epi32(__M, __A);
6500 }
6501
test_mm512_mask_cvtsepi64_storeu_epi32(void * __P,__mmask8 __M,__m512i __A)6502 void test_mm512_mask_cvtsepi64_storeu_epi32(void *__P, __mmask8 __M, __m512i __A) {
6503 // CHECK-LABEL: @test_mm512_mask_cvtsepi64_storeu_epi32
6504 // CHECK: @llvm.x86.avx512.mask.pmovs.qd.mem.512
6505 return _mm512_mask_cvtsepi64_storeu_epi32(__P, __M, __A);
6506 }
6507
test_mm512_cvtsepi64_epi16(__m512i __A)6508 __m128i test_mm512_cvtsepi64_epi16(__m512i __A) {
6509 // CHECK-LABEL: @test_mm512_cvtsepi64_epi16
6510 // CHECK: @llvm.x86.avx512.mask.pmovs.qw.512
6511 return _mm512_cvtsepi64_epi16(__A);
6512 }
6513
test_mm512_mask_cvtsepi64_epi16(__m128i __O,__mmask8 __M,__m512i __A)6514 __m128i test_mm512_mask_cvtsepi64_epi16(__m128i __O, __mmask8 __M, __m512i __A) {
6515 // CHECK-LABEL: @test_mm512_mask_cvtsepi64_epi16
6516 // CHECK: @llvm.x86.avx512.mask.pmovs.qw.512
6517 return _mm512_mask_cvtsepi64_epi16(__O, __M, __A);
6518 }
6519
test_mm512_maskz_cvtsepi64_epi16(__mmask8 __M,__m512i __A)6520 __m128i test_mm512_maskz_cvtsepi64_epi16(__mmask8 __M, __m512i __A) {
6521 // CHECK-LABEL: @test_mm512_maskz_cvtsepi64_epi16
6522 // CHECK: @llvm.x86.avx512.mask.pmovs.qw.512
6523 return _mm512_maskz_cvtsepi64_epi16(__M, __A);
6524 }
6525
test_mm512_mask_cvtsepi64_storeu_epi16(void * __P,__mmask8 __M,__m512i __A)6526 void test_mm512_mask_cvtsepi64_storeu_epi16(void * __P, __mmask8 __M, __m512i __A) {
6527 // CHECK-LABEL: @test_mm512_mask_cvtsepi64_storeu_epi16
6528 // CHECK: @llvm.x86.avx512.mask.pmovs.qw.mem.512
6529 return _mm512_mask_cvtsepi64_storeu_epi16(__P, __M, __A);
6530 }
6531
test_mm512_cvtusepi32_epi8(__m512i __A)6532 __m128i test_mm512_cvtusepi32_epi8(__m512i __A) {
6533 // CHECK-LABEL: @test_mm512_cvtusepi32_epi8
6534 // CHECK: @llvm.x86.avx512.mask.pmovus.db.512
6535 return _mm512_cvtusepi32_epi8(__A);
6536 }
6537
test_mm512_mask_cvtusepi32_epi8(__m128i __O,__mmask16 __M,__m512i __A)6538 __m128i test_mm512_mask_cvtusepi32_epi8(__m128i __O, __mmask16 __M, __m512i __A) {
6539 // CHECK-LABEL: @test_mm512_mask_cvtusepi32_epi8
6540 // CHECK: @llvm.x86.avx512.mask.pmovus.db.512
6541 return _mm512_mask_cvtusepi32_epi8(__O, __M, __A);
6542 }
6543
test_mm512_maskz_cvtusepi32_epi8(__mmask16 __M,__m512i __A)6544 __m128i test_mm512_maskz_cvtusepi32_epi8(__mmask16 __M, __m512i __A) {
6545 // CHECK-LABEL: @test_mm512_maskz_cvtusepi32_epi8
6546 // CHECK: @llvm.x86.avx512.mask.pmovus.db.512
6547 return _mm512_maskz_cvtusepi32_epi8(__M, __A);
6548 }
6549
test_mm512_mask_cvtusepi32_storeu_epi8(void * __P,__mmask16 __M,__m512i __A)6550 void test_mm512_mask_cvtusepi32_storeu_epi8(void * __P, __mmask16 __M, __m512i __A) {
6551 // CHECK-LABEL: @test_mm512_mask_cvtusepi32_storeu_epi8
6552 // CHECK: @llvm.x86.avx512.mask.pmovus.db.mem.512
6553 return _mm512_mask_cvtusepi32_storeu_epi8(__P, __M, __A);
6554 }
6555
test_mm512_cvtusepi32_epi16(__m512i __A)6556 __m256i test_mm512_cvtusepi32_epi16(__m512i __A) {
6557 // CHECK-LABEL: @test_mm512_cvtusepi32_epi16
6558 // CHECK: @llvm.x86.avx512.mask.pmovus.dw.512
6559 return _mm512_cvtusepi32_epi16(__A);
6560 }
6561
test_mm512_mask_cvtusepi32_epi16(__m256i __O,__mmask16 __M,__m512i __A)6562 __m256i test_mm512_mask_cvtusepi32_epi16(__m256i __O, __mmask16 __M, __m512i __A) {
6563 // CHECK-LABEL: @test_mm512_mask_cvtusepi32_epi16
6564 // CHECK: @llvm.x86.avx512.mask.pmovus.dw.512
6565 return _mm512_mask_cvtusepi32_epi16(__O, __M, __A);
6566 }
6567
test_mm512_maskz_cvtusepi32_epi16(__mmask16 __M,__m512i __A)6568 __m256i test_mm512_maskz_cvtusepi32_epi16(__mmask16 __M, __m512i __A) {
6569 // CHECK-LABEL: @test_mm512_maskz_cvtusepi32_epi16
6570 // CHECK: @llvm.x86.avx512.mask.pmovus.dw.512
6571 return _mm512_maskz_cvtusepi32_epi16(__M, __A);
6572 }
6573
test_mm512_mask_cvtusepi32_storeu_epi16(void * __P,__mmask16 __M,__m512i __A)6574 void test_mm512_mask_cvtusepi32_storeu_epi16(void *__P, __mmask16 __M, __m512i __A) {
6575 // CHECK-LABEL: @test_mm512_mask_cvtusepi32_storeu_epi16
6576 // CHECK: @llvm.x86.avx512.mask.pmovus.dw.mem.512
6577 return _mm512_mask_cvtusepi32_storeu_epi16(__P, __M, __A);
6578 }
6579
test_mm512_cvtusepi64_epi8(__m512i __A)6580 __m128i test_mm512_cvtusepi64_epi8(__m512i __A) {
6581 // CHECK-LABEL: @test_mm512_cvtusepi64_epi8
6582 // CHECK: @llvm.x86.avx512.mask.pmovus.qb.512
6583 return _mm512_cvtusepi64_epi8(__A);
6584 }
6585
test_mm512_mask_cvtusepi64_epi8(__m128i __O,__mmask8 __M,__m512i __A)6586 __m128i test_mm512_mask_cvtusepi64_epi8(__m128i __O, __mmask8 __M, __m512i __A) {
6587 // CHECK-LABEL: @test_mm512_mask_cvtusepi64_epi8
6588 // CHECK: @llvm.x86.avx512.mask.pmovus.qb.512
6589 return _mm512_mask_cvtusepi64_epi8(__O, __M, __A);
6590 }
6591
test_mm512_maskz_cvtusepi64_epi8(__mmask8 __M,__m512i __A)6592 __m128i test_mm512_maskz_cvtusepi64_epi8(__mmask8 __M, __m512i __A) {
6593 // CHECK-LABEL: @test_mm512_maskz_cvtusepi64_epi8
6594 // CHECK: @llvm.x86.avx512.mask.pmovus.qb.512
6595 return _mm512_maskz_cvtusepi64_epi8(__M, __A);
6596 }
6597
test_mm512_mask_cvtusepi64_storeu_epi8(void * __P,__mmask8 __M,__m512i __A)6598 void test_mm512_mask_cvtusepi64_storeu_epi8(void * __P, __mmask8 __M, __m512i __A) {
6599 // CHECK-LABEL: @test_mm512_mask_cvtusepi64_storeu_epi8
6600 // CHECK: @llvm.x86.avx512.mask.pmovus.qb.mem.512
6601 return _mm512_mask_cvtusepi64_storeu_epi8(__P, __M, __A);
6602 }
6603
test_mm512_cvtusepi64_epi32(__m512i __A)6604 __m256i test_mm512_cvtusepi64_epi32(__m512i __A) {
6605 // CHECK-LABEL: @test_mm512_cvtusepi64_epi32
6606 // CHECK: @llvm.x86.avx512.mask.pmovus.qd.512
6607 return _mm512_cvtusepi64_epi32(__A);
6608 }
6609
test_mm512_mask_cvtusepi64_epi32(__m256i __O,__mmask8 __M,__m512i __A)6610 __m256i test_mm512_mask_cvtusepi64_epi32(__m256i __O, __mmask8 __M, __m512i __A) {
6611 // CHECK-LABEL: @test_mm512_mask_cvtusepi64_epi32
6612 // CHECK: @llvm.x86.avx512.mask.pmovus.qd.512
6613 return _mm512_mask_cvtusepi64_epi32(__O, __M, __A);
6614 }
6615
test_mm512_maskz_cvtusepi64_epi32(__mmask8 __M,__m512i __A)6616 __m256i test_mm512_maskz_cvtusepi64_epi32(__mmask8 __M, __m512i __A) {
6617 // CHECK-LABEL: @test_mm512_maskz_cvtusepi64_epi32
6618 // CHECK: @llvm.x86.avx512.mask.pmovus.qd.512
6619 return _mm512_maskz_cvtusepi64_epi32(__M, __A);
6620 }
6621
test_mm512_mask_cvtusepi64_storeu_epi32(void * __P,__mmask8 __M,__m512i __A)6622 void test_mm512_mask_cvtusepi64_storeu_epi32(void* __P, __mmask8 __M, __m512i __A) {
6623 // CHECK-LABEL: @test_mm512_mask_cvtusepi64_storeu_epi32
6624 // CHECK: @llvm.x86.avx512.mask.pmovus.qd.mem.512
6625 return _mm512_mask_cvtusepi64_storeu_epi32(__P, __M, __A);
6626 }
6627
test_mm512_cvtusepi64_epi16(__m512i __A)6628 __m128i test_mm512_cvtusepi64_epi16(__m512i __A) {
6629 // CHECK-LABEL: @test_mm512_cvtusepi64_epi16
6630 // CHECK: @llvm.x86.avx512.mask.pmovus.qw.512
6631 return _mm512_cvtusepi64_epi16(__A);
6632 }
6633
test_mm512_mask_cvtusepi64_epi16(__m128i __O,__mmask8 __M,__m512i __A)6634 __m128i test_mm512_mask_cvtusepi64_epi16(__m128i __O, __mmask8 __M, __m512i __A) {
6635 // CHECK-LABEL: @test_mm512_mask_cvtusepi64_epi16
6636 // CHECK: @llvm.x86.avx512.mask.pmovus.qw.512
6637 return _mm512_mask_cvtusepi64_epi16(__O, __M, __A);
6638 }
6639
test_mm512_maskz_cvtusepi64_epi16(__mmask8 __M,__m512i __A)6640 __m128i test_mm512_maskz_cvtusepi64_epi16(__mmask8 __M, __m512i __A) {
6641 // CHECK-LABEL: @test_mm512_maskz_cvtusepi64_epi16
6642 // CHECK: @llvm.x86.avx512.mask.pmovus.qw.512
6643 return _mm512_maskz_cvtusepi64_epi16(__M, __A);
6644 }
6645
test_mm512_mask_cvtusepi64_storeu_epi16(void * __P,__mmask8 __M,__m512i __A)6646 void test_mm512_mask_cvtusepi64_storeu_epi16(void *__P, __mmask8 __M, __m512i __A) {
6647 // CHECK-LABEL: @test_mm512_mask_cvtusepi64_storeu_epi16
6648 // CHECK: @llvm.x86.avx512.mask.pmovus.qw.mem.512
6649 return _mm512_mask_cvtusepi64_storeu_epi16(__P, __M, __A);
6650 }
6651
test_mm512_cvtepi32_epi8(__m512i __A)6652 __m128i test_mm512_cvtepi32_epi8(__m512i __A) {
6653 // CHECK-LABEL: @test_mm512_cvtepi32_epi8
6654 // CHECK: trunc <16 x i32> %{{.*}} to <16 x i8>
6655 return _mm512_cvtepi32_epi8(__A);
6656 }
6657
test_mm512_mask_cvtepi32_epi8(__m128i __O,__mmask16 __M,__m512i __A)6658 __m128i test_mm512_mask_cvtepi32_epi8(__m128i __O, __mmask16 __M, __m512i __A) {
6659 // CHECK-LABEL: @test_mm512_mask_cvtepi32_epi8
6660 // CHECK: @llvm.x86.avx512.mask.pmov.db.512
6661 return _mm512_mask_cvtepi32_epi8(__O, __M, __A);
6662 }
6663
test_mm512_maskz_cvtepi32_epi8(__mmask16 __M,__m512i __A)6664 __m128i test_mm512_maskz_cvtepi32_epi8(__mmask16 __M, __m512i __A) {
6665 // CHECK-LABEL: @test_mm512_maskz_cvtepi32_epi8
6666 // CHECK: @llvm.x86.avx512.mask.pmov.db.512
6667 return _mm512_maskz_cvtepi32_epi8(__M, __A);
6668 }
6669
test_mm512_mask_cvtepi32_storeu_epi8(void * __P,__mmask16 __M,__m512i __A)6670 void test_mm512_mask_cvtepi32_storeu_epi8(void * __P, __mmask16 __M, __m512i __A) {
6671 // CHECK-LABEL: @test_mm512_mask_cvtepi32_storeu_epi8
6672 // CHECK: @llvm.x86.avx512.mask.pmov.db.mem.512
6673 return _mm512_mask_cvtepi32_storeu_epi8(__P, __M, __A);
6674 }
6675
test_mm512_cvtepi32_epi16(__m512i __A)6676 __m256i test_mm512_cvtepi32_epi16(__m512i __A) {
6677 // CHECK-LABEL: @test_mm512_cvtepi32_epi16
6678 // CHECK: trunc <16 x i32> %{{.*}} to <16 x i16>
6679 return _mm512_cvtepi32_epi16(__A);
6680 }
6681
test_mm512_mask_cvtepi32_epi16(__m256i __O,__mmask16 __M,__m512i __A)6682 __m256i test_mm512_mask_cvtepi32_epi16(__m256i __O, __mmask16 __M, __m512i __A) {
6683 // CHECK-LABEL: @test_mm512_mask_cvtepi32_epi16
6684 // CHECK: @llvm.x86.avx512.mask.pmov.dw.512
6685 return _mm512_mask_cvtepi32_epi16(__O, __M, __A);
6686 }
6687
test_mm512_maskz_cvtepi32_epi16(__mmask16 __M,__m512i __A)6688 __m256i test_mm512_maskz_cvtepi32_epi16(__mmask16 __M, __m512i __A) {
6689 // CHECK-LABEL: @test_mm512_maskz_cvtepi32_epi16
6690 // CHECK: @llvm.x86.avx512.mask.pmov.dw.512
6691 return _mm512_maskz_cvtepi32_epi16(__M, __A);
6692 }
6693
test_mm512_mask_cvtepi32_storeu_epi16(void * __P,__mmask16 __M,__m512i __A)6694 void test_mm512_mask_cvtepi32_storeu_epi16(void * __P, __mmask16 __M, __m512i __A) {
6695 // CHECK-LABEL: @test_mm512_mask_cvtepi32_storeu_epi16
6696 // CHECK: @llvm.x86.avx512.mask.pmov.dw.mem.512
6697 return _mm512_mask_cvtepi32_storeu_epi16(__P, __M, __A);
6698 }
6699
test_mm512_cvtepi64_epi8(__m512i __A)6700 __m128i test_mm512_cvtepi64_epi8(__m512i __A) {
6701 // CHECK-LABEL: @test_mm512_cvtepi64_epi8
6702 // CHECK: @llvm.x86.avx512.mask.pmov.qb.512
6703 return _mm512_cvtepi64_epi8(__A);
6704 }
6705
test_mm512_mask_cvtepi64_epi8(__m128i __O,__mmask8 __M,__m512i __A)6706 __m128i test_mm512_mask_cvtepi64_epi8(__m128i __O, __mmask8 __M, __m512i __A) {
6707 // CHECK-LABEL: @test_mm512_mask_cvtepi64_epi8
6708 // CHECK: @llvm.x86.avx512.mask.pmov.qb.512
6709 return _mm512_mask_cvtepi64_epi8(__O, __M, __A);
6710 }
6711
test_mm512_maskz_cvtepi64_epi8(__mmask8 __M,__m512i __A)6712 __m128i test_mm512_maskz_cvtepi64_epi8(__mmask8 __M, __m512i __A) {
6713 // CHECK-LABEL: @test_mm512_maskz_cvtepi64_epi8
6714 // CHECK: @llvm.x86.avx512.mask.pmov.qb.512
6715 return _mm512_maskz_cvtepi64_epi8(__M, __A);
6716 }
6717
test_mm512_mask_cvtepi64_storeu_epi8(void * __P,__mmask8 __M,__m512i __A)6718 void test_mm512_mask_cvtepi64_storeu_epi8(void * __P, __mmask8 __M, __m512i __A) {
6719 // CHECK-LABEL: @test_mm512_mask_cvtepi64_storeu_epi8
6720 // CHECK: @llvm.x86.avx512.mask.pmov.qb.mem.512
6721 return _mm512_mask_cvtepi64_storeu_epi8(__P, __M, __A);
6722 }
6723
test_mm512_cvtepi64_epi32(__m512i __A)6724 __m256i test_mm512_cvtepi64_epi32(__m512i __A) {
6725 // CHECK-LABEL: @test_mm512_cvtepi64_epi32
6726 // CHECK: trunc <8 x i64> %{{.*}} to <8 x i32>
6727 return _mm512_cvtepi64_epi32(__A);
6728 }
6729
test_mm512_mask_cvtepi64_epi32(__m256i __O,__mmask8 __M,__m512i __A)6730 __m256i test_mm512_mask_cvtepi64_epi32(__m256i __O, __mmask8 __M, __m512i __A) {
6731 // CHECK-LABEL: @test_mm512_mask_cvtepi64_epi32
6732 // CHECK: trunc <8 x i64> %{{.*}} to <8 x i32>
6733 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6734 return _mm512_mask_cvtepi64_epi32(__O, __M, __A);
6735 }
6736
test_mm512_maskz_cvtepi64_epi32(__mmask8 __M,__m512i __A)6737 __m256i test_mm512_maskz_cvtepi64_epi32(__mmask8 __M, __m512i __A) {
6738 // CHECK-LABEL: @test_mm512_maskz_cvtepi64_epi32
6739 // CHECK: trunc <8 x i64> %{{.*}} to <8 x i32>
6740 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6741 return _mm512_maskz_cvtepi64_epi32(__M, __A);
6742 }
6743
test_mm512_mask_cvtepi64_storeu_epi32(void * __P,__mmask8 __M,__m512i __A)6744 void test_mm512_mask_cvtepi64_storeu_epi32(void* __P, __mmask8 __M, __m512i __A) {
6745 // CHECK-LABEL: @test_mm512_mask_cvtepi64_storeu_epi32
6746 // CHECK: @llvm.x86.avx512.mask.pmov.qd.mem.512
6747 return _mm512_mask_cvtepi64_storeu_epi32(__P, __M, __A);
6748 }
6749
test_mm512_cvtepi64_epi16(__m512i __A)6750 __m128i test_mm512_cvtepi64_epi16(__m512i __A) {
6751 // CHECK-LABEL: @test_mm512_cvtepi64_epi16
6752 // CHECK: trunc <8 x i64> %{{.*}} to <8 x i16>
6753 return _mm512_cvtepi64_epi16(__A);
6754 }
6755
test_mm512_mask_cvtepi64_epi16(__m128i __O,__mmask8 __M,__m512i __A)6756 __m128i test_mm512_mask_cvtepi64_epi16(__m128i __O, __mmask8 __M, __m512i __A) {
6757 // CHECK-LABEL: @test_mm512_mask_cvtepi64_epi16
6758 // CHECK: @llvm.x86.avx512.mask.pmov.qw.512
6759 return _mm512_mask_cvtepi64_epi16(__O, __M, __A);
6760 }
6761
test_mm512_maskz_cvtepi64_epi16(__mmask8 __M,__m512i __A)6762 __m128i test_mm512_maskz_cvtepi64_epi16(__mmask8 __M, __m512i __A) {
6763 // CHECK-LABEL: @test_mm512_maskz_cvtepi64_epi16
6764 // CHECK: @llvm.x86.avx512.mask.pmov.qw.512
6765 return _mm512_maskz_cvtepi64_epi16(__M, __A);
6766 }
6767
test_mm512_mask_cvtepi64_storeu_epi16(void * __P,__mmask8 __M,__m512i __A)6768 void test_mm512_mask_cvtepi64_storeu_epi16(void *__P, __mmask8 __M, __m512i __A) {
6769 // CHECK-LABEL: @test_mm512_mask_cvtepi64_storeu_epi16
6770 // CHECK: @llvm.x86.avx512.mask.pmov.qw.mem.512
6771 return _mm512_mask_cvtepi64_storeu_epi16(__P, __M, __A);
6772 }
6773
test_mm512_extracti32x4_epi32(__m512i __A)6774 __m128i test_mm512_extracti32x4_epi32(__m512i __A) {
6775 // CHECK-LABEL: @test_mm512_extracti32x4_epi32
6776 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> undef, <4 x i32> <i32 12, i32 13, i32 14, i32 15>
6777 return _mm512_extracti32x4_epi32(__A, 3);
6778 }
6779
test_mm512_mask_extracti32x4_epi32(__m128i __W,__mmask8 __U,__m512i __A)6780 __m128i test_mm512_mask_extracti32x4_epi32(__m128i __W, __mmask8 __U, __m512i __A) {
6781 // CHECK-LABEL: @test_mm512_mask_extracti32x4_epi32
6782 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> undef, <4 x i32> <i32 12, i32 13, i32 14, i32 15>
6783 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6784 return _mm512_mask_extracti32x4_epi32(__W, __U, __A, 3);
6785 }
6786
test_mm512_maskz_extracti32x4_epi32(__mmask8 __U,__m512i __A)6787 __m128i test_mm512_maskz_extracti32x4_epi32(__mmask8 __U, __m512i __A) {
6788 // CHECK-LABEL: @test_mm512_maskz_extracti32x4_epi32
6789 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> undef, <4 x i32> <i32 12, i32 13, i32 14, i32 15>
6790 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6791 return _mm512_maskz_extracti32x4_epi32(__U, __A, 3);
6792 }
6793
test_mm512_extracti64x4_epi64(__m512i __A)6794 __m256i test_mm512_extracti64x4_epi64(__m512i __A) {
6795 // CHECK-LABEL: @test_mm512_extracti64x4_epi64
6796 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
6797 return _mm512_extracti64x4_epi64(__A, 1);
6798 }
6799
test_mm512_mask_extracti64x4_epi64(__m256i __W,__mmask8 __U,__m512i __A)6800 __m256i test_mm512_mask_extracti64x4_epi64(__m256i __W, __mmask8 __U, __m512i __A) {
6801 // CHECK-LABEL: @test_mm512_mask_extracti64x4_epi64
6802 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
6803 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6804 return _mm512_mask_extracti64x4_epi64(__W, __U, __A, 1);
6805 }
6806
test_mm512_maskz_extracti64x4_epi64(__mmask8 __U,__m512i __A)6807 __m256i test_mm512_maskz_extracti64x4_epi64(__mmask8 __U, __m512i __A) {
6808 // CHECK-LABEL: @test_mm512_maskz_extracti64x4_epi64
6809 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
6810 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6811 return _mm512_maskz_extracti64x4_epi64(__U, __A, 1);
6812 }
6813
test_mm512_insertf64x4(__m512d __A,__m256d __B)6814 __m512d test_mm512_insertf64x4(__m512d __A, __m256d __B) {
6815 // CHECK-LABEL: @test_mm512_insertf64x4
6816 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
6817 return _mm512_insertf64x4(__A, __B, 1);
6818 }
6819
test_mm512_mask_insertf64x4(__m512d __W,__mmask8 __U,__m512d __A,__m256d __B)6820 __m512d test_mm512_mask_insertf64x4(__m512d __W, __mmask8 __U, __m512d __A, __m256d __B) {
6821 // CHECK-LABEL: @test_mm512_mask_insertf64x4
6822 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
6823 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6824 return _mm512_mask_insertf64x4(__W, __U, __A, __B, 1);
6825 }
6826
test_mm512_maskz_insertf64x4(__mmask8 __U,__m512d __A,__m256d __B)6827 __m512d test_mm512_maskz_insertf64x4(__mmask8 __U, __m512d __A, __m256d __B) {
6828 // CHECK-LABEL: @test_mm512_maskz_insertf64x4
6829 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
6830 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6831 return _mm512_maskz_insertf64x4(__U, __A, __B, 1);
6832 }
6833
test_mm512_inserti64x4(__m512i __A,__m256i __B)6834 __m512i test_mm512_inserti64x4(__m512i __A, __m256i __B) {
6835 // CHECK-LABEL: @test_mm512_inserti64x4
6836 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
6837 return _mm512_inserti64x4(__A, __B, 1);
6838 }
6839
test_mm512_mask_inserti64x4(__m512i __W,__mmask8 __U,__m512i __A,__m256i __B)6840 __m512i test_mm512_mask_inserti64x4(__m512i __W, __mmask8 __U, __m512i __A, __m256i __B) {
6841 // CHECK-LABEL: @test_mm512_mask_inserti64x4
6842 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
6843 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6844 return _mm512_mask_inserti64x4(__W, __U, __A, __B, 1);
6845 }
6846
test_mm512_maskz_inserti64x4(__mmask8 __U,__m512i __A,__m256i __B)6847 __m512i test_mm512_maskz_inserti64x4(__mmask8 __U, __m512i __A, __m256i __B) {
6848 // CHECK-LABEL: @test_mm512_maskz_inserti64x4
6849 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
6850 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6851 return _mm512_maskz_inserti64x4(__U, __A, __B, 1);
6852 }
6853
test_mm512_insertf32x4(__m512 __A,__m128 __B)6854 __m512 test_mm512_insertf32x4(__m512 __A, __m128 __B) {
6855 // CHECK-LABEL: @test_mm512_insertf32x4
6856 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 18, i32 19, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
6857 return _mm512_insertf32x4(__A, __B, 1);
6858 }
6859
test_mm512_mask_insertf32x4(__m512 __W,__mmask16 __U,__m512 __A,__m128 __B)6860 __m512 test_mm512_mask_insertf32x4(__m512 __W, __mmask16 __U, __m512 __A, __m128 __B) {
6861 // CHECK-LABEL: @test_mm512_mask_insertf32x4
6862 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 18, i32 19, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
6863 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6864 return _mm512_mask_insertf32x4(__W, __U, __A, __B, 1);
6865 }
6866
test_mm512_maskz_insertf32x4(__mmask16 __U,__m512 __A,__m128 __B)6867 __m512 test_mm512_maskz_insertf32x4(__mmask16 __U, __m512 __A, __m128 __B) {
6868 // CHECK-LABEL: @test_mm512_maskz_insertf32x4
6869 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 18, i32 19, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
6870 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6871 return _mm512_maskz_insertf32x4(__U, __A, __B, 1);
6872 }
6873
test_mm512_inserti32x4(__m512i __A,__m128i __B)6874 __m512i test_mm512_inserti32x4(__m512i __A, __m128i __B) {
6875 // CHECK-LABEL: @test_mm512_inserti32x4
6876 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 18, i32 19, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
6877 return _mm512_inserti32x4(__A, __B, 1);
6878 }
6879
test_mm512_mask_inserti32x4(__m512i __W,__mmask16 __U,__m512i __A,__m128i __B)6880 __m512i test_mm512_mask_inserti32x4(__m512i __W, __mmask16 __U, __m512i __A, __m128i __B) {
6881 // CHECK-LABEL: @test_mm512_mask_inserti32x4
6882 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 18, i32 19, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
6883 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6884 return _mm512_mask_inserti32x4(__W, __U, __A, __B, 1);
6885 }
6886
test_mm512_maskz_inserti32x4(__mmask16 __U,__m512i __A,__m128i __B)6887 __m512i test_mm512_maskz_inserti32x4(__mmask16 __U, __m512i __A, __m128i __B) {
6888 // CHECK-LABEL: @test_mm512_maskz_inserti32x4
6889 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 18, i32 19, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
6890 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6891 return _mm512_maskz_inserti32x4(__U, __A, __B, 1);
6892 }
6893
test_mm512_getmant_round_pd(__m512d __A)6894 __m512d test_mm512_getmant_round_pd(__m512d __A) {
6895 // CHECK-LABEL: @test_mm512_getmant_round_pd
6896 // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6897 return _mm512_getmant_round_pd(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_NO_EXC);
6898 }
6899
test_mm512_mask_getmant_round_pd(__m512d __W,__mmask8 __U,__m512d __A)6900 __m512d test_mm512_mask_getmant_round_pd(__m512d __W, __mmask8 __U, __m512d __A) {
6901 // CHECK-LABEL: @test_mm512_mask_getmant_round_pd
6902 // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6903 return _mm512_mask_getmant_round_pd(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_NO_EXC);
6904 }
6905
test_mm512_maskz_getmant_round_pd(__mmask8 __U,__m512d __A)6906 __m512d test_mm512_maskz_getmant_round_pd(__mmask8 __U, __m512d __A) {
6907 // CHECK-LABEL: @test_mm512_maskz_getmant_round_pd
6908 // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6909 return _mm512_maskz_getmant_round_pd(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_NO_EXC);
6910 }
6911
test_mm512_getmant_pd(__m512d __A)6912 __m512d test_mm512_getmant_pd(__m512d __A) {
6913 // CHECK-LABEL: @test_mm512_getmant_pd
6914 // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6915 return _mm512_getmant_pd(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
6916 }
6917
test_mm512_mask_getmant_pd(__m512d __W,__mmask8 __U,__m512d __A)6918 __m512d test_mm512_mask_getmant_pd(__m512d __W, __mmask8 __U, __m512d __A) {
6919 // CHECK-LABEL: @test_mm512_mask_getmant_pd
6920 // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6921 return _mm512_mask_getmant_pd(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
6922 }
6923
test_mm512_maskz_getmant_pd(__mmask8 __U,__m512d __A)6924 __m512d test_mm512_maskz_getmant_pd(__mmask8 __U, __m512d __A) {
6925 // CHECK-LABEL: @test_mm512_maskz_getmant_pd
6926 // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6927 return _mm512_maskz_getmant_pd(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
6928 }
6929
test_mm512_getmant_round_ps(__m512 __A)6930 __m512 test_mm512_getmant_round_ps(__m512 __A) {
6931 // CHECK-LABEL: @test_mm512_getmant_round_ps
6932 // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6933 return _mm512_getmant_round_ps(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_NO_EXC);
6934 }
6935
test_mm512_mask_getmant_round_ps(__m512 __W,__mmask16 __U,__m512 __A)6936 __m512 test_mm512_mask_getmant_round_ps(__m512 __W, __mmask16 __U, __m512 __A) {
6937 // CHECK-LABEL: @test_mm512_mask_getmant_round_ps
6938 // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6939 return _mm512_mask_getmant_round_ps(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_NO_EXC);
6940 }
6941
test_mm512_maskz_getmant_round_ps(__mmask16 __U,__m512 __A)6942 __m512 test_mm512_maskz_getmant_round_ps(__mmask16 __U, __m512 __A) {
6943 // CHECK-LABEL: @test_mm512_maskz_getmant_round_ps
6944 // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6945 return _mm512_maskz_getmant_round_ps(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_NO_EXC);
6946 }
6947
test_mm512_getmant_ps(__m512 __A)6948 __m512 test_mm512_getmant_ps(__m512 __A) {
6949 // CHECK-LABEL: @test_mm512_getmant_ps
6950 // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6951 return _mm512_getmant_ps(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
6952 }
6953
test_mm512_mask_getmant_ps(__m512 __W,__mmask16 __U,__m512 __A)6954 __m512 test_mm512_mask_getmant_ps(__m512 __W, __mmask16 __U, __m512 __A) {
6955 // CHECK-LABEL: @test_mm512_mask_getmant_ps
6956 // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6957 return _mm512_mask_getmant_ps(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
6958 }
6959
test_mm512_maskz_getmant_ps(__mmask16 __U,__m512 __A)6960 __m512 test_mm512_maskz_getmant_ps(__mmask16 __U, __m512 __A) {
6961 // CHECK-LABEL: @test_mm512_maskz_getmant_ps
6962 // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6963 return _mm512_maskz_getmant_ps(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
6964 }
6965
test_mm512_getexp_round_pd(__m512d __A)6966 __m512d test_mm512_getexp_round_pd(__m512d __A) {
6967 // CHECK-LABEL: @test_mm512_getexp_round_pd
6968 // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6969 return _mm512_getexp_round_pd(__A, _MM_FROUND_NO_EXC);
6970 }
6971
test_mm512_mask_getexp_round_pd(__m512d __W,__mmask8 __U,__m512d __A)6972 __m512d test_mm512_mask_getexp_round_pd(__m512d __W, __mmask8 __U, __m512d __A) {
6973 // CHECK-LABEL: @test_mm512_mask_getexp_round_pd
6974 // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6975 return _mm512_mask_getexp_round_pd(__W, __U, __A, _MM_FROUND_NO_EXC);
6976 }
6977
test_mm512_maskz_getexp_round_pd(__mmask8 __U,__m512d __A)6978 __m512d test_mm512_maskz_getexp_round_pd(__mmask8 __U, __m512d __A) {
6979 // CHECK-LABEL: @test_mm512_maskz_getexp_round_pd
6980 // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6981 return _mm512_maskz_getexp_round_pd(__U, __A, _MM_FROUND_NO_EXC);
6982 }
6983
test_mm512_getexp_pd(__m512d __A)6984 __m512d test_mm512_getexp_pd(__m512d __A) {
6985 // CHECK-LABEL: @test_mm512_getexp_pd
6986 // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6987 return _mm512_getexp_pd(__A);
6988 }
6989
test_mm512_mask_getexp_pd(__m512d __W,__mmask8 __U,__m512d __A)6990 __m512d test_mm512_mask_getexp_pd(__m512d __W, __mmask8 __U, __m512d __A) {
6991 // CHECK-LABEL: @test_mm512_mask_getexp_pd
6992 // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6993 return _mm512_mask_getexp_pd(__W, __U, __A);
6994 }
6995
test_mm512_maskz_getexp_pd(__mmask8 __U,__m512d __A)6996 __m512d test_mm512_maskz_getexp_pd(__mmask8 __U, __m512d __A) {
6997 // CHECK-LABEL: @test_mm512_maskz_getexp_pd
6998 // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6999 return _mm512_maskz_getexp_pd(__U, __A);
7000 }
7001
test_mm512_getexp_round_ps(__m512 __A)7002 __m512 test_mm512_getexp_round_ps(__m512 __A) {
7003 // CHECK-LABEL: @test_mm512_getexp_round_ps
7004 // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
7005 return _mm512_getexp_round_ps(__A, _MM_FROUND_NO_EXC);
7006 }
7007
test_mm512_mask_getexp_round_ps(__m512 __W,__mmask16 __U,__m512 __A)7008 __m512 test_mm512_mask_getexp_round_ps(__m512 __W, __mmask16 __U, __m512 __A) {
7009 // CHECK-LABEL: @test_mm512_mask_getexp_round_ps
7010 // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
7011 return _mm512_mask_getexp_round_ps(__W, __U, __A, _MM_FROUND_NO_EXC);
7012 }
7013
test_mm512_maskz_getexp_round_ps(__mmask16 __U,__m512 __A)7014 __m512 test_mm512_maskz_getexp_round_ps(__mmask16 __U, __m512 __A) {
7015 // CHECK-LABEL: @test_mm512_maskz_getexp_round_ps
7016 // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
7017 return _mm512_maskz_getexp_round_ps(__U, __A, _MM_FROUND_NO_EXC);
7018 }
7019
test_mm512_getexp_ps(__m512 __A)7020 __m512 test_mm512_getexp_ps(__m512 __A) {
7021 // CHECK-LABEL: @test_mm512_getexp_ps
7022 // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
7023 return _mm512_getexp_ps(__A);
7024 }
7025
test_mm512_mask_getexp_ps(__m512 __W,__mmask16 __U,__m512 __A)7026 __m512 test_mm512_mask_getexp_ps(__m512 __W, __mmask16 __U, __m512 __A) {
7027 // CHECK-LABEL: @test_mm512_mask_getexp_ps
7028 // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
7029 return _mm512_mask_getexp_ps(__W, __U, __A);
7030 }
7031
test_mm512_maskz_getexp_ps(__mmask16 __U,__m512 __A)7032 __m512 test_mm512_maskz_getexp_ps(__mmask16 __U, __m512 __A) {
7033 // CHECK-LABEL: @test_mm512_maskz_getexp_ps
7034 // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
7035 return _mm512_maskz_getexp_ps(__U, __A);
7036 }
7037
test_mm512_i64gather_ps(__m512i __index,void const * __addr)7038 __m256 test_mm512_i64gather_ps(__m512i __index, void const *__addr) {
7039 // CHECK-LABEL: @test_mm512_i64gather_ps
7040 // CHECK: @llvm.x86.avx512.mask.gather.qps.512
7041 return _mm512_i64gather_ps(__index, __addr, 2);
7042 }
7043
test_mm512_mask_i64gather_ps(__m256 __v1_old,__mmask8 __mask,__m512i __index,void const * __addr)7044 __m256 test_mm512_mask_i64gather_ps(__m256 __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) {
7045 // CHECK-LABEL: @test_mm512_mask_i64gather_ps
7046 // CHECK: @llvm.x86.avx512.mask.gather.qps.512
7047 return _mm512_mask_i64gather_ps(__v1_old, __mask, __index, __addr, 2);
7048 }
7049
test_mm512_i64gather_epi32(__m512i __index,void const * __addr)7050 __m256i test_mm512_i64gather_epi32(__m512i __index, void const *__addr) {
7051 // CHECK-LABEL: @test_mm512_i64gather_epi32
7052 // CHECK: @llvm.x86.avx512.mask.gather.qpi.512
7053 return _mm512_i64gather_epi32(__index, __addr, 2);
7054 }
7055
test_mm512_mask_i64gather_epi32(__m256i __v1_old,__mmask8 __mask,__m512i __index,void const * __addr)7056 __m256i test_mm512_mask_i64gather_epi32(__m256i __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) {
7057 // CHECK-LABEL: @test_mm512_mask_i64gather_epi32
7058 // CHECK: @llvm.x86.avx512.mask.gather.qpi.512
7059 return _mm512_mask_i64gather_epi32(__v1_old, __mask, __index, __addr, 2);
7060 }
7061
test_mm512_i64gather_pd(__m512i __index,void const * __addr)7062 __m512d test_mm512_i64gather_pd(__m512i __index, void const *__addr) {
7063 // CHECK-LABEL: @test_mm512_i64gather_pd
7064 // CHECK: @llvm.x86.avx512.mask.gather.qpd.512
7065 return _mm512_i64gather_pd(__index, __addr, 2);
7066 }
7067
test_mm512_mask_i64gather_pd(__m512d __v1_old,__mmask8 __mask,__m512i __index,void const * __addr)7068 __m512d test_mm512_mask_i64gather_pd(__m512d __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) {
7069 // CHECK-LABEL: @test_mm512_mask_i64gather_pd
7070 // CHECK: @llvm.x86.avx512.mask.gather.qpd.512
7071 return _mm512_mask_i64gather_pd(__v1_old, __mask, __index, __addr, 2);
7072 }
7073
test_mm512_i64gather_epi64(__m512i __index,void const * __addr)7074 __m512i test_mm512_i64gather_epi64(__m512i __index, void const *__addr) {
7075 // CHECK-LABEL: @test_mm512_i64gather_epi64
7076 // CHECK: @llvm.x86.avx512.mask.gather.qpq.512
7077 return _mm512_i64gather_epi64(__index, __addr, 2);
7078 }
7079
test_mm512_mask_i64gather_epi64(__m512i __v1_old,__mmask8 __mask,__m512i __index,void const * __addr)7080 __m512i test_mm512_mask_i64gather_epi64(__m512i __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) {
7081 // CHECK-LABEL: @test_mm512_mask_i64gather_epi64
7082 // CHECK: @llvm.x86.avx512.mask.gather.qpq.512
7083 return _mm512_mask_i64gather_epi64(__v1_old, __mask, __index, __addr, 2);
7084 }
7085
test_mm512_i32gather_ps(__m512i __index,void const * __addr)7086 __m512 test_mm512_i32gather_ps(__m512i __index, void const *__addr) {
7087 // CHECK-LABEL: @test_mm512_i32gather_ps
7088 // CHECK: @llvm.x86.avx512.mask.gather.dps.512
7089 return _mm512_i32gather_ps(__index, __addr, 2);
7090 }
7091
test_mm512_mask_i32gather_ps(__m512 v1_old,__mmask16 __mask,__m512i __index,void const * __addr)7092 __m512 test_mm512_mask_i32gather_ps(__m512 v1_old, __mmask16 __mask, __m512i __index, void const *__addr) {
7093 // CHECK-LABEL: @test_mm512_mask_i32gather_ps
7094 // CHECK: @llvm.x86.avx512.mask.gather.dps.512
7095 return _mm512_mask_i32gather_ps(v1_old, __mask, __index, __addr, 2);
7096 }
7097
test_mm512_i32gather_epi32(__m512i __index,void const * __addr)7098 __m512i test_mm512_i32gather_epi32(__m512i __index, void const *__addr) {
7099 // CHECK-LABEL: @test_mm512_i32gather_epi32
7100 // CHECK: @llvm.x86.avx512.mask.gather.dpi.512
7101 return _mm512_i32gather_epi32(__index, __addr, 2);
7102 }
7103
test_mm512_mask_i32gather_epi32(__m512i __v1_old,__mmask16 __mask,__m512i __index,void const * __addr)7104 __m512i test_mm512_mask_i32gather_epi32(__m512i __v1_old, __mmask16 __mask, __m512i __index, void const *__addr) {
7105 // CHECK-LABEL: @test_mm512_mask_i32gather_epi32
7106 // CHECK: @llvm.x86.avx512.mask.gather.dpi.512
7107 return _mm512_mask_i32gather_epi32(__v1_old, __mask, __index, __addr, 2);
7108 }
7109
test_mm512_i32gather_pd(__m256i __index,void const * __addr)7110 __m512d test_mm512_i32gather_pd(__m256i __index, void const *__addr) {
7111 // CHECK-LABEL: @test_mm512_i32gather_pd
7112 // CHECK: @llvm.x86.avx512.mask.gather.dpd.512
7113 return _mm512_i32gather_pd(__index, __addr, 2);
7114 }
7115
test_mm512_mask_i32gather_pd(__m512d __v1_old,__mmask8 __mask,__m256i __index,void const * __addr)7116 __m512d test_mm512_mask_i32gather_pd(__m512d __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
7117 // CHECK-LABEL: @test_mm512_mask_i32gather_pd
7118 // CHECK: @llvm.x86.avx512.mask.gather.dpd.512
7119 return _mm512_mask_i32gather_pd(__v1_old, __mask, __index, __addr, 2);
7120 }
7121
test_mm512_i32gather_epi64(__m256i __index,void const * __addr)7122 __m512i test_mm512_i32gather_epi64(__m256i __index, void const *__addr) {
7123 // CHECK-LABEL: @test_mm512_i32gather_epi64
7124 // CHECK: @llvm.x86.avx512.mask.gather.dpq.512
7125 return _mm512_i32gather_epi64(__index, __addr, 2);
7126 }
7127
test_mm512_mask_i32gather_epi64(__m512i __v1_old,__mmask8 __mask,__m256i __index,void const * __addr)7128 __m512i test_mm512_mask_i32gather_epi64(__m512i __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
7129 // CHECK-LABEL: @test_mm512_mask_i32gather_epi64
7130 // CHECK: @llvm.x86.avx512.mask.gather.dpq.512
7131 return _mm512_mask_i32gather_epi64(__v1_old, __mask, __index, __addr, 2);
7132 }
7133
test_mm512_i64scatter_ps(void * __addr,__m512i __index,__m256 __v1)7134 void test_mm512_i64scatter_ps(void *__addr, __m512i __index, __m256 __v1) {
7135 // CHECK-LABEL: @test_mm512_i64scatter_ps
7136 // CHECK: @llvm.x86.avx512.mask.scatter.qps.512
7137 return _mm512_i64scatter_ps(__addr, __index, __v1, 2);
7138 }
7139
test_mm512_mask_i64scatter_ps(void * __addr,__mmask8 __mask,__m512i __index,__m256 __v1)7140 void test_mm512_mask_i64scatter_ps(void *__addr, __mmask8 __mask, __m512i __index, __m256 __v1) {
7141 // CHECK-LABEL: @test_mm512_mask_i64scatter_ps
7142 // CHECK: @llvm.x86.avx512.mask.scatter.qps.512
7143 return _mm512_mask_i64scatter_ps(__addr, __mask, __index, __v1, 2);
7144 }
7145
test_mm512_i64scatter_epi32(void * __addr,__m512i __index,__m256i __v1)7146 void test_mm512_i64scatter_epi32(void *__addr, __m512i __index, __m256i __v1) {
7147 // CHECK-LABEL: @test_mm512_i64scatter_epi32
7148 // CHECK: @llvm.x86.avx512.mask.scatter.qpi.512
7149 return _mm512_i64scatter_epi32(__addr, __index, __v1, 2);
7150 }
7151
test_mm512_mask_i64scatter_epi32(void * __addr,__mmask8 __mask,__m512i __index,__m256i __v1)7152 void test_mm512_mask_i64scatter_epi32(void *__addr, __mmask8 __mask, __m512i __index, __m256i __v1) {
7153 // CHECK-LABEL: @test_mm512_mask_i64scatter_epi32
7154 // CHECK: @llvm.x86.avx512.mask.scatter.qpi.512
7155 return _mm512_mask_i64scatter_epi32(__addr, __mask, __index, __v1, 2);
7156 }
7157
test_mm512_i64scatter_pd(void * __addr,__m512i __index,__m512d __v1)7158 void test_mm512_i64scatter_pd(void *__addr, __m512i __index, __m512d __v1) {
7159 // CHECK-LABEL: @test_mm512_i64scatter_pd
7160 // CHECK: @llvm.x86.avx512.mask.scatter.qpd.512
7161 return _mm512_i64scatter_pd(__addr, __index, __v1, 2);
7162 }
7163
test_mm512_mask_i64scatter_pd(void * __addr,__mmask8 __mask,__m512i __index,__m512d __v1)7164 void test_mm512_mask_i64scatter_pd(void *__addr, __mmask8 __mask, __m512i __index, __m512d __v1) {
7165 // CHECK-LABEL: @test_mm512_mask_i64scatter_pd
7166 // CHECK: @llvm.x86.avx512.mask.scatter.qpd.512
7167 return _mm512_mask_i64scatter_pd(__addr, __mask, __index, __v1, 2);
7168 }
7169
test_mm512_i64scatter_epi64(void * __addr,__m512i __index,__m512i __v1)7170 void test_mm512_i64scatter_epi64(void *__addr, __m512i __index, __m512i __v1) {
7171 // CHECK-LABEL: @test_mm512_i64scatter_epi64
7172 // CHECK: @llvm.x86.avx512.mask.scatter.qpq.512
7173 return _mm512_i64scatter_epi64(__addr, __index, __v1, 2);
7174 }
7175
test_mm512_mask_i64scatter_epi64(void * __addr,__mmask8 __mask,__m512i __index,__m512i __v1)7176 void test_mm512_mask_i64scatter_epi64(void *__addr, __mmask8 __mask, __m512i __index, __m512i __v1) {
7177 // CHECK-LABEL: @test_mm512_mask_i64scatter_epi64
7178 // CHECK: @llvm.x86.avx512.mask.scatter.qpq.512
7179 return _mm512_mask_i64scatter_epi64(__addr, __mask, __index, __v1, 2);
7180 }
7181
test_mm512_i32scatter_ps(void * __addr,__m512i __index,__m512 __v1)7182 void test_mm512_i32scatter_ps(void *__addr, __m512i __index, __m512 __v1) {
7183 // CHECK-LABEL: @test_mm512_i32scatter_ps
7184 // CHECK: @llvm.x86.avx512.mask.scatter.dps.512
7185 return _mm512_i32scatter_ps(__addr, __index, __v1, 2);
7186 }
7187
test_mm512_mask_i32scatter_ps(void * __addr,__mmask16 __mask,__m512i __index,__m512 __v1)7188 void test_mm512_mask_i32scatter_ps(void *__addr, __mmask16 __mask, __m512i __index, __m512 __v1) {
7189 // CHECK-LABEL: @test_mm512_mask_i32scatter_ps
7190 // CHECK: @llvm.x86.avx512.mask.scatter.dps.512
7191 return _mm512_mask_i32scatter_ps(__addr, __mask, __index, __v1, 2);
7192 }
7193
test_mm512_i32scatter_epi32(void * __addr,__m512i __index,__m512i __v1)7194 void test_mm512_i32scatter_epi32(void *__addr, __m512i __index, __m512i __v1) {
7195 // CHECK-LABEL: @test_mm512_i32scatter_epi32
7196 // CHECK: @llvm.x86.avx512.mask.scatter.dpi.512
7197 return _mm512_i32scatter_epi32(__addr, __index, __v1, 2);
7198 }
7199
test_mm512_mask_i32scatter_epi32(void * __addr,__mmask16 __mask,__m512i __index,__m512i __v1)7200 void test_mm512_mask_i32scatter_epi32(void *__addr, __mmask16 __mask, __m512i __index, __m512i __v1) {
7201 // CHECK-LABEL: @test_mm512_mask_i32scatter_epi32
7202 // CHECK: @llvm.x86.avx512.mask.scatter.dpi.512
7203 return _mm512_mask_i32scatter_epi32(__addr, __mask, __index, __v1, 2);
7204 }
7205
test_mm512_i32scatter_pd(void * __addr,__m256i __index,__m512d __v1)7206 void test_mm512_i32scatter_pd(void *__addr, __m256i __index, __m512d __v1) {
7207 // CHECK-LABEL: @test_mm512_i32scatter_pd
7208 // CHECK: @llvm.x86.avx512.mask.scatter.dpd.512
7209 return _mm512_i32scatter_pd(__addr, __index, __v1, 2);
7210 }
7211
test_mm512_mask_i32scatter_pd(void * __addr,__mmask8 __mask,__m256i __index,__m512d __v1)7212 void test_mm512_mask_i32scatter_pd(void *__addr, __mmask8 __mask, __m256i __index, __m512d __v1) {
7213 // CHECK-LABEL: @test_mm512_mask_i32scatter_pd
7214 // CHECK: @llvm.x86.avx512.mask.scatter.dpd.512
7215 return _mm512_mask_i32scatter_pd(__addr, __mask, __index, __v1, 2);
7216 }
7217
test_mm512_i32scatter_epi64(void * __addr,__m256i __index,__m512i __v1)7218 void test_mm512_i32scatter_epi64(void *__addr, __m256i __index, __m512i __v1) {
7219 // CHECK-LABEL: @test_mm512_i32scatter_epi64
7220 // CHECK: @llvm.x86.avx512.mask.scatter.dpq.512
7221 return _mm512_i32scatter_epi64(__addr, __index, __v1, 2);
7222 }
7223
test_mm512_mask_i32scatter_epi64(void * __addr,__mmask8 __mask,__m256i __index,__m512i __v1)7224 void test_mm512_mask_i32scatter_epi64(void *__addr, __mmask8 __mask, __m256i __index, __m512i __v1) {
7225 // CHECK-LABEL: @test_mm512_mask_i32scatter_epi64
7226 // CHECK: @llvm.x86.avx512.mask.scatter.dpq.512
7227 return _mm512_mask_i32scatter_epi64(__addr, __mask, __index, __v1, 2);
7228 }
7229
test_mm_mask_rsqrt14_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7230 __m128d test_mm_mask_rsqrt14_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7231 // CHECK-LABEL: @test_mm_mask_rsqrt14_sd
7232 // CHECK: @llvm.x86.avx512.rsqrt14.sd
7233 return _mm_mask_rsqrt14_sd(__W, __U, __A, __B);
7234 }
7235
test_mm_maskz_rsqrt14_sd(__mmask8 __U,__m128d __A,__m128d __B)7236 __m128d test_mm_maskz_rsqrt14_sd(__mmask8 __U, __m128d __A, __m128d __B){
7237 // CHECK-LABEL: @test_mm_maskz_rsqrt14_sd
7238 // CHECK: @llvm.x86.avx512.rsqrt14.sd
7239 return _mm_maskz_rsqrt14_sd(__U, __A, __B);
7240 }
7241
test_mm_mask_rsqrt14_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7242 __m128 test_mm_mask_rsqrt14_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7243 // CHECK-LABEL: @test_mm_mask_rsqrt14_ss
7244 // CHECK: @llvm.x86.avx512.rsqrt14.ss
7245 return _mm_mask_rsqrt14_ss(__W, __U, __A, __B);
7246 }
7247
test_mm_maskz_rsqrt14_ss(__mmask8 __U,__m128 __A,__m128 __B)7248 __m128 test_mm_maskz_rsqrt14_ss(__mmask8 __U, __m128 __A, __m128 __B){
7249 // CHECK-LABEL: @test_mm_maskz_rsqrt14_ss
7250 // CHECK: @llvm.x86.avx512.rsqrt14.ss
7251 return _mm_maskz_rsqrt14_ss(__U, __A, __B);
7252 }
7253
test_mm512_mask_rcp14_pd(__m512d __W,__mmask8 __U,__m512d __A)7254 __m512d test_mm512_mask_rcp14_pd (__m512d __W, __mmask8 __U, __m512d __A)
7255 {
7256 // CHECK-LABEL: @test_mm512_mask_rcp14_pd
7257 // CHECK: @llvm.x86.avx512.rcp14.pd.512
7258 return _mm512_mask_rcp14_pd (__W,__U,__A);
7259 }
7260
test_mm512_maskz_rcp14_pd(__mmask8 __U,__m512d __A)7261 __m512d test_mm512_maskz_rcp14_pd (__mmask8 __U, __m512d __A)
7262 {
7263 // CHECK-LABEL: @test_mm512_maskz_rcp14_pd
7264 // CHECK: @llvm.x86.avx512.rcp14.pd.512
7265 return _mm512_maskz_rcp14_pd (__U,__A);
7266 }
7267
test_mm512_mask_rcp14_ps(__m512 __W,__mmask16 __U,__m512 __A)7268 __m512 test_mm512_mask_rcp14_ps (__m512 __W, __mmask16 __U, __m512 __A)
7269 {
7270 // CHECK-LABEL: @test_mm512_mask_rcp14_ps
7271 // CHECK: @llvm.x86.avx512.rcp14.ps.512
7272 return _mm512_mask_rcp14_ps (__W,__U,__A);
7273 }
7274
test_mm512_maskz_rcp14_ps(__mmask16 __U,__m512 __A)7275 __m512 test_mm512_maskz_rcp14_ps (__mmask16 __U, __m512 __A)
7276 {
7277 // CHECK-LABEL: @test_mm512_maskz_rcp14_ps
7278 // CHECK: @llvm.x86.avx512.rcp14.ps.512
7279 return _mm512_maskz_rcp14_ps (__U,__A);
7280 }
7281
test_mm_mask_rcp14_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7282 __m128d test_mm_mask_rcp14_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7283 // CHECK-LABEL: @test_mm_mask_rcp14_sd
7284 // CHECK: @llvm.x86.avx512.rcp14.sd
7285 return _mm_mask_rcp14_sd(__W, __U, __A, __B);
7286 }
7287
test_mm_maskz_rcp14_sd(__mmask8 __U,__m128d __A,__m128d __B)7288 __m128d test_mm_maskz_rcp14_sd(__mmask8 __U, __m128d __A, __m128d __B){
7289 // CHECK-LABEL: @test_mm_maskz_rcp14_sd
7290 // CHECK: @llvm.x86.avx512.rcp14.sd
7291 return _mm_maskz_rcp14_sd(__U, __A, __B);
7292 }
7293
test_mm_mask_rcp14_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7294 __m128 test_mm_mask_rcp14_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7295 // CHECK-LABEL: @test_mm_mask_rcp14_ss
7296 // CHECK: @llvm.x86.avx512.rcp14.ss
7297 return _mm_mask_rcp14_ss(__W, __U, __A, __B);
7298 }
7299
test_mm_maskz_rcp14_ss(__mmask8 __U,__m128 __A,__m128 __B)7300 __m128 test_mm_maskz_rcp14_ss(__mmask8 __U, __m128 __A, __m128 __B){
7301 // CHECK-LABEL: @test_mm_maskz_rcp14_ss
7302 // CHECK: @llvm.x86.avx512.rcp14.ss
7303 return _mm_maskz_rcp14_ss(__U, __A, __B);
7304 }
7305
test_mm_mask_getexp_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7306 __m128d test_mm_mask_getexp_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7307 // CHECK-LABEL: @test_mm_mask_getexp_sd
7308 // CHECK: @llvm.x86.avx512.mask.getexp.sd
7309 return _mm_mask_getexp_sd(__W, __U, __A, __B);
7310 }
7311
test_mm_mask_getexp_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7312 __m128d test_mm_mask_getexp_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7313 // CHECK-LABEL: @test_mm_mask_getexp_round_sd
7314 // CHECK: @llvm.x86.avx512.mask.getexp.sd
7315 return _mm_mask_getexp_round_sd(__W, __U, __A, __B, _MM_FROUND_NO_EXC);
7316 }
7317
test_mm_maskz_getexp_sd(__mmask8 __U,__m128d __A,__m128d __B)7318 __m128d test_mm_maskz_getexp_sd(__mmask8 __U, __m128d __A, __m128d __B){
7319 // CHECK-LABEL: @test_mm_maskz_getexp_sd
7320 // CHECK: @llvm.x86.avx512.mask.getexp.sd
7321 return _mm_maskz_getexp_sd(__U, __A, __B);
7322 }
7323
test_mm_maskz_getexp_round_sd(__mmask8 __U,__m128d __A,__m128d __B)7324 __m128d test_mm_maskz_getexp_round_sd(__mmask8 __U, __m128d __A, __m128d __B){
7325 // CHECK-LABEL: @test_mm_maskz_getexp_round_sd
7326 // CHECK: @llvm.x86.avx512.mask.getexp.sd
7327 return _mm_maskz_getexp_round_sd(__U, __A, __B, _MM_FROUND_NO_EXC);
7328 }
7329
test_mm_mask_getexp_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7330 __m128 test_mm_mask_getexp_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7331 // CHECK-LABEL: @test_mm_mask_getexp_ss
7332 // CHECK: @llvm.x86.avx512.mask.getexp.ss
7333 return _mm_mask_getexp_ss(__W, __U, __A, __B);
7334 }
7335
test_mm_mask_getexp_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7336 __m128 test_mm_mask_getexp_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7337 // CHECK-LABEL: @test_mm_mask_getexp_round_ss
7338 // CHECK: @llvm.x86.avx512.mask.getexp.ss
7339 return _mm_mask_getexp_round_ss(__W, __U, __A, __B, _MM_FROUND_NO_EXC);
7340 }
7341
test_mm_maskz_getexp_ss(__mmask8 __U,__m128 __A,__m128 __B)7342 __m128 test_mm_maskz_getexp_ss(__mmask8 __U, __m128 __A, __m128 __B){
7343 // CHECK-LABEL: @test_mm_maskz_getexp_ss
7344 // CHECK: @llvm.x86.avx512.mask.getexp.ss
7345 return _mm_maskz_getexp_ss(__U, __A, __B);
7346 }
7347
test_mm_maskz_getexp_round_ss(__mmask8 __U,__m128 __A,__m128 __B)7348 __m128 test_mm_maskz_getexp_round_ss(__mmask8 __U, __m128 __A, __m128 __B){
7349 // CHECK-LABEL: @test_mm_maskz_getexp_round_ss
7350 // CHECK: @llvm.x86.avx512.mask.getexp.ss
7351 return _mm_maskz_getexp_round_ss(__U, __A, __B, _MM_FROUND_NO_EXC);
7352 }
7353
test_mm_mask_getmant_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7354 __m128d test_mm_mask_getmant_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7355 // CHECK-LABEL: @test_mm_mask_getmant_sd
7356 // CHECK: @llvm.x86.avx512.mask.getmant.sd
7357 return _mm_mask_getmant_sd(__W, __U, __A, __B, _MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
7358 }
7359
test_mm_mask_getmant_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7360 __m128d test_mm_mask_getmant_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7361 // CHECK-LABEL: @test_mm_mask_getmant_round_sd
7362 // CHECK: @llvm.x86.avx512.mask.getmant.sd
7363 return _mm_mask_getmant_round_sd(__W, __U, __A, __B, _MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_NO_EXC);
7364 }
7365
test_mm_maskz_getmant_sd(__mmask8 __U,__m128d __A,__m128d __B)7366 __m128d test_mm_maskz_getmant_sd(__mmask8 __U, __m128d __A, __m128d __B){
7367 // CHECK-LABEL: @test_mm_maskz_getmant_sd
7368 // CHECK: @llvm.x86.avx512.mask.getmant.sd
7369 return _mm_maskz_getmant_sd(__U, __A, __B, _MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
7370 }
7371
test_mm_maskz_getmant_round_sd(__mmask8 __U,__m128d __A,__m128d __B)7372 __m128d test_mm_maskz_getmant_round_sd(__mmask8 __U, __m128d __A, __m128d __B){
7373 // CHECK-LABEL: @test_mm_maskz_getmant_round_sd
7374 // CHECK: @llvm.x86.avx512.mask.getmant.sd
7375 return _mm_maskz_getmant_round_sd(__U, __A, __B, _MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_NO_EXC);
7376 }
7377
test_mm_mask_getmant_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7378 __m128 test_mm_mask_getmant_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7379 // CHECK-LABEL: @test_mm_mask_getmant_ss
7380 // CHECK: @llvm.x86.avx512.mask.getmant.ss
7381 return _mm_mask_getmant_ss(__W, __U, __A, __B, _MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
7382 }
7383
test_mm_mask_getmant_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7384 __m128 test_mm_mask_getmant_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7385 // CHECK-LABEL: @test_mm_mask_getmant_round_ss
7386 // CHECK: @llvm.x86.avx512.mask.getmant.ss
7387 return _mm_mask_getmant_round_ss(__W, __U, __A, __B, _MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_NO_EXC);
7388 }
7389
test_mm_maskz_getmant_ss(__mmask8 __U,__m128 __A,__m128 __B)7390 __m128 test_mm_maskz_getmant_ss(__mmask8 __U, __m128 __A, __m128 __B){
7391 // CHECK-LABEL: @test_mm_maskz_getmant_ss
7392 // CHECK: @llvm.x86.avx512.mask.getmant.ss
7393 return _mm_maskz_getmant_ss(__U, __A, __B, _MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
7394 }
7395
test_mm_maskz_getmant_round_ss(__mmask8 __U,__m128 __A,__m128 __B)7396 __m128 test_mm_maskz_getmant_round_ss(__mmask8 __U, __m128 __A, __m128 __B){
7397 // CHECK-LABEL: @test_mm_maskz_getmant_round_ss
7398 // CHECK: @llvm.x86.avx512.mask.getmant.ss
7399 return _mm_maskz_getmant_round_ss(__U, __A, __B, _MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_NO_EXC);
7400 }
7401
test_mm_mask_fmadd_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7402 __m128 test_mm_mask_fmadd_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7403 // CHECK-LABEL: @test_mm_mask_fmadd_ss
7404 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7405 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7406 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7407 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7408 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7409 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7410 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7411 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7412 return _mm_mask_fmadd_ss(__W, __U, __A, __B);
7413 }
7414
test_mm_fmadd_round_ss(__m128 __A,__m128 __B,__m128 __C)7415 __m128 test_mm_fmadd_round_ss(__m128 __A, __m128 __B, __m128 __C){
7416 // CHECK-LABEL: @test_mm_fmadd_round_ss
7417 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7418 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7419 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7420 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7421 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[FMA]], i64 0
7422 return _mm_fmadd_round_ss(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7423 }
7424
test_mm_mask_fmadd_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7425 __m128 test_mm_mask_fmadd_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7426 // CHECK-LABEL: @test_mm_mask_fmadd_round_ss
7427 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7428 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7429 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7430 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7431 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7432 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7433 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7434 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7435 return _mm_mask_fmadd_round_ss(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7436 }
7437
test_mm_maskz_fmadd_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7438 __m128 test_mm_maskz_fmadd_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7439 // CHECK-LABEL: @test_mm_maskz_fmadd_ss
7440 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7441 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7442 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7443 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7444 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7445 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7446 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7447 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7448 return _mm_maskz_fmadd_ss(__U, __A, __B, __C);
7449 }
7450
test_mm_maskz_fmadd_round_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7451 __m128 test_mm_maskz_fmadd_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7452 // CHECK-LABEL: @test_mm_maskz_fmadd_round_ss
7453 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7454 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7455 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7456 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7457 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7458 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7459 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7460 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7461 return _mm_maskz_fmadd_round_ss(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7462 }
7463
test_mm_mask3_fmadd_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7464 __m128 test_mm_mask3_fmadd_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7465 // CHECK-LABEL: @test_mm_mask3_fmadd_ss
7466 // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7467 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7468 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[ORIGC:%.+]], i64 0
7469 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7470 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7471 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7472 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C]]
7473 // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7474 return _mm_mask3_fmadd_ss(__W, __X, __Y, __U);
7475 }
7476
test_mm_mask3_fmadd_round_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7477 __m128 test_mm_mask3_fmadd_round_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7478 // CHECK-LABEL: @test_mm_mask3_fmadd_round_ss
7479 // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7480 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7481 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[ORIGC:%.+]], i64 0
7482 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7483 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7484 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7485 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C]]
7486 // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7487 return _mm_mask3_fmadd_round_ss(__W, __X, __Y, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7488 }
7489
test_mm_mask_fmsub_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7490 __m128 test_mm_mask_fmsub_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7491 // CHECK-LABEL: @test_mm_mask_fmsub_ss
7492 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7493 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7494 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7495 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7496 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7497 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7498 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7499 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7500 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7501 return _mm_mask_fmsub_ss(__W, __U, __A, __B);
7502 }
7503
test_mm_fmsub_round_ss(__m128 __A,__m128 __B,__m128 __C)7504 __m128 test_mm_fmsub_round_ss(__m128 __A, __m128 __B, __m128 __C){
7505 // CHECK-LABEL: @test_mm_fmsub_round_ss
7506 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7507 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7508 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7509 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7510 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7511 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[FMA]], i64 0
7512 return _mm_fmsub_round_ss(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7513 }
7514
test_mm_mask_fmsub_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7515 __m128 test_mm_mask_fmsub_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7516 // CHECK-LABEL: @test_mm_mask_fmsub_round_ss
7517 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7518 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7519 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7520 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7521 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7522 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7523 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7524 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7525 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7526 return _mm_mask_fmsub_round_ss(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7527 }
7528
test_mm_maskz_fmsub_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7529 __m128 test_mm_maskz_fmsub_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7530 // CHECK-LABEL: @test_mm_maskz_fmsub_ss
7531 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7532 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7533 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7534 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7535 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7536 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7537 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7538 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7539 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7540 return _mm_maskz_fmsub_ss(__U, __A, __B, __C);
7541 }
7542
test_mm_maskz_fmsub_round_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7543 __m128 test_mm_maskz_fmsub_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7544 // CHECK-LABEL: @test_mm_maskz_fmsub_round_ss
7545 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7546 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7547 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7548 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7549 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7550 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7551 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7552 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7553 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7554 return _mm_maskz_fmsub_round_ss(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7555 }
7556
test_mm_mask3_fmsub_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7557 __m128 test_mm_mask3_fmsub_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7558 // CHECK-LABEL: @test_mm_mask3_fmsub_ss
7559 // CHECK: [[NEG:%.+]] = fneg <4 x float> [[ORIGC:%.+]]
7560 // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7561 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7562 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7563 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7564 // CHECK-NEXT: [[C2:%.+]] = extractelement <4 x float> [[ORIGC]], i64 0
7565 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7566 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7567 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C2]]
7568 // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7569 return _mm_mask3_fmsub_ss(__W, __X, __Y, __U);
7570 }
7571
test_mm_mask3_fmsub_round_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7572 __m128 test_mm_mask3_fmsub_round_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7573 // CHECK-LABEL: @test_mm_mask3_fmsub_round_ss
7574 // CHECK: [[NEG:%.+]] = fneg <4 x float> [[ORIGC:%.+]]
7575 // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7576 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7577 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7578 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7579 // CHECK-NEXT: [[C2:%.+]] = extractelement <4 x float> [[ORIGC]], i64 0
7580 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7581 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7582 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C2]]
7583 // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7584 return _mm_mask3_fmsub_round_ss(__W, __X, __Y, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7585 }
7586
test_mm_mask_fnmadd_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7587 __m128 test_mm_mask_fnmadd_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7588 // CHECK-LABEL: @test_mm_mask_fnmadd_ss
7589 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7590 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7591 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7592 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7593 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7594 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7595 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7596 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7597 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7598 return _mm_mask_fnmadd_ss(__W, __U, __A, __B);
7599 }
7600
test_mm_fnmadd_round_ss(__m128 __A,__m128 __B,__m128 __C)7601 __m128 test_mm_fnmadd_round_ss(__m128 __A, __m128 __B, __m128 __C){
7602 // CHECK-LABEL: @test_mm_fnmadd_round_ss
7603 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7604 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7605 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7606 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7607 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7608 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[FMA]], i64 0
7609 return _mm_fnmadd_round_ss(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7610 }
7611
test_mm_mask_fnmadd_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7612 __m128 test_mm_mask_fnmadd_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7613 // CHECK-LABEL: @test_mm_mask_fnmadd_round_ss
7614 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7615 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7616 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7617 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7618 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7619 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7620 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7621 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7622 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7623 return _mm_mask_fnmadd_round_ss(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7624 }
7625
test_mm_maskz_fnmadd_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7626 __m128 test_mm_maskz_fnmadd_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7627 // CHECK-LABEL: @test_mm_maskz_fnmadd_ss
7628 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7629 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7630 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7631 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7632 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7633 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7634 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7635 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7636 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7637 return _mm_maskz_fnmadd_ss(__U, __A, __B, __C);
7638 }
7639
test_mm_maskz_fnmadd_round_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7640 __m128 test_mm_maskz_fnmadd_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7641 // CHECK-LABEL: @test_mm_maskz_fnmadd_round_ss
7642 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7643 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7644 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7645 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7646 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7647 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7648 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7649 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7650 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7651 return _mm_maskz_fnmadd_round_ss(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7652 }
7653
test_mm_mask3_fnmadd_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7654 __m128 test_mm_mask3_fnmadd_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7655 // CHECK-LABEL: @test_mm_mask3_fnmadd_ss
7656 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7657 // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7658 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7659 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[ORIGC:%.+]], i64 0
7660 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7661 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7662 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7663 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C]]
7664 // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7665 return _mm_mask3_fnmadd_ss(__W, __X, __Y, __U);
7666 }
7667
test_mm_mask3_fnmadd_round_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7668 __m128 test_mm_mask3_fnmadd_round_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7669 // CHECK-LABEL: @test_mm_mask3_fnmadd_round_ss
7670 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7671 // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7672 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7673 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[ORIGC:%.+]], i64 0
7674 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7675 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7676 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7677 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C]]
7678 // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7679 return _mm_mask3_fnmadd_round_ss(__W, __X, __Y, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7680 }
7681
test_mm_mask_fnmsub_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7682 __m128 test_mm_mask_fnmsub_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7683 // CHECK-LABEL: @test_mm_mask_fnmsub_ss
7684 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7685 // CHECK: [[NEG2:%.+]] = fneg <4 x float> %{{.*}}
7686 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7687 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7688 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7689 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7690 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7691 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7692 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7693 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7694 return _mm_mask_fnmsub_ss(__W, __U, __A, __B);
7695 }
7696
test_mm_fnmsub_round_ss(__m128 __A,__m128 __B,__m128 __C)7697 __m128 test_mm_fnmsub_round_ss(__m128 __A, __m128 __B, __m128 __C){
7698 // CHECK-LABEL: @test_mm_fnmsub_round_ss
7699 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7700 // CHECK: [[NEG2:%.+]] = fneg <4 x float> %{{.*}}
7701 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7702 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7703 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7704 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7705 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[FMA]], i64 0
7706 return _mm_fnmsub_round_ss(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7707 }
7708
test_mm_mask_fnmsub_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7709 __m128 test_mm_mask_fnmsub_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7710 // CHECK-LABEL: @test_mm_mask_fnmsub_round_ss
7711 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7712 // CHECK: [[NEG2:%.+]] = fneg <4 x float> %{{.*}}
7713 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7714 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7715 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7716 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7717 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7718 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7719 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7720 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7721 return _mm_mask_fnmsub_round_ss(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7722 }
7723
test_mm_maskz_fnmsub_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7724 __m128 test_mm_maskz_fnmsub_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7725 // CHECK-LABEL: @test_mm_maskz_fnmsub_ss
7726 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7727 // CHECK: [[NEG2:%.+]] = fneg <4 x float> %{{.*}}
7728 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7729 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7730 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7731 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7732 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7733 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7734 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7735 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7736 return _mm_maskz_fnmsub_ss(__U, __A, __B, __C);
7737 }
7738
test_mm_maskz_fnmsub_round_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7739 __m128 test_mm_maskz_fnmsub_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7740 // CHECK-LABEL: @test_mm_maskz_fnmsub_round_ss
7741 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7742 // CHECK: [[NEG2:%.+]] = fneg <4 x float> %{{.*}}
7743 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7744 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7745 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7746 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7747 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7748 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7749 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7750 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7751 return _mm_maskz_fnmsub_round_ss(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7752 }
7753
test_mm_mask3_fnmsub_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7754 __m128 test_mm_mask3_fnmsub_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7755 // CHECK-LABEL: @test_mm_mask3_fnmsub_ss
7756 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7757 // CHECK: [[NEG2:%.+]] = fneg <4 x float> [[ORIGC:%.+]]
7758 // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7759 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7760 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7761 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7762 // CHECK-NEXT: [[C2:%.+]] = extractelement <4 x float> [[ORIGC]], i64 0
7763 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7764 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7765 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C2]]
7766 // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7767 return _mm_mask3_fnmsub_ss(__W, __X, __Y, __U);
7768 }
7769
test_mm_mask3_fnmsub_round_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7770 __m128 test_mm_mask3_fnmsub_round_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7771 // CHECK-LABEL: @test_mm_mask3_fnmsub_round_ss
7772 // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7773 // CHECK: [[NEG2:%.+]] = fneg <4 x float> [[ORIGC:%.+]]
7774 // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7775 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7776 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7777 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7778 // CHECK-NEXT: [[C2:%.+]] = extractelement <4 x float> [[ORIGC]], i64 0
7779 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7780 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7781 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C2]]
7782 // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7783 return _mm_mask3_fnmsub_round_ss(__W, __X, __Y, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7784 }
7785
test_mm_mask_fmadd_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7786 __m128d test_mm_mask_fmadd_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7787 // CHECK-LABEL: @test_mm_mask_fmadd_sd
7788 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7789 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7790 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7791 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7792 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7793 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7794 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
7795 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7796 return _mm_mask_fmadd_sd(__W, __U, __A, __B);
7797 }
7798
test_mm_fmadd_round_sd(__m128d __A,__m128d __B,__m128d __C)7799 __m128d test_mm_fmadd_round_sd(__m128d __A, __m128d __B, __m128d __C){
7800 // CHECK-LABEL: @test_mm_fmadd_round_sd
7801 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7802 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7803 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7804 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
7805 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[FMA]], i64 0
7806 return _mm_fmadd_round_sd(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7807 }
7808
test_mm_mask_fmadd_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7809 __m128d test_mm_mask_fmadd_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7810 // CHECK-LABEL: @test_mm_mask_fmadd_round_sd
7811 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7812 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7813 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7814 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
7815 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7816 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7817 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
7818 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7819 return _mm_mask_fmadd_round_sd(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7820 }
7821
test_mm_maskz_fmadd_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)7822 __m128d test_mm_maskz_fmadd_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
7823 // CHECK-LABEL: @test_mm_maskz_fmadd_sd
7824 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7825 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7826 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7827 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7828 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7829 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7830 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
7831 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7832 return _mm_maskz_fmadd_sd(__U, __A, __B, __C);
7833 }
7834
test_mm_maskz_fmadd_round_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)7835 __m128d test_mm_maskz_fmadd_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
7836 // CHECK-LABEL: @test_mm_maskz_fmadd_round_sd
7837 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7838 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7839 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7840 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
7841 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7842 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7843 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
7844 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7845 return _mm_maskz_fmadd_round_sd(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7846 }
7847
test_mm_mask3_fmadd_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)7848 __m128d test_mm_mask3_fmadd_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
7849 // CHECK-LABEL: @test_mm_mask3_fmadd_sd
7850 // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7851 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7852 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[ORIGC:%.+]], i64 0
7853 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7854 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7855 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7856 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C]]
7857 // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
7858 return _mm_mask3_fmadd_sd(__W, __X, __Y, __U);
7859 }
7860
test_mm_mask3_fmadd_round_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)7861 __m128d test_mm_mask3_fmadd_round_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
7862 // CHECK-LABEL: @test_mm_mask3_fmadd_round_sd
7863 // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7864 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7865 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[ORIGC:%.+]], i64 0
7866 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
7867 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7868 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7869 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C]]
7870 // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
7871 return _mm_mask3_fmadd_round_sd(__W, __X, __Y, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7872 }
7873
test_mm_mask_fmsub_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7874 __m128d test_mm_mask_fmsub_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7875 // CHECK-LABEL: @test_mm_mask_fmsub_sd
7876 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
7877 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7878 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7879 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7880 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7881 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7882 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7883 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
7884 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7885 return _mm_mask_fmsub_sd(__W, __U, __A, __B);
7886 }
7887
test_mm_fmsub_round_sd(__m128d __A,__m128d __B,__m128d __C)7888 __m128d test_mm_fmsub_round_sd(__m128d __A, __m128d __B, __m128d __C){
7889 // CHECK-LABEL: @test_mm_fmsub_round_sd
7890 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
7891 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7892 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7893 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7894 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
7895 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[FMA]], i64 0
7896 return _mm_fmsub_round_sd(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7897 }
7898
test_mm_mask_fmsub_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7899 __m128d test_mm_mask_fmsub_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7900 // CHECK-LABEL: @test_mm_mask_fmsub_round_sd
7901 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
7902 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7903 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7904 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7905 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
7906 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7907 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7908 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
7909 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7910 return _mm_mask_fmsub_round_sd(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7911 }
7912
test_mm_maskz_fmsub_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)7913 __m128d test_mm_maskz_fmsub_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
7914 // CHECK-LABEL: @test_mm_maskz_fmsub_sd
7915 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
7916 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7917 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7918 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7919 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7920 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7921 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7922 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
7923 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7924 return _mm_maskz_fmsub_sd(__U, __A, __B, __C);
7925 }
7926
test_mm_maskz_fmsub_round_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)7927 __m128d test_mm_maskz_fmsub_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
7928 // CHECK-LABEL: @test_mm_maskz_fmsub_round_sd
7929 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
7930 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7931 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7932 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7933 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
7934 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7935 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7936 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
7937 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7938 return _mm_maskz_fmsub_round_sd(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7939 }
7940
test_mm_mask3_fmsub_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)7941 __m128d test_mm_mask3_fmsub_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
7942 // CHECK-LABEL: @test_mm_mask3_fmsub_sd
7943 // CHECK: [[NEG:%.+]] = fneg <2 x double> [[ORIGC:%.+]]
7944 // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7945 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7946 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7947 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7948 // CHECK-NEXT: [[C2:%.+]] = extractelement <2 x double> [[ORIGC]], i64 0
7949 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7950 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7951 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C2]]
7952 // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
7953 return _mm_mask3_fmsub_sd(__W, __X, __Y, __U);
7954 }
7955
test_mm_mask3_fmsub_round_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)7956 __m128d test_mm_mask3_fmsub_round_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
7957 // CHECK-LABEL: @test_mm_mask3_fmsub_round_sd
7958 // CHECK: [[NEG:%.+]] = fneg <2 x double> [[ORIGC:%.+]]
7959 // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7960 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7961 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7962 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
7963 // CHECK-NEXT: [[C2:%.+]] = extractelement <2 x double> [[ORIGC]], i64 0
7964 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7965 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7966 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C2]]
7967 // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
7968 return _mm_mask3_fmsub_round_sd(__W, __X, __Y, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7969 }
7970
test_mm_mask_fnmadd_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7971 __m128d test_mm_mask_fnmadd_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7972 // CHECK-LABEL: @test_mm_mask_fnmadd_sd
7973 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
7974 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7975 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7976 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7977 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7978 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7979 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7980 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
7981 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7982 return _mm_mask_fnmadd_sd(__W, __U, __A, __B);
7983 }
7984
test_mm_fnmadd_round_sd(__m128d __A,__m128d __B,__m128d __C)7985 __m128d test_mm_fnmadd_round_sd(__m128d __A, __m128d __B, __m128d __C){
7986 // CHECK-LABEL: @test_mm_fnmadd_round_sd
7987 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
7988 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7989 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7990 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7991 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
7992 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[FMA]], i64 0
7993 return _mm_fnmadd_round_sd(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7994 }
7995
test_mm_mask_fnmadd_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7996 __m128d test_mm_mask_fnmadd_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7997 // CHECK-LABEL: @test_mm_mask_fnmadd_round_sd
7998 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
7999 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
8000 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8001 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
8002 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
8003 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8004 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8005 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
8006 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8007 return _mm_mask_fnmadd_round_sd(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
8008 }
8009
test_mm_maskz_fnmadd_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)8010 __m128d test_mm_maskz_fnmadd_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
8011 // CHECK-LABEL: @test_mm_maskz_fnmadd_sd
8012 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8013 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
8014 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8015 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
8016 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
8017 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8018 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8019 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
8020 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8021 return _mm_maskz_fnmadd_sd(__U, __A, __B, __C);
8022 }
8023
test_mm_maskz_fnmadd_round_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)8024 __m128d test_mm_maskz_fnmadd_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
8025 // CHECK-LABEL: @test_mm_maskz_fnmadd_round_sd
8026 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8027 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
8028 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8029 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
8030 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
8031 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8032 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8033 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
8034 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8035 return _mm_maskz_fnmadd_round_sd(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
8036 }
8037
test_mm_mask3_fnmadd_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)8038 __m128d test_mm_mask3_fnmadd_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
8039 // CHECK-LABEL: @test_mm_mask3_fnmadd_sd
8040 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8041 // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
8042 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8043 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[ORIGC:%.+]], i64 0
8044 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
8045 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8046 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8047 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C]]
8048 // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
8049 return _mm_mask3_fnmadd_sd(__W, __X, __Y, __U);
8050 }
8051
test_mm_mask3_fnmadd_round_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)8052 __m128d test_mm_mask3_fnmadd_round_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
8053 // CHECK-LABEL: @test_mm_mask3_fnmadd_round_sd
8054 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8055 // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
8056 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8057 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[ORIGC:%.+]], i64 0
8058 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
8059 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8060 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8061 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C]]
8062 // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
8063 return _mm_mask3_fnmadd_round_sd(__W, __X, __Y, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
8064 }
8065
test_mm_mask_fnmsub_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)8066 __m128d test_mm_mask_fnmsub_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
8067 // CHECK-LABEL: @test_mm_mask_fnmsub_sd
8068 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8069 // CHECK: [[NEG2:%.+]] = fneg <2 x double> %{{.*}}
8070 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.]], i64 0
8071 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8072 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8073 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
8074 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8075 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8076 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
8077 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8078 return _mm_mask_fnmsub_sd(__W, __U, __A, __B);
8079 }
8080
test_mm_fnmsub_round_sd(__m128d __A,__m128d __B,__m128d __C)8081 __m128d test_mm_fnmsub_round_sd(__m128d __A, __m128d __B, __m128d __C){
8082 // CHECK-LABEL: @test_mm_fnmsub_round_sd
8083 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8084 // CHECK: [[NEG2:%.+]] = fneg <2 x double> %{{.*}}
8085 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.]], i64 0
8086 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8087 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8088 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
8089 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[FMA]], i64 0
8090 return _mm_fnmsub_round_sd(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
8091 }
8092
test_mm_mask_fnmsub_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)8093 __m128d test_mm_mask_fnmsub_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
8094 // CHECK-LABEL: @test_mm_mask_fnmsub_round_sd
8095 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8096 // CHECK: [[NEG2:%.+]] = fneg <2 x double> %{{.*}}
8097 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.]], i64 0
8098 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8099 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8100 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
8101 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8102 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8103 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
8104 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8105 return _mm_mask_fnmsub_round_sd(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
8106 }
8107
test_mm_maskz_fnmsub_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)8108 __m128d test_mm_maskz_fnmsub_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
8109 // CHECK-LABEL: @test_mm_maskz_fnmsub_sd
8110 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8111 // CHECK: [[NEG2:%.+]] = fneg <2 x double> %{{.*}}
8112 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.]], i64 0
8113 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8114 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8115 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
8116 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8117 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8118 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
8119 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8120 return _mm_maskz_fnmsub_sd(__U, __A, __B, __C);
8121 }
8122
test_mm_maskz_fnmsub_round_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)8123 __m128d test_mm_maskz_fnmsub_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
8124 // CHECK-LABEL: @test_mm_maskz_fnmsub_round_sd
8125 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8126 // CHECK: [[NEG2:%.+]] = fneg <2 x double> %{{.*}}
8127 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.]], i64 0
8128 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8129 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8130 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
8131 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8132 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8133 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
8134 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8135 return _mm_maskz_fnmsub_round_sd(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
8136 }
8137
test_mm_mask3_fnmsub_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)8138 __m128d test_mm_mask3_fnmsub_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
8139 // CHECK-LABEL: @test_mm_mask3_fnmsub_sd
8140 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8141 // CHECK: [[NEG2:%.+]] = fneg <2 x double> [[ORIGC:%.+]]
8142 // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
8143 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8144 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8145 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
8146 // CHECK-NEXT: [[C2:%.+]] = extractelement <2 x double> [[ORIGC]], i64 0
8147 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8148 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8149 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C2]]
8150 // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
8151 return _mm_mask3_fnmsub_sd(__W, __X, __Y, __U);
8152 }
8153
test_mm_mask3_fnmsub_round_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)8154 __m128d test_mm_mask3_fnmsub_round_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
8155 // CHECK-LABEL: @test_mm_mask3_fnmsub_round_sd
8156 // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8157 // CHECK: [[NEG2:%.+]] = fneg <2 x double> [[ORIGC:%.+]]
8158 // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
8159 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8160 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8161 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
8162 // CHECK-NEXT: [[C2:%.+]] = extractelement <2 x double> [[ORIGC]], i64 0
8163 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8164 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8165 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C2]]
8166 // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
8167 return _mm_mask3_fnmsub_round_sd(__W, __X, __Y, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
8168 }
8169
test_mm512_permutex_pd(__m512d __X)8170 __m512d test_mm512_permutex_pd(__m512d __X) {
8171 // CHECK-LABEL: @test_mm512_permutex_pd
8172 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
8173 return _mm512_permutex_pd(__X, 0);
8174 }
8175
test_mm512_mask_permutex_pd(__m512d __W,__mmask8 __U,__m512d __X)8176 __m512d test_mm512_mask_permutex_pd(__m512d __W, __mmask8 __U, __m512d __X) {
8177 // CHECK-LABEL: @test_mm512_mask_permutex_pd
8178 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
8179 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8180 return _mm512_mask_permutex_pd(__W, __U, __X, 0);
8181 }
8182
test_mm512_maskz_permutex_pd(__mmask8 __U,__m512d __X)8183 __m512d test_mm512_maskz_permutex_pd(__mmask8 __U, __m512d __X) {
8184 // CHECK-LABEL: @test_mm512_maskz_permutex_pd
8185 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
8186 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8187 return _mm512_maskz_permutex_pd(__U, __X, 0);
8188 }
8189
test_mm512_permutex_epi64(__m512i __X)8190 __m512i test_mm512_permutex_epi64(__m512i __X) {
8191 // CHECK-LABEL: @test_mm512_permutex_epi64
8192 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
8193 return _mm512_permutex_epi64(__X, 0);
8194 }
8195
test_mm512_mask_permutex_epi64(__m512i __W,__mmask8 __M,__m512i __X)8196 __m512i test_mm512_mask_permutex_epi64(__m512i __W, __mmask8 __M, __m512i __X) {
8197 // CHECK-LABEL: @test_mm512_mask_permutex_epi64
8198 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
8199 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
8200 return _mm512_mask_permutex_epi64(__W, __M, __X, 0);
8201 }
8202
test_mm512_maskz_permutex_epi64(__mmask8 __M,__m512i __X)8203 __m512i test_mm512_maskz_permutex_epi64(__mmask8 __M, __m512i __X) {
8204 // CHECK-LABEL: @test_mm512_maskz_permutex_epi64
8205 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
8206 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
8207 return _mm512_maskz_permutex_epi64(__M, __X, 0);
8208 }
8209
test_mm512_permutexvar_pd(__m512i __X,__m512d __Y)8210 __m512d test_mm512_permutexvar_pd(__m512i __X, __m512d __Y) {
8211 // CHECK-LABEL: @test_mm512_permutexvar_pd
8212 // CHECK: @llvm.x86.avx512.permvar.df.512
8213 return _mm512_permutexvar_pd(__X, __Y);
8214 }
8215
test_mm512_mask_permutexvar_pd(__m512d __W,__mmask8 __U,__m512i __X,__m512d __Y)8216 __m512d test_mm512_mask_permutexvar_pd(__m512d __W, __mmask8 __U, __m512i __X, __m512d __Y) {
8217 // CHECK-LABEL: @test_mm512_mask_permutexvar_pd
8218 // CHECK: @llvm.x86.avx512.permvar.df.512
8219 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8220 return _mm512_mask_permutexvar_pd(__W, __U, __X, __Y);
8221 }
8222
test_mm512_maskz_permutexvar_pd(__mmask8 __U,__m512i __X,__m512d __Y)8223 __m512d test_mm512_maskz_permutexvar_pd(__mmask8 __U, __m512i __X, __m512d __Y) {
8224 // CHECK-LABEL: @test_mm512_maskz_permutexvar_pd
8225 // CHECK: @llvm.x86.avx512.permvar.df.512
8226 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8227 return _mm512_maskz_permutexvar_pd(__U, __X, __Y);
8228 }
8229
test_mm512_maskz_permutexvar_epi64(__mmask8 __M,__m512i __X,__m512i __Y)8230 __m512i test_mm512_maskz_permutexvar_epi64(__mmask8 __M, __m512i __X, __m512i __Y) {
8231 // CHECK-LABEL: @test_mm512_maskz_permutexvar_epi64
8232 // CHECK: @llvm.x86.avx512.permvar.di.512
8233 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
8234 return _mm512_maskz_permutexvar_epi64(__M, __X, __Y);
8235 }
8236
test_mm512_permutexvar_epi64(__m512i __X,__m512i __Y)8237 __m512i test_mm512_permutexvar_epi64(__m512i __X, __m512i __Y) {
8238 // CHECK-LABEL: @test_mm512_permutexvar_epi64
8239 // CHECK: @llvm.x86.avx512.permvar.di.512
8240 return _mm512_permutexvar_epi64(__X, __Y);
8241 }
8242
test_mm512_mask_permutexvar_epi64(__m512i __W,__mmask8 __M,__m512i __X,__m512i __Y)8243 __m512i test_mm512_mask_permutexvar_epi64(__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y) {
8244 // CHECK-LABEL: @test_mm512_mask_permutexvar_epi64
8245 // CHECK: @llvm.x86.avx512.permvar.di.512
8246 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
8247 return _mm512_mask_permutexvar_epi64(__W, __M, __X, __Y);
8248 }
8249
test_mm512_permutexvar_ps(__m512i __X,__m512 __Y)8250 __m512 test_mm512_permutexvar_ps(__m512i __X, __m512 __Y) {
8251 // CHECK-LABEL: @test_mm512_permutexvar_ps
8252 // CHECK: @llvm.x86.avx512.permvar.sf.512
8253 return _mm512_permutexvar_ps(__X, __Y);
8254 }
8255
test_mm512_mask_permutexvar_ps(__m512 __W,__mmask16 __U,__m512i __X,__m512 __Y)8256 __m512 test_mm512_mask_permutexvar_ps(__m512 __W, __mmask16 __U, __m512i __X, __m512 __Y) {
8257 // CHECK-LABEL: @test_mm512_mask_permutexvar_ps
8258 // CHECK: @llvm.x86.avx512.permvar.sf.512
8259 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8260 return _mm512_mask_permutexvar_ps(__W, __U, __X, __Y);
8261 }
8262
test_mm512_maskz_permutexvar_ps(__mmask16 __U,__m512i __X,__m512 __Y)8263 __m512 test_mm512_maskz_permutexvar_ps(__mmask16 __U, __m512i __X, __m512 __Y) {
8264 // CHECK-LABEL: @test_mm512_maskz_permutexvar_ps
8265 // CHECK: @llvm.x86.avx512.permvar.sf.512
8266 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8267 return _mm512_maskz_permutexvar_ps(__U, __X, __Y);
8268 }
8269
test_mm512_maskz_permutexvar_epi32(__mmask16 __M,__m512i __X,__m512i __Y)8270 __m512i test_mm512_maskz_permutexvar_epi32(__mmask16 __M, __m512i __X, __m512i __Y) {
8271 // CHECK-LABEL: @test_mm512_maskz_permutexvar_epi32
8272 // CHECK: @llvm.x86.avx512.permvar.si.512
8273 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
8274 return _mm512_maskz_permutexvar_epi32(__M, __X, __Y);
8275 }
8276
test_mm512_permutexvar_epi32(__m512i __X,__m512i __Y)8277 __m512i test_mm512_permutexvar_epi32(__m512i __X, __m512i __Y) {
8278 // CHECK-LABEL: @test_mm512_permutexvar_epi32
8279 // CHECK: @llvm.x86.avx512.permvar.si.512
8280 return _mm512_permutexvar_epi32(__X, __Y);
8281 }
8282
test_mm512_mask_permutexvar_epi32(__m512i __W,__mmask16 __M,__m512i __X,__m512i __Y)8283 __m512i test_mm512_mask_permutexvar_epi32(__m512i __W, __mmask16 __M, __m512i __X, __m512i __Y) {
8284 // CHECK-LABEL: @test_mm512_mask_permutexvar_epi32
8285 // CHECK: @llvm.x86.avx512.permvar.si.512
8286 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
8287 return _mm512_mask_permutexvar_epi32(__W, __M, __X, __Y);
8288 }
8289
test_mm512_kand(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8290 __mmask16 test_mm512_kand(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8291 // CHECK-LABEL: @test_mm512_kand
8292 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8293 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8294 // CHECK: [[RES:%.*]] = and <16 x i1> [[LHS]], [[RHS]]
8295 // CHECK: bitcast <16 x i1> [[RES]] to i16
8296 return _mm512_mask_cmpneq_epu32_mask(_mm512_kand(_mm512_cmpneq_epu32_mask(__A, __B),
8297 _mm512_cmpneq_epu32_mask(__C, __D)),
8298 __E, __F);
8299 }
8300
test_mm512_kandn(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8301 __mmask16 test_mm512_kandn(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8302 // CHECK-LABEL: @test_mm512_kandn
8303 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8304 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8305 // CHECK: [[NOT:%.*]] = xor <16 x i1> [[LHS]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
8306 // CHECK: [[RES:%.*]] = and <16 x i1> [[NOT]], [[RHS]]
8307 // CHECK: bitcast <16 x i1> [[RES]] to i16
8308 return _mm512_mask_cmpneq_epu32_mask(_mm512_kandn(_mm512_cmpneq_epu32_mask(__A, __B),
8309 _mm512_cmpneq_epu32_mask(__C, __D)),
8310 __E, __F);
8311 }
8312
test_mm512_kor(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8313 __mmask16 test_mm512_kor(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8314 // CHECK-LABEL: @test_mm512_kor
8315 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8316 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8317 // CHECK: [[RES:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8318 // CHECK: bitcast <16 x i1> [[RES]] to i16
8319 return _mm512_mask_cmpneq_epu32_mask(_mm512_kor(_mm512_cmpneq_epu32_mask(__A, __B),
8320 _mm512_cmpneq_epu32_mask(__C, __D)),
8321 __E, __F);
8322 }
8323
test_mm512_kortestc(__m512i __A,__m512i __B,__m512i __C,__m512i __D)8324 int test_mm512_kortestc(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
8325 // CHECK-LABEL: @test_mm512_kortestc
8326 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8327 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8328 // CHECK: [[OR:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8329 // CHECK: [[CAST:%.*]] = bitcast <16 x i1> [[OR]] to i16
8330 // CHECK: [[CMP:%.*]] = icmp eq i16 [[CAST]], -1
8331 // CHECK: zext i1 [[CMP]] to i32
8332 return _mm512_kortestc(_mm512_cmpneq_epu32_mask(__A, __B),
8333 _mm512_cmpneq_epu32_mask(__C, __D));
8334 }
8335
test_mm512_kortestz(__m512i __A,__m512i __B,__m512i __C,__m512i __D)8336 int test_mm512_kortestz(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
8337 // CHECK-LABEL: @test_mm512_kortestz
8338 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8339 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8340 // CHECK: [[OR:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8341 // CHECK: [[CAST:%.*]] = bitcast <16 x i1> [[OR]] to i16
8342 // CHECK: [[CMP:%.*]] = icmp eq i16 [[CAST]], 0
8343 // CHECK: zext i1 [[CMP]] to i32
8344 return _mm512_kortestz(_mm512_cmpneq_epu32_mask(__A, __B),
8345 _mm512_cmpneq_epu32_mask(__C, __D));
8346 }
8347
test_kortestz_mask16_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)8348 unsigned char test_kortestz_mask16_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
8349 // CHECK-LABEL: @test_kortestz_mask16_u8
8350 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8351 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8352 // CHECK: [[OR:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8353 // CHECK: [[CAST:%.*]] = bitcast <16 x i1> [[OR]] to i16
8354 // CHECK: [[CMP:%.*]] = icmp eq i16 [[CAST]], 0
8355 // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
8356 // CHECK: trunc i32 [[ZEXT]] to i8
8357 return _kortestz_mask16_u8(_mm512_cmpneq_epu32_mask(__A, __B),
8358 _mm512_cmpneq_epu32_mask(__C, __D));
8359 }
8360
test_kortestc_mask16_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)8361 unsigned char test_kortestc_mask16_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
8362 // CHECK-LABEL: @test_kortestc_mask16_u8
8363 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8364 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8365 // CHECK: [[OR:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8366 // CHECK: [[CAST:%.*]] = bitcast <16 x i1> [[OR]] to i16
8367 // CHECK: [[CMP:%.*]] = icmp eq i16 [[CAST]], -1
8368 // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
8369 // CHECK: trunc i32 [[ZEXT]] to i8
8370 return _kortestc_mask16_u8(_mm512_cmpneq_epu32_mask(__A, __B),
8371 _mm512_cmpneq_epu32_mask(__C, __D));
8372 }
8373
test_kortest_mask16_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D,unsigned char * CF)8374 unsigned char test_kortest_mask16_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, unsigned char *CF) {
8375 // CHECK-LABEL: @test_kortest_mask16_u8
8376 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8377 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8378 // CHECK: [[OR:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8379 // CHECK: [[CAST:%.*]] = bitcast <16 x i1> [[OR]] to i16
8380 // CHECK: [[CMP:%.*]] = icmp eq i16 [[CAST]], -1
8381 // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
8382 // CHECK: trunc i32 [[ZEXT]] to i8
8383 // CHECK: [[LHS2:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8384 // CHECK: [[RHS2:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8385 // CHECK: [[OR2:%.*]] = or <16 x i1> [[LHS2]], [[RHS2]]
8386 // CHECK: [[CAST2:%.*]] = bitcast <16 x i1> [[OR2]] to i16
8387 // CHECK: [[CMP2:%.*]] = icmp eq i16 [[CAST2]], 0
8388 // CHECK: [[ZEXT2:%.*]] = zext i1 [[CMP2]] to i32
8389 // CHECK: trunc i32 [[ZEXT2]] to i8
8390 return _kortest_mask16_u8(_mm512_cmpneq_epu32_mask(__A, __B),
8391 _mm512_cmpneq_epu32_mask(__C, __D), CF);
8392 }
8393
test_mm512_kunpackb(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8394 __mmask16 test_mm512_kunpackb(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8395 // CHECK-LABEL: @test_mm512_kunpackb
8396 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8397 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8398 // CHECK: [[LHS2:%.*]] = shufflevector <16 x i1> [[LHS]], <16 x i1> [[LHS]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
8399 // CHECK: [[RHS2:%.*]] = shufflevector <16 x i1> [[RHS]], <16 x i1> [[RHS]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
8400 // CHECK: [[CONCAT:%.*]] = shufflevector <8 x i1> [[RHS2]], <8 x i1> [[LHS2]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
8401 // CHECK: bitcast <16 x i1> [[CONCAT]] to i16
8402 return _mm512_mask_cmpneq_epu32_mask(_mm512_kunpackb(_mm512_cmpneq_epu32_mask(__A, __B),
8403 _mm512_cmpneq_epu32_mask(__C, __D)),
8404 __E, __F);
8405 }
8406
test_mm512_kxnor(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8407 __mmask16 test_mm512_kxnor(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8408 // CHECK-LABEL: @test_mm512_kxnor
8409 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8410 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8411 // CHECK: [[NOT:%.*]] = xor <16 x i1> [[LHS]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
8412 // CHECK: [[RES:%.*]] = xor <16 x i1> [[NOT]], [[RHS]]
8413 // CHECK: bitcast <16 x i1> [[RES]] to i16
8414 return _mm512_mask_cmpneq_epu32_mask(_mm512_kxnor(_mm512_cmpneq_epu32_mask(__A, __B),
8415 _mm512_cmpneq_epu32_mask(__C, __D)),
8416 __E, __F);
8417 }
8418
test_mm512_kxor(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8419 __mmask16 test_mm512_kxor(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8420 // CHECK-LABEL: @test_mm512_kxor
8421 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8422 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8423 // CHECK: [[RES:%.*]] = xor <16 x i1> [[LHS]], [[RHS]]
8424 // CHECK: bitcast <16 x i1> [[RES]] to i16
8425 return _mm512_mask_cmpneq_epu32_mask(_mm512_kxor(_mm512_cmpneq_epu32_mask(__A, __B),
8426 _mm512_cmpneq_epu32_mask(__C, __D)),
8427 __E, __F);
8428 }
8429
test_knot_mask16(__mmask16 a)8430 __mmask16 test_knot_mask16(__mmask16 a) {
8431 // CHECK-LABEL: @test_knot_mask16
8432 // CHECK: [[IN:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8433 // CHECK: [[NOT:%.*]] = xor <16 x i1> [[IN]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
8434 // CHECK: bitcast <16 x i1> [[NOT]] to i16
8435 return _knot_mask16(a);
8436 }
8437
test_kand_mask16(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8438 __mmask16 test_kand_mask16(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8439 // CHECK-LABEL: @test_kand_mask16
8440 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8441 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8442 // CHECK: [[RES:%.*]] = and <16 x i1> [[LHS]], [[RHS]]
8443 // CHECK: bitcast <16 x i1> [[RES]] to i16
8444 return _mm512_mask_cmpneq_epu32_mask(_kand_mask16(_mm512_cmpneq_epu32_mask(__A, __B),
8445 _mm512_cmpneq_epu32_mask(__C, __D)),
8446 __E, __F);
8447 }
8448
test_kandn_mask16(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8449 __mmask16 test_kandn_mask16(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8450 // CHECK-LABEL: @test_kandn_mask16
8451 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8452 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8453 // CHECK: [[NOT:%.*]] = xor <16 x i1> [[LHS]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
8454 // CHECK: [[RES:%.*]] = and <16 x i1> [[NOT]], [[RHS]]
8455 // CHECK: bitcast <16 x i1> [[RES]] to i16
8456 return _mm512_mask_cmpneq_epu32_mask(_kandn_mask16(_mm512_cmpneq_epu32_mask(__A, __B),
8457 _mm512_cmpneq_epu32_mask(__C, __D)),
8458 __E, __F);
8459 }
8460
test_kor_mask16(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8461 __mmask16 test_kor_mask16(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8462 // CHECK-LABEL: @test_kor_mask16
8463 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8464 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8465 // CHECK: [[RES:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8466 // CHECK: bitcast <16 x i1> [[RES]] to i16
8467 return _mm512_mask_cmpneq_epu32_mask(_kor_mask16(_mm512_cmpneq_epu32_mask(__A, __B),
8468 _mm512_cmpneq_epu32_mask(__C, __D)),
8469 __E, __F);
8470 }
8471
test_kxnor_mask16(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8472 __mmask16 test_kxnor_mask16(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8473 // CHECK-LABEL: @test_kxnor_mask16
8474 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8475 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8476 // CHECK: [[NOT:%.*]] = xor <16 x i1> [[LHS]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
8477 // CHECK: [[RES:%.*]] = xor <16 x i1> [[NOT]], [[RHS]]
8478 // CHECK: bitcast <16 x i1> [[RES]] to i16
8479 return _mm512_mask_cmpneq_epu32_mask(_kxnor_mask16(_mm512_cmpneq_epu32_mask(__A, __B),
8480 _mm512_cmpneq_epu32_mask(__C, __D)),
8481 __E, __F);
8482 }
8483
test_kxor_mask16(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8484 __mmask16 test_kxor_mask16(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8485 // CHECK-LABEL: @test_kxor_mask16
8486 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8487 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8488 // CHECK: [[RES:%.*]] = xor <16 x i1> [[LHS]], [[RHS]]
8489 // CHECK: bitcast <16 x i1> [[RES]] to i16
8490 return _mm512_mask_cmpneq_epu32_mask(_kxor_mask16(_mm512_cmpneq_epu32_mask(__A, __B),
8491 _mm512_cmpneq_epu32_mask(__C, __D)),
8492 __E, __F);
8493 }
8494
test_kshiftli_mask16(__m512i A,__m512i B,__m512i C,__m512i D)8495 __mmask16 test_kshiftli_mask16(__m512i A, __m512i B, __m512i C, __m512i D) {
8496 // CHECK-LABEL: @test_kshiftli_mask16
8497 // CHECK: [[VAL:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8498 // CHECK: [[RES:%.*]] = shufflevector <16 x i1> zeroinitializer, <16 x i1> [[VAL]], <16 x i32> <i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30>
8499 // CHECK: bitcast <16 x i1> [[RES]] to i16
8500 return _mm512_mask_cmpneq_epu32_mask(_kshiftli_mask16(_mm512_cmpneq_epu32_mask(A, B), 1), C, D);
8501 }
8502
test_kshiftri_mask16(__m512i A,__m512i B,__m512i C,__m512i D)8503 __mmask16 test_kshiftri_mask16(__m512i A, __m512i B, __m512i C, __m512i D) {
8504 // CHECK-LABEL: @test_kshiftri_mask16
8505 // CHECK: [[VAL:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8506 // CHECK: [[RES:%.*]] = shufflevector <16 x i1> [[VAL]], <16 x i1> zeroinitializer, <16 x i32> <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16>
8507 // CHECK: bitcast <16 x i1> [[RES]] to i16
8508 return _mm512_mask_cmpneq_epu32_mask(_kshiftri_mask16(_mm512_cmpneq_epu32_mask(A, B), 1), C, D);
8509 }
8510
test_cvtmask16_u32(__m512i A,__m512i B)8511 unsigned int test_cvtmask16_u32(__m512i A, __m512i B) {
8512 // CHECK-LABEL: @test_cvtmask16_u32
8513 // CHECK: bitcast <16 x i1> %{{.*}} to i16
8514 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
8515 // CHECK: zext i16 %{{.*}} to i32
8516 return _cvtmask16_u32(_mm512_cmpneq_epu32_mask(A, B));
8517 }
8518
test_cvtu32_mask16(__m512i A,__m512i B,unsigned int C)8519 __mmask16 test_cvtu32_mask16(__m512i A, __m512i B, unsigned int C) {
8520 // CHECK-LABEL: @test_cvtu32_mask16
8521 // CHECK: trunc i32 %{{.*}} to i16
8522 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
8523 return _mm512_mask_cmpneq_epu32_mask(_cvtu32_mask16(C), A, B);
8524 }
8525
test_load_mask16(__mmask16 * A,__m512i B,__m512i C)8526 __mmask16 test_load_mask16(__mmask16 *A, __m512i B, __m512i C) {
8527 // CHECK-LABEL: @test_load_mask16
8528 // CHECK: [[LOAD:%.*]] = load i16, i16* %{{.*}}
8529 // CHECK: bitcast i16 [[LOAD]] to <16 x i1>
8530 return _mm512_mask_cmpneq_epu32_mask(_load_mask16(A), B, C);
8531 }
8532
test_store_mask16(__mmask16 * A,__m512i B,__m512i C)8533 void test_store_mask16(__mmask16 *A, __m512i B, __m512i C) {
8534 // CHECK-LABEL: @test_store_mask16
8535 // CHECK: bitcast <16 x i1> %{{.*}} to i16
8536 // CHECK: store i16 %{{.*}}, i16* %{{.*}}
8537 _store_mask16(A, _mm512_cmpneq_epu32_mask(B, C));
8538 }
8539
test_mm512_stream_si512(__m512i * __P,__m512i __A)8540 void test_mm512_stream_si512(__m512i * __P, __m512i __A) {
8541 // CHECK-LABEL: @test_mm512_stream_si512
8542 // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 64, !nontemporal
8543 _mm512_stream_si512(__P, __A);
8544 }
8545
test_mm512_stream_si512_2(void * __P,__m512i __A)8546 void test_mm512_stream_si512_2(void * __P, __m512i __A) {
8547 // CHECK-LABEL: @test_mm512_stream_si512
8548 // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 64, !nontemporal
8549 _mm512_stream_si512(__P, __A);
8550 }
8551
test_mm512_stream_load_si512(void * __P)8552 __m512i test_mm512_stream_load_si512(void *__P) {
8553 // CHECK-LABEL: @test_mm512_stream_load_si512
8554 // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 64, !nontemporal
8555 return _mm512_stream_load_si512(__P);
8556 }
8557
test_mm512_stream_load_si512_const(void const * __P)8558 __m512i test_mm512_stream_load_si512_const(void const *__P) {
8559 // CHECK-LABEL: @test_mm512_stream_load_si512_const
8560 // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 64, !nontemporal
8561 return _mm512_stream_load_si512(__P);
8562 }
8563
test_mm512_stream_pd(double * __P,__m512d __A)8564 void test_mm512_stream_pd(double *__P, __m512d __A) {
8565 // CHECK-LABEL: @test_mm512_stream_pd
8566 // CHECK: store <8 x double> %{{.*}}, <8 x double>* %{{.*}}, align 64, !nontemporal
8567 return _mm512_stream_pd(__P, __A);
8568 }
8569
test_mm512_stream_pd_2(void * __P,__m512d __A)8570 void test_mm512_stream_pd_2(void *__P, __m512d __A) {
8571 // CHECK-LABEL: @test_mm512_stream_pd
8572 // CHECK: store <8 x double> %{{.*}}, <8 x double>* %{{.*}}, align 64, !nontemporal
8573 return _mm512_stream_pd(__P, __A);
8574 }
8575
test_mm512_stream_ps(float * __P,__m512 __A)8576 void test_mm512_stream_ps(float *__P, __m512 __A) {
8577 // CHECK-LABEL: @test_mm512_stream_ps
8578 // CHECK: store <16 x float> %{{.*}}, <16 x float>* %{{.*}}, align 64, !nontemporal
8579 _mm512_stream_ps(__P, __A);
8580 }
8581
test_mm512_stream_ps_2(void * __P,__m512 __A)8582 void test_mm512_stream_ps_2(void *__P, __m512 __A) {
8583 // CHECK-LABEL: @test_mm512_stream_ps
8584 // CHECK: store <16 x float> %{{.*}}, <16 x float>* %{{.*}}, align 64, !nontemporal
8585 _mm512_stream_ps(__P, __A);
8586 }
test_mm512_mask_compress_pd(__m512d __W,__mmask8 __U,__m512d __A)8587 __m512d test_mm512_mask_compress_pd(__m512d __W, __mmask8 __U, __m512d __A) {
8588 // CHECK-LABEL: @test_mm512_mask_compress_pd
8589 // CHECK: @llvm.x86.avx512.mask.compress
8590 return _mm512_mask_compress_pd(__W, __U, __A);
8591 }
8592
test_mm512_maskz_compress_pd(__mmask8 __U,__m512d __A)8593 __m512d test_mm512_maskz_compress_pd(__mmask8 __U, __m512d __A) {
8594 // CHECK-LABEL: @test_mm512_maskz_compress_pd
8595 // CHECK: @llvm.x86.avx512.mask.compress
8596 return _mm512_maskz_compress_pd(__U, __A);
8597 }
8598
test_mm512_mask_compress_epi64(__m512i __W,__mmask8 __U,__m512i __A)8599 __m512i test_mm512_mask_compress_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
8600 // CHECK-LABEL: @test_mm512_mask_compress_epi64
8601 // CHECK: @llvm.x86.avx512.mask.compress
8602 return _mm512_mask_compress_epi64(__W, __U, __A);
8603 }
8604
test_mm512_maskz_compress_epi64(__mmask8 __U,__m512i __A)8605 __m512i test_mm512_maskz_compress_epi64(__mmask8 __U, __m512i __A) {
8606 // CHECK-LABEL: @test_mm512_maskz_compress_epi64
8607 // CHECK: @llvm.x86.avx512.mask.compress
8608 return _mm512_maskz_compress_epi64(__U, __A);
8609 }
8610
test_mm512_mask_compress_ps(__m512 __W,__mmask16 __U,__m512 __A)8611 __m512 test_mm512_mask_compress_ps(__m512 __W, __mmask16 __U, __m512 __A) {
8612 // CHECK-LABEL: @test_mm512_mask_compress_ps
8613 // CHECK: @llvm.x86.avx512.mask.compress
8614 return _mm512_mask_compress_ps(__W, __U, __A);
8615 }
8616
test_mm512_maskz_compress_ps(__mmask16 __U,__m512 __A)8617 __m512 test_mm512_maskz_compress_ps(__mmask16 __U, __m512 __A) {
8618 // CHECK-LABEL: @test_mm512_maskz_compress_ps
8619 // CHECK: @llvm.x86.avx512.mask.compress
8620 return _mm512_maskz_compress_ps(__U, __A);
8621 }
8622
test_mm512_mask_compress_epi32(__m512i __W,__mmask16 __U,__m512i __A)8623 __m512i test_mm512_mask_compress_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
8624 // CHECK-LABEL: @test_mm512_mask_compress_epi32
8625 // CHECK: @llvm.x86.avx512.mask.compress
8626 return _mm512_mask_compress_epi32(__W, __U, __A);
8627 }
8628
test_mm512_maskz_compress_epi32(__mmask16 __U,__m512i __A)8629 __m512i test_mm512_maskz_compress_epi32(__mmask16 __U, __m512i __A) {
8630 // CHECK-LABEL: @test_mm512_maskz_compress_epi32
8631 // CHECK: @llvm.x86.avx512.mask.compress
8632 return _mm512_maskz_compress_epi32(__U, __A);
8633 }
8634
test_mm_cmp_round_ss_mask(__m128 __X,__m128 __Y)8635 __mmask8 test_mm_cmp_round_ss_mask(__m128 __X, __m128 __Y) {
8636 // CHECK-LABEL: @test_mm_cmp_round_ss_mask
8637 // CHECK: @llvm.x86.avx512.mask.cmp
8638 return _mm_cmp_round_ss_mask(__X, __Y, _CMP_NLT_US, _MM_FROUND_NO_EXC);
8639 }
8640
test_mm_mask_cmp_round_ss_mask(__mmask8 __M,__m128 __X,__m128 __Y)8641 __mmask8 test_mm_mask_cmp_round_ss_mask(__mmask8 __M, __m128 __X, __m128 __Y) {
8642 // CHECK-LABEL: @test_mm_mask_cmp_round_ss_mask
8643 // CHECK: @llvm.x86.avx512.mask.cmp
8644 return _mm_mask_cmp_round_ss_mask(__M, __X, __Y, _CMP_NLT_US, _MM_FROUND_NO_EXC);
8645 }
8646
test_mm_cmp_ss_mask(__m128 __X,__m128 __Y)8647 __mmask8 test_mm_cmp_ss_mask(__m128 __X, __m128 __Y) {
8648 // CHECK-LABEL: @test_mm_cmp_ss_mask
8649 // CHECK: @llvm.x86.avx512.mask.cmp
8650 return _mm_cmp_ss_mask(__X, __Y, _CMP_NLT_US);
8651 }
8652
test_mm_mask_cmp_ss_mask(__mmask8 __M,__m128 __X,__m128 __Y)8653 __mmask8 test_mm_mask_cmp_ss_mask(__mmask8 __M, __m128 __X, __m128 __Y) {
8654 // CHECK-LABEL: @test_mm_mask_cmp_ss_mask
8655 // CHECK: @llvm.x86.avx512.mask.cmp
8656 return _mm_mask_cmp_ss_mask(__M, __X, __Y, _CMP_NLT_US);
8657 }
8658
test_mm_cmp_round_sd_mask(__m128d __X,__m128d __Y)8659 __mmask8 test_mm_cmp_round_sd_mask(__m128d __X, __m128d __Y) {
8660 // CHECK-LABEL: @test_mm_cmp_round_sd_mask
8661 // CHECK: @llvm.x86.avx512.mask.cmp
8662 return _mm_cmp_round_sd_mask(__X, __Y, _CMP_NLT_US, _MM_FROUND_NO_EXC);
8663 }
8664
test_mm_mask_cmp_round_sd_mask(__mmask8 __M,__m128d __X,__m128d __Y)8665 __mmask8 test_mm_mask_cmp_round_sd_mask(__mmask8 __M, __m128d __X, __m128d __Y) {
8666 // CHECK-LABEL: @test_mm_mask_cmp_round_sd_mask
8667 // CHECK: @llvm.x86.avx512.mask.cmp
8668 return _mm_mask_cmp_round_sd_mask(__M, __X, __Y, _CMP_NLT_US, _MM_FROUND_NO_EXC);
8669 }
8670
test_mm_cmp_sd_mask(__m128d __X,__m128d __Y)8671 __mmask8 test_mm_cmp_sd_mask(__m128d __X, __m128d __Y) {
8672 // CHECK-LABEL: @test_mm_cmp_sd_mask
8673 // CHECK: @llvm.x86.avx512.mask.cmp
8674 return _mm_cmp_sd_mask(__X, __Y, _CMP_NLT_US);
8675 }
8676
test_mm_mask_cmp_sd_mask(__mmask8 __M,__m128d __X,__m128d __Y)8677 __mmask8 test_mm_mask_cmp_sd_mask(__mmask8 __M, __m128d __X, __m128d __Y) {
8678 // CHECK-LABEL: @test_mm_mask_cmp_sd_mask
8679 // CHECK: @llvm.x86.avx512.mask.cmp
8680 return _mm_mask_cmp_sd_mask(__M, __X, __Y, _CMP_NLT_US);
8681 }
8682
test_mm512_movehdup_ps(__m512 __A)8683 __m512 test_mm512_movehdup_ps(__m512 __A) {
8684 // CHECK-LABEL: @test_mm512_movehdup_ps
8685 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7, i32 9, i32 9, i32 11, i32 11, i32 13, i32 13, i32 15, i32 15>
8686 return _mm512_movehdup_ps(__A);
8687 }
8688
test_mm512_mask_movehdup_ps(__m512 __W,__mmask16 __U,__m512 __A)8689 __m512 test_mm512_mask_movehdup_ps(__m512 __W, __mmask16 __U, __m512 __A) {
8690 // CHECK-LABEL: @test_mm512_mask_movehdup_ps
8691 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7, i32 9, i32 9, i32 11, i32 11, i32 13, i32 13, i32 15, i32 15>
8692 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8693 return _mm512_mask_movehdup_ps(__W, __U, __A);
8694 }
8695
test_mm512_maskz_movehdup_ps(__mmask16 __U,__m512 __A)8696 __m512 test_mm512_maskz_movehdup_ps(__mmask16 __U, __m512 __A) {
8697 // CHECK-LABEL: @test_mm512_maskz_movehdup_ps
8698 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7, i32 9, i32 9, i32 11, i32 11, i32 13, i32 13, i32 15, i32 15>
8699 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8700 return _mm512_maskz_movehdup_ps(__U, __A);
8701 }
8702
test_mm512_moveldup_ps(__m512 __A)8703 __m512 test_mm512_moveldup_ps(__m512 __A) {
8704 // CHECK-LABEL: @test_mm512_moveldup_ps
8705 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6, i32 8, i32 8, i32 10, i32 10, i32 12, i32 12, i32 14, i32 14>
8706 return _mm512_moveldup_ps(__A);
8707 }
8708
test_mm512_mask_moveldup_ps(__m512 __W,__mmask16 __U,__m512 __A)8709 __m512 test_mm512_mask_moveldup_ps(__m512 __W, __mmask16 __U, __m512 __A) {
8710 // CHECK-LABEL: @test_mm512_mask_moveldup_ps
8711 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6, i32 8, i32 8, i32 10, i32 10, i32 12, i32 12, i32 14, i32 14>
8712 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8713 return _mm512_mask_moveldup_ps(__W, __U, __A);
8714 }
8715
test_mm512_maskz_moveldup_ps(__mmask16 __U,__m512 __A)8716 __m512 test_mm512_maskz_moveldup_ps(__mmask16 __U, __m512 __A) {
8717 // CHECK-LABEL: @test_mm512_maskz_moveldup_ps
8718 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6, i32 8, i32 8, i32 10, i32 10, i32 12, i32 12, i32 14, i32 14>
8719 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8720 return _mm512_maskz_moveldup_ps(__U, __A);
8721 }
8722
test_mm512_shuffle_epi32(__m512i __A)8723 __m512i test_mm512_shuffle_epi32(__m512i __A) {
8724 // CHECK-LABEL: @test_mm512_shuffle_epi32
8725 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> undef, <16 x i32> <i32 1, i32 0, i32 0, i32 0, i32 5, i32 4, i32 4, i32 4, i32 9, i32 8, i32 8, i32 8, i32 13, i32 12, i32 12, i32 12>
8726 return _mm512_shuffle_epi32(__A, 1);
8727 }
8728
test_mm512_mask_shuffle_epi32(__m512i __W,__mmask16 __U,__m512i __A)8729 __m512i test_mm512_mask_shuffle_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
8730 // CHECK-LABEL: @test_mm512_mask_shuffle_epi32
8731 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> undef, <16 x i32> <i32 1, i32 0, i32 0, i32 0, i32 5, i32 4, i32 4, i32 4, i32 9, i32 8, i32 8, i32 8, i32 13, i32 12, i32 12, i32 12>
8732 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
8733 return _mm512_mask_shuffle_epi32(__W, __U, __A, 1);
8734 }
8735
test_mm512_maskz_shuffle_epi32(__mmask16 __U,__m512i __A)8736 __m512i test_mm512_maskz_shuffle_epi32(__mmask16 __U, __m512i __A) {
8737 // CHECK-LABEL: @test_mm512_maskz_shuffle_epi32
8738 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> undef, <16 x i32> <i32 1, i32 0, i32 0, i32 0, i32 5, i32 4, i32 4, i32 4, i32 9, i32 8, i32 8, i32 8, i32 13, i32 12, i32 12, i32 12>
8739 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
8740 return _mm512_maskz_shuffle_epi32(__U, __A, 1);
8741 }
8742
test_mm512_mask_expand_pd(__m512d __W,__mmask8 __U,__m512d __A)8743 __m512d test_mm512_mask_expand_pd(__m512d __W, __mmask8 __U, __m512d __A) {
8744 // CHECK-LABEL: @test_mm512_mask_expand_pd
8745 // CHECK: @llvm.x86.avx512.mask.expand
8746 return _mm512_mask_expand_pd(__W, __U, __A);
8747 }
8748
test_mm512_maskz_expand_pd(__mmask8 __U,__m512d __A)8749 __m512d test_mm512_maskz_expand_pd(__mmask8 __U, __m512d __A) {
8750 // CHECK-LABEL: @test_mm512_maskz_expand_pd
8751 // CHECK: @llvm.x86.avx512.mask.expand
8752 return _mm512_maskz_expand_pd(__U, __A);
8753 }
8754
test_mm512_mask_expand_epi64(__m512i __W,__mmask8 __U,__m512i __A)8755 __m512i test_mm512_mask_expand_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
8756 // CHECK-LABEL: @test_mm512_mask_expand_epi64
8757 // CHECK: @llvm.x86.avx512.mask.expand
8758 return _mm512_mask_expand_epi64(__W, __U, __A);
8759 }
8760
test_mm512_maskz_expand_epi64(__mmask8 __U,__m512i __A)8761 __m512i test_mm512_maskz_expand_epi64(__mmask8 __U, __m512i __A) {
8762 // CHECK-LABEL: @test_mm512_maskz_expand_epi64
8763 // CHECK: @llvm.x86.avx512.mask.expand
8764 return _mm512_maskz_expand_epi64(__U, __A);
8765 }
test_mm512_mask_expandloadu_epi64(__m512i __W,__mmask8 __U,void const * __P)8766 __m512i test_mm512_mask_expandloadu_epi64(__m512i __W, __mmask8 __U, void const *__P) {
8767 // CHECK-LABEL: @test_mm512_mask_expandloadu_epi64
8768 // CHECK: @llvm.masked.expandload.v8i64(i64* %{{.*}}, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
8769 return _mm512_mask_expandloadu_epi64(__W, __U, __P);
8770 }
8771
test_mm512_maskz_expandloadu_epi64(__mmask8 __U,void const * __P)8772 __m512i test_mm512_maskz_expandloadu_epi64(__mmask8 __U, void const *__P) {
8773 // CHECK-LABEL: @test_mm512_maskz_expandloadu_epi64
8774 // CHECK: @llvm.masked.expandload.v8i64(i64* %{{.*}}, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
8775 return _mm512_maskz_expandloadu_epi64(__U, __P);
8776 }
8777
test_mm512_mask_expandloadu_pd(__m512d __W,__mmask8 __U,void const * __P)8778 __m512d test_mm512_mask_expandloadu_pd(__m512d __W, __mmask8 __U, void const *__P) {
8779 // CHECK-LABEL: @test_mm512_mask_expandloadu_pd
8780 // CHECK: @llvm.masked.expandload.v8f64(double* %{{.*}}, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
8781 return _mm512_mask_expandloadu_pd(__W, __U, __P);
8782 }
8783
test_mm512_maskz_expandloadu_pd(__mmask8 __U,void const * __P)8784 __m512d test_mm512_maskz_expandloadu_pd(__mmask8 __U, void const *__P) {
8785 // CHECK-LABEL: @test_mm512_maskz_expandloadu_pd
8786 // CHECK: @llvm.masked.expandload.v8f64(double* %{{.*}}, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
8787 return _mm512_maskz_expandloadu_pd(__U, __P);
8788 }
8789
test_mm512_mask_expandloadu_epi32(__m512i __W,__mmask16 __U,void const * __P)8790 __m512i test_mm512_mask_expandloadu_epi32(__m512i __W, __mmask16 __U, void const *__P) {
8791 // CHECK-LABEL: @test_mm512_mask_expandloadu_epi32
8792 // CHECK: @llvm.masked.expandload.v16i32(i32* %{{.*}}, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
8793 return _mm512_mask_expandloadu_epi32(__W, __U, __P);
8794 }
8795
test_mm512_maskz_expandloadu_epi32(__mmask16 __U,void const * __P)8796 __m512i test_mm512_maskz_expandloadu_epi32(__mmask16 __U, void const *__P) {
8797 // CHECK-LABEL: @test_mm512_maskz_expandloadu_epi32
8798 // CHECK: @llvm.masked.expandload.v16i32(i32* %{{.*}}, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
8799 return _mm512_maskz_expandloadu_epi32(__U, __P);
8800 }
8801
test_mm512_mask_expandloadu_ps(__m512 __W,__mmask16 __U,void const * __P)8802 __m512 test_mm512_mask_expandloadu_ps(__m512 __W, __mmask16 __U, void const *__P) {
8803 // CHECK-LABEL: @test_mm512_mask_expandloadu_ps
8804 // CHECK: @llvm.masked.expandload.v16f32(float* %{{.*}}, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
8805 return _mm512_mask_expandloadu_ps(__W, __U, __P);
8806 }
8807
test_mm512_maskz_expandloadu_ps(__mmask16 __U,void const * __P)8808 __m512 test_mm512_maskz_expandloadu_ps(__mmask16 __U, void const *__P) {
8809 // CHECK-LABEL: @test_mm512_maskz_expandloadu_ps
8810 // CHECK: @llvm.masked.expandload.v16f32(float* %{{.*}}, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
8811 return _mm512_maskz_expandloadu_ps(__U, __P);
8812 }
8813
test_mm512_mask_expand_ps(__m512 __W,__mmask16 __U,__m512 __A)8814 __m512 test_mm512_mask_expand_ps(__m512 __W, __mmask16 __U, __m512 __A) {
8815 // CHECK-LABEL: @test_mm512_mask_expand_ps
8816 // CHECK: @llvm.x86.avx512.mask.expand
8817 return _mm512_mask_expand_ps(__W, __U, __A);
8818 }
8819
test_mm512_maskz_expand_ps(__mmask16 __U,__m512 __A)8820 __m512 test_mm512_maskz_expand_ps(__mmask16 __U, __m512 __A) {
8821 // CHECK-LABEL: @test_mm512_maskz_expand_ps
8822 // CHECK: @llvm.x86.avx512.mask.expand
8823 return _mm512_maskz_expand_ps(__U, __A);
8824 }
8825
test_mm512_mask_expand_epi32(__m512i __W,__mmask16 __U,__m512i __A)8826 __m512i test_mm512_mask_expand_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
8827 // CHECK-LABEL: @test_mm512_mask_expand_epi32
8828 // CHECK: @llvm.x86.avx512.mask.expand
8829 return _mm512_mask_expand_epi32(__W, __U, __A);
8830 }
8831
test_mm512_maskz_expand_epi32(__mmask16 __U,__m512i __A)8832 __m512i test_mm512_maskz_expand_epi32(__mmask16 __U, __m512i __A) {
8833 // CHECK-LABEL: @test_mm512_maskz_expand_epi32
8834 // CHECK: @llvm.x86.avx512.mask.expand
8835 return _mm512_maskz_expand_epi32(__U, __A);
8836 }
test_mm512_cvt_roundps_pd(__m256 __A)8837 __m512d test_mm512_cvt_roundps_pd(__m256 __A) {
8838 // CHECK-LABEL: @test_mm512_cvt_roundps_pd
8839 // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512
8840 return _mm512_cvt_roundps_pd(__A, _MM_FROUND_NO_EXC);
8841 }
8842
test_mm512_mask_cvt_roundps_pd(__m512d __W,__mmask8 __U,__m256 __A)8843 __m512d test_mm512_mask_cvt_roundps_pd(__m512d __W, __mmask8 __U, __m256 __A) {
8844 // CHECK-LABEL: @test_mm512_mask_cvt_roundps_pd
8845 // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512
8846 return _mm512_mask_cvt_roundps_pd(__W, __U, __A, _MM_FROUND_NO_EXC);
8847 }
8848
test_mm512_maskz_cvt_roundps_pd(__mmask8 __U,__m256 __A)8849 __m512d test_mm512_maskz_cvt_roundps_pd(__mmask8 __U, __m256 __A) {
8850 // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_pd
8851 // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512
8852 return _mm512_maskz_cvt_roundps_pd(__U, __A, _MM_FROUND_NO_EXC);
8853 }
8854
test_mm512_cvtps_pd(__m256 __A)8855 __m512d test_mm512_cvtps_pd(__m256 __A) {
8856 // CHECK-LABEL: @test_mm512_cvtps_pd
8857 // CHECK: fpext <8 x float> %{{.*}} to <8 x double>
8858 return _mm512_cvtps_pd(__A);
8859 }
8860
test_mm512_cvtpslo_pd(__m512 __A)8861 __m512d test_mm512_cvtpslo_pd(__m512 __A) {
8862 // CHECK-LABEL: @test_mm512_cvtpslo_pd
8863 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
8864 // CHECK: fpext <8 x float> %{{.*}} to <8 x double>
8865 return _mm512_cvtpslo_pd(__A);
8866 }
8867
test_mm512_mask_cvtps_pd(__m512d __W,__mmask8 __U,__m256 __A)8868 __m512d test_mm512_mask_cvtps_pd(__m512d __W, __mmask8 __U, __m256 __A) {
8869 // CHECK-LABEL: @test_mm512_mask_cvtps_pd
8870 // CHECK: fpext <8 x float> %{{.*}} to <8 x double>
8871 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8872 return _mm512_mask_cvtps_pd(__W, __U, __A);
8873 }
8874
test_mm512_mask_cvtpslo_pd(__m512d __W,__mmask8 __U,__m512 __A)8875 __m512d test_mm512_mask_cvtpslo_pd(__m512d __W, __mmask8 __U, __m512 __A) {
8876 // CHECK-LABEL: @test_mm512_mask_cvtpslo_pd
8877 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
8878 // CHECK: fpext <8 x float> %{{.*}} to <8 x double>
8879 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8880 return _mm512_mask_cvtpslo_pd(__W, __U, __A);
8881 }
8882
test_mm512_maskz_cvtps_pd(__mmask8 __U,__m256 __A)8883 __m512d test_mm512_maskz_cvtps_pd(__mmask8 __U, __m256 __A) {
8884 // CHECK-LABEL: @test_mm512_maskz_cvtps_pd
8885 // CHECK: fpext <8 x float> %{{.*}} to <8 x double>
8886 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8887 return _mm512_maskz_cvtps_pd(__U, __A);
8888 }
test_mm512_mask_mov_pd(__m512d __W,__mmask8 __U,__m512d __A)8889 __m512d test_mm512_mask_mov_pd(__m512d __W, __mmask8 __U, __m512d __A) {
8890 // CHECK-LABEL: @test_mm512_mask_mov_pd
8891 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8892 return _mm512_mask_mov_pd(__W, __U, __A);
8893 }
8894
test_mm512_maskz_mov_pd(__mmask8 __U,__m512d __A)8895 __m512d test_mm512_maskz_mov_pd(__mmask8 __U, __m512d __A) {
8896 // CHECK-LABEL: @test_mm512_maskz_mov_pd
8897 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8898 return _mm512_maskz_mov_pd(__U, __A);
8899 }
8900
test_mm512_mask_mov_ps(__m512 __W,__mmask16 __U,__m512 __A)8901 __m512 test_mm512_mask_mov_ps(__m512 __W, __mmask16 __U, __m512 __A) {
8902 // CHECK-LABEL: @test_mm512_mask_mov_ps
8903 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8904 return _mm512_mask_mov_ps(__W, __U, __A);
8905 }
8906
test_mm512_maskz_mov_ps(__mmask16 __U,__m512 __A)8907 __m512 test_mm512_maskz_mov_ps(__mmask16 __U, __m512 __A) {
8908 // CHECK-LABEL: @test_mm512_maskz_mov_ps
8909 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8910 return _mm512_maskz_mov_ps(__U, __A);
8911 }
8912
test_mm512_mask_compressstoreu_pd(void * __P,__mmask8 __U,__m512d __A)8913 void test_mm512_mask_compressstoreu_pd(void *__P, __mmask8 __U, __m512d __A) {
8914 // CHECK-LABEL: @test_mm512_mask_compressstoreu_pd
8915 // CHECK: @llvm.masked.compressstore.v8f64(<8 x double> %{{.*}}, double* %{{.*}}, <8 x i1> %{{.*}})
8916 return _mm512_mask_compressstoreu_pd(__P, __U, __A);
8917 }
8918
test_mm512_mask_compressstoreu_epi64(void * __P,__mmask8 __U,__m512i __A)8919 void test_mm512_mask_compressstoreu_epi64(void *__P, __mmask8 __U, __m512i __A) {
8920 // CHECK-LABEL: @test_mm512_mask_compressstoreu_epi64
8921 // CHECK: @llvm.masked.compressstore.v8i64(<8 x i64> %{{.*}}, i64* %{{.*}}, <8 x i1> %{{.*}})
8922 return _mm512_mask_compressstoreu_epi64(__P, __U, __A);
8923 }
8924
test_mm512_mask_compressstoreu_ps(void * __P,__mmask16 __U,__m512 __A)8925 void test_mm512_mask_compressstoreu_ps(void *__P, __mmask16 __U, __m512 __A) {
8926 // CHECK-LABEL: @test_mm512_mask_compressstoreu_ps
8927 // CHECK: @llvm.masked.compressstore.v16f32(<16 x float> %{{.*}}, float* %{{.*}}, <16 x i1> %{{.*}})
8928 return _mm512_mask_compressstoreu_ps(__P, __U, __A);
8929 }
8930
test_mm512_mask_compressstoreu_epi32(void * __P,__mmask16 __U,__m512i __A)8931 void test_mm512_mask_compressstoreu_epi32(void *__P, __mmask16 __U, __m512i __A) {
8932 // CHECK-LABEL: @test_mm512_mask_compressstoreu_epi32
8933 // CHECK: @llvm.masked.compressstore.v16i32(<16 x i32> %{{.*}}, i32* %{{.*}}, <16 x i1> %{{.*}})
8934 return _mm512_mask_compressstoreu_epi32(__P, __U, __A);
8935 }
8936
test_mm512_cvtt_roundpd_epu32(__m512d __A)8937 __m256i test_mm512_cvtt_roundpd_epu32(__m512d __A) {
8938 // CHECK-LABEL: @test_mm512_cvtt_roundpd_epu32
8939 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8940 return _mm512_cvtt_roundpd_epu32(__A, _MM_FROUND_NO_EXC);
8941 }
8942
test_mm512_mask_cvtt_roundpd_epu32(__m256i __W,__mmask8 __U,__m512d __A)8943 __m256i test_mm512_mask_cvtt_roundpd_epu32(__m256i __W, __mmask8 __U, __m512d __A) {
8944 // CHECK-LABEL: @test_mm512_mask_cvtt_roundpd_epu32
8945 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8946 return _mm512_mask_cvtt_roundpd_epu32(__W, __U, __A, _MM_FROUND_NO_EXC);
8947 }
8948
test_mm512_maskz_cvtt_roundpd_epu32(__mmask8 __U,__m512d __A)8949 __m256i test_mm512_maskz_cvtt_roundpd_epu32(__mmask8 __U, __m512d __A) {
8950 // CHECK-LABEL: @test_mm512_maskz_cvtt_roundpd_epu32
8951 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8952 return _mm512_maskz_cvtt_roundpd_epu32(__U, __A, _MM_FROUND_NO_EXC);
8953 }
8954
test_mm512_cvttpd_epu32(__m512d __A)8955 __m256i test_mm512_cvttpd_epu32(__m512d __A) {
8956 // CHECK-LABEL: @test_mm512_cvttpd_epu32
8957 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8958 return _mm512_cvttpd_epu32(__A);
8959 }
8960
test_mm512_mask_cvttpd_epu32(__m256i __W,__mmask8 __U,__m512d __A)8961 __m256i test_mm512_mask_cvttpd_epu32(__m256i __W, __mmask8 __U, __m512d __A) {
8962 // CHECK-LABEL: @test_mm512_mask_cvttpd_epu32
8963 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8964 return _mm512_mask_cvttpd_epu32(__W, __U, __A);
8965 }
8966
test_mm512_maskz_cvttpd_epu32(__mmask8 __U,__m512d __A)8967 __m256i test_mm512_maskz_cvttpd_epu32(__mmask8 __U, __m512d __A) {
8968 // CHECK-LABEL: @test_mm512_maskz_cvttpd_epu32
8969 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8970 return _mm512_maskz_cvttpd_epu32(__U, __A);
8971 }
8972
test_mm512_castpd_ps(__m512d __A)8973 __m512 test_mm512_castpd_ps (__m512d __A)
8974 {
8975 // CHECK-LABEL: @test_mm512_castpd_ps
8976 // CHECK: bitcast <8 x double> %{{.}} to <16 x float>
8977 return _mm512_castpd_ps (__A);
8978 }
8979
test_mm512_castps_pd(__m512 __A)8980 __m512d test_mm512_castps_pd (__m512 __A)
8981 {
8982 // CHECK-LABEL: @test_mm512_castps_pd
8983 // CHECK: bitcast <16 x float> %{{.}} to <8 x double>
8984 return _mm512_castps_pd (__A);
8985 }
8986
test_mm512_castpd_si512(__m512d __A)8987 __m512i test_mm512_castpd_si512 (__m512d __A)
8988 {
8989 // CHECK-LABEL: @test_mm512_castpd_si512
8990 // CHECK: bitcast <8 x double> %{{.}} to <8 x i64>
8991 return _mm512_castpd_si512 (__A);
8992 }
8993
test_mm512_castps128_ps512(__m128 __A)8994 __m512 test_mm512_castps128_ps512(__m128 __A) {
8995 // CHECK-LABEL: @test_mm512_castps128_ps512
8996 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
8997 return _mm512_castps128_ps512(__A);
8998 }
8999
test_mm512_castpd128_pd512(__m128d __A)9000 __m512d test_mm512_castpd128_pd512(__m128d __A) {
9001 // CHECK-LABEL: @test_mm512_castpd128_pd512
9002 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
9003 return _mm512_castpd128_pd512(__A);
9004 }
9005
test_mm512_set1_epi8(char d)9006 __m512i test_mm512_set1_epi8(char d)
9007 {
9008 // CHECK-LABEL: @test_mm512_set1_epi8
9009 // CHECK: insertelement <64 x i8> {{.*}}, i32 0
9010 // CHECK: insertelement <64 x i8> {{.*}}, i32 1
9011 // CHECK: insertelement <64 x i8> {{.*}}, i32 2
9012 // CHECK: insertelement <64 x i8> {{.*}}, i32 3
9013 // CHECK: insertelement <64 x i8> {{.*}}, i32 4
9014 // CHECK: insertelement <64 x i8> {{.*}}, i32 5
9015 // CHECK: insertelement <64 x i8> {{.*}}, i32 6
9016 // CHECK: insertelement <64 x i8> {{.*}}, i32 7
9017 // CHECK: insertelement <64 x i8> {{.*}}, i32 63
9018 return _mm512_set1_epi8(d);
9019 }
9020
test_mm512_set1_epi16(short d)9021 __m512i test_mm512_set1_epi16(short d)
9022 {
9023 // CHECK-LABEL: @test_mm512_set1_epi16
9024 // CHECK: insertelement <32 x i16> {{.*}}, i32 0
9025 // CHECK: insertelement <32 x i16> {{.*}}, i32 1
9026 // CHECK: insertelement <32 x i16> {{.*}}, i32 2
9027 // CHECK: insertelement <32 x i16> {{.*}}, i32 3
9028 // CHECK: insertelement <32 x i16> {{.*}}, i32 4
9029 // CHECK: insertelement <32 x i16> {{.*}}, i32 5
9030 // CHECK: insertelement <32 x i16> {{.*}}, i32 6
9031 // CHECK: insertelement <32 x i16> {{.*}}, i32 7
9032 // CHECK: insertelement <32 x i16> {{.*}}, i32 31
9033 return _mm512_set1_epi16(d);
9034 }
9035
test_mm512_set4_epi32(int __A,int __B,int __C,int __D)9036 __m512i test_mm512_set4_epi32 (int __A, int __B, int __C, int __D)
9037 {
9038 // CHECK-LABEL: @test_mm512_set4_epi32
9039 // CHECK: insertelement <16 x i32> {{.*}}, i32 15
9040 return _mm512_set4_epi32 (__A,__B,__C,__D);
9041 }
9042
test_mm512_set4_epi64(long long __A,long long __B,long long __C,long long __D)9043 __m512i test_mm512_set4_epi64 (long long __A, long long __B, long long __C, long long __D)
9044 {
9045 // CHECK-LABEL: @test_mm512_set4_epi64
9046 // CHECK: insertelement <8 x i64> {{.*}}, i32 7
9047 return _mm512_set4_epi64 (__A,__B,__C,__D);
9048 }
9049
test_mm512_set4_pd(double __A,double __B,double __C,double __D)9050 __m512d test_mm512_set4_pd (double __A, double __B, double __C, double __D)
9051 {
9052 // CHECK-LABEL: @test_mm512_set4_pd
9053 // CHECK: insertelement <8 x double> {{.*}}, i32 7
9054 return _mm512_set4_pd (__A,__B,__C,__D);
9055 }
9056
test_mm512_set4_ps(float __A,float __B,float __C,float __D)9057 __m512 test_mm512_set4_ps (float __A, float __B, float __C, float __D)
9058 {
9059 // CHECK-LABEL: @test_mm512_set4_ps
9060 // CHECK: insertelement <16 x float> {{.*}}, i32 15
9061 return _mm512_set4_ps (__A,__B,__C,__D);
9062 }
9063
test_mm512_setr4_epi32(int e0,int e1,int e2,int e3)9064 __m512i test_mm512_setr4_epi32(int e0, int e1, int e2, int e3)
9065 {
9066 // CHECK-LABEL: @test_mm512_setr4_epi32
9067 // CHECK: insertelement <16 x i32> {{.*}}, i32 15
9068 return _mm512_setr4_epi32(e0, e1, e2, e3);
9069 }
9070
test_mm512_setr4_epi64(long long e0,long long e1,long long e2,long long e3)9071 __m512i test_mm512_setr4_epi64(long long e0, long long e1, long long e2, long long e3)
9072 {
9073 // CHECK-LABEL: @test_mm512_setr4_epi64
9074 // CHECK: insertelement <8 x i64> {{.*}}, i32 7
9075 return _mm512_setr4_epi64(e0, e1, e2, e3);
9076 }
9077
test_mm512_setr4_pd(double e0,double e1,double e2,double e3)9078 __m512d test_mm512_setr4_pd(double e0, double e1, double e2, double e3)
9079 {
9080 // CHECK-LABEL: @test_mm512_setr4_pd
9081 // CHECK: insertelement <8 x double> {{.*}}, i32 7
9082 return _mm512_setr4_pd(e0,e1,e2,e3);
9083 }
9084
test_mm512_setr4_ps(float e0,float e1,float e2,float e3)9085 __m512 test_mm512_setr4_ps(float e0, float e1, float e2, float e3)
9086 {
9087 // CHECK-LABEL: @test_mm512_setr4_ps
9088 // CHECK: insertelement <16 x float> {{.*}}, i32 15
9089 return _mm512_setr4_ps(e0,e1,e2,e3);
9090 }
9091
test_mm512_castpd256_pd512(__m256d a)9092 __m512d test_mm512_castpd256_pd512(__m256d a)
9093 {
9094 // CHECK-LABEL: @test_mm512_castpd256_pd512
9095 // CHECK: shufflevector <4 x double> {{.*}} <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef>
9096 return _mm512_castpd256_pd512(a);
9097 }
9098
test_mm512_castpd512_pd256(__m512d __A)9099 __m256d test_mm512_castpd512_pd256 (__m512d __A)
9100 {
9101 // CHECK-LABEL: @test_mm512_castpd512_pd256
9102 // CHECK: shufflevector <8 x double> %{{.}}, <8 x double> %{{.}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9103 return _mm512_castpd512_pd256 (__A);
9104 }
9105
test_mm512_castps512_ps256(__m512 __A)9106 __m256 test_mm512_castps512_ps256 (__m512 __A)
9107 {
9108 // CHECK-LABEL: @test_mm512_castps512_ps256
9109 // CHECK: shufflevector <16 x float> %{{.}}, <16 x float> %{{.}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
9110 return _mm512_castps512_ps256 (__A);
9111 }
9112
test_mm512_castps_si512(__m512 __A)9113 __m512i test_mm512_castps_si512 (__m512 __A)
9114 {
9115 // CHECK-LABEL: @test_mm512_castps_si512
9116 // CHECK: bitcast <16 x float> %{{.}} to <8 x i64>
9117 return _mm512_castps_si512 (__A);
9118 }
test_mm512_castsi128_si512(__m128i __A)9119 __m512i test_mm512_castsi128_si512(__m128i __A) {
9120 // CHECK-LABEL: @test_mm512_castsi128_si512
9121 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
9122 return _mm512_castsi128_si512(__A);
9123 }
9124
test_mm512_castsi256_si512(__m256i __A)9125 __m512i test_mm512_castsi256_si512(__m256i __A) {
9126 // CHECK-LABEL: @test_mm512_castsi256_si512
9127 // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef>
9128 return _mm512_castsi256_si512(__A);
9129 }
9130
test_mm512_castsi512_ps(__m512i __A)9131 __m512 test_mm512_castsi512_ps (__m512i __A)
9132 {
9133 // CHECK-LABEL: @test_mm512_castsi512_ps
9134 // CHECK: bitcast <8 x i64> %{{.}} to <16 x float>
9135 return _mm512_castsi512_ps (__A);
9136 }
9137
test_mm512_castsi512_pd(__m512i __A)9138 __m512d test_mm512_castsi512_pd (__m512i __A)
9139 {
9140 // CHECK-LABEL: @test_mm512_castsi512_pd
9141 // CHECK: bitcast <8 x i64> %{{.}} to <8 x double>
9142 return _mm512_castsi512_pd (__A);
9143 }
9144
test_mm512_castsi512_si128(__m512i __A)9145 __m128i test_mm512_castsi512_si128 (__m512i __A)
9146 {
9147 // CHECK-LABEL: @test_mm512_castsi512_si128
9148 // CHECK: shufflevector <8 x i64> %{{.}}, <8 x i64> %{{.}}, <2 x i32> <i32 0, i32 1>
9149 return _mm512_castsi512_si128 (__A);
9150 }
9151
test_mm512_castsi512_si256(__m512i __A)9152 __m256i test_mm512_castsi512_si256 (__m512i __A)
9153 {
9154 // CHECK-LABEL: @test_mm512_castsi512_si256
9155 // CHECK: shufflevector <8 x i64> %{{.}}, <8 x i64> %{{.}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9156 return _mm512_castsi512_si256 (__A);
9157 }
9158
test_mm_cvt_roundsd_ss(__m128 __A,__m128d __B)9159 __m128 test_mm_cvt_roundsd_ss(__m128 __A, __m128d __B) {
9160 // CHECK-LABEL: @test_mm_cvt_roundsd_ss
9161 // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
9162 return _mm_cvt_roundsd_ss(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
9163 }
9164
test_mm_mask_cvt_roundsd_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128d __B)9165 __m128 test_mm_mask_cvt_roundsd_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128d __B) {
9166 // CHECK-LABEL: @test_mm_mask_cvt_roundsd_ss
9167 // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
9168 return _mm_mask_cvt_roundsd_ss(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
9169 }
9170
test_mm_maskz_cvt_roundsd_ss(__mmask8 __U,__m128 __A,__m128d __B)9171 __m128 test_mm_maskz_cvt_roundsd_ss(__mmask8 __U, __m128 __A, __m128d __B) {
9172 // CHECK-LABEL: @test_mm_maskz_cvt_roundsd_ss
9173 // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
9174 return _mm_maskz_cvt_roundsd_ss(__U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
9175 }
9176
9177 #ifdef __x86_64__
test_mm_cvt_roundi64_sd(__m128d __A,long long __B)9178 __m128d test_mm_cvt_roundi64_sd(__m128d __A, long long __B) {
9179 // CHECK-LABEL: @test_mm_cvt_roundi64_sd
9180 // CHECK: @llvm.x86.avx512.cvtsi2sd64
9181 return _mm_cvt_roundi64_sd(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
9182 }
9183
test_mm_cvt_roundsi64_sd(__m128d __A,long long __B)9184 __m128d test_mm_cvt_roundsi64_sd(__m128d __A, long long __B) {
9185 // CHECK-LABEL: @test_mm_cvt_roundsi64_sd
9186 // CHECK: @llvm.x86.avx512.cvtsi2sd64
9187 return _mm_cvt_roundsi64_sd(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
9188 }
9189 #endif
9190
test_mm_cvt_roundsi32_ss(__m128 __A,int __B)9191 __m128 test_mm_cvt_roundsi32_ss(__m128 __A, int __B) {
9192 // CHECK-LABEL: @test_mm_cvt_roundsi32_ss
9193 // CHECK: @llvm.x86.avx512.cvtsi2ss32
9194 return _mm_cvt_roundsi32_ss(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
9195 }
9196
test_mm_cvt_roundi32_ss(__m128 __A,int __B)9197 __m128 test_mm_cvt_roundi32_ss(__m128 __A, int __B) {
9198 // CHECK-LABEL: @test_mm_cvt_roundi32_ss
9199 // CHECK: @llvm.x86.avx512.cvtsi2ss32
9200 return _mm_cvt_roundi32_ss(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
9201 }
9202
9203 #ifdef __x86_64__
test_mm_cvt_roundsi64_ss(__m128 __A,long long __B)9204 __m128 test_mm_cvt_roundsi64_ss(__m128 __A, long long __B) {
9205 // CHECK-LABEL: @test_mm_cvt_roundsi64_ss
9206 // CHECK: @llvm.x86.avx512.cvtsi2ss64
9207 return _mm_cvt_roundsi64_ss(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
9208 }
9209
test_mm_cvt_roundi64_ss(__m128 __A,long long __B)9210 __m128 test_mm_cvt_roundi64_ss(__m128 __A, long long __B) {
9211 // CHECK-LABEL: @test_mm_cvt_roundi64_ss
9212 // CHECK: @llvm.x86.avx512.cvtsi2ss64
9213 return _mm_cvt_roundi64_ss(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
9214 }
9215 #endif
9216
test_mm_cvt_roundss_sd(__m128d __A,__m128 __B)9217 __m128d test_mm_cvt_roundss_sd(__m128d __A, __m128 __B) {
9218 // CHECK-LABEL: @test_mm_cvt_roundss_sd
9219 // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
9220 return _mm_cvt_roundss_sd(__A, __B, _MM_FROUND_NO_EXC);
9221 }
9222
test_mm_mask_cvt_roundss_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128 __B)9223 __m128d test_mm_mask_cvt_roundss_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128 __B) {
9224 // CHECK-LABEL: @test_mm_mask_cvt_roundss_sd
9225 // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
9226 return _mm_mask_cvt_roundss_sd(__W, __U, __A, __B, _MM_FROUND_NO_EXC);
9227 }
9228
test_mm_maskz_cvt_roundss_sd(__mmask8 __U,__m128d __A,__m128 __B)9229 __m128d test_mm_maskz_cvt_roundss_sd( __mmask8 __U, __m128d __A, __m128 __B) {
9230 // CHECK-LABEL: @test_mm_maskz_cvt_roundss_sd
9231 // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
9232 return _mm_maskz_cvt_roundss_sd( __U, __A, __B, _MM_FROUND_NO_EXC);
9233 }
9234
test_mm_cvtu32_sd(__m128d __A,unsigned __B)9235 __m128d test_mm_cvtu32_sd(__m128d __A, unsigned __B) {
9236 // CHECK-LABEL: @test_mm_cvtu32_sd
9237 // CHECK: uitofp i32 %{{.*}} to double
9238 // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
9239 return _mm_cvtu32_sd(__A, __B);
9240 }
9241
9242 #ifdef __x86_64__
test_mm_cvt_roundu64_sd(__m128d __A,unsigned long long __B)9243 __m128d test_mm_cvt_roundu64_sd(__m128d __A, unsigned long long __B) {
9244 // CHECK-LABEL: @test_mm_cvt_roundu64_sd
9245 // CHECK: @llvm.x86.avx512.cvtusi642sd
9246 return _mm_cvt_roundu64_sd(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
9247 }
9248
test_mm_cvtu64_sd(__m128d __A,unsigned long long __B)9249 __m128d test_mm_cvtu64_sd(__m128d __A, unsigned long long __B) {
9250 // CHECK-LABEL: @test_mm_cvtu64_sd
9251 // CHECK: uitofp i64 %{{.*}} to double
9252 // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
9253 return _mm_cvtu64_sd(__A, __B);
9254 }
9255 #endif
9256
test_mm_cvt_roundu32_ss(__m128 __A,unsigned __B)9257 __m128 test_mm_cvt_roundu32_ss(__m128 __A, unsigned __B) {
9258 // CHECK-LABEL: @test_mm_cvt_roundu32_ss
9259 // CHECK: @llvm.x86.avx512.cvtusi2ss
9260 return _mm_cvt_roundu32_ss(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
9261 }
9262
test_mm_cvtu32_ss(__m128 __A,unsigned __B)9263 __m128 test_mm_cvtu32_ss(__m128 __A, unsigned __B) {
9264 // CHECK-LABEL: @test_mm_cvtu32_ss
9265 // CHECK: uitofp i32 %{{.*}} to float
9266 // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
9267 return _mm_cvtu32_ss(__A, __B);
9268 }
9269
9270 #ifdef __x86_64__
test_mm_cvt_roundu64_ss(__m128 __A,unsigned long long __B)9271 __m128 test_mm_cvt_roundu64_ss(__m128 __A, unsigned long long __B) {
9272 // CHECK-LABEL: @test_mm_cvt_roundu64_ss
9273 // CHECK: @llvm.x86.avx512.cvtusi642ss
9274 return _mm_cvt_roundu64_ss(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
9275 }
9276
test_mm_cvtu64_ss(__m128 __A,unsigned long long __B)9277 __m128 test_mm_cvtu64_ss(__m128 __A, unsigned long long __B) {
9278 // CHECK-LABEL: @test_mm_cvtu64_ss
9279 // CHECK: uitofp i64 %{{.*}} to float
9280 // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
9281 return _mm_cvtu64_ss(__A, __B);
9282 }
9283 #endif
9284
test_mm512_mask_cvttps_epu32(__m512i __W,__mmask16 __U,__m512 __A)9285 __m512i test_mm512_mask_cvttps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
9286 {
9287 // CHECK-LABEL: @test_mm512_mask_cvttps_epu32
9288 // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
9289 return _mm512_mask_cvttps_epu32 (__W,__U,__A);
9290 }
9291
test_mm512_maskz_cvttps_epu32(__mmask16 __U,__m512 __A)9292 __m512i test_mm512_maskz_cvttps_epu32 (__mmask16 __U, __m512 __A)
9293 {
9294 // CHECK-LABEL: @test_mm512_maskz_cvttps_epu32
9295 // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
9296 return _mm512_maskz_cvttps_epu32 (__U,__A);
9297 }
9298
test_mm512_cvtepu32_ps(__m512i __A)9299 __m512 test_mm512_cvtepu32_ps (__m512i __A)
9300 {
9301 // CHECK-LABEL: @test_mm512_cvtepu32_ps
9302 // CHECK: uitofp <16 x i32> %{{.*}} to <16 x float>
9303 return _mm512_cvtepu32_ps (__A);
9304 }
9305
test_mm512_mask_cvtepu32_ps(__m512 __W,__mmask16 __U,__m512i __A)9306 __m512 test_mm512_mask_cvtepu32_ps (__m512 __W, __mmask16 __U, __m512i __A)
9307 {
9308 // CHECK-LABEL: @test_mm512_mask_cvtepu32_ps
9309 // CHECK: uitofp <16 x i32> %{{.*}} to <16 x float>
9310 // CHECK: select <16 x i1> {{.*}}, <16 x float> {{.*}}, <16 x float> {{.*}}
9311 return _mm512_mask_cvtepu32_ps (__W,__U,__A);
9312 }
9313
test_mm512_maskz_cvtepu32_ps(__mmask16 __U,__m512i __A)9314 __m512 test_mm512_maskz_cvtepu32_ps (__mmask16 __U, __m512i __A)
9315 {
9316 // CHECK-LABEL: @test_mm512_maskz_cvtepu32_ps
9317 // CHECK: uitofp <16 x i32> %{{.*}} to <16 x float>
9318 // CHECK: select <16 x i1> {{.*}}, <16 x float> {{.*}}, <16 x float> {{.*}}
9319 return _mm512_maskz_cvtepu32_ps (__U,__A);
9320 }
9321
test_mm512_cvtepi32_pd(__m256i __A)9322 __m512d test_mm512_cvtepi32_pd (__m256i __A)
9323 {
9324 // CHECK-LABEL: @test_mm512_cvtepi32_pd
9325 // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
9326 return _mm512_cvtepi32_pd (__A);
9327 }
9328
test_mm512_mask_cvtepi32_pd(__m512d __W,__mmask8 __U,__m256i __A)9329 __m512d test_mm512_mask_cvtepi32_pd (__m512d __W, __mmask8 __U, __m256i __A)
9330 {
9331 // CHECK-LABEL: @test_mm512_mask_cvtepi32_pd
9332 // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
9333 // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9334 return _mm512_mask_cvtepi32_pd (__W,__U,__A);
9335 }
9336
test_mm512_maskz_cvtepi32_pd(__mmask8 __U,__m256i __A)9337 __m512d test_mm512_maskz_cvtepi32_pd (__mmask8 __U, __m256i __A)
9338 {
9339 // CHECK-LABEL: @test_mm512_maskz_cvtepi32_pd
9340 // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
9341 // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9342 return _mm512_maskz_cvtepi32_pd (__U,__A);
9343 }
9344
test_mm512_cvtepi32lo_pd(__m512i __A)9345 __m512d test_mm512_cvtepi32lo_pd (__m512i __A)
9346 {
9347 // CHECK-LABEL: @test_mm512_cvtepi32lo_pd
9348 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9349 // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
9350 return _mm512_cvtepi32lo_pd (__A);
9351 }
9352
test_mm512_mask_cvtepi32lo_pd(__m512d __W,__mmask8 __U,__m512i __A)9353 __m512d test_mm512_mask_cvtepi32lo_pd (__m512d __W, __mmask8 __U, __m512i __A)
9354 {
9355 // CHECK-LABEL: @test_mm512_mask_cvtepi32lo_pd
9356 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9357 // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
9358 // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9359 return _mm512_mask_cvtepi32lo_pd (__W, __U, __A);
9360 }
9361
test_mm512_cvtepi32_ps(__m512i __A)9362 __m512 test_mm512_cvtepi32_ps (__m512i __A)
9363 {
9364 // CHECK-LABEL: @test_mm512_cvtepi32_ps
9365 // CHECK: sitofp <16 x i32> %{{.*}} to <16 x float>
9366 return _mm512_cvtepi32_ps (__A);
9367 }
9368
test_mm512_mask_cvtepi32_ps(__m512 __W,__mmask16 __U,__m512i __A)9369 __m512 test_mm512_mask_cvtepi32_ps (__m512 __W, __mmask16 __U, __m512i __A)
9370 {
9371 // CHECK-LABEL: @test_mm512_mask_cvtepi32_ps
9372 // CHECK: sitofp <16 x i32> %{{.*}} to <16 x float>
9373 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9374 return _mm512_mask_cvtepi32_ps (__W,__U,__A);
9375 }
9376
test_mm512_maskz_cvtepi32_ps(__mmask16 __U,__m512i __A)9377 __m512 test_mm512_maskz_cvtepi32_ps (__mmask16 __U, __m512i __A)
9378 {
9379 // CHECK-LABEL: @test_mm512_maskz_cvtepi32_ps
9380 // CHECK: sitofp <16 x i32> %{{.*}} to <16 x float>
9381 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9382 return _mm512_maskz_cvtepi32_ps (__U,__A);
9383 }
9384
test_mm512_cvtepu32_pd(__m256i __A)9385 __m512d test_mm512_cvtepu32_pd(__m256i __A)
9386 {
9387 // CHECK-LABEL: @test_mm512_cvtepu32_pd
9388 // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
9389 return _mm512_cvtepu32_pd(__A);
9390 }
9391
test_mm512_mask_cvtepu32_pd(__m512d __W,__mmask8 __U,__m256i __A)9392 __m512d test_mm512_mask_cvtepu32_pd (__m512d __W, __mmask8 __U, __m256i __A)
9393 {
9394 // CHECK-LABEL: @test_mm512_mask_cvtepu32_pd
9395 // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
9396 // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9397 return _mm512_mask_cvtepu32_pd (__W,__U,__A);
9398 }
9399
test_mm512_maskz_cvtepu32_pd(__mmask8 __U,__m256i __A)9400 __m512d test_mm512_maskz_cvtepu32_pd (__mmask8 __U, __m256i __A)
9401 {
9402 // CHECK-LABEL: @test_mm512_maskz_cvtepu32_pd
9403 // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
9404 // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9405 return _mm512_maskz_cvtepu32_pd (__U,__A);
9406 }
9407
test_mm512_cvtepu32lo_pd(__m512i __A)9408 __m512d test_mm512_cvtepu32lo_pd (__m512i __A)
9409 {
9410 // CHECK-LABEL: @test_mm512_cvtepu32lo_pd
9411 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9412 // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
9413 return _mm512_cvtepu32lo_pd (__A);
9414 }
9415
test_mm512_mask_cvtepu32lo_pd(__m512d __W,__mmask8 __U,__m512i __A)9416 __m512d test_mm512_mask_cvtepu32lo_pd (__m512d __W, __mmask8 __U, __m512i __A)
9417 {
9418 // CHECK-LABEL: @test_mm512_mask_cvtepu32lo_pd
9419 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9420 // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
9421 // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9422 return _mm512_mask_cvtepu32lo_pd (__W, __U, __A);
9423 }
9424
test_mm512_cvtpd_ps(__m512d __A)9425 __m256 test_mm512_cvtpd_ps (__m512d __A)
9426 {
9427 // CHECK-LABEL: @test_mm512_cvtpd_ps
9428 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
9429 return _mm512_cvtpd_ps (__A);
9430 }
9431
test_mm512_mask_cvtpd_ps(__m256 __W,__mmask8 __U,__m512d __A)9432 __m256 test_mm512_mask_cvtpd_ps (__m256 __W, __mmask8 __U, __m512d __A)
9433 {
9434 // CHECK-LABEL: @test_mm512_mask_cvtpd_ps
9435 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
9436 return _mm512_mask_cvtpd_ps (__W,__U,__A);
9437 }
9438
test_mm512_cvtpd_pslo(__m512d __A)9439 __m512 test_mm512_cvtpd_pslo(__m512d __A)
9440 {
9441 // CHECK-LABEL: @test_mm512_cvtpd_pslo
9442 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
9443 // CHECK: zeroinitializer
9444 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
9445 return _mm512_cvtpd_pslo(__A);
9446 }
9447
test_mm512_mask_cvtpd_pslo(__m512 __W,__mmask8 __U,__m512d __A)9448 __m512 test_mm512_mask_cvtpd_pslo(__m512 __W, __mmask8 __U, __m512d __A) {
9449 // CHECK-LABEL: @test_mm512_mask_cvtpd_pslo
9450 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
9451 // CHECK: zeroinitializer
9452 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
9453 return _mm512_mask_cvtpd_pslo(__W, __U, __A);
9454 }
9455
test_mm512_maskz_cvtpd_ps(__mmask8 __U,__m512d __A)9456 __m256 test_mm512_maskz_cvtpd_ps (__mmask8 __U, __m512d __A)
9457 {
9458 // CHECK-LABEL: @test_mm512_maskz_cvtpd_ps
9459 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
9460 return _mm512_maskz_cvtpd_ps (__U,__A);
9461 }
9462
test_mm512_cvtph_ps(__m256i __A)9463 __m512 test_mm512_cvtph_ps (__m256i __A)
9464 {
9465 // CHECK-LABEL: @test_mm512_cvtph_ps
9466 // CHECK: bitcast <4 x i64> %{{.*}} to <16 x i16>
9467 // CHECK: bitcast <16 x i16> %{{.*}} to <16 x half>
9468 // CHECK: fpext <16 x half> %{{.*}} to <16 x float>
9469 return _mm512_cvtph_ps (__A);
9470 }
9471
test_mm512_mask_cvtph_ps(__m512 __W,__mmask16 __U,__m256i __A)9472 __m512 test_mm512_mask_cvtph_ps (__m512 __W, __mmask16 __U, __m256i __A)
9473 {
9474 // CHECK-LABEL: @test_mm512_mask_cvtph_ps
9475 // CHECK: bitcast <4 x i64> %{{.*}} to <16 x i16>
9476 // CHECK: bitcast <16 x i16> %{{.*}} to <16 x half>
9477 // CHECK: fpext <16 x half> %{{.*}} to <16 x float>
9478 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9479 return _mm512_mask_cvtph_ps (__W,__U,__A);
9480 }
9481
test_mm512_maskz_cvtph_ps(__mmask16 __U,__m256i __A)9482 __m512 test_mm512_maskz_cvtph_ps (__mmask16 __U, __m256i __A)
9483 {
9484 // CHECK-LABEL: @test_mm512_maskz_cvtph_ps
9485 // CHECK: bitcast <4 x i64> %{{.*}} to <16 x i16>
9486 // CHECK: bitcast <16 x i16> %{{.*}} to <16 x half>
9487 // CHECK: fpext <16 x half> %{{.*}} to <16 x float>
9488 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9489 return _mm512_maskz_cvtph_ps (__U,__A);
9490 }
9491
test_mm512_mask_cvttpd_epi32(__m256i __W,__mmask8 __U,__m512d __A)9492 __m256i test_mm512_mask_cvttpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
9493 {
9494 // CHECK-LABEL: @test_mm512_mask_cvttpd_epi32
9495 // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512
9496 return _mm512_mask_cvttpd_epi32 (__W,__U,__A);
9497 }
9498
test_mm512_maskz_cvttpd_epi32(__mmask8 __U,__m512d __A)9499 __m256i test_mm512_maskz_cvttpd_epi32 (__mmask8 __U, __m512d __A)
9500 {
9501 // CHECK-LABEL: @test_mm512_maskz_cvttpd_epi32
9502 // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512
9503 return _mm512_maskz_cvttpd_epi32 (__U,__A);
9504 }
9505
test_mm512_mask_cvttps_epi32(__m512i __W,__mmask16 __U,__m512 __A)9506 __m512i test_mm512_mask_cvttps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
9507 {
9508 // CHECK-LABEL: @test_mm512_mask_cvttps_epi32
9509 // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512
9510 return _mm512_mask_cvttps_epi32 (__W,__U,__A);
9511 }
9512
test_mm512_maskz_cvttps_epi32(__mmask16 __U,__m512 __A)9513 __m512i test_mm512_maskz_cvttps_epi32 (__mmask16 __U, __m512 __A)
9514 {
9515 // CHECK-LABEL: @test_mm512_maskz_cvttps_epi32
9516 // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512
9517 return _mm512_maskz_cvttps_epi32 (__U,__A);
9518 }
9519
test_mm512_cvtps_epi32(__m512 __A)9520 __m512i test_mm512_cvtps_epi32 (__m512 __A)
9521 {
9522 // CHECK-LABEL: @test_mm512_cvtps_epi32
9523 // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
9524 return _mm512_cvtps_epi32 (__A);
9525 }
9526
test_mm512_mask_cvtps_epi32(__m512i __W,__mmask16 __U,__m512 __A)9527 __m512i test_mm512_mask_cvtps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
9528 {
9529 // CHECK-LABEL: @test_mm512_mask_cvtps_epi32
9530 // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
9531 return _mm512_mask_cvtps_epi32 (__W,__U,__A);
9532 }
9533
test_mm512_maskz_cvtps_epi32(__mmask16 __U,__m512 __A)9534 __m512i test_mm512_maskz_cvtps_epi32 (__mmask16 __U, __m512 __A)
9535 {
9536 // CHECK-LABEL: @test_mm512_maskz_cvtps_epi32
9537 // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
9538 return _mm512_maskz_cvtps_epi32 (__U,__A);
9539 }
9540
test_mm512_cvtpd_epi32(__m512d __A)9541 __m256i test_mm512_cvtpd_epi32 (__m512d __A)
9542 {
9543 // CHECK-LABEL: @test_mm512_cvtpd_epi32
9544 // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
9545 return _mm512_cvtpd_epi32 (__A);
9546 }
9547
test_mm512_mask_cvtpd_epi32(__m256i __W,__mmask8 __U,__m512d __A)9548 __m256i test_mm512_mask_cvtpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
9549 {
9550 // CHECK-LABEL: @test_mm512_mask_cvtpd_epi32
9551 // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
9552 return _mm512_mask_cvtpd_epi32 (__W,__U,__A);
9553 }
9554
test_mm512_maskz_cvtpd_epi32(__mmask8 __U,__m512d __A)9555 __m256i test_mm512_maskz_cvtpd_epi32 (__mmask8 __U, __m512d __A)
9556 {
9557 // CHECK-LABEL: @test_mm512_maskz_cvtpd_epi32
9558 // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
9559 return _mm512_maskz_cvtpd_epi32 (__U,__A);
9560 }
9561
test_mm512_cvtpd_epu32(__m512d __A)9562 __m256i test_mm512_cvtpd_epu32 (__m512d __A)
9563 {
9564 // CHECK-LABEL: @test_mm512_cvtpd_epu32
9565 // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
9566 return _mm512_cvtpd_epu32 (__A);
9567 }
9568
test_mm512_mask_cvtpd_epu32(__m256i __W,__mmask8 __U,__m512d __A)9569 __m256i test_mm512_mask_cvtpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
9570 {
9571 // CHECK-LABEL: @test_mm512_mask_cvtpd_epu32
9572 // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
9573 return _mm512_mask_cvtpd_epu32 (__W,__U,__A);
9574 }
9575
test_mm512_maskz_cvtpd_epu32(__mmask8 __U,__m512d __A)9576 __m256i test_mm512_maskz_cvtpd_epu32 (__mmask8 __U, __m512d __A)
9577 {
9578 // CHECK-LABEL: @test_mm512_maskz_cvtpd_epu32
9579 // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
9580 return _mm512_maskz_cvtpd_epu32 (__U,__A);
9581 }
9582
test_mm512_mask_cvtps_ph(__m256i src,__mmask16 k,__m512 a)9583 __m256i test_mm512_mask_cvtps_ph(__m256i src, __mmask16 k, __m512 a)
9584 {
9585 // CHECK-LABEL: @test_mm512_mask_cvtps_ph
9586 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
9587 return _mm512_mask_cvtps_ph(src, k, a,_MM_FROUND_TO_ZERO);
9588 }
9589
test_mm512_maskz_cvtps_ph(__mmask16 k,__m512 a)9590 __m256i test_mm512_maskz_cvtps_ph (__mmask16 k, __m512 a)
9591 {
9592 // CHECK-LABEL: @test_mm512_maskz_cvtps_ph
9593 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
9594 return _mm512_maskz_cvtps_ph( k, a,_MM_FROUND_TO_ZERO);
9595 }
9596
test_mm512_cvtps_epu32(__m512 __A)9597 __m512i test_mm512_cvtps_epu32 ( __m512 __A)
9598 {
9599 // CHECK-LABEL: @test_mm512_cvtps_epu32
9600 // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
9601 return _mm512_cvtps_epu32(__A);
9602 }
9603
test_mm512_mask_cvtps_epu32(__m512i __W,__mmask16 __U,__m512 __A)9604 __m512i test_mm512_mask_cvtps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
9605 {
9606 // CHECK-LABEL: @test_mm512_mask_cvtps_epu32
9607 // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
9608 return _mm512_mask_cvtps_epu32( __W, __U, __A);
9609 }
test_mm512_maskz_cvtps_epu32(__mmask16 __U,__m512 __A)9610 __m512i test_mm512_maskz_cvtps_epu32 (__mmask16 __U, __m512 __A)
9611 {
9612 // CHECK-LABEL: @test_mm512_maskz_cvtps_epu32
9613 // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
9614 return _mm512_maskz_cvtps_epu32( __U, __A);
9615 }
9616
test_mm512_cvtsd_f64(__m512d A)9617 double test_mm512_cvtsd_f64(__m512d A) {
9618 // CHECK-LABEL: test_mm512_cvtsd_f64
9619 // CHECK: extractelement <8 x double> %{{.*}}, i32 0
9620 return _mm512_cvtsd_f64(A);
9621 }
9622
test_mm512_cvtss_f32(__m512 A)9623 float test_mm512_cvtss_f32(__m512 A) {
9624 // CHECK-LABEL: test_mm512_cvtss_f32
9625 // CHECK: extractelement <16 x float> %{{.*}}, i32 0
9626 return _mm512_cvtss_f32(A);
9627 }
9628
test_mm512_mask_max_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)9629 __m512d test_mm512_mask_max_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
9630 {
9631 // CHECK-LABEL: @test_mm512_mask_max_pd
9632 // CHECK: @llvm.x86.avx512.max.pd.512
9633 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9634 return _mm512_mask_max_pd (__W,__U,__A,__B);
9635 }
9636
test_mm512_maskz_max_pd(__mmask8 __U,__m512d __A,__m512d __B)9637 __m512d test_mm512_maskz_max_pd (__mmask8 __U, __m512d __A, __m512d __B)
9638 {
9639 // CHECK-LABEL: @test_mm512_maskz_max_pd
9640 // CHECK: @llvm.x86.avx512.max.pd.512
9641 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9642 return _mm512_maskz_max_pd (__U,__A,__B);
9643 }
9644
test_mm512_mask_max_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)9645 __m512 test_mm512_mask_max_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
9646 {
9647 // CHECK-LABEL: @test_mm512_mask_max_ps
9648 // CHECK: @llvm.x86.avx512.max.ps.512
9649 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9650 return _mm512_mask_max_ps (__W,__U,__A,__B);
9651 }
9652
test_mm512_mask_max_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)9653 __m512d test_mm512_mask_max_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)
9654 {
9655 // CHECK-LABEL: @test_mm512_mask_max_round_pd
9656 // CHECK: @llvm.x86.avx512.max.pd.512
9657 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9658 return _mm512_mask_max_round_pd(__W,__U,__A,__B,_MM_FROUND_NO_EXC);
9659 }
9660
test_mm512_maskz_max_round_pd(__mmask8 __U,__m512d __A,__m512d __B)9661 __m512d test_mm512_maskz_max_round_pd(__mmask8 __U,__m512d __A,__m512d __B)
9662 {
9663 // CHECK-LABEL: @test_mm512_maskz_max_round_pd
9664 // CHECK: @llvm.x86.avx512.max.pd.512
9665 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9666 return _mm512_maskz_max_round_pd(__U,__A,__B,_MM_FROUND_NO_EXC);
9667 }
9668
test_mm512_max_round_pd(__m512d __A,__m512d __B)9669 __m512d test_mm512_max_round_pd(__m512d __A,__m512d __B)
9670 {
9671 // CHECK-LABEL: @test_mm512_max_round_pd
9672 // CHECK: @llvm.x86.avx512.max.pd.512
9673 return _mm512_max_round_pd(__A,__B,_MM_FROUND_NO_EXC);
9674 }
9675
test_mm512_maskz_max_ps(__mmask16 __U,__m512 __A,__m512 __B)9676 __m512 test_mm512_maskz_max_ps (__mmask16 __U, __m512 __A, __m512 __B)
9677 {
9678 // CHECK-LABEL: @test_mm512_maskz_max_ps
9679 // CHECK: @llvm.x86.avx512.max.ps.512
9680 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9681 return _mm512_maskz_max_ps (__U,__A,__B);
9682 }
9683
test_mm512_mask_max_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)9684 __m512 test_mm512_mask_max_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)
9685 {
9686 // CHECK-LABEL: @test_mm512_mask_max_round_ps
9687 // CHECK: @llvm.x86.avx512.max.ps.512
9688 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9689 return _mm512_mask_max_round_ps(__W,__U,__A,__B,_MM_FROUND_NO_EXC);
9690 }
9691
test_mm512_maskz_max_round_ps(__mmask16 __U,__m512 __A,__m512 __B)9692 __m512 test_mm512_maskz_max_round_ps(__mmask16 __U,__m512 __A,__m512 __B)
9693 {
9694 // CHECK-LABEL: @test_mm512_maskz_max_round_ps
9695 // CHECK: @llvm.x86.avx512.max.ps.512
9696 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9697 return _mm512_maskz_max_round_ps(__U,__A,__B,_MM_FROUND_NO_EXC);
9698 }
9699
test_mm512_max_round_ps(__m512 __A,__m512 __B)9700 __m512 test_mm512_max_round_ps(__m512 __A,__m512 __B)
9701 {
9702 // CHECK-LABEL: @test_mm512_max_round_ps
9703 // CHECK: @llvm.x86.avx512.max.ps.512
9704 return _mm512_max_round_ps(__A,__B,_MM_FROUND_NO_EXC);
9705 }
9706
test_mm512_mask_min_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)9707 __m512d test_mm512_mask_min_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
9708 {
9709 // CHECK-LABEL: @test_mm512_mask_min_pd
9710 // CHECK: @llvm.x86.avx512.min.pd.512
9711 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9712 return _mm512_mask_min_pd (__W,__U,__A,__B);
9713 }
9714
test_mm512_maskz_min_pd(__mmask8 __U,__m512d __A,__m512d __B)9715 __m512d test_mm512_maskz_min_pd (__mmask8 __U, __m512d __A, __m512d __B)
9716 {
9717 // CHECK-LABEL: @test_mm512_maskz_min_pd
9718 // CHECK: @llvm.x86.avx512.min.pd.512
9719 return _mm512_maskz_min_pd (__U,__A,__B);
9720 }
9721
test_mm512_mask_min_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)9722 __m512d test_mm512_mask_min_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)
9723 {
9724 // CHECK-LABEL: @test_mm512_mask_min_round_pd
9725 // CHECK: @llvm.x86.avx512.min.pd.512
9726 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9727 return _mm512_mask_min_round_pd(__W,__U,__A,__B,_MM_FROUND_NO_EXC);
9728 }
9729
test_mm512_maskz_min_round_pd(__mmask8 __U,__m512d __A,__m512d __B)9730 __m512d test_mm512_maskz_min_round_pd(__mmask8 __U,__m512d __A,__m512d __B)
9731 {
9732 // CHECK-LABEL: @test_mm512_maskz_min_round_pd
9733 // CHECK: @llvm.x86.avx512.min.pd.512
9734 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9735 return _mm512_maskz_min_round_pd(__U,__A,__B,_MM_FROUND_NO_EXC);
9736 }
9737
test_mm512_min_round_pd(__m512d __A,__m512d __B)9738 __m512d test_mm512_min_round_pd( __m512d __A,__m512d __B)
9739 {
9740 // CHECK-LABEL: @test_mm512_min_round_pd
9741 // CHECK: @llvm.x86.avx512.min.pd.512
9742 return _mm512_min_round_pd(__A,__B,_MM_FROUND_NO_EXC);
9743 }
9744
test_mm512_mask_min_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)9745 __m512 test_mm512_mask_min_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
9746 {
9747 // CHECK-LABEL: @test_mm512_mask_min_ps
9748 // CHECK: @llvm.x86.avx512.min.ps.512
9749 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9750 return _mm512_mask_min_ps (__W,__U,__A,__B);
9751 }
9752
test_mm512_maskz_min_ps(__mmask16 __U,__m512 __A,__m512 __B)9753 __m512 test_mm512_maskz_min_ps (__mmask16 __U, __m512 __A, __m512 __B)
9754 {
9755 // CHECK-LABEL: @test_mm512_maskz_min_ps
9756 // CHECK: @llvm.x86.avx512.min.ps.512
9757 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9758 return _mm512_maskz_min_ps (__U,__A,__B);
9759 }
9760
test_mm512_mask_min_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)9761 __m512 test_mm512_mask_min_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)
9762 {
9763 // CHECK-LABEL: @test_mm512_mask_min_round_ps
9764 // CHECK: @llvm.x86.avx512.min.ps.512
9765 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9766 return _mm512_mask_min_round_ps(__W,__U,__A,__B,_MM_FROUND_NO_EXC);
9767 }
9768
test_mm512_maskz_min_round_ps(__mmask16 __U,__m512 __A,__m512 __B)9769 __m512 test_mm512_maskz_min_round_ps(__mmask16 __U,__m512 __A,__m512 __B)
9770 {
9771 // CHECK-LABEL: @test_mm512_maskz_min_round_ps
9772 // CHECK: @llvm.x86.avx512.min.ps.512
9773 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9774 return _mm512_maskz_min_round_ps(__U,__A,__B,_MM_FROUND_NO_EXC);
9775 }
9776
test_mm512_min_round_ps(__m512 __A,__m512 __B)9777 __m512 test_mm512_min_round_ps(__m512 __A,__m512 __B)
9778 {
9779 // CHECK-LABEL: @test_mm512_min_round_ps
9780 // CHECK: @llvm.x86.avx512.min.ps.512
9781 return _mm512_min_round_ps(__A,__B,_MM_FROUND_NO_EXC);
9782 }
9783
test_mm512_mask_floor_ps(__m512 __W,__mmask16 __U,__m512 __A)9784 __m512 test_mm512_mask_floor_ps (__m512 __W, __mmask16 __U, __m512 __A)
9785 {
9786 // CHECK-LABEL: @test_mm512_mask_floor_ps
9787 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9788 return _mm512_mask_floor_ps (__W,__U,__A);
9789 }
9790
test_mm512_mask_floor_pd(__m512d __W,__mmask8 __U,__m512d __A)9791 __m512d test_mm512_mask_floor_pd (__m512d __W, __mmask8 __U, __m512d __A)
9792 {
9793 // CHECK-LABEL: @test_mm512_mask_floor_pd
9794 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9795 return _mm512_mask_floor_pd (__W,__U,__A);
9796 }
9797
test_mm512_mask_ceil_ps(__m512 __W,__mmask16 __U,__m512 __A)9798 __m512 test_mm512_mask_ceil_ps (__m512 __W, __mmask16 __U, __m512 __A)
9799 {
9800 // CHECK-LABEL: @test_mm512_mask_ceil_ps
9801 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9802 return _mm512_mask_ceil_ps (__W,__U,__A);
9803 }
9804
test_mm512_mask_ceil_pd(__m512d __W,__mmask8 __U,__m512d __A)9805 __m512d test_mm512_mask_ceil_pd (__m512d __W, __mmask8 __U, __m512d __A)
9806 {
9807 // CHECK-LABEL: @test_mm512_mask_ceil_pd
9808 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9809 return _mm512_mask_ceil_pd (__W,__U,__A);
9810 }
9811
test_mm512_mask_roundscale_ps(__m512 __W,__mmask16 __U,__m512 __A)9812 __m512 test_mm512_mask_roundscale_ps(__m512 __W, __mmask16 __U, __m512 __A)
9813 {
9814 // CHECK-LABEL: @test_mm512_mask_roundscale_ps
9815 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9816 return _mm512_mask_roundscale_ps(__W,__U,__A, 1);
9817 }
9818
test_mm512_maskz_roundscale_ps(__mmask16 __U,__m512 __A)9819 __m512 test_mm512_maskz_roundscale_ps(__mmask16 __U, __m512 __A)
9820 {
9821 // CHECK-LABEL: @test_mm512_maskz_roundscale_ps
9822 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9823 return _mm512_maskz_roundscale_ps(__U,__A, 1);
9824 }
9825
test_mm512_mask_roundscale_round_ps(__m512 __A,__mmask16 __U,__m512 __C)9826 __m512 test_mm512_mask_roundscale_round_ps(__m512 __A,__mmask16 __U,__m512 __C)
9827 {
9828 // CHECK-LABEL: @test_mm512_mask_roundscale_round_ps
9829 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9830 return _mm512_mask_roundscale_round_ps(__A,__U,__C,_MM_FROUND_TO_ZERO,_MM_FROUND_NO_EXC);
9831 }
9832
test_mm512_maskz_roundscale_round_ps(__m512 __A,__mmask16 __U)9833 __m512 test_mm512_maskz_roundscale_round_ps(__m512 __A,__mmask16 __U)
9834 {
9835 // CHECK-LABEL: @test_mm512_maskz_roundscale_round_ps
9836 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9837 return _mm512_maskz_roundscale_round_ps(__U,__A,_MM_FROUND_TO_ZERO,_MM_FROUND_NO_EXC);
9838 }
9839
test_mm512_roundscale_round_ps(__m512 __A)9840 __m512 test_mm512_roundscale_round_ps(__m512 __A)
9841 {
9842 // CHECK-LABEL: @test_mm512_roundscale_round_ps
9843 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9844 return _mm512_roundscale_round_ps(__A,_MM_FROUND_TO_ZERO,_MM_FROUND_NO_EXC);
9845 }
9846
test_mm512_mask_roundscale_pd(__m512d __W,__mmask8 __U,__m512d __A)9847 __m512d test_mm512_mask_roundscale_pd(__m512d __W, __mmask8 __U, __m512d __A)
9848 {
9849 // CHECK-LABEL: @test_mm512_mask_roundscale_pd
9850 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9851 return _mm512_mask_roundscale_pd(__W,__U,__A, 1);
9852 }
9853
test_mm512_maskz_roundscale_pd(__mmask8 __U,__m512d __A)9854 __m512d test_mm512_maskz_roundscale_pd(__mmask8 __U, __m512d __A)
9855 {
9856 // CHECK-LABEL: @test_mm512_maskz_roundscale_pd
9857 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9858 return _mm512_maskz_roundscale_pd(__U,__A, 1);
9859 }
9860
test_mm512_mask_roundscale_round_pd(__m512d __A,__mmask8 __U,__m512d __C)9861 __m512d test_mm512_mask_roundscale_round_pd(__m512d __A,__mmask8 __U,__m512d __C)
9862 {
9863 // CHECK-LABEL: @test_mm512_mask_roundscale_round_pd
9864 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9865 return _mm512_mask_roundscale_round_pd(__A,__U,__C,_MM_FROUND_TO_ZERO,_MM_FROUND_NO_EXC);
9866 }
9867
test_mm512_maskz_roundscale_round_pd(__m512d __A,__mmask8 __U)9868 __m512d test_mm512_maskz_roundscale_round_pd(__m512d __A,__mmask8 __U)
9869 {
9870 // CHECK-LABEL: @test_mm512_maskz_roundscale_round_pd
9871 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9872 return _mm512_maskz_roundscale_round_pd(__U,__A,_MM_FROUND_TO_ZERO,_MM_FROUND_NO_EXC);
9873 }
9874
test_mm512_roundscale_round_pd(__m512d __A)9875 __m512d test_mm512_roundscale_round_pd(__m512d __A)
9876 {
9877 // CHECK-LABEL: @test_mm512_roundscale_round_pd
9878 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9879 return _mm512_roundscale_round_pd(__A,_MM_FROUND_TO_ZERO,_MM_FROUND_NO_EXC);
9880 }
9881
test_mm512_max_epi32(__m512i __A,__m512i __B)9882 __m512i test_mm512_max_epi32 (__m512i __A, __m512i __B)
9883 {
9884 // CHECK-LABEL: @test_mm512_max_epi32
9885 // CHECK: [[CMP:%.*]] = icmp sgt <16 x i32> [[X:%.*]], [[Y:%.*]]
9886 // CHECK-NEXT: [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9887 return _mm512_max_epi32 (__A,__B);
9888 }
9889
test_mm512_mask_max_epi32(__m512i __W,__mmask16 __M,__m512i __A,__m512i __B)9890 __m512i test_mm512_mask_max_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
9891 {
9892 // CHECK-LABEL: @test_mm512_mask_max_epi32
9893 // CHECK: [[CMP:%.*]] = icmp sgt <16 x i32> [[X:%.*]], [[Y:%.*]]
9894 // CHECK-NEXT: [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9895 // CHECK: select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
9896 return _mm512_mask_max_epi32 (__W,__M,__A,__B);
9897 }
9898
test_mm512_maskz_max_epi32(__mmask16 __M,__m512i __A,__m512i __B)9899 __m512i test_mm512_maskz_max_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
9900 {
9901 // CHECK-LABEL: @test_mm512_maskz_max_epi32
9902 // CHECK: [[CMP:%.*]] = icmp sgt <16 x i32> [[X:%.*]], [[Y:%.*]]
9903 // CHECK-NEXT: [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9904 // CHECK: select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
9905 return _mm512_maskz_max_epi32 (__M,__A,__B);
9906 }
9907
test_mm512_max_epi64(__m512i __A,__m512i __B)9908 __m512i test_mm512_max_epi64 (__m512i __A, __m512i __B)
9909 {
9910 // CHECK-LABEL: @test_mm512_max_epi64
9911 // CHECK: [[CMP:%.*]] = icmp sgt <8 x i64> [[X:%.*]], [[Y:%.*]]
9912 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9913 return _mm512_max_epi64 (__A,__B);
9914 }
9915
test_mm512_mask_max_epi64(__m512i __W,__mmask8 __M,__m512i __A,__m512i __B)9916 __m512i test_mm512_mask_max_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
9917 {
9918 // CHECK-LABEL: @test_mm512_mask_max_epi64
9919 // CHECK: [[CMP:%.*]] = icmp sgt <8 x i64> [[X:%.*]], [[Y:%.*]]
9920 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9921 // CHECK: select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
9922 return _mm512_mask_max_epi64 (__W,__M,__A,__B);
9923 }
9924
test_mm512_maskz_max_epi64(__mmask8 __M,__m512i __A,__m512i __B)9925 __m512i test_mm512_maskz_max_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
9926 {
9927 // CHECK-LABEL: @test_mm512_maskz_max_epi64
9928 // CHECK: [[CMP:%.*]] = icmp sgt <8 x i64> [[X:%.*]], [[Y:%.*]]
9929 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9930 // CHECK: select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
9931 return _mm512_maskz_max_epi64 (__M,__A,__B);
9932 }
9933
test_mm512_max_epu64(__m512i __A,__m512i __B)9934 __m512i test_mm512_max_epu64 (__m512i __A, __m512i __B)
9935 {
9936 // CHECK-LABEL: @test_mm512_max_epu64
9937 // CHECK: [[CMP:%.*]] = icmp ugt <8 x i64> [[X:%.*]], [[Y:%.*]]
9938 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9939 return _mm512_max_epu64 (__A,__B);
9940 }
9941
test_mm512_mask_max_epu64(__m512i __W,__mmask8 __M,__m512i __A,__m512i __B)9942 __m512i test_mm512_mask_max_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
9943 {
9944 // CHECK-LABEL: @test_mm512_mask_max_epu64
9945 // CHECK: [[CMP:%.*]] = icmp ugt <8 x i64> [[X:%.*]], [[Y:%.*]]
9946 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9947 // CHECK: select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
9948 return _mm512_mask_max_epu64 (__W,__M,__A,__B);
9949 }
9950
test_mm512_maskz_max_epu64(__mmask8 __M,__m512i __A,__m512i __B)9951 __m512i test_mm512_maskz_max_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
9952 {
9953 // CHECK-LABEL: @test_mm512_maskz_max_epu64
9954 // CHECK: [[CMP:%.*]] = icmp ugt <8 x i64> [[X:%.*]], [[Y:%.*]]
9955 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9956 // CHECK: select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
9957 return _mm512_maskz_max_epu64 (__M,__A,__B);
9958 }
9959
test_mm512_max_epu32(__m512i __A,__m512i __B)9960 __m512i test_mm512_max_epu32 (__m512i __A, __m512i __B)
9961 {
9962 // CHECK-LABEL: @test_mm512_max_epu32
9963 // CHECK: [[CMP:%.*]] = icmp ugt <16 x i32> [[X:%.*]], [[Y:%.*]]
9964 // CHECK-NEXT: [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9965 return _mm512_max_epu32 (__A,__B);
9966 }
9967
test_mm512_mask_max_epu32(__m512i __W,__mmask16 __M,__m512i __A,__m512i __B)9968 __m512i test_mm512_mask_max_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
9969 {
9970 // CHECK-LABEL: @test_mm512_mask_max_epu32
9971 // CHECK: [[CMP:%.*]] = icmp ugt <16 x i32> [[X:%.*]], [[Y:%.*]]
9972 // CHECK-NEXT: [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9973 // CHECK: select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
9974 return _mm512_mask_max_epu32 (__W,__M,__A,__B);
9975 }
9976
test_mm512_maskz_max_epu32(__mmask16 __M,__m512i __A,__m512i __B)9977 __m512i test_mm512_maskz_max_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
9978 {
9979 // CHECK-LABEL: @test_mm512_maskz_max_epu32
9980 // CHECK: [[CMP:%.*]] = icmp ugt <16 x i32> [[X:%.*]], [[Y:%.*]]
9981 // CHECK-NEXT: [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9982 // CHECK: select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
9983 return _mm512_maskz_max_epu32 (__M,__A,__B);
9984 }
9985
test_mm512_min_epi32(__m512i __A,__m512i __B)9986 __m512i test_mm512_min_epi32 (__m512i __A, __m512i __B)
9987 {
9988 // CHECK-LABEL: @test_mm512_min_epi32
9989 // CHECK: [[CMP:%.*]] = icmp slt <16 x i32> [[X:%.*]], [[Y:%.*]]
9990 // CHECK-NEXT: [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9991 return _mm512_min_epi32 (__A,__B);
9992 }
9993
test_mm512_mask_min_epi32(__m512i __W,__mmask16 __M,__m512i __A,__m512i __B)9994 __m512i test_mm512_mask_min_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
9995 {
9996 // CHECK-LABEL: @test_mm512_mask_min_epi32
9997 // CHECK: [[CMP:%.*]] = icmp slt <16 x i32> [[X:%.*]], [[Y:%.*]]
9998 // CHECK-NEXT: [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9999 // CHECK: select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
10000 return _mm512_mask_min_epi32 (__W,__M,__A,__B);
10001 }
10002
test_mm512_maskz_min_epi32(__mmask16 __M,__m512i __A,__m512i __B)10003 __m512i test_mm512_maskz_min_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
10004 {
10005 // CHECK-LABEL: @test_mm512_maskz_min_epi32
10006 // CHECK: [[CMP:%.*]] = icmp slt <16 x i32> [[X:%.*]], [[Y:%.*]]
10007 // CHECK-NEXT: [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
10008 // CHECK: select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
10009 return _mm512_maskz_min_epi32 (__M,__A,__B);
10010 }
10011
test_mm512_min_epu32(__m512i __A,__m512i __B)10012 __m512i test_mm512_min_epu32 (__m512i __A, __m512i __B)
10013 {
10014 // CHECK-LABEL: @test_mm512_min_epu32
10015 // CHECK: [[CMP:%.*]] = icmp ult <16 x i32> [[X:%.*]], [[Y:%.*]]
10016 // CHECK-NEXT: [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
10017 return _mm512_min_epu32 (__A,__B);
10018 }
10019
test_mm512_mask_min_epu32(__m512i __W,__mmask16 __M,__m512i __A,__m512i __B)10020 __m512i test_mm512_mask_min_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
10021 {
10022 // CHECK-LABEL: @test_mm512_mask_min_epu32
10023 // CHECK: [[CMP:%.*]] = icmp ult <16 x i32> [[X:%.*]], [[Y:%.*]]
10024 // CHECK-NEXT: [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
10025 // CHECK: select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
10026 return _mm512_mask_min_epu32 (__W,__M,__A,__B);
10027 }
10028
test_mm512_maskz_min_epu32(__mmask16 __M,__m512i __A,__m512i __B)10029 __m512i test_mm512_maskz_min_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
10030 {
10031 // CHECK-LABEL: @test_mm512_maskz_min_epu32
10032 // CHECK: [[CMP:%.*]] = icmp ult <16 x i32> [[X:%.*]], [[Y:%.*]]
10033 // CHECK-NEXT: [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
10034 // CHECK: select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
10035 return _mm512_maskz_min_epu32 (__M,__A,__B);
10036 }
10037
test_mm512_min_epi64(__m512i __A,__m512i __B)10038 __m512i test_mm512_min_epi64 (__m512i __A, __m512i __B)
10039 {
10040 // CHECK-LABEL: @test_mm512_min_epi64
10041 // CHECK: [[CMP:%.*]] = icmp slt <8 x i64> [[X:%.*]], [[Y:%.*]]
10042 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
10043 return _mm512_min_epi64 (__A,__B);
10044 }
10045
test_mm512_mask_min_epi64(__m512i __W,__mmask8 __M,__m512i __A,__m512i __B)10046 __m512i test_mm512_mask_min_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
10047 {
10048 // CHECK-LABEL: @test_mm512_mask_min_epi64
10049 // CHECK: [[CMP:%.*]] = icmp slt <8 x i64> [[X:%.*]], [[Y:%.*]]
10050 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
10051 // CHECK: select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
10052 return _mm512_mask_min_epi64 (__W,__M,__A,__B);
10053 }
10054
test_mm512_maskz_min_epi64(__mmask8 __M,__m512i __A,__m512i __B)10055 __m512i test_mm512_maskz_min_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
10056 {
10057 // CHECK-LABEL: @test_mm512_maskz_min_epi64
10058 // CHECK: [[CMP:%.*]] = icmp slt <8 x i64> [[X:%.*]], [[Y:%.*]]
10059 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
10060 // CHECK: select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
10061 return _mm512_maskz_min_epi64 (__M,__A,__B);
10062 }
10063
test_mm512_min_epu64(__m512i __A,__m512i __B)10064 __m512i test_mm512_min_epu64 (__m512i __A, __m512i __B)
10065 {
10066 // CHECK-LABEL: @test_mm512_min_epu64
10067 // CHECK: [[CMP:%.*]] = icmp ult <8 x i64> [[X:%.*]], [[Y:%.*]]
10068 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
10069 return _mm512_min_epu64 (__A,__B);
10070 }
10071
test_mm512_mask_min_epu64(__m512i __W,__mmask8 __M,__m512i __A,__m512i __B)10072 __m512i test_mm512_mask_min_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
10073 {
10074 // CHECK-LABEL: @test_mm512_mask_min_epu64
10075 // CHECK: [[CMP:%.*]] = icmp ult <8 x i64> [[X:%.*]], [[Y:%.*]]
10076 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
10077 // CHECK: select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
10078 return _mm512_mask_min_epu64 (__W,__M,__A,__B);
10079 }
10080
test_mm512_maskz_min_epu64(__mmask8 __M,__m512i __A,__m512i __B)10081 __m512i test_mm512_maskz_min_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
10082 {
10083 // CHECK-LABEL: @test_mm512_maskz_min_epu64
10084 // CHECK: [[CMP:%.*]] = icmp ult <8 x i64> [[X:%.*]], [[Y:%.*]]
10085 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
10086 // CHECK: select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
10087 return _mm512_maskz_min_epu64 (__M,__A,__B);
10088 }
10089
test_mm512_mask_set1_epi32(__m512i __O,__mmask16 __M,int __A)10090 __m512i test_mm512_mask_set1_epi32 (__m512i __O, __mmask16 __M, int __A)
10091 {
10092 // CHECK-LABEL: @test_mm512_mask_set1_epi32
10093 // CHECK: insertelement <16 x i32> undef, i32 %{{.*}}, i32 0
10094 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 1
10095 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 2
10096 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 3
10097 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 4
10098 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 5
10099 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 6
10100 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 7
10101 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 8
10102 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 9
10103 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 10
10104 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 11
10105 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 12
10106 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 13
10107 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 14
10108 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 15
10109 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
10110 return _mm512_mask_set1_epi32 ( __O, __M, __A);
10111 }
10112
test_mm512_maskz_set1_epi32(__mmask16 __M,int __A)10113 __m512i test_mm512_maskz_set1_epi32(__mmask16 __M, int __A)
10114 {
10115 // CHECK-LABEL: @test_mm512_maskz_set1_epi32
10116 // CHECK: insertelement <16 x i32> undef, i32 %{{.*}}, i32 0
10117 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 1
10118 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 2
10119 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 3
10120 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 4
10121 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 5
10122 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 6
10123 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 7
10124 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 8
10125 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 9
10126 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 10
10127 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 11
10128 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 12
10129 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 13
10130 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 14
10131 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 15
10132 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
10133 return _mm512_maskz_set1_epi32(__M, __A);
10134 }
10135
10136
test_mm512_set_epi8(char e63,char e62,char e61,char e60,char e59,char e58,char e57,char e56,char e55,char e54,char e53,char e52,char e51,char e50,char e49,char e48,char e47,char e46,char e45,char e44,char e43,char e42,char e41,char e40,char e39,char e38,char e37,char e36,char e35,char e34,char e33,char e32,char e31,char e30,char e29,char e28,char e27,char e26,char e25,char e24,char e23,char e22,char e21,char e20,char e19,char e18,char e17,char e16,char e15,char e14,char e13,char e12,char e11,char e10,char e9,char e8,char e7,char e6,char e5,char e4,char e3,char e2,char e1,char e0)10137 __m512i test_mm512_set_epi8(char e63, char e62, char e61, char e60, char e59,
10138 char e58, char e57, char e56, char e55, char e54, char e53, char e52,
10139 char e51, char e50, char e49, char e48, char e47, char e46, char e45,
10140 char e44, char e43, char e42, char e41, char e40, char e39, char e38,
10141 char e37, char e36, char e35, char e34, char e33, char e32, char e31,
10142 char e30, char e29, char e28, char e27, char e26, char e25, char e24,
10143 char e23, char e22, char e21, char e20, char e19, char e18, char e17,
10144 char e16, char e15, char e14, char e13, char e12, char e11, char e10,
10145 char e9, char e8, char e7, char e6, char e5, char e4, char e3, char e2,
10146 char e1, char e0) {
10147
10148 //CHECK-LABEL: @test_mm512_set_epi8
10149 //CHECK: load i8, i8* %{{.*}}, align 1
10150 //CHECK: load i8, i8* %{{.*}}, align 1
10151 //CHECK: load i8, i8* %{{.*}}, align 1
10152 //CHECK: load i8, i8* %{{.*}}, align 1
10153 //CHECK: load i8, i8* %{{.*}}, align 1
10154 //CHECK: load i8, i8* %{{.*}}, align 1
10155 //CHECK: load i8, i8* %{{.*}}, align 1
10156 //CHECK: load i8, i8* %{{.*}}, align 1
10157 //CHECK: load i8, i8* %{{.*}}, align 1
10158 //CHECK: load i8, i8* %{{.*}}, align 1
10159 //CHECK: load i8, i8* %{{.*}}, align 1
10160 //CHECK: load i8, i8* %{{.*}}, align 1
10161 //CHECK: load i8, i8* %{{.*}}, align 1
10162 //CHECK: load i8, i8* %{{.*}}, align 1
10163 //CHECK: load i8, i8* %{{.*}}, align 1
10164 //CHECK: load i8, i8* %{{.*}}, align 1
10165 //CHECK: load i8, i8* %{{.*}}, align 1
10166 //CHECK: load i8, i8* %{{.*}}, align 1
10167 //CHECK: load i8, i8* %{{.*}}, align 1
10168 //CHECK: load i8, i8* %{{.*}}, align 1
10169 //CHECK: load i8, i8* %{{.*}}, align 1
10170 //CHECK: load i8, i8* %{{.*}}, align 1
10171 //CHECK: load i8, i8* %{{.*}}, align 1
10172 //CHECK: load i8, i8* %{{.*}}, align 1
10173 //CHECK: load i8, i8* %{{.*}}, align 1
10174 //CHECK: load i8, i8* %{{.*}}, align 1
10175 //CHECK: load i8, i8* %{{.*}}, align 1
10176 //CHECK: load i8, i8* %{{.*}}, align 1
10177 //CHECK: load i8, i8* %{{.*}}, align 1
10178 //CHECK: load i8, i8* %{{.*}}, align 1
10179 //CHECK: load i8, i8* %{{.*}}, align 1
10180 //CHECK: load i8, i8* %{{.*}}, align 1
10181 //CHECK: load i8, i8* %{{.*}}, align 1
10182 //CHECK: load i8, i8* %{{.*}}, align 1
10183 //CHECK: load i8, i8* %{{.*}}, align 1
10184 //CHECK: load i8, i8* %{{.*}}, align 1
10185 //CHECK: load i8, i8* %{{.*}}, align 1
10186 //CHECK: load i8, i8* %{{.*}}, align 1
10187 //CHECK: load i8, i8* %{{.*}}, align 1
10188 //CHECK: load i8, i8* %{{.*}}, align 1
10189 //CHECK: load i8, i8* %{{.*}}, align 1
10190 //CHECK: load i8, i8* %{{.*}}, align 1
10191 //CHECK: load i8, i8* %{{.*}}, align 1
10192 //CHECK: load i8, i8* %{{.*}}, align 1
10193 //CHECK: load i8, i8* %{{.*}}, align 1
10194 //CHECK: load i8, i8* %{{.*}}, align 1
10195 //CHECK: load i8, i8* %{{.*}}, align 1
10196 //CHECK: load i8, i8* %{{.*}}, align 1
10197 //CHECK: load i8, i8* %{{.*}}, align 1
10198 //CHECK: load i8, i8* %{{.*}}, align 1
10199 //CHECK: load i8, i8* %{{.*}}, align 1
10200 //CHECK: load i8, i8* %{{.*}}, align 1
10201 //CHECK: load i8, i8* %{{.*}}, align 1
10202 //CHECK: load i8, i8* %{{.*}}, align 1
10203 //CHECK: load i8, i8* %{{.*}}, align 1
10204 //CHECK: load i8, i8* %{{.*}}, align 1
10205 //CHECK: load i8, i8* %{{.*}}, align 1
10206 //CHECK: load i8, i8* %{{.*}}, align 1
10207 //CHECK: load i8, i8* %{{.*}}, align 1
10208 //CHECK: load i8, i8* %{{.*}}, align 1
10209 //CHECK: load i8, i8* %{{.*}}, align 1
10210 //CHECK: load i8, i8* %{{.*}}, align 1
10211 //CHECK: load i8, i8* %{{.*}}, align 1
10212 //CHECK: load i8, i8* %{{.*}}, align 1
10213 return _mm512_set_epi8(e63, e62, e61, e60, e59, e58, e57, e56, e55, e54,
10214 e53, e52, e51, e50, e49, e48,e47, e46, e45, e44, e43, e42, e41, e40,
10215 e39, e38, e37, e36, e35, e34, e33, e32,e31, e30, e29, e28, e27, e26,
10216 e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12,
10217 e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0);
10218 }
10219
test_mm512_set_epi16(short e31,short e30,short e29,short e28,short e27,short e26,short e25,short e24,short e23,short e22,short e21,short e20,short e19,short e18,short e17,short e16,short e15,short e14,short e13,short e12,short e11,short e10,short e9,short e8,short e7,short e6,short e5,short e4,short e3,short e2,short e1,short e0)10220 __m512i test_mm512_set_epi16(short e31, short e30, short e29, short e28,
10221 short e27, short e26, short e25, short e24, short e23, short e22,
10222 short e21, short e20, short e19, short e18, short e17,
10223 short e16, short e15, short e14, short e13, short e12,
10224 short e11, short e10, short e9, short e8, short e7,
10225 short e6, short e5, short e4, short e3, short e2, short e1, short e0) {
10226 //CHECK-LABEL: @test_mm512_set_epi16
10227 //CHECK: insertelement{{.*}}i32 0
10228 //CHECK: insertelement{{.*}}i32 1
10229 //CHECK: insertelement{{.*}}i32 2
10230 //CHECK: insertelement{{.*}}i32 3
10231 //CHECK: insertelement{{.*}}i32 4
10232 //CHECK: insertelement{{.*}}i32 5
10233 //CHECK: insertelement{{.*}}i32 6
10234 //CHECK: insertelement{{.*}}i32 7
10235 //CHECK: insertelement{{.*}}i32 8
10236 //CHECK: insertelement{{.*}}i32 9
10237 //CHECK: insertelement{{.*}}i32 10
10238 //CHECK: insertelement{{.*}}i32 11
10239 //CHECK: insertelement{{.*}}i32 12
10240 //CHECK: insertelement{{.*}}i32 13
10241 //CHECK: insertelement{{.*}}i32 14
10242 //CHECK: insertelement{{.*}}i32 15
10243 //CHECK: insertelement{{.*}}i32 16
10244 //CHECK: insertelement{{.*}}i32 17
10245 //CHECK: insertelement{{.*}}i32 18
10246 //CHECK: insertelement{{.*}}i32 19
10247 //CHECK: insertelement{{.*}}i32 20
10248 //CHECK: insertelement{{.*}}i32 21
10249 //CHECK: insertelement{{.*}}i32 22
10250 //CHECK: insertelement{{.*}}i32 23
10251 //CHECK: insertelement{{.*}}i32 24
10252 //CHECK: insertelement{{.*}}i32 25
10253 //CHECK: insertelement{{.*}}i32 26
10254 //CHECK: insertelement{{.*}}i32 27
10255 //CHECK: insertelement{{.*}}i32 28
10256 //CHECK: insertelement{{.*}}i32 29
10257 //CHECK: insertelement{{.*}}i32 30
10258 //CHECK: insertelement{{.*}}i32 31
10259 return _mm512_set_epi16(e31, e30, e29, e28, e27, e26, e25, e24, e23, e22,
10260 e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7,
10261 e6, e5, e4, e3, e2, e1, e0);
10262
10263 }
test_mm512_set_epi32(int __A,int __B,int __C,int __D,int __E,int __F,int __G,int __H,int __I,int __J,int __K,int __L,int __M,int __N,int __O,int __P)10264 __m512i test_mm512_set_epi32 (int __A, int __B, int __C, int __D,
10265 int __E, int __F, int __G, int __H,
10266 int __I, int __J, int __K, int __L,
10267 int __M, int __N, int __O, int __P)
10268 {
10269 //CHECK-LABEL: @test_mm512_set_epi32
10270 //CHECK: insertelement{{.*}}i32 0
10271 //CHECK: insertelement{{.*}}i32 1
10272 //CHECK: insertelement{{.*}}i32 2
10273 //CHECK: insertelement{{.*}}i32 3
10274 //CHECK: insertelement{{.*}}i32 4
10275 //CHECK: insertelement{{.*}}i32 5
10276 //CHECK: insertelement{{.*}}i32 6
10277 //CHECK: insertelement{{.*}}i32 7
10278 //CHECK: insertelement{{.*}}i32 8
10279 //CHECK: insertelement{{.*}}i32 9
10280 //CHECK: insertelement{{.*}}i32 10
10281 //CHECK: insertelement{{.*}}i32 11
10282 //CHECK: insertelement{{.*}}i32 12
10283 //CHECK: insertelement{{.*}}i32 13
10284 //CHECK: insertelement{{.*}}i32 14
10285 //CHECK: insertelement{{.*}}i32 15
10286 return _mm512_set_epi32( __A, __B, __C, __D,__E, __F, __G, __H,
10287 __I, __J, __K, __L,__M, __N, __O, __P);
10288 }
10289
test_mm512_setr_epi32(int __A,int __B,int __C,int __D,int __E,int __F,int __G,int __H,int __I,int __J,int __K,int __L,int __M,int __N,int __O,int __P)10290 __m512i test_mm512_setr_epi32 (int __A, int __B, int __C, int __D,
10291 int __E, int __F, int __G, int __H,
10292 int __I, int __J, int __K, int __L,
10293 int __M, int __N, int __O, int __P)
10294 {
10295 //CHECK-LABEL: @test_mm512_setr_epi32
10296 //CHECK: load{{.*}}%{{.*}}, align 4
10297 //CHECK: load{{.*}}%{{.*}}, align 4
10298 //CHECK: load{{.*}}%{{.*}}, align 4
10299 //CHECK: load{{.*}}%{{.*}}, align 4
10300 //CHECK: load{{.*}}%{{.*}}, align 4
10301 //CHECK: load{{.*}}%{{.*}}, align 4
10302 //CHECK: load{{.*}}%{{.*}}, align 4
10303 //CHECK: load{{.*}}%{{.*}}, align 4
10304 //CHECK: load{{.*}}%{{.*}}, align 4
10305 //CHECK: load{{.*}}%{{.*}}, align 4
10306 //CHECK: load{{.*}}%{{.*}}, align 4
10307 //CHECK: load{{.*}}%{{.*}}, align 4
10308 //CHECK: load{{.*}}%{{.*}}, align 4
10309 //CHECK: load{{.*}}%{{.*}}, align 4
10310 //CHECK: load{{.*}}%{{.*}}, align 4
10311 //CHECK: load{{.*}}%{{.*}}, align 4
10312 //CHECK: insertelement{{.*}}i32 0
10313 //CHECK: insertelement{{.*}}i32 1
10314 //CHECK: insertelement{{.*}}i32 2
10315 //CHECK: insertelement{{.*}}i32 3
10316 //CHECK: insertelement{{.*}}i32 4
10317 //CHECK: insertelement{{.*}}i32 5
10318 //CHECK: insertelement{{.*}}i32 6
10319 //CHECK: insertelement{{.*}}i32 7
10320 //CHECK: insertelement{{.*}}i32 8
10321 //CHECK: insertelement{{.*}}i32 9
10322 //CHECK: insertelement{{.*}}i32 10
10323 //CHECK: insertelement{{.*}}i32 11
10324 //CHECK: insertelement{{.*}}i32 12
10325 //CHECK: insertelement{{.*}}i32 13
10326 //CHECK: insertelement{{.*}}i32 14
10327 //CHECK: insertelement{{.*}}i32 15
10328 return _mm512_setr_epi32( __A, __B, __C, __D,__E, __F, __G, __H,
10329 __I, __J, __K, __L,__M, __N, __O, __P);
10330 }
10331
test_mm512_mask_set1_epi64(__m512i __O,__mmask8 __M,long long __A)10332 __m512i test_mm512_mask_set1_epi64 (__m512i __O, __mmask8 __M, long long __A)
10333 {
10334 // CHECK-LABEL: @test_mm512_mask_set1_epi64
10335 // CHECK: insertelement <8 x i64> undef, i64 %{{.*}}, i32 0
10336 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 1
10337 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 2
10338 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 3
10339 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 4
10340 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 5
10341 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 6
10342 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 7
10343 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
10344 return _mm512_mask_set1_epi64 (__O, __M, __A);
10345 }
10346
test_mm512_maskz_set1_epi64(__mmask8 __M,long long __A)10347 __m512i test_mm512_maskz_set1_epi64 (__mmask8 __M, long long __A)
10348 {
10349 // CHECK-LABEL: @test_mm512_maskz_set1_epi64
10350 // CHECK: insertelement <8 x i64> undef, i64 %{{.*}}, i32 0
10351 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 1
10352 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 2
10353 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 3
10354 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 4
10355 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 5
10356 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 6
10357 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 7
10358 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
10359 return _mm512_maskz_set1_epi64 (__M, __A);
10360 }
10361
10362
test_mm512_set_epi64(long long __A,long long __B,long long __C,long long __D,long long __E,long long __F,long long __G,long long __H)10363 __m512i test_mm512_set_epi64 (long long __A, long long __B, long long __C,
10364 long long __D, long long __E, long long __F,
10365 long long __G, long long __H)
10366 {
10367 //CHECK-LABEL: @test_mm512_set_epi64
10368 //CHECK: insertelement{{.*}}i32 0
10369 //CHECK: insertelement{{.*}}i32 1
10370 //CHECK: insertelement{{.*}}i32 2
10371 //CHECK: insertelement{{.*}}i32 3
10372 //CHECK: insertelement{{.*}}i32 4
10373 //CHECK: insertelement{{.*}}i32 5
10374 //CHECK: insertelement{{.*}}i32 6
10375 //CHECK: insertelement{{.*}}i32 7
10376 return _mm512_set_epi64(__A, __B, __C, __D, __E, __F, __G, __H );
10377 }
10378
test_mm512_setr_epi64(long long __A,long long __B,long long __C,long long __D,long long __E,long long __F,long long __G,long long __H)10379 __m512i test_mm512_setr_epi64 (long long __A, long long __B, long long __C,
10380 long long __D, long long __E, long long __F,
10381 long long __G, long long __H)
10382 {
10383 //CHECK-LABEL: @test_mm512_setr_epi64
10384 //CHECK: load{{.*}}%{{.*}}, align 8
10385 //CHECK: load{{.*}}%{{.*}}, align 8
10386 //CHECK: load{{.*}}%{{.*}}, align 8
10387 //CHECK: load{{.*}}%{{.*}}, align 8
10388 //CHECK: load{{.*}}%{{.*}}, align 8
10389 //CHECK: load{{.*}}%{{.*}}, align 8
10390 //CHECK: load{{.*}}%{{.*}}, align 8
10391 //CHECK: load{{.*}}%{{.*}}, align 8
10392 //CHECK: insertelement{{.*}}i32 0
10393 //CHECK: insertelement{{.*}}i32 1
10394 //CHECK: insertelement{{.*}}i32 2
10395 //CHECK: insertelement{{.*}}i32 3
10396 //CHECK: insertelement{{.*}}i32 4
10397 //CHECK: insertelement{{.*}}i32 5
10398 //CHECK: insertelement{{.*}}i32 6
10399 //CHECK: insertelement{{.*}}i32 7
10400 return _mm512_setr_epi64(__A, __B, __C, __D, __E, __F, __G, __H );
10401 }
10402
test_mm512_set_pd(double __A,double __B,double __C,double __D,double __E,double __F,double __G,double __H)10403 __m512d test_mm512_set_pd (double __A, double __B, double __C, double __D,
10404 double __E, double __F, double __G, double __H)
10405 {
10406 //CHECK-LABEL: @test_mm512_set_pd
10407 //CHECK: insertelement{{.*}}i32 0
10408 //CHECK: insertelement{{.*}}i32 1
10409 //CHECK: insertelement{{.*}}i32 2
10410 //CHECK: insertelement{{.*}}i32 3
10411 //CHECK: insertelement{{.*}}i32 4
10412 //CHECK: insertelement{{.*}}i32 5
10413 //CHECK: insertelement{{.*}}i32 6
10414 //CHECK: insertelement{{.*}}i32 7
10415 return _mm512_set_pd( __A, __B, __C, __D, __E, __F, __G, __H);
10416 }
10417
test_mm512_setr_pd(double __A,double __B,double __C,double __D,double __E,double __F,double __G,double __H)10418 __m512d test_mm512_setr_pd (double __A, double __B, double __C, double __D,
10419 double __E, double __F, double __G, double __H)
10420 {
10421 //CHECK-LABEL: @test_mm512_setr_pd
10422 //CHECK: load{{.*}}%{{.*}}, align 8
10423 //CHECK: load{{.*}}%{{.*}}, align 8
10424 //CHECK: load{{.*}}%{{.*}}, align 8
10425 //CHECK: load{{.*}}%{{.*}}, align 8
10426 //CHECK: load{{.*}}%{{.*}}, align 8
10427 //CHECK: load{{.*}}%{{.*}}, align 8
10428 //CHECK: load{{.*}}%{{.*}}, align 8
10429 //CHECK: load{{.*}}%{{.*}}, align 8
10430 //CHECK: insertelement{{.*}}i32 0
10431 //CHECK: insertelement{{.*}}i32 1
10432 //CHECK: insertelement{{.*}}i32 2
10433 //CHECK: insertelement{{.*}}i32 3
10434 //CHECK: insertelement{{.*}}i32 4
10435 //CHECK: insertelement{{.*}}i32 5
10436 //CHECK: insertelement{{.*}}i32 6
10437 //CHECK: insertelement{{.*}}i32 7
10438 return _mm512_setr_pd( __A, __B, __C, __D, __E, __F, __G, __H);
10439 }
10440
test_mm512_set_ps(float __A,float __B,float __C,float __D,float __E,float __F,float __G,float __H,float __I,float __J,float __K,float __L,float __M,float __N,float __O,float __P)10441 __m512 test_mm512_set_ps (float __A, float __B, float __C, float __D,
10442 float __E, float __F, float __G, float __H,
10443 float __I, float __J, float __K, float __L,
10444 float __M, float __N, float __O, float __P)
10445 {
10446 //CHECK-LABEL: @test_mm512_set_ps
10447 //CHECK: insertelement{{.*}}i32 0
10448 //CHECK: insertelement{{.*}}i32 1
10449 //CHECK: insertelement{{.*}}i32 2
10450 //CHECK: insertelement{{.*}}i32 3
10451 //CHECK: insertelement{{.*}}i32 4
10452 //CHECK: insertelement{{.*}}i32 5
10453 //CHECK: insertelement{{.*}}i32 6
10454 //CHECK: insertelement{{.*}}i32 7
10455 //CHECK: insertelement{{.*}}i32 8
10456 //CHECK: insertelement{{.*}}i32 9
10457 //CHECK: insertelement{{.*}}i32 10
10458 //CHECK: insertelement{{.*}}i32 11
10459 //CHECK: insertelement{{.*}}i32 12
10460 //CHECK: insertelement{{.*}}i32 13
10461 //CHECK: insertelement{{.*}}i32 14
10462 //CHECK: insertelement{{.*}}i32 15
10463 return _mm512_set_ps( __A, __B, __C, __D, __E, __F, __G, __H,
10464 __I, __J, __K, __L, __M, __N, __O, __P);
10465 }
10466
test_mm512_mask_abs_epi64(__m512i __W,__mmask8 __U,__m512i __A)10467 __m512i test_mm512_mask_abs_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
10468 {
10469 // CHECK-LABEL: @test_mm512_mask_abs_epi64
10470 // CHECK: [[SUB:%.*]] = sub <8 x i64> zeroinitializer, [[A:%.*]]
10471 // CHECK: [[CMP:%.*]] = icmp sgt <8 x i64> [[A]], zeroinitializer
10472 // CHECK: [[SEL:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[A]], <8 x i64> [[SUB]]
10473 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> [[SEL]], <8 x i64> %{{.*}}
10474 return _mm512_mask_abs_epi64 (__W,__U,__A);
10475 }
10476
test_mm512_maskz_abs_epi64(__mmask8 __U,__m512i __A)10477 __m512i test_mm512_maskz_abs_epi64 (__mmask8 __U, __m512i __A)
10478 {
10479 // CHECK-LABEL: @test_mm512_maskz_abs_epi64
10480 // CHECK: [[SUB:%.*]] = sub <8 x i64> zeroinitializer, [[A:%.*]]
10481 // CHECK: [[CMP:%.*]] = icmp sgt <8 x i64> [[A]], zeroinitializer
10482 // CHECK: [[SEL:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[A]], <8 x i64> [[SUB]]
10483 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> [[SEL]], <8 x i64> %{{.*}}
10484 return _mm512_maskz_abs_epi64 (__U,__A);
10485 }
10486
test_mm512_mask_abs_epi32(__m512i __W,__mmask16 __U,__m512i __A)10487 __m512i test_mm512_mask_abs_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
10488 {
10489 // CHECK-LABEL: @test_mm512_mask_abs_epi32
10490 // CHECK: [[SUB:%.*]] = sub <16 x i32> zeroinitializer, [[A:%.*]]
10491 // CHECK: [[CMP:%.*]] = icmp sgt <16 x i32> [[A]], zeroinitializer
10492 // CHECK: [[SEL:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[A]], <16 x i32> [[SUB]]
10493 // CHECK: [[TMP:%.*]] = bitcast <16 x i32> [[SEL]] to <8 x i64>
10494 // CHECK: [[SEL:%.*]] = bitcast <8 x i64> [[TMP]] to <16 x i32>
10495 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> [[SEL]], <16 x i32> %{{.*}}
10496 return _mm512_mask_abs_epi32 (__W,__U,__A);
10497 }
10498
test_mm512_maskz_abs_epi32(__mmask16 __U,__m512i __A)10499 __m512i test_mm512_maskz_abs_epi32 (__mmask16 __U, __m512i __A)
10500 {
10501 // CHECK-LABEL: @test_mm512_maskz_abs_epi32
10502 // CHECK: [[SUB:%.*]] = sub <16 x i32> zeroinitializer, [[A:%.*]]
10503 // CHECK: [[CMP:%.*]] = icmp sgt <16 x i32> [[A]], zeroinitializer
10504 // CHECK: [[SEL:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[A]], <16 x i32> [[SUB]]
10505 // CHECK: [[TMP:%.*]] = bitcast <16 x i32> [[SEL]] to <8 x i64>
10506 // CHECK: [[SEL:%.*]] = bitcast <8 x i64> [[TMP]] to <16 x i32>
10507 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> [[SEL]], <16 x i32> %{{.*}}
10508 return _mm512_maskz_abs_epi32 (__U,__A);
10509 }
10510
test_mm512_setr_ps(float __A,float __B,float __C,float __D,float __E,float __F,float __G,float __H,float __I,float __J,float __K,float __L,float __M,float __N,float __O,float __P)10511 __m512 test_mm512_setr_ps (float __A, float __B, float __C, float __D,
10512 float __E, float __F, float __G, float __H,
10513 float __I, float __J, float __K, float __L,
10514 float __M, float __N, float __O, float __P)
10515 {
10516 //CHECK-LABEL: @test_mm512_setr_ps
10517 //CHECK: load{{.*}}%{{.*}}, align 4
10518 //CHECK: load{{.*}}%{{.*}}, align 4
10519 //CHECK: load{{.*}}%{{.*}}, align 4
10520 //CHECK: load{{.*}}%{{.*}}, align 4
10521 //CHECK: load{{.*}}%{{.*}}, align 4
10522 //CHECK: load{{.*}}%{{.*}}, align 4
10523 //CHECK: load{{.*}}%{{.*}}, align 4
10524 //CHECK: load{{.*}}%{{.*}}, align 4
10525 //CHECK: load{{.*}}%{{.*}}, align 4
10526 //CHECK: load{{.*}}%{{.*}}, align 4
10527 //CHECK: load{{.*}}%{{.*}}, align 4
10528 //CHECK: load{{.*}}%{{.*}}, align 4
10529 //CHECK: load{{.*}}%{{.*}}, align 4
10530 //CHECK: load{{.*}}%{{.*}}, align 4
10531 //CHECK: load{{.*}}%{{.*}}, align 4
10532 //CHECK: load{{.*}}%{{.*}}, align 4
10533 //CHECK: insertelement{{.*}}i32 0
10534 //CHECK: insertelement{{.*}}i32 1
10535 //CHECK: insertelement{{.*}}i32 2
10536 //CHECK: insertelement{{.*}}i32 3
10537 //CHECK: insertelement{{.*}}i32 4
10538 //CHECK: insertelement{{.*}}i32 5
10539 //CHECK: insertelement{{.*}}i32 6
10540 //CHECK: insertelement{{.*}}i32 7
10541 //CHECK: insertelement{{.*}}i32 8
10542 //CHECK: insertelement{{.*}}i32 9
10543 //CHECK: insertelement{{.*}}i32 10
10544 //CHECK: insertelement{{.*}}i32 11
10545 //CHECK: insertelement{{.*}}i32 12
10546 //CHECK: insertelement{{.*}}i32 13
10547 //CHECK: insertelement{{.*}}i32 14
10548 //CHECK: insertelement{{.*}}i32 15
10549 return _mm512_setr_ps( __A, __B, __C, __D, __E, __F, __G, __H,
10550 __I, __J, __K, __L, __M, __N, __O, __P);
10551 }
10552
test_mm_cvtss_i32(__m128 A)10553 int test_mm_cvtss_i32(__m128 A) {
10554 // CHECK-LABEL: test_mm_cvtss_i32
10555 // CHECK: call i32 @llvm.x86.sse.cvtss2si(<4 x float> %{{.*}})
10556 return _mm_cvtss_i32(A);
10557 }
10558
10559 #ifdef __x86_64__
test_mm_cvtss_i64(__m128 A)10560 long long test_mm_cvtss_i64(__m128 A) {
10561 // CHECK-LABEL: test_mm_cvtss_i64
10562 // CHECK: call i64 @llvm.x86.sse.cvtss2si64(<4 x float> %{{.*}})
10563 return _mm_cvtss_i64(A);
10564 }
10565 #endif
10566
test_mm_cvti32_sd(__m128d A,int B)10567 __m128d test_mm_cvti32_sd(__m128d A, int B) {
10568 // CHECK-LABEL: test_mm_cvti32_sd
10569 // CHECK: sitofp i32 %{{.*}} to double
10570 // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
10571 return _mm_cvti32_sd(A, B);
10572 }
10573
10574 #ifdef __x86_64__
test_mm_cvti64_sd(__m128d A,long long B)10575 __m128d test_mm_cvti64_sd(__m128d A, long long B) {
10576 // CHECK-LABEL: test_mm_cvti64_sd
10577 // CHECK: sitofp i64 %{{.*}} to double
10578 // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
10579 return _mm_cvti64_sd(A, B);
10580 }
10581 #endif
10582
test_mm_cvti32_ss(__m128 A,int B)10583 __m128 test_mm_cvti32_ss(__m128 A, int B) {
10584 // CHECK-LABEL: test_mm_cvti32_ss
10585 // CHECK: sitofp i32 %{{.*}} to float
10586 // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
10587 return _mm_cvti32_ss(A, B);
10588 }
10589
10590 #ifdef __x86_64__
test_mm_cvti64_ss(__m128 A,long long B)10591 __m128 test_mm_cvti64_ss(__m128 A, long long B) {
10592 // CHECK-LABEL: test_mm_cvti64_ss
10593 // CHECK: sitofp i64 %{{.*}} to float
10594 // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
10595 return _mm_cvti64_ss(A, B);
10596 }
10597 #endif
10598
test_mm_cvtsd_i32(__m128d A)10599 int test_mm_cvtsd_i32(__m128d A) {
10600 // CHECK-LABEL: test_mm_cvtsd_i32
10601 // CHECK: call i32 @llvm.x86.sse2.cvtsd2si(<2 x double> %{{.*}})
10602 return _mm_cvtsd_i32(A);
10603 }
10604
10605 #ifdef __x86_64__
test_mm_cvtsd_i64(__m128d A)10606 long long test_mm_cvtsd_i64(__m128d A) {
10607 // CHECK-LABEL: test_mm_cvtsd_i64
10608 // CHECK: call i64 @llvm.x86.sse2.cvtsd2si64(<2 x double> %{{.*}})
10609 return _mm_cvtsd_i64(A);
10610 }
10611 #endif
10612
test_mm_mask_cvtss_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128 __B)10613 __m128d test_mm_mask_cvtss_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128 __B) {
10614 // CHECK-LABEL: @test_mm_mask_cvtss_sd
10615 // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
10616 return _mm_mask_cvtss_sd(__W, __U, __A, __B);
10617 }
10618
test_mm_maskz_cvtss_sd(__mmask8 __U,__m128d __A,__m128 __B)10619 __m128d test_mm_maskz_cvtss_sd( __mmask8 __U, __m128d __A, __m128 __B) {
10620 // CHECK-LABEL: @test_mm_maskz_cvtss_sd
10621 // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
10622 return _mm_maskz_cvtss_sd( __U, __A, __B);
10623 }
10624
test_mm_mask_cvtsd_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128d __B)10625 __m128 test_mm_mask_cvtsd_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128d __B) {
10626 // CHECK-LABEL: @test_mm_mask_cvtsd_ss
10627 // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
10628 return _mm_mask_cvtsd_ss(__W, __U, __A, __B);
10629 }
10630
test_mm_maskz_cvtsd_ss(__mmask8 __U,__m128 __A,__m128d __B)10631 __m128 test_mm_maskz_cvtsd_ss(__mmask8 __U, __m128 __A, __m128d __B) {
10632 // CHECK-LABEL: @test_mm_maskz_cvtsd_ss
10633 // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
10634 return _mm_maskz_cvtsd_ss(__U, __A, __B);
10635 }
10636
10637
test_mm512_setzero_epi32()10638 __m512i test_mm512_setzero_epi32()
10639 {
10640 // CHECK-LABEL: @test_mm512_setzero_epi32
10641 // CHECK: zeroinitializer
10642 return _mm512_setzero_epi32();
10643 }
10644
test_mm512_setzero()10645 __m512 test_mm512_setzero()
10646 {
10647 // CHECK-LABEL: @test_mm512_setzero
10648 // CHECK: zeroinitializer
10649 return _mm512_setzero();
10650 }
10651
test_mm512_setzero_si512()10652 __m512i test_mm512_setzero_si512()
10653 {
10654 // CHECK-LABEL: @test_mm512_setzero_si512
10655 // CHECK: zeroinitializer
10656 return _mm512_setzero_si512();
10657 }
10658
test_mm512_setzero_ps()10659 __m512 test_mm512_setzero_ps()
10660 {
10661 // CHECK-LABEL: @test_mm512_setzero_ps
10662 // CHECK: zeroinitializer
10663 return _mm512_setzero_ps();
10664 }
10665
test_mm512_setzero_pd()10666 __m512d test_mm512_setzero_pd()
10667 {
10668 // CHECK-LABEL: @test_mm512_setzero_pd
10669 // CHECK: zeroinitializer
10670 return _mm512_setzero_pd();
10671 }
10672
test_mm512_int2mask(int __a)10673 __mmask16 test_mm512_int2mask(int __a)
10674 {
10675 // CHECK-LABEL: test_mm512_int2mask
10676 // CHECK: trunc i32 %{{.*}} to i16
10677 return _mm512_int2mask(__a);
10678 }
10679
test_mm512_mask2int(__mmask16 __a)10680 int test_mm512_mask2int(__mmask16 __a)
10681 {
10682 // CHECK-LABEL: test_mm512_mask2int
10683 // CHECK: zext i16 %{{.*}} to i32
10684 return _mm512_mask2int(__a);
10685 }
10686
test_mm_mask_move_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)10687 __m128 test_mm_mask_move_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
10688 {
10689 // CHECK-LABEL: @test_mm_mask_move_ss
10690 // CHECK: [[EXT:%.*]] = extractelement <4 x float> %{{.*}}, i32 0
10691 // CHECK: insertelement <4 x float> %{{.*}}, float [[EXT]], i32 0
10692 // CHECK: [[A:%.*]] = extractelement <4 x float> [[VEC:%.*]], i64 0
10693 // CHECK-NEXT: [[B:%.*]] = extractelement <4 x float> %{{.*}}, i64 0
10694 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
10695 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
10696 // CHECK-NEXT: [[SEL:%.*]] = select i1 %{{.*}}, float [[A]], float [[B]]
10697 // CHECK-NEXT: insertelement <4 x float> [[VEC]], float [[SEL]], i64 0
10698 return _mm_mask_move_ss ( __W, __U, __A, __B);
10699 }
10700
test_mm_maskz_move_ss(__mmask8 __U,__m128 __A,__m128 __B)10701 __m128 test_mm_maskz_move_ss (__mmask8 __U, __m128 __A, __m128 __B)
10702 {
10703 // CHECK-LABEL: @test_mm_maskz_move_ss
10704 // CHECK: [[EXT:%.*]] = extractelement <4 x float> %{{.*}}, i32 0
10705 // CHECK: insertelement <4 x float> %{{.*}}, float [[EXT]], i32 0
10706 // CHECK: [[A:%.*]] = extractelement <4 x float> [[VEC:%.*]], i64 0
10707 // CHECK-NEXT: [[B:%.*]] = extractelement <4 x float> %{{.*}}, i64 0
10708 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
10709 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
10710 // CHECK-NEXT: [[SEL:%.*]] = select i1 %{{.*}}, float [[A]], float [[B]]
10711 // CHECK-NEXT: insertelement <4 x float> [[VEC]], float [[SEL]], i64 0
10712 return _mm_maskz_move_ss (__U, __A, __B);
10713 }
10714
test_mm_mask_move_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)10715 __m128d test_mm_mask_move_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
10716 {
10717 // CHECK-LABEL: @test_mm_mask_move_sd
10718 // CHECK: [[EXT:%.*]] = extractelement <2 x double> %{{.*}}, i32 0
10719 // CHECK: insertelement <2 x double> %{{.*}}, double [[EXT]], i32 0
10720 // CHECK: [[A:%.*]] = extractelement <2 x double> [[VEC:%.*]], i64 0
10721 // CHECK-NEXT: [[B:%.*]] = extractelement <2 x double> %{{.*}}, i64 0
10722 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
10723 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
10724 // CHECK-NEXT: [[SEL:%.*]] = select i1 %{{.*}}, double [[A]], double [[B]]
10725 // CHECK-NEXT: insertelement <2 x double> [[VEC]], double [[SEL]], i64 0
10726 return _mm_mask_move_sd ( __W, __U, __A, __B);
10727 }
10728
test_mm_maskz_move_sd(__mmask8 __U,__m128d __A,__m128d __B)10729 __m128d test_mm_maskz_move_sd (__mmask8 __U, __m128d __A, __m128d __B)
10730 {
10731 // CHECK-LABEL: @test_mm_maskz_move_sd
10732 // CHECK: [[EXT:%.*]] = extractelement <2 x double> %{{.*}}, i32 0
10733 // CHECK: insertelement <2 x double> %{{.*}}, double [[EXT]], i32 0
10734 // CHECK: [[A:%.*]] = extractelement <2 x double> [[VEC:%.*]], i64 0
10735 // CHECK-NEXT: [[B:%.*]] = extractelement <2 x double> %{{.*}}, i64 0
10736 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
10737 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
10738 // CHECK-NEXT: [[SEL:%.*]] = select i1 %13, double [[A]], double [[B]]
10739 // CHECK-NEXT: insertelement <2 x double> [[VEC]], double [[SEL]], i64 0
10740 return _mm_maskz_move_sd (__U, __A, __B);
10741 }
10742
test_mm_mask_store_ss(float * __P,__mmask8 __U,__m128 __A)10743 void test_mm_mask_store_ss(float * __P, __mmask8 __U, __m128 __A)
10744 {
10745 // CHECK-LABEL: @test_mm_mask_store_ss
10746 // CHECK: call void @llvm.masked.store.v4f32.p0v4f32(<4 x float> %{{.*}}, <4 x float>* %{{.*}}, i32 1, <4 x i1> %{{.*}})
10747 _mm_mask_store_ss(__P, __U, __A);
10748 }
10749
test_mm_mask_store_sd(double * __P,__mmask8 __U,__m128d __A)10750 void test_mm_mask_store_sd(double * __P, __mmask8 __U, __m128d __A)
10751 {
10752 // CHECK-LABEL: @test_mm_mask_store_sd
10753 // CHECK: call void @llvm.masked.store.v2f64.p0v2f64(<2 x double> %{{.*}}, <2 x double>* %{{.*}}, i32 1, <2 x i1> %{{.*}})
10754 _mm_mask_store_sd(__P, __U, __A);
10755 }
10756
test_mm_mask_load_ss(__m128 __A,__mmask8 __U,const float * __W)10757 __m128 test_mm_mask_load_ss(__m128 __A, __mmask8 __U, const float* __W)
10758 {
10759 // CHECK-LABEL: @test_mm_mask_load_ss
10760 // CHECK: call <4 x float> @llvm.masked.load.v4f32.p0v4f32(<4 x float>* %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x float> %{{.*}})
10761 return _mm_mask_load_ss(__A, __U, __W);
10762 }
10763
test_mm_maskz_load_ss(__mmask8 __U,const float * __W)10764 __m128 test_mm_maskz_load_ss (__mmask8 __U, const float * __W)
10765 {
10766 // CHECK-LABEL: @test_mm_maskz_load_ss
10767 // CHECK: call <4 x float> @llvm.masked.load.v4f32.p0v4f32(<4 x float>* %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x float> %{{.*}})
10768 return _mm_maskz_load_ss (__U, __W);
10769 }
10770
test_mm_mask_load_sd(__m128d __A,__mmask8 __U,const double * __W)10771 __m128d test_mm_mask_load_sd (__m128d __A, __mmask8 __U, const double * __W)
10772 {
10773 // CHECK-LABEL: @test_mm_mask_load_sd
10774 // CHECK: call <2 x double> @llvm.masked.load.v2f64.p0v2f64(<2 x double>* %{{.*}}, i32 1, <2 x i1> %{{.*}}, <2 x double> %{{.*}})
10775 return _mm_mask_load_sd (__A, __U, __W);
10776 }
10777
test_mm_maskz_load_sd(__mmask8 __U,const double * __W)10778 __m128d test_mm_maskz_load_sd (__mmask8 __U, const double * __W)
10779 {
10780 // CHECK-LABEL: @test_mm_maskz_load_sd
10781 // CHECK: call <2 x double> @llvm.masked.load.v2f64.p0v2f64(<2 x double>* %{{.*}}, i32 1, <2 x i1> %{{.*}}, <2 x double> %{{.*}})
10782 return _mm_maskz_load_sd (__U, __W);
10783 }
10784
test_mm512_abs_pd(__m512d a)10785 __m512d test_mm512_abs_pd(__m512d a){
10786 // CHECK-LABEL: @test_mm512_abs_pd
10787 // CHECK: and <8 x i64>
10788 return _mm512_abs_pd(a);
10789 }
10790
test_mm512_mask_abs_pd(__m512d __W,__mmask8 __U,__m512d __A)10791 __m512d test_mm512_mask_abs_pd (__m512d __W, __mmask8 __U, __m512d __A){
10792 // CHECK-LABEL: @test_mm512_mask_abs_pd
10793 // CHECK: %[[AND_RES:.*]] = and <8 x i64>
10794 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
10795 // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[AND_RES]], <8 x i64> %{{.*}}
10796 return _mm512_mask_abs_pd (__W,__U,__A);
10797 }
10798
test_mm512_abs_ps(__m512 a)10799 __m512 test_mm512_abs_ps(__m512 a){
10800 // CHECK-LABEL: @test_mm512_abs_ps
10801 // CHECK: and <16 x i32>
10802 return _mm512_abs_ps(a);
10803 }
10804
test_mm512_mask_abs_ps(__m512 __W,__mmask16 __U,__m512 __A)10805 __m512 test_mm512_mask_abs_ps(__m512 __W, __mmask16 __U, __m512 __A){
10806 // CHECK-LABEL: @test_mm512_mask_abs_ps
10807 // CHECK: and <16 x i32>
10808 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
10809 // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
10810 return _mm512_mask_abs_ps( __W, __U, __A);
10811 }
10812
test_mm512_zextpd128_pd512(__m128d A)10813 __m512d test_mm512_zextpd128_pd512(__m128d A) {
10814 // CHECK-LABEL: test_mm512_zextpd128_pd512
10815 // CHECK: store <2 x double> zeroinitializer
10816 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>
10817 return _mm512_zextpd128_pd512(A);
10818 }
10819
test_mm512_zextpd256_pd512(__m256d A)10820 __m512d test_mm512_zextpd256_pd512(__m256d A) {
10821 // CHECK-LABEL: test_mm512_zextpd256_pd512
10822 // CHECK: store <4 x double> zeroinitializer
10823 // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
10824 return _mm512_zextpd256_pd512(A);
10825 }
10826
test_mm512_zextps128_ps512(__m128 A)10827 __m512 test_mm512_zextps128_ps512(__m128 A) {
10828 // CHECK-LABEL: test_mm512_zextps128_ps512
10829 // CHECK: store <4 x float> zeroinitializer
10830 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 4, i32 5, i32 6, i32 7, i32 4, i32 5, i32 6, i32 7>
10831 return _mm512_zextps128_ps512(A);
10832 }
10833
test_mm512_zextps256_ps512(__m256 A)10834 __m512 test_mm512_zextps256_ps512(__m256 A) {
10835 // CHECK-LABEL: test_mm512_zextps256_ps512
10836 // CHECK: store <8 x float> zeroinitializer
10837 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
10838 return _mm512_zextps256_ps512(A);
10839 }
10840
test_mm512_zextsi128_si512(__m128i A)10841 __m512i test_mm512_zextsi128_si512(__m128i A) {
10842 // CHECK-LABEL: test_mm512_zextsi128_si512
10843 // CHECK: store <2 x i64> zeroinitializer
10844 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>
10845 return _mm512_zextsi128_si512(A);
10846 }
10847
test_mm512_zextsi256_si512(__m256i A)10848 __m512i test_mm512_zextsi256_si512(__m256i A) {
10849 // CHECK-LABEL: test_mm512_zextsi256_si512
10850 // CHECK: store <4 x i64> zeroinitializer
10851 // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
10852 return _mm512_zextsi256_si512(A);
10853 }
10854