1 // RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512f -target-feature +avx512vl -emit-llvm -o - -Wall -Werror | FileCheck %s
6 __mmask8 test_mm_cmpeq_epu32_mask(__m128i __a, __m128i __b) {
7 // CHECK-LABEL: @test_mm_cmpeq_epu32_mask
8 // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
9 // CHECK: shufflevector <4 x i1> %{{.*}}, <4 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
10 return (__mmask8)_mm_cmpeq_epu32_mask(__a, __b);
13 __mmask8 test_mm_mask_cmpeq_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
14 // CHECK-LABEL: @test_mm_mask_cmpeq_epu32_mask
15 // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
16 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
17 return (__mmask8)_mm_mask_cmpeq_epu32_mask(__u, __a, __b);
20 __mmask8 test_mm_cmpeq_epu64_mask(__m128i __a, __m128i __b) {
21 // CHECK-LABEL: @test_mm_cmpeq_epu64_mask
22 // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
23 // CHECK: shufflevector <2 x i1> %{{.*}}, <2 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>
24 return (__mmask8)_mm_cmpeq_epu64_mask(__a, __b);
27 __mmask8 test_mm_mask_cmpeq_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
28 // CHECK-LABEL: @test_mm_mask_cmpeq_epu64_mask
29 // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
30 // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
31 return (__mmask8)_mm_mask_cmpeq_epu64_mask(__u, __a, __b);
34 __mmask8 test_mm_cmpge_epi32_mask(__m128i __a, __m128i __b) {
35 // CHECK-LABEL: @test_mm_cmpge_epi32_mask
36 // CHECK: icmp sge <4 x i32> %{{.*}}, %{{.*}}
37 return (__mmask8)_mm_cmpge_epi32_mask(__a, __b);
40 __mmask8 test_mm_mask_cmpge_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
41 // CHECK-LABEL: @test_mm_mask_cmpge_epi32_mask
42 // CHECK: icmp sge <4 x i32> %{{.*}}, %{{.*}}
43 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
44 return (__mmask8)_mm_mask_cmpge_epi32_mask(__u, __a, __b);
47 __mmask8 test_mm_cmpge_epi64_mask(__m128i __a, __m128i __b) {
48 // CHECK-LABEL: @test_mm_cmpge_epi64_mask
49 // CHECK: icmp sge <2 x i64> %{{.*}}, %{{.*}}
50 return (__mmask8)_mm_cmpge_epi64_mask(__a, __b);
53 __mmask8 test_mm_mask_cmpge_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
54 // CHECK-LABEL: @test_mm_mask_cmpge_epi64_mask
55 // CHECK: icmp sge <2 x i64> %{{.*}}, %{{.*}}
56 // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
57 return (__mmask8)_mm_mask_cmpge_epi64_mask(__u, __a, __b);
60 __mmask8 test_mm256_cmpge_epi32_mask(__m256i __a, __m256i __b) {
61 // CHECK-LABEL: @test_mm256_cmpge_epi32_mask
62 // CHECK: icmp sge <8 x i32> %{{.*}}, %{{.*}}
63 return (__mmask8)_mm256_cmpge_epi32_mask(__a, __b);
66 __mmask8 test_mm256_mask_cmpge_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
67 // CHECK-LABEL: @test_mm256_mask_cmpge_epi32_mask
68 // CHECK: icmp sge <8 x i32> %{{.*}}, %{{.*}}
69 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
70 return (__mmask8)_mm256_mask_cmpge_epi32_mask(__u, __a, __b);
73 __mmask8 test_mm256_cmpge_epi64_mask(__m256i __a, __m256i __b) {
74 // CHECK-LABEL: @test_mm256_cmpge_epi64_mask
75 // CHECK: icmp sge <4 x i64> %{{.*}}, %{{.*}}
76 return (__mmask8)_mm256_cmpge_epi64_mask(__a, __b);
79 __mmask8 test_mm256_mask_cmpge_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
80 // CHECK-LABEL: @test_mm256_mask_cmpge_epi64_mask
81 // CHECK: icmp sge <4 x i64> %{{.*}}, %{{.*}}
82 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
83 return (__mmask8)_mm256_mask_cmpge_epi64_mask(__u, __a, __b);
86 __mmask8 test_mm_cmpge_epu32_mask(__m128i __a, __m128i __b) {
87 // CHECK-LABEL: @test_mm_cmpge_epu32_mask
88 // CHECK: icmp uge <4 x i32> %{{.*}}, %{{.*}}
89 return (__mmask8)_mm_cmpge_epu32_mask(__a, __b);
92 __mmask8 test_mm_mask_cmpge_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
93 // CHECK-LABEL: @test_mm_mask_cmpge_epu32_mask
94 // CHECK: icmp uge <4 x i32> %{{.*}}, %{{.*}}
95 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
96 return (__mmask8)_mm_mask_cmpge_epu32_mask(__u, __a, __b);
99 __mmask8 test_mm_cmpge_epu64_mask(__m128i __a, __m128i __b) {
100 // CHECK-LABEL: @test_mm_cmpge_epu64_mask
101 // CHECK: icmp uge <2 x i64> %{{.*}}, %{{.*}}
102 return (__mmask8)_mm_cmpge_epu64_mask(__a, __b);
105 __mmask8 test_mm_mask_cmpge_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
106 // CHECK-LABEL: @test_mm_mask_cmpge_epu64_mask
107 // CHECK: icmp uge <2 x i64> %{{.*}}, %{{.*}}
108 // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
109 return (__mmask8)_mm_mask_cmpge_epu64_mask(__u, __a, __b);
112 __mmask8 test_mm256_cmpge_epu32_mask(__m256i __a, __m256i __b) {
113 // CHECK-LABEL: @test_mm256_cmpge_epu32_mask
114 // CHECK: icmp uge <8 x i32> %{{.*}}, %{{.*}}
115 return (__mmask8)_mm256_cmpge_epu32_mask(__a, __b);
118 __mmask8 test_mm256_mask_cmpge_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
119 // CHECK-LABEL: @test_mm256_mask_cmpge_epu32_mask
120 // CHECK: icmp uge <8 x i32> %{{.*}}, %{{.*}}
121 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
122 return (__mmask8)_mm256_mask_cmpge_epu32_mask(__u, __a, __b);
125 __mmask8 test_mm256_cmpge_epu64_mask(__m256i __a, __m256i __b) {
126 // CHECK-LABEL: @test_mm256_cmpge_epu64_mask
127 // CHECK: icmp uge <4 x i64> %{{.*}}, %{{.*}}
128 return (__mmask8)_mm256_cmpge_epu64_mask(__a, __b);
131 __mmask8 test_mm256_mask_cmpge_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
132 // CHECK-LABEL: @test_mm256_mask_cmpge_epu64_mask
133 // CHECK: icmp uge <4 x i64> %{{.*}}, %{{.*}}
134 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
135 return (__mmask8)_mm256_mask_cmpge_epu64_mask(__u, __a, __b);
138 __mmask8 test_mm_cmpgt_epu32_mask(__m128i __a, __m128i __b) {
139 // CHECK-LABEL: @test_mm_cmpgt_epu32_mask
140 // CHECK: icmp ugt <4 x i32> %{{.*}}, %{{.*}}
141 return (__mmask8)_mm_cmpgt_epu32_mask(__a, __b);
144 __mmask8 test_mm_mask_cmpgt_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
145 // CHECK-LABEL: @test_mm_mask_cmpgt_epu32_mask
146 // CHECK: icmp ugt <4 x i32> %{{.*}}, %{{.*}}
147 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
148 return (__mmask8)_mm_mask_cmpgt_epu32_mask(__u, __a, __b);
151 __mmask8 test_mm_cmpgt_epu64_mask(__m128i __a, __m128i __b) {
152 // CHECK-LABEL: @test_mm_cmpgt_epu64_mask
153 // CHECK: icmp ugt <2 x i64> %{{.*}}, %{{.*}}
154 return (__mmask8)_mm_cmpgt_epu64_mask(__a, __b);
157 __mmask8 test_mm_mask_cmpgt_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
158 // CHECK-LABEL: @test_mm_mask_cmpgt_epu64_mask
159 // CHECK: icmp ugt <2 x i64> %{{.*}}, %{{.*}}
160 // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
161 return (__mmask8)_mm_mask_cmpgt_epu64_mask(__u, __a, __b);
164 __mmask8 test_mm256_cmpgt_epu32_mask(__m256i __a, __m256i __b) {
165 // CHECK-LABEL: @test_mm256_cmpgt_epu32_mask
166 // CHECK: icmp ugt <8 x i32> %{{.*}}, %{{.*}}
167 return (__mmask8)_mm256_cmpgt_epu32_mask(__a, __b);
170 __mmask8 test_mm256_mask_cmpgt_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
171 // CHECK-LABEL: @test_mm256_mask_cmpgt_epu32_mask
172 // CHECK: icmp ugt <8 x i32> %{{.*}}, %{{.*}}
173 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
174 return (__mmask8)_mm256_mask_cmpgt_epu32_mask(__u, __a, __b);
177 __mmask8 test_mm256_cmpgt_epu64_mask(__m256i __a, __m256i __b) {
178 // CHECK-LABEL: @test_mm256_cmpgt_epu64_mask
179 // CHECK: icmp ugt <4 x i64> %{{.*}}, %{{.*}}
180 return (__mmask8)_mm256_cmpgt_epu64_mask(__a, __b);
183 __mmask8 test_mm256_mask_cmpgt_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
184 // CHECK-LABEL: @test_mm256_mask_cmpgt_epu64_mask
185 // CHECK: icmp ugt <4 x i64> %{{.*}}, %{{.*}}
186 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
187 return (__mmask8)_mm256_mask_cmpgt_epu64_mask(__u, __a, __b);
190 __mmask8 test_mm_cmple_epi32_mask(__m128i __a, __m128i __b) {
191 // CHECK-LABEL: @test_mm_cmple_epi32_mask
192 // CHECK: icmp sle <4 x i32> %{{.*}}, %{{.*}}
193 return (__mmask8)_mm_cmple_epi32_mask(__a, __b);
196 __mmask8 test_mm_mask_cmple_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
197 // CHECK-LABEL: @test_mm_mask_cmple_epi32_mask
198 // CHECK: icmp sle <4 x i32> %{{.*}}, %{{.*}}
199 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
200 return (__mmask8)_mm_mask_cmple_epi32_mask(__u, __a, __b);
203 __mmask8 test_mm_cmple_epi64_mask(__m128i __a, __m128i __b) {
204 // CHECK-LABEL: @test_mm_cmple_epi64_mask
205 // CHECK: icmp sle <2 x i64> %{{.*}}, %{{.*}}
206 return (__mmask8)_mm_cmple_epi64_mask(__a, __b);
209 __mmask8 test_mm_mask_cmple_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
210 // CHECK-LABEL: @test_mm_mask_cmple_epi64_mask
211 // CHECK: icmp sle <2 x i64> %{{.*}}, %{{.*}}
212 // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
213 return (__mmask8)_mm_mask_cmple_epi64_mask(__u, __a, __b);
216 __mmask8 test_mm256_cmple_epi32_mask(__m256i __a, __m256i __b) {
217 // CHECK-LABEL: @test_mm256_cmple_epi32_mask
218 // CHECK: icmp sle <8 x i32> %{{.*}}, %{{.*}}
219 return (__mmask8)_mm256_cmple_epi32_mask(__a, __b);
222 __mmask8 test_mm256_mask_cmple_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
223 // CHECK-LABEL: @test_mm256_mask_cmple_epi32_mask
224 // CHECK: icmp sle <8 x i32> %{{.*}}, %{{.*}}
225 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
226 return (__mmask8)_mm256_mask_cmple_epi32_mask(__u, __a, __b);
229 __mmask8 test_mm256_cmple_epi64_mask(__m256i __a, __m256i __b) {
230 // CHECK-LABEL: @test_mm256_cmple_epi64_mask
231 // CHECK: icmp sle <4 x i64> %{{.*}}, %{{.*}}
232 return (__mmask8)_mm256_cmple_epi64_mask(__a, __b);
235 __mmask8 test_mm256_mask_cmple_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
236 // CHECK-LABEL: @test_mm256_mask_cmple_epi64_mask
237 // CHECK: icmp sle <4 x i64> %{{.*}}, %{{.*}}
238 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
239 return (__mmask8)_mm256_mask_cmple_epi64_mask(__u, __a, __b);
242 __mmask8 test_mm_cmple_epu32_mask(__m128i __a, __m128i __b) {
243 // CHECK-LABEL: @test_mm_cmple_epu32_mask
244 // CHECK: icmp ule <4 x i32> %{{.*}}, %{{.*}}
245 return (__mmask8)_mm_cmple_epu32_mask(__a, __b);
248 __mmask8 test_mm_mask_cmple_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
249 // CHECK-LABEL: @test_mm_mask_cmple_epu32_mask
250 // CHECK: icmp ule <4 x i32> %{{.*}}, %{{.*}}
251 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
252 return (__mmask8)_mm_mask_cmple_epu32_mask(__u, __a, __b);
255 __mmask8 test_mm_cmple_epu64_mask(__m128i __a, __m128i __b) {
256 // CHECK-LABEL: @test_mm_cmple_epu64_mask
257 // CHECK: icmp ule <2 x i64> %{{.*}}, %{{.*}}
258 return (__mmask8)_mm_cmple_epu64_mask(__a, __b);
261 __mmask8 test_mm_mask_cmple_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
262 // CHECK-LABEL: @test_mm_mask_cmple_epu64_mask
263 // CHECK: icmp ule <2 x i64> %{{.*}}, %{{.*}}
264 // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
265 return (__mmask8)_mm_mask_cmple_epu64_mask(__u, __a, __b);
268 __mmask8 test_mm256_cmple_epu32_mask(__m256i __a, __m256i __b) {
269 // CHECK-LABEL: @test_mm256_cmple_epu32_mask
270 // CHECK: icmp ule <8 x i32> %{{.*}}, %{{.*}}
271 return (__mmask8)_mm256_cmple_epu32_mask(__a, __b);
274 __mmask8 test_mm256_mask_cmple_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
275 // CHECK-LABEL: @test_mm256_mask_cmple_epu32_mask
276 // CHECK: icmp ule <8 x i32> %{{.*}}, %{{.*}}
277 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
278 return (__mmask8)_mm256_mask_cmple_epu32_mask(__u, __a, __b);
281 __mmask8 test_mm256_cmple_epu64_mask(__m256i __a, __m256i __b) {
282 // CHECK-LABEL: @test_mm256_cmple_epu64_mask
283 // CHECK: icmp ule <4 x i64> %{{.*}}, %{{.*}}
284 return (__mmask8)_mm256_cmple_epu64_mask(__a, __b);
287 __mmask8 test_mm256_mask_cmple_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
288 // CHECK-LABEL: @test_mm256_mask_cmple_epu64_mask
289 // CHECK: icmp ule <4 x i64> %{{.*}}, %{{.*}}
290 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
291 return (__mmask8)_mm256_mask_cmple_epu64_mask(__u, __a, __b);
294 __mmask8 test_mm_cmplt_epi32_mask(__m128i __a, __m128i __b) {
295 // CHECK-LABEL: @test_mm_cmplt_epi32_mask
296 // CHECK: icmp slt <4 x i32> %{{.*}}, %{{.*}}
297 return (__mmask8)_mm_cmplt_epi32_mask(__a, __b);
300 __mmask8 test_mm_mask_cmplt_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
301 // CHECK-LABEL: @test_mm_mask_cmplt_epi32_mask
302 // CHECK: icmp slt <4 x i32> %{{.*}}, %{{.*}}
303 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
304 return (__mmask8)_mm_mask_cmplt_epi32_mask(__u, __a, __b);
307 __mmask8 test_mm_cmplt_epi64_mask(__m128i __a, __m128i __b) {
308 // CHECK-LABEL: @test_mm_cmplt_epi64_mask
309 // CHECK: icmp slt <2 x i64> %{{.*}}, %{{.*}}
310 return (__mmask8)_mm_cmplt_epi64_mask(__a, __b);
313 __mmask8 test_mm_mask_cmplt_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
314 // CHECK-LABEL: @test_mm_mask_cmplt_epi64_mask
315 // CHECK: icmp slt <2 x i64> %{{.*}}, %{{.*}}
316 // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
317 return (__mmask8)_mm_mask_cmplt_epi64_mask(__u, __a, __b);
320 __mmask8 test_mm256_cmplt_epi32_mask(__m256i __a, __m256i __b) {
321 // CHECK-LABEL: @test_mm256_cmplt_epi32_mask
322 // CHECK: icmp slt <8 x i32> %{{.*}}, %{{.*}}
323 return (__mmask8)_mm256_cmplt_epi32_mask(__a, __b);
326 __mmask8 test_mm256_mask_cmplt_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
327 // CHECK-LABEL: @test_mm256_mask_cmplt_epi32_mask
328 // CHECK: icmp slt <8 x i32> %{{.*}}, %{{.*}}
329 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
330 return (__mmask8)_mm256_mask_cmplt_epi32_mask(__u, __a, __b);
333 __mmask8 test_mm256_cmplt_epi64_mask(__m256i __a, __m256i __b) {
334 // CHECK-LABEL: @test_mm256_cmplt_epi64_mask
335 // CHECK: icmp slt <4 x i64> %{{.*}}, %{{.*}}
336 return (__mmask8)_mm256_cmplt_epi64_mask(__a, __b);
339 __mmask8 test_mm256_mask_cmplt_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
340 // CHECK-LABEL: @test_mm256_mask_cmplt_epi64_mask
341 // CHECK: icmp slt <4 x i64> %{{.*}}, %{{.*}}
342 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
343 return (__mmask8)_mm256_mask_cmplt_epi64_mask(__u, __a, __b);
346 __mmask8 test_mm_cmplt_epu32_mask(__m128i __a, __m128i __b) {
347 // CHECK-LABEL: @test_mm_cmplt_epu32_mask
348 // CHECK: icmp ult <4 x i32> %{{.*}}, %{{.*}}
349 return (__mmask8)_mm_cmplt_epu32_mask(__a, __b);
352 __mmask8 test_mm_mask_cmplt_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
353 // CHECK-LABEL: @test_mm_mask_cmplt_epu32_mask
354 // CHECK: icmp ult <4 x i32> %{{.*}}, %{{.*}}
355 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
356 return (__mmask8)_mm_mask_cmplt_epu32_mask(__u, __a, __b);
359 __mmask8 test_mm_cmplt_epu64_mask(__m128i __a, __m128i __b) {
360 // CHECK-LABEL: @test_mm_cmplt_epu64_mask
361 // CHECK: icmp ult <2 x i64> %{{.*}}, %{{.*}}
362 return (__mmask8)_mm_cmplt_epu64_mask(__a, __b);
365 __mmask8 test_mm_mask_cmplt_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
366 // CHECK-LABEL: @test_mm_mask_cmplt_epu64_mask
367 // CHECK: icmp ult <2 x i64> %{{.*}}, %{{.*}}
368 // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
369 return (__mmask8)_mm_mask_cmplt_epu64_mask(__u, __a, __b);
372 __mmask8 test_mm256_cmplt_epu32_mask(__m256i __a, __m256i __b) {
373 // CHECK-LABEL: @test_mm256_cmplt_epu32_mask
374 // CHECK: icmp ult <8 x i32> %{{.*}}, %{{.*}}
375 return (__mmask8)_mm256_cmplt_epu32_mask(__a, __b);
378 __mmask8 test_mm256_mask_cmplt_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
379 // CHECK-LABEL: @test_mm256_mask_cmplt_epu32_mask
380 // CHECK: icmp ult <8 x i32> %{{.*}}, %{{.*}}
381 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
382 return (__mmask8)_mm256_mask_cmplt_epu32_mask(__u, __a, __b);
385 __mmask8 test_mm256_cmplt_epu64_mask(__m256i __a, __m256i __b) {
386 // CHECK-LABEL: @test_mm256_cmplt_epu64_mask
387 // CHECK: icmp ult <4 x i64> %{{.*}}, %{{.*}}
388 return (__mmask8)_mm256_cmplt_epu64_mask(__a, __b);
391 __mmask8 test_mm256_mask_cmplt_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
392 // CHECK-LABEL: @test_mm256_mask_cmplt_epu64_mask
393 // CHECK: icmp ult <4 x i64> %{{.*}}, %{{.*}}
394 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
395 return (__mmask8)_mm256_mask_cmplt_epu64_mask(__u, __a, __b);
398 __mmask8 test_mm_cmpneq_epi32_mask(__m128i __a, __m128i __b) {
399 // CHECK-LABEL: @test_mm_cmpneq_epi32_mask
400 // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}}
401 return (__mmask8)_mm_cmpneq_epi32_mask(__a, __b);
404 __mmask8 test_mm_mask_cmpneq_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
405 // CHECK-LABEL: @test_mm_mask_cmpneq_epi32_mask
406 // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}}
407 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
408 return (__mmask8)_mm_mask_cmpneq_epi32_mask(__u, __a, __b);
411 __mmask8 test_mm_cmpneq_epi64_mask(__m128i __a, __m128i __b) {
412 // CHECK-LABEL: @test_mm_cmpneq_epi64_mask
413 // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}}
414 return (__mmask8)_mm_cmpneq_epi64_mask(__a, __b);
417 __mmask8 test_mm_mask_cmpneq_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
418 // CHECK-LABEL: @test_mm_mask_cmpneq_epi64_mask
419 // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}}
420 // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
421 return (__mmask8)_mm_mask_cmpneq_epi64_mask(__u, __a, __b);
424 __mmask8 test_mm256_cmpneq_epi32_mask(__m256i __a, __m256i __b) {
425 // CHECK-LABEL: @test_mm256_cmpneq_epi32_mask
426 // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}}
427 return (__mmask8)_mm256_cmpneq_epi32_mask(__a, __b);
430 __mmask8 test_mm256_mask_cmpneq_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
431 // CHECK-LABEL: @test_mm256_mask_cmpneq_epi32_mask
432 // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}}
433 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
434 return (__mmask8)_mm256_mask_cmpneq_epi32_mask(__u, __a, __b);
437 __mmask8 test_mm256_cmpneq_epi64_mask(__m256i __a, __m256i __b) {
438 // CHECK-LABEL: @test_mm256_cmpneq_epi64_mask
439 // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}}
440 return (__mmask8)_mm256_cmpneq_epi64_mask(__a, __b);
443 __mmask8 test_mm256_mask_cmpneq_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
444 // CHECK-LABEL: @test_mm256_mask_cmpneq_epi64_mask
445 // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}}
446 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
447 return (__mmask8)_mm256_mask_cmpneq_epi64_mask(__u, __a, __b);
450 __mmask8 test_mm_cmpneq_epu32_mask(__m128i __a, __m128i __b) {
451 // CHECK-LABEL: @test_mm_cmpneq_epu32_mask
452 // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}}
453 return (__mmask8)_mm_cmpneq_epu32_mask(__a, __b);
456 __mmask8 test_mm_mask_cmpneq_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
457 // CHECK-LABEL: @test_mm_mask_cmpneq_epu32_mask
458 // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}}
459 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
460 return (__mmask8)_mm_mask_cmpneq_epu32_mask(__u, __a, __b);
463 __mmask8 test_mm_cmpneq_epu64_mask(__m128i __a, __m128i __b) {
464 // CHECK-LABEL: @test_mm_cmpneq_epu64_mask
465 // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}}
466 return (__mmask8)_mm_cmpneq_epu64_mask(__a, __b);
469 __mmask8 test_mm_mask_cmpneq_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
470 // CHECK-LABEL: @test_mm_mask_cmpneq_epu64_mask
471 // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}}
472 // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
473 return (__mmask8)_mm_mask_cmpneq_epu64_mask(__u, __a, __b);
476 __mmask8 test_mm256_cmpneq_epu32_mask(__m256i __a, __m256i __b) {
477 // CHECK-LABEL: @test_mm256_cmpneq_epu32_mask
478 // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}}
479 return (__mmask8)_mm256_cmpneq_epu32_mask(__a, __b);
482 __mmask8 test_mm256_mask_cmpneq_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
483 // CHECK-LABEL: @test_mm256_mask_cmpneq_epu32_mask
484 // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}}
485 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
486 return (__mmask8)_mm256_mask_cmpneq_epu32_mask(__u, __a, __b);
489 __mmask8 test_mm256_cmpneq_epu64_mask(__m256i __a, __m256i __b) {
490 // CHECK-LABEL: @test_mm256_cmpneq_epu64_mask
491 // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}}
492 return (__mmask8)_mm256_cmpneq_epu64_mask(__a, __b);
495 __mmask8 test_mm256_mask_cmpneq_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
496 // CHECK-LABEL: @test_mm256_mask_cmpneq_epu64_mask
497 // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}}
498 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
499 return (__mmask8)_mm256_mask_cmpneq_epu64_mask(__u, __a, __b);
502 __mmask8 test_mm_cmp_eq_epi32_mask(__m128i __a, __m128i __b) {
503 // CHECK-LABEL: @test_mm_cmp_eq_epi32_mask
504 // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
505 return (__mmask8)_mm_cmp_epi32_mask(__a, __b, _MM_CMPINT_EQ);
508 __mmask8 test_mm_mask_cmp_lt_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
509 // CHECK-LABEL: @test_mm_mask_cmp_lt_epi32_mask
510 // CHECK: icmp slt <4 x i32> %{{.*}}, %{{.*}}
511 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
512 return (__mmask8)_mm_mask_cmp_epi32_mask(__u, __a, __b, _MM_CMPINT_LT);
515 __mmask8 test_mm_cmp_lt_epi64_mask(__m128i __a, __m128i __b) {
516 // CHECK-LABEL: @test_mm_cmp_lt_epi64_mask
517 // CHECK: icmp slt <2 x i64> %{{.*}}, %{{.*}}
518 return (__mmask8)_mm_cmp_epi64_mask(__a, __b, _MM_CMPINT_LT);
521 __mmask8 test_mm_mask_cmp_eq_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
522 // CHECK-LABEL: @test_mm_mask_cmp_eq_epi64_mask
523 // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
524 // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
525 return (__mmask8)_mm_mask_cmp_epi64_mask(__u, __a, __b, _MM_CMPINT_EQ);
528 __mmask8 test_mm256_cmp_eq_epi32_mask(__m256i __a, __m256i __b) {
529 // CHECK-LABEL: @test_mm256_cmp_eq_epi32_mask
530 // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}}
531 return (__mmask8)_mm256_cmp_epi32_mask(__a, __b, _MM_CMPINT_EQ);
534 __mmask8 test_mm256_mask_cmp_le_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
535 // CHECK-LABEL: @test_mm256_mask_cmp_le_epi32_mask
536 // CHECK: icmp sle <8 x i32> %{{.*}}, %{{.*}}
537 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
538 return (__mmask8)_mm256_mask_cmp_epi32_mask(__u, __a, __b, _MM_CMPINT_LE);
541 __mmask8 test_mm256_cmp_eq_epi64_mask(__m256i __a, __m256i __b) {
542 // CHECK-LABEL: @test_mm256_cmp_eq_epi64_mask
543 // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}}
544 return (__mmask8)_mm256_cmp_epi64_mask(__a, __b, _MM_CMPINT_EQ);
547 __mmask8 test_mm256_mask_cmp_eq_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
548 // CHECK-LABEL: @test_mm256_mask_cmp_eq_epi64_mask
549 // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}}
550 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
551 return (__mmask8)_mm256_mask_cmp_epi64_mask(__u, __a, __b, _MM_CMPINT_EQ);
554 __mmask8 test_mm_cmp_epu32_mask(__m128i __a, __m128i __b) {
555 // CHECK-LABEL: @test_mm_cmp_epu32_mask
556 // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
557 return (__mmask8)_mm_cmp_epu32_mask(__a, __b, 0);
560 __mmask8 test_mm_mask_cmp_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
561 // CHECK-LABEL: @test_mm_mask_cmp_epu32_mask
562 // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
563 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
564 return (__mmask8)_mm_mask_cmp_epu32_mask(__u, __a, __b, 0);
567 __mmask8 test_mm_cmp_epu64_mask(__m128i __a, __m128i __b) {
568 // CHECK-LABEL: @test_mm_cmp_epu64_mask
569 // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
570 return (__mmask8)_mm_cmp_epu64_mask(__a, __b, 0);
573 __mmask8 test_mm_mask_cmp_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
574 // CHECK-LABEL: @test_mm_mask_cmp_epu64_mask
575 // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
576 // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
577 return (__mmask8)_mm_mask_cmp_epu64_mask(__u, __a, __b, 0);
580 __mmask8 test_mm256_cmp_epu32_mask(__m256i __a, __m256i __b) {
581 // CHECK-LABEL: @test_mm256_cmp_epu32_mask
582 // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}}
583 return (__mmask8)_mm256_cmp_epu32_mask(__a, __b, 0);
586 __mmask8 test_mm256_mask_cmp_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
587 // CHECK-LABEL: @test_mm256_mask_cmp_epu32_mask
588 // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}}
589 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
590 return (__mmask8)_mm256_mask_cmp_epu32_mask(__u, __a, __b, 0);
593 __mmask8 test_mm256_cmp_epu64_mask(__m256i __a, __m256i __b) {
594 // CHECK-LABEL: @test_mm256_cmp_epu64_mask
595 // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}}
596 return (__mmask8)_mm256_cmp_epu64_mask(__a, __b, 0);
599 __mmask8 test_mm256_mask_cmp_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
600 // CHECK-LABEL: @test_mm256_mask_cmp_epu64_mask
601 // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}}
602 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
603 return (__mmask8)_mm256_mask_cmp_epu64_mask(__u, __a, __b, 0);
606 __m256i test_mm256_mask_add_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
608 //CHECK-LABEL: @test_mm256_mask_add_epi32
609 //CHECK: add <8 x i32> %{{.*}}, %{{.*}}
610 //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
611 return _mm256_mask_add_epi32(__W, __U, __A, __B);
614 __m256i test_mm256_maskz_add_epi32 (__mmask8 __U, __m256i __A, __m256i __B) {
615 //CHECK-LABEL: @test_mm256_maskz_add_epi32
616 //CHECK: add <8 x i32> %{{.*}}, %{{.*}}
617 //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
618 return _mm256_maskz_add_epi32(__U, __A, __B);
621 __m256i test_mm256_mask_add_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
623 //CHECK-LABEL: @test_mm256_mask_add_epi64
624 //CHECK: add <4 x i64> %{{.*}}, %{{.*}}
625 //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
626 return _mm256_mask_add_epi64(__W,__U,__A,__B);
629 __m256i test_mm256_maskz_add_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {
630 //CHECK-LABEL: @test_mm256_maskz_add_epi64
631 //CHECK: add <4 x i64> %{{.*}}, %{{.*}}
632 //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
633 return _mm256_maskz_add_epi64 (__U,__A,__B);
636 __m256i test_mm256_mask_sub_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
638 //CHECK-LABEL: @test_mm256_mask_sub_epi32
639 //CHECK: sub <8 x i32> %{{.*}}, %{{.*}}
640 //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
641 return _mm256_mask_sub_epi32 (__W,__U,__A,__B);
644 __m256i test_mm256_maskz_sub_epi32 (__mmask8 __U, __m256i __A, __m256i __B) {
645 //CHECK-LABEL: @test_mm256_maskz_sub_epi32
646 //CHECK: sub <8 x i32> %{{.*}}, %{{.*}}
647 //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
648 return _mm256_maskz_sub_epi32 (__U,__A,__B);
651 __m256i test_mm256_mask_sub_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
653 //CHECK-LABEL: @test_mm256_mask_sub_epi64
654 //CHECK: sub <4 x i64> %{{.*}}, %{{.*}}
655 //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
656 return _mm256_mask_sub_epi64 (__W,__U,__A,__B);
659 __m256i test_mm256_maskz_sub_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {
660 //CHECK-LABEL: @test_mm256_maskz_sub_epi64
661 //CHECK: sub <4 x i64> %{{.*}}, %{{.*}}
662 //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
663 return _mm256_maskz_sub_epi64 (__U,__A,__B);
666 __m128i test_mm_mask_add_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
668 //CHECK-LABEL: @test_mm_mask_add_epi32
669 //CHECK: add <4 x i32> %{{.*}}, %{{.*}}
670 //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
671 return _mm_mask_add_epi32(__W,__U,__A,__B);
675 __m128i test_mm_maskz_add_epi32 (__mmask8 __U, __m128i __A, __m128i __B) {
676 //CHECK-LABEL: @test_mm_maskz_add_epi32
677 //CHECK: add <4 x i32> %{{.*}}, %{{.*}}
678 //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
679 return _mm_maskz_add_epi32 (__U,__A,__B);
682 __m128i test_mm_mask_add_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
684 //CHECK-LABEL: @test_mm_mask_add_epi64
685 //CHECK: add <2 x i64> %{{.*}}, %{{.*}}
686 //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
687 return _mm_mask_add_epi64 (__W,__U,__A,__B);
690 __m128i test_mm_maskz_add_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {
691 //CHECK-LABEL: @test_mm_maskz_add_epi64
692 //CHECK: add <2 x i64> %{{.*}}, %{{.*}}
693 //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
694 return _mm_maskz_add_epi64 (__U,__A,__B);
697 __m128i test_mm_mask_sub_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
699 //CHECK-LABEL: @test_mm_mask_sub_epi32
700 //CHECK: sub <4 x i32> %{{.*}}, %{{.*}}
701 //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
702 return _mm_mask_sub_epi32(__W, __U, __A, __B);
705 __m128i test_mm_maskz_sub_epi32 (__mmask8 __U, __m128i __A, __m128i __B) {
706 //CHECK-LABEL: @test_mm_maskz_sub_epi32
707 //CHECK: sub <4 x i32> %{{.*}}, %{{.*}}
708 //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
709 return _mm_maskz_sub_epi32(__U, __A, __B);
712 __m128i test_mm_mask_sub_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
714 //CHECK-LABEL: @test_mm_mask_sub_epi64
715 //CHECK: sub <2 x i64> %{{.*}}, %{{.*}}
716 //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
717 return _mm_mask_sub_epi64 (__W, __U, __A, __B);
720 __m128i test_mm_maskz_sub_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {
721 //CHECK-LABEL: @test_mm_maskz_sub_epi64
722 //CHECK: sub <2 x i64> %{{.*}}, %{{.*}}
723 //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
724 return _mm_maskz_sub_epi64 (__U, __A, __B);
727 __m256i test_mm256_mask_mul_epi32 (__m256i __W, __mmask8 __M, __m256i __X,
729 //CHECK-LABEL: @test_mm256_mask_mul_epi32
730 //CHECK: shl <4 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32>
731 //CHECK: ashr <4 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32>
732 //CHECK: shl <4 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32>
733 //CHECK: ashr <4 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32>
734 //CHECK: mul <4 x i64> %{{.*}}, %{{.*}}
735 //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
736 return _mm256_mask_mul_epi32(__W, __M, __X, __Y);
739 __m256i test_mm256_maskz_mul_epi32 (__mmask8 __M, __m256i __X, __m256i __Y) {
740 //CHECK-LABEL: @test_mm256_maskz_mul_epi32
741 //CHECK: shl <4 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32>
742 //CHECK: ashr <4 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32>
743 //CHECK: shl <4 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32>
744 //CHECK: ashr <4 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32>
745 //CHECK: mul <4 x i64> %{{.*}}, %{{.*}}
746 //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
747 return _mm256_maskz_mul_epi32(__M, __X, __Y);
751 __m128i test_mm_mask_mul_epi32 (__m128i __W, __mmask8 __M, __m128i __X,
753 //CHECK-LABEL: @test_mm_mask_mul_epi32
754 //CHECK: shl <2 x i64> %{{.*}}, <i64 32, i64 32>
755 //CHECK: ashr <2 x i64> %{{.*}}, <i64 32, i64 32>
756 //CHECK: shl <2 x i64> %{{.*}}, <i64 32, i64 32>
757 //CHECK: ashr <2 x i64> %{{.*}}, <i64 32, i64 32>
758 //CHECK: mul <2 x i64> %{{.*}}, %{{.*}}
759 //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
760 return _mm_mask_mul_epi32(__W, __M, __X, __Y);
763 __m128i test_mm_maskz_mul_epi32 (__mmask8 __M, __m128i __X, __m128i __Y) {
764 //CHECK-LABEL: @test_mm_maskz_mul_epi32
765 //CHECK: shl <2 x i64> %{{.*}}, <i64 32, i64 32>
766 //CHECK: ashr <2 x i64> %{{.*}}, <i64 32, i64 32>
767 //CHECK: shl <2 x i64> %{{.*}}, <i64 32, i64 32>
768 //CHECK: ashr <2 x i64> %{{.*}}, <i64 32, i64 32>
769 //CHECK: mul <2 x i64> %{{.*}}, %{{.*}}
770 //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
771 return _mm_maskz_mul_epi32(__M, __X, __Y);
774 __m256i test_mm256_mask_mul_epu32 (__m256i __W, __mmask8 __M, __m256i __X,
776 //CHECK-LABEL: @test_mm256_mask_mul_epu32
777 //CHECK: and <4 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
778 //CHECK: and <4 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
779 //CHECK: mul <4 x i64> %{{.*}}, %{{.*}}
780 //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
781 return _mm256_mask_mul_epu32(__W, __M, __X, __Y);
784 __m256i test_mm256_maskz_mul_epu32 (__mmask8 __M, __m256i __X, __m256i __Y) {
785 //CHECK-LABEL: @test_mm256_maskz_mul_epu32
786 //CHECK: and <4 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
787 //CHECK: and <4 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
788 //CHECK: mul <4 x i64> %{{.*}}, %{{.*}}
789 //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
790 return _mm256_maskz_mul_epu32(__M, __X, __Y);
793 __m128i test_mm_mask_mul_epu32 (__m128i __W, __mmask8 __M, __m128i __X,
795 //CHECK-LABEL: @test_mm_mask_mul_epu32
796 //CHECK: and <2 x i64> %{{.*}}, <i64 4294967295, i64 4294967295>
797 //CHECK: and <2 x i64> %{{.*}}, <i64 4294967295, i64 4294967295>
798 //CHECK: mul <2 x i64> %{{.*}}, %{{.*}}
799 //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
800 return _mm_mask_mul_epu32(__W, __M, __X, __Y);
803 __m128i test_mm_maskz_mul_epu32 (__mmask8 __M, __m128i __X, __m128i __Y) {
804 //CHECK-LABEL: @test_mm_maskz_mul_epu32
805 //CHECK: and <2 x i64> %{{.*}}, <i64 4294967295, i64 4294967295>
806 //CHECK: and <2 x i64> %{{.*}}, <i64 4294967295, i64 4294967295>
807 //CHECK: mul <2 x i64> %{{.*}}, %{{.*}}
808 //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
809 return _mm_maskz_mul_epu32(__M, __X, __Y);
812 __m128i test_mm_maskz_mullo_epi32 (__mmask8 __M, __m128i __A, __m128i __B) {
813 //CHECK-LABEL: @test_mm_maskz_mullo_epi32
814 //CHECK: mul <4 x i32> %{{.*}}, %{{.*}}
815 //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
816 return _mm_maskz_mullo_epi32(__M, __A, __B);
819 __m128i test_mm_mask_mullo_epi32 (__m128i __W, __mmask8 __M, __m128i __A,
821 //CHECK-LABEL: @test_mm_mask_mullo_epi32
822 //CHECK: mul <4 x i32> %{{.*}}, %{{.*}}
823 //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
824 return _mm_mask_mullo_epi32(__W, __M, __A, __B);
827 __m256i test_mm256_maskz_mullo_epi32 (__mmask8 __M, __m256i __A, __m256i __B) {
828 //CHECK-LABEL: @test_mm256_maskz_mullo_epi32
829 //CHECK: mul <8 x i32> %{{.*}}, %{{.*}}
830 //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
831 return _mm256_maskz_mullo_epi32(__M, __A, __B);
834 __m256i test_mm256_mask_mullo_epi32 (__m256i __W, __mmask8 __M, __m256i __A,
836 //CHECK-LABEL: @test_mm256_mask_mullo_epi32
837 //CHECK: mul <8 x i32> %{{.*}}, %{{.*}}
838 //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
839 return _mm256_mask_mullo_epi32(__W, __M, __A, __B);
842 __m256i test_mm256_mask_and_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
844 //CHECK-LABEL: @test_mm256_mask_and_epi32
845 //CHECK: and <4 x i64> %{{.*}}, %{{.*}}
846 return _mm256_mask_and_epi32(__W, __U, __A, __B);
849 __m256i test_mm256_maskz_and_epi32 (__mmask8 __U, __m256i __A, __m256i __B) {
850 //CHECK-LABEL: @test_mm256_maskz_and_epi32
851 //CHECK: and <4 x i64> %{{.*}}, %{{.*}}
852 //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
853 return _mm256_maskz_and_epi32(__U, __A, __B);
856 __m128i test_mm_mask_and_epi32 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
857 //CHECK-LABEL: @test_mm_mask_and_epi32
858 //CHECK: and <2 x i64> %{{.*}}, %{{.*}}
859 return _mm_mask_and_epi32(__W, __U, __A, __B);
862 __m128i test_mm_maskz_and_epi32 (__mmask8 __U, __m128i __A, __m128i __B) {
863 //CHECK-LABEL: @test_mm_maskz_and_epi32
864 //CHECK: and <2 x i64> %{{.*}}, %{{.*}}
865 //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
866 return _mm_maskz_and_epi32(__U, __A, __B);
869 __m256i test_mm256_mask_andnot_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
871 //CHECK-LABEL: @test_mm256_mask_andnot_epi32
872 //CHECK: xor <4 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1>
873 //CHECK: and <4 x i64> %{{.*}}, %{{.*}}
874 //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
875 return _mm256_mask_andnot_epi32(__W, __U, __A, __B);
878 __m256i test_mm256_maskz_andnot_epi32 (__mmask8 __U, __m256i __A, __m256i __B) {
879 //CHECK-LABEL: @test_mm256_maskz_andnot_epi32
880 //CHECK: xor <4 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1>
881 //CHECK: and <4 x i64> %{{.*}}, %{{.*}}
882 //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
883 return _mm256_maskz_andnot_epi32(__U, __A, __B);
886 __m128i test_mm_mask_andnot_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
888 //CHECK-LABEL: @test_mm_mask_andnot_epi32
889 //CHECK: xor <2 x i64> %{{.*}}, <i64 -1, i64 -1>
890 //CHECK: and <2 x i64> %{{.*}}, %{{.*}}
891 //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
892 return _mm_mask_andnot_epi32(__W, __U, __A, __B);
895 __m128i test_mm_maskz_andnot_epi32 (__mmask8 __U, __m128i __A, __m128i __B) {
896 //CHECK-LABEL: @test_mm_maskz_andnot_epi32
897 //CHECK: xor <2 x i64> %{{.*}}, <i64 -1, i64 -1>
898 //CHECK: and <2 x i64> %{{.*}}, %{{.*}}
899 //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
900 return _mm_maskz_andnot_epi32(__U, __A, __B);
903 __m256i test_mm256_mask_or_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
905 //CHECK-LABEL: @test_mm256_mask_or_epi32
906 //CHECK: or <4 x i64> %{{.*}}, %{{.*}}
907 return _mm256_mask_or_epi32(__W, __U, __A, __B);
910 __m256i test_mm256_maskz_or_epi32 (__mmask8 __U, __m256i __A, __m256i __B) {
911 //CHECK-LABEL: @test_mm256_maskz_or_epi32
912 //CHECK: or <4 x i64> %{{.*}}, %{{.*}}
913 //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
914 return _mm256_maskz_or_epi32(__U, __A, __B);
917 __m128i test_mm_mask_or_epi32 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
918 //CHECK-LABEL: @test_mm_mask_or_epi32
919 //CHECK: or <2 x i64> %{{.*}}, %{{.*}}
920 return _mm_mask_or_epi32(__W, __U, __A, __B);
923 __m128i test_mm_maskz_or_epi32 (__mmask8 __U, __m128i __A, __m128i __B) {
924 //CHECK-LABEL: @test_mm_maskz_or_epi32
925 //CHECK: or <2 x i64> %{{.*}}, %{{.*}}
926 //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
927 return _mm_maskz_or_epi32(__U, __A, __B);
930 __m256i test_mm256_mask_xor_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
932 //CHECK-LABEL: @test_mm256_mask_xor_epi32
933 //CHECK: xor <4 x i64> %{{.*}}, %{{.*}}
934 return _mm256_mask_xor_epi32(__W, __U, __A, __B);
937 __m256i test_mm256_maskz_xor_epi32 (__mmask8 __U, __m256i __A, __m256i __B) {
938 //CHECK-LABEL: @test_mm256_maskz_xor_epi32
939 //CHECK: xor <4 x i64> %{{.*}}, %{{.*}}
940 //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
941 return _mm256_maskz_xor_epi32(__U, __A, __B);
944 __m128i test_mm_mask_xor_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
946 //CHECK-LABEL: @test_mm_mask_xor_epi32
947 //CHECK: xor <2 x i64> %{{.*}}, %{{.*}}
948 return _mm_mask_xor_epi32(__W, __U, __A, __B);
951 __m128i test_mm_maskz_xor_epi32 (__mmask8 __U, __m128i __A, __m128i __B) {
952 //CHECK-LABEL: @test_mm_maskz_xor_epi32
953 //CHECK: xor <2 x i64> %{{.*}}, %{{.*}}
954 //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
955 return _mm_maskz_xor_epi32(__U, __A, __B);
958 __m256i test_mm256_mask_and_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
960 //CHECK-LABEL: @test_mm256_mask_and_epi64
961 //CHECK: and <4 x i64> %{{.*}}, %{{.*}}
962 return _mm256_mask_and_epi64(__W, __U, __A, __B);
965 __m256i test_mm256_maskz_and_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {
966 //CHECK-LABEL: @test_mm256_maskz_and_epi64
967 //CHECK: and <4 x i64> %{{.*}}, %{{.*}}
968 //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
969 return _mm256_maskz_and_epi64(__U, __A, __B);
972 __m128i test_mm_mask_and_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
974 //CHECK-LABEL: @test_mm_mask_and_epi64
975 //CHECK: and <2 x i64> %{{.*}}, %{{.*}}
976 return _mm_mask_and_epi64(__W,__U, __A, __B);
979 __m128i test_mm_maskz_and_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {
980 //CHECK-LABEL: @test_mm_maskz_and_epi64
981 //CHECK: and <2 x i64> %{{.*}}, %{{.*}}
982 //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
983 return _mm_maskz_and_epi64(__U, __A, __B);
986 __m256i test_mm256_mask_andnot_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
988 //CHECK-LABEL: @test_mm256_mask_andnot_epi64
989 //CHECK: xor <4 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1>
990 //CHECK: and <4 x i64> %{{.*}}, %{{.*}}
991 //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
992 return _mm256_mask_andnot_epi64(__W, __U, __A, __B);
995 __m256i test_mm256_maskz_andnot_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {
996 //CHECK-LABEL: @test_mm256_maskz_andnot_epi64
997 //CHECK: xor <4 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1>
998 //CHECK: and <4 x i64> %{{.*}}, %{{.*}}
999 //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
1000 return _mm256_maskz_andnot_epi64(__U, __A, __B);
1003 __m128i test_mm_mask_andnot_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
1005 //CHECK-LABEL: @test_mm_mask_andnot_epi64
1006 //CHECK: xor <2 x i64> %{{.*}}, <i64 -1, i64 -1>
1007 //CHECK: and <2 x i64> %{{.*}}, %{{.*}}
1008 //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
1009 return _mm_mask_andnot_epi64(__W,__U, __A, __B);
1012 __m128i test_mm_maskz_andnot_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {
1013 //CHECK-LABEL: @test_mm_maskz_andnot_epi64
1014 //CHECK: xor <2 x i64> %{{.*}}, <i64 -1, i64 -1>
1015 //CHECK: and <2 x i64> %{{.*}}, %{{.*}}
1016 //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
1017 return _mm_maskz_andnot_epi64(__U, __A, __B);
1020 __m256i test_mm256_mask_or_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
1022 //CHECK-LABEL: @test_mm256_mask_or_epi64
1023 //CHECK: or <4 x i64> %{{.*}}, %{{.*}}
1024 return _mm256_mask_or_epi64(__W,__U, __A, __B);
1027 __m256i test_mm256_maskz_or_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {
1028 //CHECK-LABEL: @test_mm256_maskz_or_epi64
1029 //CHECK: or <4 x i64> %{{.*}}, %{{.*}}
1030 //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
1031 return _mm256_maskz_or_epi64(__U, __A, __B);
1034 __m128i test_mm_mask_or_epi64 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1035 //CHECK-LABEL: @test_mm_mask_or_epi64
1036 //CHECK: or <2 x i64> %{{.*}}, %{{.*}}
1037 return _mm_mask_or_epi64(__W, __U, __A, __B);
1040 __m128i test_mm_maskz_or_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {
1041 //CHECK-LABEL: @test_mm_maskz_or_epi64
1042 //CHECK: or <2 x i64> %{{.*}}, %{{.*}}
1043 //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
1044 return _mm_maskz_or_epi64( __U, __A, __B);
1047 __m256i test_mm256_mask_xor_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
1049 //CHECK-LABEL: @test_mm256_mask_xor_epi64
1050 //CHECK: xor <4 x i64> %{{.*}}, %{{.*}}
1051 return _mm256_mask_xor_epi64(__W,__U, __A, __B);
1054 __m256i test_mm256_maskz_xor_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {
1055 //CHECK-LABEL: @test_mm256_maskz_xor_epi64
1056 //CHECK: xor <4 x i64> %{{.*}}, %{{.*}}
1057 //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
1058 return _mm256_maskz_xor_epi64(__U, __A, __B);
1061 __m128i test_mm_mask_xor_epi64 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1062 //CHECK-LABEL: @test_mm_mask_xor_epi64
1063 //CHECK: xor <2 x i64> %{{.*}}, %{{.*}}
1064 return _mm_mask_xor_epi64(__W, __U, __A, __B);
1067 __m128i test_mm_maskz_xor_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {
1068 //CHECK-LABEL: @test_mm_maskz_xor_epi64
1069 //CHECK: xor <2 x i64> %{{.*}}, %{{.*}}
1070 //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
1071 return _mm_maskz_xor_epi64( __U, __A, __B);
1074 __mmask8 test_mm256_cmp_ps_mask_eq_oq(__m256 a, __m256 b) {
1075 // CHECK-LABEL: @test_mm256_cmp_ps_mask_eq_oq
1076 // CHECK: fcmp oeq <8 x float> %{{.*}}, %{{.*}}
1077 return _mm256_cmp_ps_mask(a, b, _CMP_EQ_OQ);
1080 __mmask8 test_mm256_cmp_ps_mask_lt_os(__m256 a, __m256 b) {
1081 // CHECK-LABEL: test_mm256_cmp_ps_mask_lt_os
1082 // CHECK: fcmp olt <8 x float> %{{.*}}, %{{.*}}
1083 return _mm256_cmp_ps_mask(a, b, _CMP_LT_OS);
1086 __mmask8 test_mm256_cmp_ps_mask_le_os(__m256 a, __m256 b) {
1087 // CHECK-LABEL: test_mm256_cmp_ps_mask_le_os
1088 // CHECK: fcmp ole <8 x float> %{{.*}}, %{{.*}}
1089 return _mm256_cmp_ps_mask(a, b, _CMP_LE_OS);
1092 __mmask8 test_mm256_cmp_ps_mask_unord_q(__m256 a, __m256 b) {
1093 // CHECK-LABEL: test_mm256_cmp_ps_mask_unord_q
1094 // CHECK: fcmp uno <8 x float> %{{.*}}, %{{.*}}
1095 return _mm256_cmp_ps_mask(a, b, _CMP_UNORD_Q);
1098 __mmask8 test_mm256_cmp_ps_mask_neq_uq(__m256 a, __m256 b) {
1099 // CHECK-LABEL: test_mm256_cmp_ps_mask_neq_uq
1100 // CHECK: fcmp une <8 x float> %{{.*}}, %{{.*}}
1101 return _mm256_cmp_ps_mask(a, b, _CMP_NEQ_UQ);
1104 __mmask8 test_mm256_cmp_ps_mask_nlt_us(__m256 a, __m256 b) {
1105 // CHECK-LABEL: test_mm256_cmp_ps_mask_nlt_us
1106 // CHECK: fcmp uge <8 x float> %{{.*}}, %{{.*}}
1107 return _mm256_cmp_ps_mask(a, b, _CMP_NLT_US);
1110 __mmask8 test_mm256_cmp_ps_mask_nle_us(__m256 a, __m256 b) {
1111 // CHECK-LABEL: test_mm256_cmp_ps_mask_nle_us
1112 // CHECK: fcmp ugt <8 x float> %{{.*}}, %{{.*}}
1113 return _mm256_cmp_ps_mask(a, b, _CMP_NLE_US);
1116 __mmask8 test_mm256_cmp_ps_mask_ord_q(__m256 a, __m256 b) {
1117 // CHECK-LABEL: test_mm256_cmp_ps_mask_ord_q
1118 // CHECK: fcmp ord <8 x float> %{{.*}}, %{{.*}}
1119 return _mm256_cmp_ps_mask(a, b, _CMP_ORD_Q);
1122 __mmask8 test_mm256_cmp_ps_mask_eq_uq(__m256 a, __m256 b) {
1123 // CHECK-LABEL: test_mm256_cmp_ps_mask_eq_uq
1124 // CHECK: fcmp ueq <8 x float> %{{.*}}, %{{.*}}
1125 return _mm256_cmp_ps_mask(a, b, _CMP_EQ_UQ);
1128 __mmask8 test_mm256_cmp_ps_mask_nge_us(__m256 a, __m256 b) {
1129 // CHECK-LABEL: test_mm256_cmp_ps_mask_nge_us
1130 // CHECK: fcmp ult <8 x float> %{{.*}}, %{{.*}}
1131 return _mm256_cmp_ps_mask(a, b, _CMP_NGE_US);
1134 __mmask8 test_mm256_cmp_ps_mask_ngt_us(__m256 a, __m256 b) {
1135 // CHECK-LABEL: test_mm256_cmp_ps_mask_ngt_us
1136 // CHECK: fcmp ule <8 x float> %{{.*}}, %{{.*}}
1137 return _mm256_cmp_ps_mask(a, b, _CMP_NGT_US);
1140 __mmask8 test_mm256_cmp_ps_mask_false_oq(__m256 a, __m256 b) {
1141 // CHECK-LABEL: test_mm256_cmp_ps_mask_false_oq
1142 // CHECK: fcmp false <8 x float> %{{.*}}, %{{.*}}
1143 return _mm256_cmp_ps_mask(a, b, _CMP_FALSE_OQ);
1146 __mmask8 test_mm256_cmp_ps_mask_neq_oq(__m256 a, __m256 b) {
1147 // CHECK-LABEL: test_mm256_cmp_ps_mask_neq_oq
1148 // CHECK: fcmp one <8 x float> %{{.*}}, %{{.*}}
1149 return _mm256_cmp_ps_mask(a, b, _CMP_NEQ_OQ);
1152 __mmask8 test_mm256_cmp_ps_mask_ge_os(__m256 a, __m256 b) {
1153 // CHECK-LABEL: test_mm256_cmp_ps_mask_ge_os
1154 // CHECK: fcmp oge <8 x float> %{{.*}}, %{{.*}}
1155 return _mm256_cmp_ps_mask(a, b, _CMP_GE_OS);
1158 __mmask8 test_mm256_cmp_ps_mask_gt_os(__m256 a, __m256 b) {
1159 // CHECK-LABEL: test_mm256_cmp_ps_mask_gt_os
1160 // CHECK: fcmp ogt <8 x float> %{{.*}}, %{{.*}}
1161 return _mm256_cmp_ps_mask(a, b, _CMP_GT_OS);
1164 __mmask8 test_mm256_cmp_ps_mask_true_uq(__m256 a, __m256 b) {
1165 // CHECK-LABEL: test_mm256_cmp_ps_mask_true_uq
1166 // CHECK: fcmp true <8 x float> %{{.*}}, %{{.*}}
1167 return _mm256_cmp_ps_mask(a, b, _CMP_TRUE_UQ);
1170 __mmask8 test_mm256_cmp_ps_mask_eq_os(__m256 a, __m256 b) {
1171 // CHECK-LABEL: test_mm256_cmp_ps_mask_eq_os
1172 // CHECK: fcmp oeq <8 x float> %{{.*}}, %{{.*}}
1173 return _mm256_cmp_ps_mask(a, b, _CMP_EQ_OS);
1176 __mmask8 test_mm256_cmp_ps_mask_lt_oq(__m256 a, __m256 b) {
1177 // CHECK-LABEL: test_mm256_cmp_ps_mask_lt_oq
1178 // CHECK: fcmp olt <8 x float> %{{.*}}, %{{.*}}
1179 return _mm256_cmp_ps_mask(a, b, _CMP_LT_OQ);
1182 __mmask8 test_mm256_cmp_ps_mask_le_oq(__m256 a, __m256 b) {
1183 // CHECK-LABEL: test_mm256_cmp_ps_mask_le_oq
1184 // CHECK: fcmp ole <8 x float> %{{.*}}, %{{.*}}
1185 return _mm256_cmp_ps_mask(a, b, _CMP_LE_OQ);
1188 __mmask8 test_mm256_cmp_ps_mask_unord_s(__m256 a, __m256 b) {
1189 // CHECK-LABEL: test_mm256_cmp_ps_mask_unord_s
1190 // CHECK: fcmp uno <8 x float> %{{.*}}, %{{.*}}
1191 return _mm256_cmp_ps_mask(a, b, _CMP_UNORD_S);
1194 __mmask8 test_mm256_cmp_ps_mask_neq_us(__m256 a, __m256 b) {
1195 // CHECK-LABEL: test_mm256_cmp_ps_mask_neq_us
1196 // CHECK: fcmp une <8 x float> %{{.*}}, %{{.*}}
1197 return _mm256_cmp_ps_mask(a, b, _CMP_NEQ_US);
1200 __mmask8 test_mm256_cmp_ps_mask_nlt_uq(__m256 a, __m256 b) {
1201 // CHECK-LABEL: test_mm256_cmp_ps_mask_nlt_uq
1202 // CHECK: fcmp uge <8 x float> %{{.*}}, %{{.*}}
1203 return _mm256_cmp_ps_mask(a, b, _CMP_NLT_UQ);
1206 __mmask8 test_mm256_cmp_ps_mask_nle_uq(__m256 a, __m256 b) {
1207 // CHECK-LABEL: test_mm256_cmp_ps_mask_nle_uq
1208 // CHECK: fcmp ugt <8 x float> %{{.*}}, %{{.*}}
1209 return _mm256_cmp_ps_mask(a, b, _CMP_NLE_UQ);
1212 __mmask8 test_mm256_cmp_ps_mask_ord_s(__m256 a, __m256 b) {
1213 // CHECK-LABEL: test_mm256_cmp_ps_mask_ord_s
1214 // CHECK: fcmp ord <8 x float> %{{.*}}, %{{.*}}
1215 return _mm256_cmp_ps_mask(a, b, _CMP_ORD_S);
1218 __mmask8 test_mm256_cmp_ps_mask_eq_us(__m256 a, __m256 b) {
1219 // CHECK-LABEL: test_mm256_cmp_ps_mask_eq_us
1220 // CHECK: fcmp ueq <8 x float> %{{.*}}, %{{.*}}
1221 return _mm256_cmp_ps_mask(a, b, _CMP_EQ_US);
1224 __mmask8 test_mm256_cmp_ps_mask_nge_uq(__m256 a, __m256 b) {
1225 // CHECK-LABEL: test_mm256_cmp_ps_mask_nge_uq
1226 // CHECK: fcmp ult <8 x float> %{{.*}}, %{{.*}}
1227 return _mm256_cmp_ps_mask(a, b, _CMP_NGE_UQ);
1230 __mmask8 test_mm256_cmp_ps_mask_ngt_uq(__m256 a, __m256 b) {
1231 // CHECK-LABEL: test_mm256_cmp_ps_mask_ngt_uq
1232 // CHECK: fcmp ule <8 x float> %{{.*}}, %{{.*}}
1233 return _mm256_cmp_ps_mask(a, b, _CMP_NGT_UQ);
1236 __mmask8 test_mm256_cmp_ps_mask_false_os(__m256 a, __m256 b) {
1237 // CHECK-LABEL: test_mm256_cmp_ps_mask_false_os
1238 // CHECK: fcmp false <8 x float> %{{.*}}, %{{.*}}
1239 return _mm256_cmp_ps_mask(a, b, _CMP_FALSE_OS);
1242 __mmask8 test_mm256_cmp_ps_mask_neq_os(__m256 a, __m256 b) {
1243 // CHECK-LABEL: test_mm256_cmp_ps_mask_neq_os
1244 // CHECK: fcmp one <8 x float> %{{.*}}, %{{.*}}
1245 return _mm256_cmp_ps_mask(a, b, _CMP_NEQ_OS);
1248 __mmask8 test_mm256_cmp_ps_mask_ge_oq(__m256 a, __m256 b) {
1249 // CHECK-LABEL: test_mm256_cmp_ps_mask_ge_oq
1250 // CHECK: fcmp oge <8 x float> %{{.*}}, %{{.*}}
1251 return _mm256_cmp_ps_mask(a, b, _CMP_GE_OQ);
1254 __mmask8 test_mm256_cmp_ps_mask_gt_oq(__m256 a, __m256 b) {
1255 // CHECK-LABEL: test_mm256_cmp_ps_mask_gt_oq
1256 // CHECK: fcmp ogt <8 x float> %{{.*}}, %{{.*}}
1257 return _mm256_cmp_ps_mask(a, b, _CMP_GT_OQ);
1260 __mmask8 test_mm256_cmp_ps_mask_true_us(__m256 a, __m256 b) {
1261 // CHECK-LABEL: test_mm256_cmp_ps_mask_true_us
1262 // CHECK: fcmp true <8 x float> %{{.*}}, %{{.*}}
1263 return _mm256_cmp_ps_mask(a, b, _CMP_TRUE_US);
1266 __mmask8 test_mm256_mask_cmp_ps_mask_eq_oq(__mmask8 m, __m256 a, __m256 b) {
1267 // CHECK-LABEL: @test_mm256_mask_cmp_ps_mask_eq_oq
1268 // CHECK: [[CMP:%.*]] = fcmp oeq <8 x float> %{{.*}}, %{{.*}}
1269 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1270 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OQ);
1273 __mmask8 test_mm256_mask_cmp_ps_mask_lt_os(__mmask8 m, __m256 a, __m256 b) {
1274 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_lt_os
1275 // CHECK: [[CMP:%.*]] = fcmp olt <8 x float> %{{.*}}, %{{.*}}
1276 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1277 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_LT_OS);
1280 __mmask8 test_mm256_mask_cmp_ps_mask_le_os(__mmask8 m, __m256 a, __m256 b) {
1281 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_le_os
1282 // CHECK: [[CMP:%.*]] = fcmp ole <8 x float> %{{.*}}, %{{.*}}
1283 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1284 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_LE_OS);
1287 __mmask8 test_mm256_mask_cmp_ps_mask_unord_q(__mmask8 m, __m256 a, __m256 b) {
1288 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_unord_q
1289 // CHECK: [[CMP:%.*]] = fcmp uno <8 x float> %{{.*}}, %{{.*}}
1290 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1291 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_Q);
1294 __mmask8 test_mm256_mask_cmp_ps_mask_neq_uq(__mmask8 m, __m256 a, __m256 b) {
1295 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_neq_uq
1296 // CHECK: [[CMP:%.*]] = fcmp une <8 x float> %{{.*}}, %{{.*}}
1297 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1298 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_UQ);
1301 __mmask8 test_mm256_mask_cmp_ps_mask_nlt_us(__mmask8 m, __m256 a, __m256 b) {
1302 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nlt_us
1303 // CHECK: [[CMP:%.*]] = fcmp uge <8 x float> %{{.*}}, %{{.*}}
1304 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1305 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NLT_US);
1308 __mmask8 test_mm256_mask_cmp_ps_mask_nle_us(__mmask8 m, __m256 a, __m256 b) {
1309 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nle_us
1310 // CHECK: [[CMP:%.*]] = fcmp ugt <8 x float> %{{.*}}, %{{.*}}
1311 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1312 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NLE_US);
1315 __mmask8 test_mm256_mask_cmp_ps_mask_ord_q(__mmask8 m, __m256 a, __m256 b) {
1316 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ord_q
1317 // CHECK: [[CMP:%.*]] = fcmp ord <8 x float> %{{.*}}, %{{.*}}
1318 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1319 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_ORD_Q);
1322 __mmask8 test_mm256_mask_cmp_ps_mask_eq_uq(__mmask8 m, __m256 a, __m256 b) {
1323 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_eq_uq
1324 // CHECK: [[CMP:%.*]] = fcmp ueq <8 x float> %{{.*}}, %{{.*}}
1325 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1326 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_EQ_UQ);
1329 __mmask8 test_mm256_mask_cmp_ps_mask_nge_us(__mmask8 m, __m256 a, __m256 b) {
1330 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nge_us
1331 // CHECK: [[CMP:%.*]] = fcmp ult <8 x float> %{{.*}}, %{{.*}}
1332 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1333 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NGE_US);
1336 __mmask8 test_mm256_mask_cmp_ps_mask_ngt_us(__mmask8 m, __m256 a, __m256 b) {
1337 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ngt_us
1338 // CHECK: [[CMP:%.*]] = fcmp ule <8 x float> %{{.*}}, %{{.*}}
1339 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1340 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NGT_US);
1343 __mmask8 test_mm256_mask_cmp_ps_mask_false_oq(__mmask8 m, __m256 a, __m256 b) {
1344 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_false_oq
1345 // CHECK: [[CMP:%.*]] = fcmp false <8 x float> %{{.*}}, %{{.*}}
1346 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1347 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OQ);
1350 __mmask8 test_mm256_mask_cmp_ps_mask_neq_oq(__mmask8 m, __m256 a, __m256 b) {
1351 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_neq_oq
1352 // CHECK: [[CMP:%.*]] = fcmp one <8 x float> %{{.*}}, %{{.*}}
1353 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1354 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OQ);
1357 __mmask8 test_mm256_mask_cmp_ps_mask_ge_os(__mmask8 m, __m256 a, __m256 b) {
1358 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ge_os
1359 // CHECK: [[CMP:%.*]] = fcmp oge <8 x float> %{{.*}}, %{{.*}}
1360 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1361 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_GE_OS);
1364 __mmask8 test_mm256_mask_cmp_ps_mask_gt_os(__mmask8 m, __m256 a, __m256 b) {
1365 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_gt_os
1366 // CHECK: [[CMP:%.*]] = fcmp ogt <8 x float> %{{.*}}, %{{.*}}
1367 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1368 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_GT_OS);
1371 __mmask8 test_mm256_mask_cmp_ps_mask_true_uq(__mmask8 m, __m256 a, __m256 b) {
1372 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_true_uq
1373 // CHECK: [[CMP:%.*]] = fcmp true <8 x float> %{{.*}}, %{{.*}}
1374 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1375 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_UQ);
1378 __mmask8 test_mm256_mask_cmp_ps_mask_eq_os(__mmask8 m, __m256 a, __m256 b) {
1379 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_eq_os
1380 // CHECK: [[CMP:%.*]] = fcmp oeq <8 x float> %{{.*}}, %{{.*}}
1381 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1382 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OS);
1385 __mmask8 test_mm256_mask_cmp_ps_mask_lt_oq(__mmask8 m, __m256 a, __m256 b) {
1386 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_lt_oq
1387 // CHECK: [[CMP:%.*]] = fcmp olt <8 x float> %{{.*}}, %{{.*}}
1388 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1389 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_LT_OQ);
1392 __mmask8 test_mm256_mask_cmp_ps_mask_le_oq(__mmask8 m, __m256 a, __m256 b) {
1393 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_le_oq
1394 // CHECK: [[CMP:%.*]] = fcmp ole <8 x float> %{{.*}}, %{{.*}}
1395 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1396 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_LE_OQ);
1399 __mmask8 test_mm256_mask_cmp_ps_mask_unord_s(__mmask8 m, __m256 a, __m256 b) {
1400 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_unord_s
1401 // CHECK: [[CMP:%.*]] = fcmp uno <8 x float> %{{.*}}, %{{.*}}
1402 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1403 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_S);
1406 __mmask8 test_mm256_mask_cmp_ps_mask_neq_us(__mmask8 m, __m256 a, __m256 b) {
1407 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_neq_us
1408 // CHECK: [[CMP:%.*]] = fcmp une <8 x float> %{{.*}}, %{{.*}}
1409 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1410 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_US);
1413 __mmask8 test_mm256_mask_cmp_ps_mask_nlt_uq(__mmask8 m, __m256 a, __m256 b) {
1414 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nlt_uq
1415 // CHECK: [[CMP:%.*]] = fcmp uge <8 x float> %{{.*}}, %{{.*}}
1416 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1417 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NLT_UQ);
1420 __mmask8 test_mm256_mask_cmp_ps_mask_nle_uq(__mmask8 m, __m256 a, __m256 b) {
1421 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nle_uq
1422 // CHECK: [[CMP:%.*]] = fcmp ugt <8 x float> %{{.*}}, %{{.*}}
1423 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1424 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NLE_UQ);
1427 __mmask8 test_mm256_mask_cmp_ps_mask_ord_s(__mmask8 m, __m256 a, __m256 b) {
1428 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ord_s
1429 // CHECK: [[CMP:%.*]] = fcmp ord <8 x float> %{{.*}}, %{{.*}}
1430 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1431 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_ORD_S);
1434 __mmask8 test_mm256_mask_cmp_ps_mask_eq_us(__mmask8 m, __m256 a, __m256 b) {
1435 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_eq_us
1436 // CHECK: [[CMP:%.*]] = fcmp ueq <8 x float> %{{.*}}, %{{.*}}
1437 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1438 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_EQ_US);
1441 __mmask8 test_mm256_mask_cmp_ps_mask_nge_uq(__mmask8 m, __m256 a, __m256 b) {
1442 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nge_uq
1443 // CHECK: [[CMP:%.*]] = fcmp ult <8 x float> %{{.*}}, %{{.*}}
1444 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1445 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NGE_UQ);
1448 __mmask8 test_mm256_mask_cmp_ps_mask_ngt_uq(__mmask8 m, __m256 a, __m256 b) {
1449 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ngt_uq
1450 // CHECK: [[CMP:%.*]] = fcmp ule <8 x float> %{{.*}}, %{{.*}}
1451 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1452 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NGT_UQ);
1455 __mmask8 test_mm256_mask_cmp_ps_mask_false_os(__mmask8 m, __m256 a, __m256 b) {
1456 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_false_os
1457 // CHECK: [[CMP:%.*]] = fcmp false <8 x float> %{{.*}}, %{{.*}}
1458 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1459 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OS);
1462 __mmask8 test_mm256_mask_cmp_ps_mask_neq_os(__mmask8 m, __m256 a, __m256 b) {
1463 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_neq_os
1464 // CHECK: [[CMP:%.*]] = fcmp one <8 x float> %{{.*}}, %{{.*}}
1465 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1466 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OS);
1469 __mmask8 test_mm256_mask_cmp_ps_mask_ge_oq(__mmask8 m, __m256 a, __m256 b) {
1470 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ge_oq
1471 // CHECK: [[CMP:%.*]] = fcmp oge <8 x float> %{{.*}}, %{{.*}}
1472 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1473 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_GE_OQ);
1476 __mmask8 test_mm256_mask_cmp_ps_mask_gt_oq(__mmask8 m, __m256 a, __m256 b) {
1477 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_gt_oq
1478 // CHECK: [[CMP:%.*]] = fcmp ogt <8 x float> %{{.*}}, %{{.*}}
1479 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1480 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_GT_OQ);
1483 __mmask8 test_mm256_mask_cmp_ps_mask_true_us(__mmask8 m, __m256 a, __m256 b) {
1484 // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_true_us
1485 // CHECK: [[CMP:%.*]] = fcmp true <8 x float> %{{.*}}, %{{.*}}
1486 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1487 return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_US);
1490 __mmask8 test_mm256_cmp_pd_mask_eq_oq(__m256d a, __m256d b) {
1491 // CHECK-LABEL: @test_mm256_cmp_pd_mask_eq_oq
1492 // CHECK: fcmp oeq <4 x double> %{{.*}}, %{{.*}}
1493 return _mm256_cmp_pd_mask(a, b, _CMP_EQ_OQ);
1496 __mmask8 test_mm256_cmp_pd_mask_lt_os(__m256d a, __m256d b) {
1497 // CHECK-LABEL: test_mm256_cmp_pd_mask_lt_os
1498 // CHECK: fcmp olt <4 x double> %{{.*}}, %{{.*}}
1499 return _mm256_cmp_pd_mask(a, b, _CMP_LT_OS);
1502 __mmask8 test_mm256_cmp_pd_mask_le_os(__m256d a, __m256d b) {
1503 // CHECK-LABEL: test_mm256_cmp_pd_mask_le_os
1504 // CHECK: fcmp ole <4 x double> %{{.*}}, %{{.*}}
1505 return _mm256_cmp_pd_mask(a, b, _CMP_LE_OS);
1508 __mmask8 test_mm256_cmp_pd_mask_unord_q(__m256d a, __m256d b) {
1509 // CHECK-LABEL: test_mm256_cmp_pd_mask_unord_q
1510 // CHECK: fcmp uno <4 x double> %{{.*}}, %{{.*}}
1511 return _mm256_cmp_pd_mask(a, b, _CMP_UNORD_Q);
1514 __mmask8 test_mm256_cmp_pd_mask_neq_uq(__m256d a, __m256d b) {
1515 // CHECK-LABEL: test_mm256_cmp_pd_mask_neq_uq
1516 // CHECK: fcmp une <4 x double> %{{.*}}, %{{.*}}
1517 return _mm256_cmp_pd_mask(a, b, _CMP_NEQ_UQ);
1520 __mmask8 test_mm256_cmp_pd_mask_nlt_us(__m256d a, __m256d b) {
1521 // CHECK-LABEL: test_mm256_cmp_pd_mask_nlt_us
1522 // CHECK: fcmp uge <4 x double> %{{.*}}, %{{.*}}
1523 return _mm256_cmp_pd_mask(a, b, _CMP_NLT_US);
1526 __mmask8 test_mm256_cmp_pd_mask_nle_us(__m256d a, __m256d b) {
1527 // CHECK-LABEL: test_mm256_cmp_pd_mask_nle_us
1528 // CHECK: fcmp ugt <4 x double> %{{.*}}, %{{.*}}
1529 return _mm256_cmp_pd_mask(a, b, _CMP_NLE_US);
1532 __mmask8 test_mm256_cmp_pd_mask_ord_q(__m256d a, __m256d b) {
1533 // CHECK-LABEL: test_mm256_cmp_pd_mask_ord_q
1534 // CHECK: fcmp ord <4 x double> %{{.*}}, %{{.*}}
1535 return _mm256_cmp_pd_mask(a, b, _CMP_ORD_Q);
1538 __mmask8 test_mm256_cmp_pd_mask_eq_uq(__m256d a, __m256d b) {
1539 // CHECK-LABEL: test_mm256_cmp_pd_mask_eq_uq
1540 // CHECK: fcmp ueq <4 x double> %{{.*}}, %{{.*}}
1541 return _mm256_cmp_pd_mask(a, b, _CMP_EQ_UQ);
1544 __mmask8 test_mm256_cmp_pd_mask_nge_us(__m256d a, __m256d b) {
1545 // CHECK-LABEL: test_mm256_cmp_pd_mask_nge_us
1546 // CHECK: fcmp ult <4 x double> %{{.*}}, %{{.*}}
1547 return _mm256_cmp_pd_mask(a, b, _CMP_NGE_US);
1550 __mmask8 test_mm256_cmp_pd_mask_ngt_us(__m256d a, __m256d b) {
1551 // CHECK-LABEL: test_mm256_cmp_pd_mask_ngt_us
1552 // CHECK: fcmp ule <4 x double> %{{.*}}, %{{.*}}
1553 return _mm256_cmp_pd_mask(a, b, _CMP_NGT_US);
1556 __mmask8 test_mm256_cmp_pd_mask_false_oq(__m256d a, __m256d b) {
1557 // CHECK-LABEL: test_mm256_cmp_pd_mask_false_oq
1558 // CHECK: fcmp false <4 x double> %{{.*}}, %{{.*}}
1559 return _mm256_cmp_pd_mask(a, b, _CMP_FALSE_OQ);
1562 __mmask8 test_mm256_cmp_pd_mask_neq_oq(__m256d a, __m256d b) {
1563 // CHECK-LABEL: test_mm256_cmp_pd_mask_neq_oq
1564 // CHECK: fcmp one <4 x double> %{{.*}}, %{{.*}}
1565 return _mm256_cmp_pd_mask(a, b, _CMP_NEQ_OQ);
1568 __mmask8 test_mm256_cmp_pd_mask_ge_os(__m256d a, __m256d b) {
1569 // CHECK-LABEL: test_mm256_cmp_pd_mask_ge_os
1570 // CHECK: fcmp oge <4 x double> %{{.*}}, %{{.*}}
1571 return _mm256_cmp_pd_mask(a, b, _CMP_GE_OS);
1574 __mmask8 test_mm256_cmp_pd_mask_gt_os(__m256d a, __m256d b) {
1575 // CHECK-LABEL: test_mm256_cmp_pd_mask_gt_os
1576 // CHECK: fcmp ogt <4 x double> %{{.*}}, %{{.*}}
1577 return _mm256_cmp_pd_mask(a, b, _CMP_GT_OS);
1580 __mmask8 test_mm256_cmp_pd_mask_true_uq(__m256d a, __m256d b) {
1581 // CHECK-LABEL: test_mm256_cmp_pd_mask_true_uq
1582 // CHECK: fcmp true <4 x double> %{{.*}}, %{{.*}}
1583 return _mm256_cmp_pd_mask(a, b, _CMP_TRUE_UQ);
1586 __mmask8 test_mm256_cmp_pd_mask_eq_os(__m256d a, __m256d b) {
1587 // CHECK-LABEL: test_mm256_cmp_pd_mask_eq_os
1588 // CHECK: fcmp oeq <4 x double> %{{.*}}, %{{.*}}
1589 return _mm256_cmp_pd_mask(a, b, _CMP_EQ_OS);
1592 __mmask8 test_mm256_cmp_pd_mask_lt_oq(__m256d a, __m256d b) {
1593 // CHECK-LABEL: test_mm256_cmp_pd_mask_lt_oq
1594 // CHECK: fcmp olt <4 x double> %{{.*}}, %{{.*}}
1595 return _mm256_cmp_pd_mask(a, b, _CMP_LT_OQ);
1598 __mmask8 test_mm256_cmp_pd_mask_le_oq(__m256d a, __m256d b) {
1599 // CHECK-LABEL: test_mm256_cmp_pd_mask_le_oq
1600 // CHECK: fcmp ole <4 x double> %{{.*}}, %{{.*}}
1601 return _mm256_cmp_pd_mask(a, b, _CMP_LE_OQ);
1604 __mmask8 test_mm256_cmp_pd_mask_unord_s(__m256d a, __m256d b) {
1605 // CHECK-LABEL: test_mm256_cmp_pd_mask_unord_s
1606 // CHECK: fcmp uno <4 x double> %{{.*}}, %{{.*}}
1607 return _mm256_cmp_pd_mask(a, b, _CMP_UNORD_S);
1610 __mmask8 test_mm256_cmp_pd_mask_neq_us(__m256d a, __m256d b) {
1611 // CHECK-LABEL: test_mm256_cmp_pd_mask_neq_us
1612 // CHECK: fcmp une <4 x double> %{{.*}}, %{{.*}}
1613 return _mm256_cmp_pd_mask(a, b, _CMP_NEQ_US);
1616 __mmask8 test_mm256_cmp_pd_mask_nlt_uq(__m256d a, __m256d b) {
1617 // CHECK-LABEL: test_mm256_cmp_pd_mask_nlt_uq
1618 // CHECK: fcmp uge <4 x double> %{{.*}}, %{{.*}}
1619 return _mm256_cmp_pd_mask(a, b, _CMP_NLT_UQ);
1622 __mmask8 test_mm256_cmp_pd_mask_nle_uq(__m256d a, __m256d b) {
1623 // CHECK-LABEL: test_mm256_cmp_pd_mask_nle_uq
1624 // CHECK: fcmp ugt <4 x double> %{{.*}}, %{{.*}}
1625 return _mm256_cmp_pd_mask(a, b, _CMP_NLE_UQ);
1628 __mmask8 test_mm256_cmp_pd_mask_ord_s(__m256d a, __m256d b) {
1629 // CHECK-LABEL: test_mm256_cmp_pd_mask_ord_s
1630 // CHECK: fcmp ord <4 x double> %{{.*}}, %{{.*}}
1631 return _mm256_cmp_pd_mask(a, b, _CMP_ORD_S);
1634 __mmask8 test_mm256_cmp_pd_mask_eq_us(__m256d a, __m256d b) {
1635 // CHECK-LABEL: test_mm256_cmp_pd_mask_eq_us
1636 // CHECK: fcmp ueq <4 x double> %{{.*}}, %{{.*}}
1637 return _mm256_cmp_pd_mask(a, b, _CMP_EQ_US);
1640 __mmask8 test_mm256_cmp_pd_mask_nge_uq(__m256d a, __m256d b) {
1641 // CHECK-LABEL: test_mm256_cmp_pd_mask_nge_uq
1642 // CHECK: fcmp ult <4 x double> %{{.*}}, %{{.*}}
1643 return _mm256_cmp_pd_mask(a, b, _CMP_NGE_UQ);
1646 __mmask8 test_mm256_cmp_pd_mask_ngt_uq(__m256d a, __m256d b) {
1647 // CHECK-LABEL: test_mm256_cmp_pd_mask_ngt_uq
1648 // CHECK: fcmp ule <4 x double> %{{.*}}, %{{.*}}
1649 return _mm256_cmp_pd_mask(a, b, _CMP_NGT_UQ);
1652 __mmask8 test_mm256_cmp_pd_mask_false_os(__m256d a, __m256d b) {
1653 // CHECK-LABEL: test_mm256_cmp_pd_mask_false_os
1654 // CHECK: fcmp false <4 x double> %{{.*}}, %{{.*}}
1655 return _mm256_cmp_pd_mask(a, b, _CMP_FALSE_OS);
1658 __mmask8 test_mm256_cmp_pd_mask_neq_os(__m256d a, __m256d b) {
1659 // CHECK-LABEL: test_mm256_cmp_pd_mask_neq_os
1660 // CHECK: fcmp one <4 x double> %{{.*}}, %{{.*}}
1661 return _mm256_cmp_pd_mask(a, b, _CMP_NEQ_OS);
1664 __mmask8 test_mm256_cmp_pd_mask_ge_oq(__m256d a, __m256d b) {
1665 // CHECK-LABEL: test_mm256_cmp_pd_mask_ge_oq
1666 // CHECK: fcmp oge <4 x double> %{{.*}}, %{{.*}}
1667 return _mm256_cmp_pd_mask(a, b, _CMP_GE_OQ);
1670 __mmask8 test_mm256_cmp_pd_mask_gt_oq(__m256d a, __m256d b) {
1671 // CHECK-LABEL: test_mm256_cmp_pd_mask_gt_oq
1672 // CHECK: fcmp ogt <4 x double> %{{.*}}, %{{.*}}
1673 return _mm256_cmp_pd_mask(a, b, _CMP_GT_OQ);
1676 __mmask8 test_mm256_cmp_pd_mask_true_us(__m256d a, __m256d b) {
1677 // CHECK-LABEL: test_mm256_cmp_pd_mask_true_us
1678 // CHECK: fcmp true <4 x double> %{{.*}}, %{{.*}}
1679 return _mm256_cmp_pd_mask(a, b, _CMP_TRUE_US);
1682 __mmask8 test_mm256_mask_cmp_pd_mask_eq_oq(__mmask8 m, __m256d a, __m256d b) {
1683 // CHECK-LABEL: @test_mm256_mask_cmp_pd_mask_eq_oq
1684 // CHECK: [[CMP:%.*]] = fcmp oeq <4 x double> %{{.*}}, %{{.*}}
1685 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1686 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OQ);
1689 __mmask8 test_mm256_mask_cmp_pd_mask_lt_os(__mmask8 m, __m256d a, __m256d b) {
1690 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_lt_os
1691 // CHECK: [[CMP:%.*]] = fcmp olt <4 x double> %{{.*}}, %{{.*}}
1692 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1693 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_LT_OS);
1696 __mmask8 test_mm256_mask_cmp_pd_mask_le_os(__mmask8 m, __m256d a, __m256d b) {
1697 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_le_os
1698 // CHECK: [[CMP:%.*]] = fcmp ole <4 x double> %{{.*}}, %{{.*}}
1699 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1700 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_LE_OS);
1703 __mmask8 test_mm256_mask_cmp_pd_mask_unord_q(__mmask8 m, __m256d a, __m256d b) {
1704 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_unord_q
1705 // CHECK: [[CMP:%.*]] = fcmp uno <4 x double> %{{.*}}, %{{.*}}
1706 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1707 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_Q);
1710 __mmask8 test_mm256_mask_cmp_pd_mask_neq_uq(__mmask8 m, __m256d a, __m256d b) {
1711 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_neq_uq
1712 // CHECK: [[CMP:%.*]] = fcmp une <4 x double> %{{.*}}, %{{.*}}
1713 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1714 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_UQ);
1717 __mmask8 test_mm256_mask_cmp_pd_mask_nlt_us(__mmask8 m, __m256d a, __m256d b) {
1718 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nlt_us
1719 // CHECK: [[CMP:%.*]] = fcmp uge <4 x double> %{{.*}}, %{{.*}}
1720 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1721 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NLT_US);
1724 __mmask8 test_mm256_mask_cmp_pd_mask_nle_us(__mmask8 m, __m256d a, __m256d b) {
1725 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nle_us
1726 // CHECK: [[CMP:%.*]] = fcmp ugt <4 x double> %{{.*}}, %{{.*}}
1727 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1728 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NLE_US);
1731 __mmask8 test_mm256_mask_cmp_pd_mask_ord_q(__mmask8 m, __m256d a, __m256d b) {
1732 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ord_q
1733 // CHECK: [[CMP:%.*]] = fcmp ord <4 x double> %{{.*}}, %{{.*}}
1734 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1735 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_ORD_Q);
1738 __mmask8 test_mm256_mask_cmp_pd_mask_eq_uq(__mmask8 m, __m256d a, __m256d b) {
1739 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_eq_uq
1740 // CHECK: [[CMP:%.*]] = fcmp ueq <4 x double> %{{.*}}, %{{.*}}
1741 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1742 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_EQ_UQ);
1745 __mmask8 test_mm256_mask_cmp_pd_mask_nge_us(__mmask8 m, __m256d a, __m256d b) {
1746 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nge_us
1747 // CHECK: [[CMP:%.*]] = fcmp ult <4 x double> %{{.*}}, %{{.*}}
1748 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1749 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NGE_US);
1752 __mmask8 test_mm256_mask_cmp_pd_mask_ngt_us(__mmask8 m, __m256d a, __m256d b) {
1753 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ngt_us
1754 // CHECK: [[CMP:%.*]] = fcmp ule <4 x double> %{{.*}}, %{{.*}}
1755 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1756 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NGT_US);
1759 __mmask8 test_mm256_mask_cmp_pd_mask_false_oq(__mmask8 m, __m256d a, __m256d b) {
1760 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_false_oq
1761 // CHECK: [[CMP:%.*]] = fcmp false <4 x double> %{{.*}}, %{{.*}}
1762 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1763 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OQ);
1766 __mmask8 test_mm256_mask_cmp_pd_mask_neq_oq(__mmask8 m, __m256d a, __m256d b) {
1767 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_neq_oq
1768 // CHECK: [[CMP:%.*]] = fcmp one <4 x double> %{{.*}}, %{{.*}}
1769 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1770 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OQ);
1773 __mmask8 test_mm256_mask_cmp_pd_mask_ge_os(__mmask8 m, __m256d a, __m256d b) {
1774 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ge_os
1775 // CHECK: [[CMP:%.*]] = fcmp oge <4 x double> %{{.*}}, %{{.*}}
1776 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1777 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_GE_OS);
1780 __mmask8 test_mm256_mask_cmp_pd_mask_gt_os(__mmask8 m, __m256d a, __m256d b) {
1781 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_gt_os
1782 // CHECK: [[CMP:%.*]] = fcmp ogt <4 x double> %{{.*}}, %{{.*}}
1783 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1784 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_GT_OS);
1787 __mmask8 test_mm256_mask_cmp_pd_mask_true_uq(__mmask8 m, __m256d a, __m256d b) {
1788 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_true_uq
1789 // CHECK: [[CMP:%.*]] = fcmp true <4 x double> %{{.*}}, %{{.*}}
1790 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1791 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_UQ);
1794 __mmask8 test_mm256_mask_cmp_pd_mask_eq_os(__mmask8 m, __m256d a, __m256d b) {
1795 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_eq_os
1796 // CHECK: [[CMP:%.*]] = fcmp oeq <4 x double> %{{.*}}, %{{.*}}
1797 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1798 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OS);
1801 __mmask8 test_mm256_mask_cmp_pd_mask_lt_oq(__mmask8 m, __m256d a, __m256d b) {
1802 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_lt_oq
1803 // CHECK: [[CMP:%.*]] = fcmp olt <4 x double> %{{.*}}, %{{.*}}
1804 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1805 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_LT_OQ);
1808 __mmask8 test_mm256_mask_cmp_pd_mask_le_oq(__mmask8 m, __m256d a, __m256d b) {
1809 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_le_oq
1810 // CHECK: [[CMP:%.*]] = fcmp ole <4 x double> %{{.*}}, %{{.*}}
1811 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1812 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_LE_OQ);
1815 __mmask8 test_mm256_mask_cmp_pd_mask_unord_s(__mmask8 m, __m256d a, __m256d b) {
1816 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_unord_s
1817 // CHECK: [[CMP:%.*]] = fcmp uno <4 x double> %{{.*}}, %{{.*}}
1818 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1819 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_S);
1822 __mmask8 test_mm256_mask_cmp_pd_mask_neq_us(__mmask8 m, __m256d a, __m256d b) {
1823 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_neq_us
1824 // CHECK: [[CMP:%.*]] = fcmp une <4 x double> %{{.*}}, %{{.*}}
1825 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1826 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_US);
1829 __mmask8 test_mm256_mask_cmp_pd_mask_nlt_uq(__mmask8 m, __m256d a, __m256d b) {
1830 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nlt_uq
1831 // CHECK: [[CMP:%.*]] = fcmp uge <4 x double> %{{.*}}, %{{.*}}
1832 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1833 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NLT_UQ);
1836 __mmask8 test_mm256_mask_cmp_pd_mask_nle_uq(__mmask8 m, __m256d a, __m256d b) {
1837 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nle_uq
1838 // CHECK: [[CMP:%.*]] = fcmp ugt <4 x double> %{{.*}}, %{{.*}}
1839 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1840 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NLE_UQ);
1843 __mmask8 test_mm256_mask_cmp_pd_mask_ord_s(__mmask8 m, __m256d a, __m256d b) {
1844 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ord_s
1845 // CHECK: [[CMP:%.*]] = fcmp ord <4 x double> %{{.*}}, %{{.*}}
1846 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1847 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_ORD_S);
1850 __mmask8 test_mm256_mask_cmp_pd_mask_eq_us(__mmask8 m, __m256d a, __m256d b) {
1851 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_eq_us
1852 // CHECK: [[CMP:%.*]] = fcmp ueq <4 x double> %{{.*}}, %{{.*}}
1853 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1854 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_EQ_US);
1857 __mmask8 test_mm256_mask_cmp_pd_mask_nge_uq(__mmask8 m, __m256d a, __m256d b) {
1858 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nge_uq
1859 // CHECK: [[CMP:%.*]] = fcmp ult <4 x double> %{{.*}}, %{{.*}}
1860 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1861 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NGE_UQ);
1864 __mmask8 test_mm256_mask_cmp_pd_mask_ngt_uq(__mmask8 m, __m256d a, __m256d b) {
1865 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ngt_uq
1866 // CHECK: [[CMP:%.*]] = fcmp ule <4 x double> %{{.*}}, %{{.*}}
1867 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1868 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NGT_UQ);
1871 __mmask8 test_mm256_mask_cmp_pd_mask_false_os(__mmask8 m, __m256d a, __m256d b) {
1872 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_false_os
1873 // CHECK: [[CMP:%.*]] = fcmp false <4 x double> %{{.*}}, %{{.*}}
1874 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1875 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OS);
1878 __mmask8 test_mm256_mask_cmp_pd_mask_neq_os(__mmask8 m, __m256d a, __m256d b) {
1879 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_neq_os
1880 // CHECK: [[CMP:%.*]] = fcmp one <4 x double> %{{.*}}, %{{.*}}
1881 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1882 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OS);
1885 __mmask8 test_mm256_mask_cmp_pd_mask_ge_oq(__mmask8 m, __m256d a, __m256d b) {
1886 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ge_oq
1887 // CHECK: [[CMP:%.*]] = fcmp oge <4 x double> %{{.*}}, %{{.*}}
1888 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1889 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_GE_OQ);
1892 __mmask8 test_mm256_mask_cmp_pd_mask_gt_oq(__mmask8 m, __m256d a, __m256d b) {
1893 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_gt_oq
1894 // CHECK: [[CMP:%.*]] = fcmp ogt <4 x double> %{{.*}}, %{{.*}}
1895 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1896 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_GT_OQ);
1899 __mmask8 test_mm256_mask_cmp_pd_mask_true_us(__mmask8 m, __m256d a, __m256d b) {
1900 // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_true_us
1901 // CHECK: [[CMP:%.*]] = fcmp true <4 x double> %{{.*}}, %{{.*}}
1902 // CHECK: and <4 x i1> [[CMP]], {{.*}}
1903 return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_US);
1906 __mmask8 test_mm_cmp_ps_mask_eq_oq(__m128 a, __m128 b) {
1907 // CHECK-LABEL: @test_mm_cmp_ps_mask_eq_oq
1908 // CHECK: fcmp oeq <4 x float> %{{.*}}, %{{.*}}
1909 return _mm_cmp_ps_mask(a, b, _CMP_EQ_OQ);
1912 __mmask8 test_mm_cmp_ps_mask_lt_os(__m128 a, __m128 b) {
1913 // CHECK-LABEL: test_mm_cmp_ps_mask_lt_os
1914 // CHECK: fcmp olt <4 x float> %{{.*}}, %{{.*}}
1915 return _mm_cmp_ps_mask(a, b, _CMP_LT_OS);
1918 __mmask8 test_mm_cmp_ps_mask_le_os(__m128 a, __m128 b) {
1919 // CHECK-LABEL: test_mm_cmp_ps_mask_le_os
1920 // CHECK: fcmp ole <4 x float> %{{.*}}, %{{.*}}
1921 return _mm_cmp_ps_mask(a, b, _CMP_LE_OS);
1924 __mmask8 test_mm_cmp_ps_mask_unord_q(__m128 a, __m128 b) {
1925 // CHECK-LABEL: test_mm_cmp_ps_mask_unord_q
1926 // CHECK: fcmp uno <4 x float> %{{.*}}, %{{.*}}
1927 return _mm_cmp_ps_mask(a, b, _CMP_UNORD_Q);
1930 __mmask8 test_mm_cmp_ps_mask_neq_uq(__m128 a, __m128 b) {
1931 // CHECK-LABEL: test_mm_cmp_ps_mask_neq_uq
1932 // CHECK: fcmp une <4 x float> %{{.*}}, %{{.*}}
1933 return _mm_cmp_ps_mask(a, b, _CMP_NEQ_UQ);
1936 __mmask8 test_mm_cmp_ps_mask_nlt_us(__m128 a, __m128 b) {
1937 // CHECK-LABEL: test_mm_cmp_ps_mask_nlt_us
1938 // CHECK: fcmp uge <4 x float> %{{.*}}, %{{.*}}
1939 return _mm_cmp_ps_mask(a, b, _CMP_NLT_US);
1942 __mmask8 test_mm_cmp_ps_mask_nle_us(__m128 a, __m128 b) {
1943 // CHECK-LABEL: test_mm_cmp_ps_mask_nle_us
1944 // CHECK: fcmp ugt <4 x float> %{{.*}}, %{{.*}}
1945 return _mm_cmp_ps_mask(a, b, _CMP_NLE_US);
1948 __mmask8 test_mm_cmp_ps_mask_ord_q(__m128 a, __m128 b) {
1949 // CHECK-LABEL: test_mm_cmp_ps_mask_ord_q
1950 // CHECK: fcmp ord <4 x float> %{{.*}}, %{{.*}}
1951 return _mm_cmp_ps_mask(a, b, _CMP_ORD_Q);
1954 __mmask8 test_mm_cmp_ps_mask_eq_uq(__m128 a, __m128 b) {
1955 // CHECK-LABEL: test_mm_cmp_ps_mask_eq_uq
1956 // CHECK: fcmp ueq <4 x float> %{{.*}}, %{{.*}}
1957 return _mm_cmp_ps_mask(a, b, _CMP_EQ_UQ);
1960 __mmask8 test_mm_cmp_ps_mask_nge_us(__m128 a, __m128 b) {
1961 // CHECK-LABEL: test_mm_cmp_ps_mask_nge_us
1962 // CHECK: fcmp ult <4 x float> %{{.*}}, %{{.*}}
1963 return _mm_cmp_ps_mask(a, b, _CMP_NGE_US);
1966 __mmask8 test_mm_cmp_ps_mask_ngt_us(__m128 a, __m128 b) {
1967 // CHECK-LABEL: test_mm_cmp_ps_mask_ngt_us
1968 // CHECK: fcmp ule <4 x float> %{{.*}}, %{{.*}}
1969 return _mm_cmp_ps_mask(a, b, _CMP_NGT_US);
1972 __mmask8 test_mm_cmp_ps_mask_false_oq(__m128 a, __m128 b) {
1973 // CHECK-LABEL: test_mm_cmp_ps_mask_false_oq
1974 // CHECK: fcmp false <4 x float> %{{.*}}, %{{.*}}
1975 return _mm_cmp_ps_mask(a, b, _CMP_FALSE_OQ);
1978 __mmask8 test_mm_cmp_ps_mask_neq_oq(__m128 a, __m128 b) {
1979 // CHECK-LABEL: test_mm_cmp_ps_mask_neq_oq
1980 // CHECK: fcmp one <4 x float> %{{.*}}, %{{.*}}
1981 return _mm_cmp_ps_mask(a, b, _CMP_NEQ_OQ);
1984 __mmask8 test_mm_cmp_ps_mask_ge_os(__m128 a, __m128 b) {
1985 // CHECK-LABEL: test_mm_cmp_ps_mask_ge_os
1986 // CHECK: fcmp oge <4 x float> %{{.*}}, %{{.*}}
1987 return _mm_cmp_ps_mask(a, b, _CMP_GE_OS);
1990 __mmask8 test_mm_cmp_ps_mask_gt_os(__m128 a, __m128 b) {
1991 // CHECK-LABEL: test_mm_cmp_ps_mask_gt_os
1992 // CHECK: fcmp ogt <4 x float> %{{.*}}, %{{.*}}
1993 return _mm_cmp_ps_mask(a, b, _CMP_GT_OS);
1996 __mmask8 test_mm_cmp_ps_mask_true_uq(__m128 a, __m128 b) {
1997 // CHECK-LABEL: test_mm_cmp_ps_mask_true_uq
1998 // CHECK: fcmp true <4 x float> %{{.*}}, %{{.*}}
1999 return _mm_cmp_ps_mask(a, b, _CMP_TRUE_UQ);
2002 __mmask8 test_mm_cmp_ps_mask_eq_os(__m128 a, __m128 b) {
2003 // CHECK-LABEL: test_mm_cmp_ps_mask_eq_os
2004 // CHECK: fcmp oeq <4 x float> %{{.*}}, %{{.*}}
2005 return _mm_cmp_ps_mask(a, b, _CMP_EQ_OS);
2008 __mmask8 test_mm_cmp_ps_mask_lt_oq(__m128 a, __m128 b) {
2009 // CHECK-LABEL: test_mm_cmp_ps_mask_lt_oq
2010 // CHECK: fcmp olt <4 x float> %{{.*}}, %{{.*}}
2011 return _mm_cmp_ps_mask(a, b, _CMP_LT_OQ);
2014 __mmask8 test_mm_cmp_ps_mask_le_oq(__m128 a, __m128 b) {
2015 // CHECK-LABEL: test_mm_cmp_ps_mask_le_oq
2016 // CHECK: fcmp ole <4 x float> %{{.*}}, %{{.*}}
2017 return _mm_cmp_ps_mask(a, b, _CMP_LE_OQ);
2020 __mmask8 test_mm_cmp_ps_mask_unord_s(__m128 a, __m128 b) {
2021 // CHECK-LABEL: test_mm_cmp_ps_mask_unord_s
2022 // CHECK: fcmp uno <4 x float> %{{.*}}, %{{.*}}
2023 return _mm_cmp_ps_mask(a, b, _CMP_UNORD_S);
2026 __mmask8 test_mm_cmp_ps_mask_neq_us(__m128 a, __m128 b) {
2027 // CHECK-LABEL: test_mm_cmp_ps_mask_neq_us
2028 // CHECK: fcmp une <4 x float> %{{.*}}, %{{.*}}
2029 return _mm_cmp_ps_mask(a, b, _CMP_NEQ_US);
2032 __mmask8 test_mm_cmp_ps_mask_nlt_uq(__m128 a, __m128 b) {
2033 // CHECK-LABEL: test_mm_cmp_ps_mask_nlt_uq
2034 // CHECK: fcmp uge <4 x float> %{{.*}}, %{{.*}}
2035 return _mm_cmp_ps_mask(a, b, _CMP_NLT_UQ);
2038 __mmask8 test_mm_cmp_ps_mask_nle_uq(__m128 a, __m128 b) {
2039 // CHECK-LABEL: test_mm_cmp_ps_mask_nle_uq
2040 // CHECK: fcmp ugt <4 x float> %{{.*}}, %{{.*}}
2041 return _mm_cmp_ps_mask(a, b, _CMP_NLE_UQ);
2044 __mmask8 test_mm_cmp_ps_mask_ord_s(__m128 a, __m128 b) {
2045 // CHECK-LABEL: test_mm_cmp_ps_mask_ord_s
2046 // CHECK: fcmp ord <4 x float> %{{.*}}, %{{.*}}
2047 return _mm_cmp_ps_mask(a, b, _CMP_ORD_S);
2050 __mmask8 test_mm_cmp_ps_mask_eq_us(__m128 a, __m128 b) {
2051 // CHECK-LABEL: test_mm_cmp_ps_mask_eq_us
2052 // CHECK: fcmp ueq <4 x float> %{{.*}}, %{{.*}}
2053 return _mm_cmp_ps_mask(a, b, _CMP_EQ_US);
2056 __mmask8 test_mm_cmp_ps_mask_nge_uq(__m128 a, __m128 b) {
2057 // CHECK-LABEL: test_mm_cmp_ps_mask_nge_uq
2058 // CHECK: fcmp ult <4 x float> %{{.*}}, %{{.*}}
2059 return _mm_cmp_ps_mask(a, b, _CMP_NGE_UQ);
2062 __mmask8 test_mm_cmp_ps_mask_ngt_uq(__m128 a, __m128 b) {
2063 // CHECK-LABEL: test_mm_cmp_ps_mask_ngt_uq
2064 // CHECK: fcmp ule <4 x float> %{{.*}}, %{{.*}}
2065 return _mm_cmp_ps_mask(a, b, _CMP_NGT_UQ);
2068 __mmask8 test_mm_cmp_ps_mask_false_os(__m128 a, __m128 b) {
2069 // CHECK-LABEL: test_mm_cmp_ps_mask_false_os
2070 // CHECK: fcmp false <4 x float> %{{.*}}, %{{.*}}
2071 return _mm_cmp_ps_mask(a, b, _CMP_FALSE_OS);
2074 __mmask8 test_mm_cmp_ps_mask_neq_os(__m128 a, __m128 b) {
2075 // CHECK-LABEL: test_mm_cmp_ps_mask_neq_os
2076 // CHECK: fcmp one <4 x float> %{{.*}}, %{{.*}}
2077 return _mm_cmp_ps_mask(a, b, _CMP_NEQ_OS);
2080 __mmask8 test_mm_cmp_ps_mask_ge_oq(__m128 a, __m128 b) {
2081 // CHECK-LABEL: test_mm_cmp_ps_mask_ge_oq
2082 // CHECK: fcmp oge <4 x float> %{{.*}}, %{{.*}}
2083 return _mm_cmp_ps_mask(a, b, _CMP_GE_OQ);
2086 __mmask8 test_mm_cmp_ps_mask_gt_oq(__m128 a, __m128 b) {
2087 // CHECK-LABEL: test_mm_cmp_ps_mask_gt_oq
2088 // CHECK: fcmp ogt <4 x float> %{{.*}}, %{{.*}}
2089 return _mm_cmp_ps_mask(a, b, _CMP_GT_OQ);
2092 __mmask8 test_mm_cmp_ps_mask_true_us(__m128 a, __m128 b) {
2093 // CHECK-LABEL: test_mm_cmp_ps_mask_true_us
2094 // CHECK: fcmp true <4 x float> %{{.*}}, %{{.*}}
2095 return _mm_cmp_ps_mask(a, b, _CMP_TRUE_US);
2098 __mmask8 test_mm_mask_cmp_ps_mask_eq_oq(__mmask8 m, __m128 a, __m128 b) {
2099 // CHECK-LABEL: @test_mm_mask_cmp_ps_mask_eq_oq
2100 // CHECK: [[CMP:%.*]] = fcmp oeq <4 x float> %{{.*}}, %{{.*}}
2101 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2102 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OQ);
2105 __mmask8 test_mm_mask_cmp_ps_mask_lt_os(__mmask8 m, __m128 a, __m128 b) {
2106 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_lt_os
2107 // CHECK: [[CMP:%.*]] = fcmp olt <4 x float> %{{.*}}, %{{.*}}
2108 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2109 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_LT_OS);
2112 __mmask8 test_mm_mask_cmp_ps_mask_le_os(__mmask8 m, __m128 a, __m128 b) {
2113 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_le_os
2114 // CHECK: [[CMP:%.*]] = fcmp ole <4 x float> %{{.*}}, %{{.*}}
2115 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2116 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_LE_OS);
2119 __mmask8 test_mm_mask_cmp_ps_mask_unord_q(__mmask8 m, __m128 a, __m128 b) {
2120 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_unord_q
2121 // CHECK: [[CMP:%.*]] = fcmp uno <4 x float> %{{.*}}, %{{.*}}
2122 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2123 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_Q);
2126 __mmask8 test_mm_mask_cmp_ps_mask_neq_uq(__mmask8 m, __m128 a, __m128 b) {
2127 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_neq_uq
2128 // CHECK: [[CMP:%.*]] = fcmp une <4 x float> %{{.*}}, %{{.*}}
2129 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2130 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_UQ);
2133 __mmask8 test_mm_mask_cmp_ps_mask_nlt_us(__mmask8 m, __m128 a, __m128 b) {
2134 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nlt_us
2135 // CHECK: [[CMP:%.*]] = fcmp uge <4 x float> %{{.*}}, %{{.*}}
2136 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2137 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NLT_US);
2140 __mmask8 test_mm_mask_cmp_ps_mask_nle_us(__mmask8 m, __m128 a, __m128 b) {
2141 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nle_us
2142 // CHECK: [[CMP:%.*]] = fcmp ugt <4 x float> %{{.*}}, %{{.*}}
2143 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2144 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NLE_US);
2147 __mmask8 test_mm_mask_cmp_ps_mask_ord_q(__mmask8 m, __m128 a, __m128 b) {
2148 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ord_q
2149 // CHECK: [[CMP:%.*]] = fcmp ord <4 x float> %{{.*}}, %{{.*}}
2150 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2151 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_ORD_Q);
2154 __mmask8 test_mm_mask_cmp_ps_mask_eq_uq(__mmask8 m, __m128 a, __m128 b) {
2155 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_eq_uq
2156 // CHECK: [[CMP:%.*]] = fcmp ueq <4 x float> %{{.*}}, %{{.*}}
2157 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2158 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_EQ_UQ);
2161 __mmask8 test_mm_mask_cmp_ps_mask_nge_us(__mmask8 m, __m128 a, __m128 b) {
2162 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nge_us
2163 // CHECK: [[CMP:%.*]] = fcmp ult <4 x float> %{{.*}}, %{{.*}}
2164 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2165 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NGE_US);
2168 __mmask8 test_mm_mask_cmp_ps_mask_ngt_us(__mmask8 m, __m128 a, __m128 b) {
2169 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ngt_us
2170 // CHECK: [[CMP:%.*]] = fcmp ule <4 x float> %{{.*}}, %{{.*}}
2171 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2172 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NGT_US);
2175 __mmask8 test_mm_mask_cmp_ps_mask_false_oq(__mmask8 m, __m128 a, __m128 b) {
2176 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_false_oq
2177 // CHECK: [[CMP:%.*]] = fcmp false <4 x float> %{{.*}}, %{{.*}}
2178 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2179 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OQ);
2182 __mmask8 test_mm_mask_cmp_ps_mask_neq_oq(__mmask8 m, __m128 a, __m128 b) {
2183 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_neq_oq
2184 // CHECK: [[CMP:%.*]] = fcmp one <4 x float> %{{.*}}, %{{.*}}
2185 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2186 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OQ);
2189 __mmask8 test_mm_mask_cmp_ps_mask_ge_os(__mmask8 m, __m128 a, __m128 b) {
2190 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ge_os
2191 // CHECK: [[CMP:%.*]] = fcmp oge <4 x float> %{{.*}}, %{{.*}}
2192 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2193 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_GE_OS);
2196 __mmask8 test_mm_mask_cmp_ps_mask_gt_os(__mmask8 m, __m128 a, __m128 b) {
2197 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_gt_os
2198 // CHECK: [[CMP:%.*]] = fcmp ogt <4 x float> %{{.*}}, %{{.*}}
2199 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2200 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_GT_OS);
2203 __mmask8 test_mm_mask_cmp_ps_mask_true_uq(__mmask8 m, __m128 a, __m128 b) {
2204 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_true_uq
2205 // CHECK: [[CMP:%.*]] = fcmp true <4 x float> %{{.*}}, %{{.*}}
2206 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2207 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_UQ);
2210 __mmask8 test_mm_mask_cmp_ps_mask_eq_os(__mmask8 m, __m128 a, __m128 b) {
2211 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_eq_os
2212 // CHECK: [[CMP:%.*]] = fcmp oeq <4 x float> %{{.*}}, %{{.*}}
2213 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2214 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OS);
2217 __mmask8 test_mm_mask_cmp_ps_mask_lt_oq(__mmask8 m, __m128 a, __m128 b) {
2218 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_lt_oq
2219 // CHECK: [[CMP:%.*]] = fcmp olt <4 x float> %{{.*}}, %{{.*}}
2220 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2221 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_LT_OQ);
2224 __mmask8 test_mm_mask_cmp_ps_mask_le_oq(__mmask8 m, __m128 a, __m128 b) {
2225 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_le_oq
2226 // CHECK: [[CMP:%.*]] = fcmp ole <4 x float> %{{.*}}, %{{.*}}
2227 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2228 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_LE_OQ);
2231 __mmask8 test_mm_mask_cmp_ps_mask_unord_s(__mmask8 m, __m128 a, __m128 b) {
2232 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_unord_s
2233 // CHECK: [[CMP:%.*]] = fcmp uno <4 x float> %{{.*}}, %{{.*}}
2234 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2235 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_S);
2238 __mmask8 test_mm_mask_cmp_ps_mask_neq_us(__mmask8 m, __m128 a, __m128 b) {
2239 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_neq_us
2240 // CHECK: [[CMP:%.*]] = fcmp une <4 x float> %{{.*}}, %{{.*}}
2241 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2242 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_US);
2245 __mmask8 test_mm_mask_cmp_ps_mask_nlt_uq(__mmask8 m, __m128 a, __m128 b) {
2246 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nlt_uq
2247 // CHECK: [[CMP:%.*]] = fcmp uge <4 x float> %{{.*}}, %{{.*}}
2248 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2249 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NLT_UQ);
2252 __mmask8 test_mm_mask_cmp_ps_mask_nle_uq(__mmask8 m, __m128 a, __m128 b) {
2253 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nle_uq
2254 // CHECK: [[CMP:%.*]] = fcmp ugt <4 x float> %{{.*}}, %{{.*}}
2255 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2256 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NLE_UQ);
2259 __mmask8 test_mm_mask_cmp_ps_mask_ord_s(__mmask8 m, __m128 a, __m128 b) {
2260 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ord_s
2261 // CHECK: [[CMP:%.*]] = fcmp ord <4 x float> %{{.*}}, %{{.*}}
2262 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2263 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_ORD_S);
2266 __mmask8 test_mm_mask_cmp_ps_mask_eq_us(__mmask8 m, __m128 a, __m128 b) {
2267 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_eq_us
2268 // CHECK: [[CMP:%.*]] = fcmp ueq <4 x float> %{{.*}}, %{{.*}}
2269 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2270 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_EQ_US);
2273 __mmask8 test_mm_mask_cmp_ps_mask_nge_uq(__mmask8 m, __m128 a, __m128 b) {
2274 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nge_uq
2275 // CHECK: [[CMP:%.*]] = fcmp ult <4 x float> %{{.*}}, %{{.*}}
2276 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2277 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NGE_UQ);
2280 __mmask8 test_mm_mask_cmp_ps_mask_ngt_uq(__mmask8 m, __m128 a, __m128 b) {
2281 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ngt_uq
2282 // CHECK: [[CMP:%.*]] = fcmp ule <4 x float> %{{.*}}, %{{.*}}
2283 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2284 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NGT_UQ);
2287 __mmask8 test_mm_mask_cmp_ps_mask_false_os(__mmask8 m, __m128 a, __m128 b) {
2288 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_false_os
2289 // CHECK: [[CMP:%.*]] = fcmp false <4 x float> %{{.*}}, %{{.*}}
2290 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2291 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OS);
2294 __mmask8 test_mm_mask_cmp_ps_mask_neq_os(__mmask8 m, __m128 a, __m128 b) {
2295 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_neq_os
2296 // CHECK: [[CMP:%.*]] = fcmp one <4 x float> %{{.*}}, %{{.*}}
2297 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2298 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OS);
2301 __mmask8 test_mm_mask_cmp_ps_mask_ge_oq(__mmask8 m, __m128 a, __m128 b) {
2302 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ge_oq
2303 // CHECK: [[CMP:%.*]] = fcmp oge <4 x float> %{{.*}}, %{{.*}}
2304 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2305 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_GE_OQ);
2308 __mmask8 test_mm_mask_cmp_ps_mask_gt_oq(__mmask8 m, __m128 a, __m128 b) {
2309 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_gt_oq
2310 // CHECK: [[CMP:%.*]] = fcmp ogt <4 x float> %{{.*}}, %{{.*}}
2311 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2312 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_GT_OQ);
2315 __mmask8 test_mm_mask_cmp_ps_mask_true_us(__mmask8 m, __m128 a, __m128 b) {
2316 // CHECK-LABEL: test_mm_mask_cmp_ps_mask_true_us
2317 // CHECK: [[CMP:%.*]] = fcmp true <4 x float> %{{.*}}, %{{.*}}
2318 // CHECK: and <4 x i1> [[CMP]], {{.*}}
2319 return _mm_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_US);
2322 __mmask8 test_mm_cmp_pd_mask_eq_oq(__m128d a, __m128d b) {
2323 // CHECK-LABEL: @test_mm_cmp_pd_mask_eq_oq
2324 // CHECK: fcmp oeq <2 x double> %{{.*}}, %{{.*}}
2325 return _mm_cmp_pd_mask(a, b, _CMP_EQ_OQ);
2328 __mmask8 test_mm_cmp_pd_mask_lt_os(__m128d a, __m128d b) {
2329 // CHECK-LABEL: test_mm_cmp_pd_mask_lt_os
2330 // CHECK: fcmp olt <2 x double> %{{.*}}, %{{.*}}
2331 return _mm_cmp_pd_mask(a, b, _CMP_LT_OS);
2334 __mmask8 test_mm_cmp_pd_mask_le_os(__m128d a, __m128d b) {
2335 // CHECK-LABEL: test_mm_cmp_pd_mask_le_os
2336 // CHECK: fcmp ole <2 x double> %{{.*}}, %{{.*}}
2337 return _mm_cmp_pd_mask(a, b, _CMP_LE_OS);
2340 __mmask8 test_mm_cmp_pd_mask_unord_q(__m128d a, __m128d b) {
2341 // CHECK-LABEL: test_mm_cmp_pd_mask_unord_q
2342 // CHECK: fcmp uno <2 x double> %{{.*}}, %{{.*}}
2343 return _mm_cmp_pd_mask(a, b, _CMP_UNORD_Q);
2346 __mmask8 test_mm_cmp_pd_mask_neq_uq(__m128d a, __m128d b) {
2347 // CHECK-LABEL: test_mm_cmp_pd_mask_neq_uq
2348 // CHECK: fcmp une <2 x double> %{{.*}}, %{{.*}}
2349 return _mm_cmp_pd_mask(a, b, _CMP_NEQ_UQ);
2352 __mmask8 test_mm_cmp_pd_mask_nlt_us(__m128d a, __m128d b) {
2353 // CHECK-LABEL: test_mm_cmp_pd_mask_nlt_us
2354 // CHECK: fcmp uge <2 x double> %{{.*}}, %{{.*}}
2355 return _mm_cmp_pd_mask(a, b, _CMP_NLT_US);
2358 __mmask8 test_mm_cmp_pd_mask_nle_us(__m128d a, __m128d b) {
2359 // CHECK-LABEL: test_mm_cmp_pd_mask_nle_us
2360 // CHECK: fcmp ugt <2 x double> %{{.*}}, %{{.*}}
2361 return _mm_cmp_pd_mask(a, b, _CMP_NLE_US);
2364 __mmask8 test_mm_cmp_pd_mask_ord_q(__m128d a, __m128d b) {
2365 // CHECK-LABEL: test_mm_cmp_pd_mask_ord_q
2366 // CHECK: fcmp ord <2 x double> %{{.*}}, %{{.*}}
2367 return _mm_cmp_pd_mask(a, b, _CMP_ORD_Q);
2370 __mmask8 test_mm_cmp_pd_mask_eq_uq(__m128d a, __m128d b) {
2371 // CHECK-LABEL: test_mm_cmp_pd_mask_eq_uq
2372 // CHECK: fcmp ueq <2 x double> %{{.*}}, %{{.*}}
2373 return _mm_cmp_pd_mask(a, b, _CMP_EQ_UQ);
2376 __mmask8 test_mm_cmp_pd_mask_nge_us(__m128d a, __m128d b) {
2377 // CHECK-LABEL: test_mm_cmp_pd_mask_nge_us
2378 // CHECK: fcmp ult <2 x double> %{{.*}}, %{{.*}}
2379 return _mm_cmp_pd_mask(a, b, _CMP_NGE_US);
2382 __mmask8 test_mm_cmp_pd_mask_ngt_us(__m128d a, __m128d b) {
2383 // CHECK-LABEL: test_mm_cmp_pd_mask_ngt_us
2384 // CHECK: fcmp ule <2 x double> %{{.*}}, %{{.*}}
2385 return _mm_cmp_pd_mask(a, b, _CMP_NGT_US);
2388 __mmask8 test_mm_cmp_pd_mask_false_oq(__m128d a, __m128d b) {
2389 // CHECK-LABEL: test_mm_cmp_pd_mask_false_oq
2390 // CHECK: fcmp false <2 x double> %{{.*}}, %{{.*}}
2391 return _mm_cmp_pd_mask(a, b, _CMP_FALSE_OQ);
2394 __mmask8 test_mm_cmp_pd_mask_neq_oq(__m128d a, __m128d b) {
2395 // CHECK-LABEL: test_mm_cmp_pd_mask_neq_oq
2396 // CHECK: fcmp one <2 x double> %{{.*}}, %{{.*}}
2397 return _mm_cmp_pd_mask(a, b, _CMP_NEQ_OQ);
2400 __mmask8 test_mm_cmp_pd_mask_ge_os(__m128d a, __m128d b) {
2401 // CHECK-LABEL: test_mm_cmp_pd_mask_ge_os
2402 // CHECK: fcmp oge <2 x double> %{{.*}}, %{{.*}}
2403 return _mm_cmp_pd_mask(a, b, _CMP_GE_OS);
2406 __mmask8 test_mm_cmp_pd_mask_gt_os(__m128d a, __m128d b) {
2407 // CHECK-LABEL: test_mm_cmp_pd_mask_gt_os
2408 // CHECK: fcmp ogt <2 x double> %{{.*}}, %{{.*}}
2409 return _mm_cmp_pd_mask(a, b, _CMP_GT_OS);
2412 __mmask8 test_mm_cmp_pd_mask_true_uq(__m128d a, __m128d b) {
2413 // CHECK-LABEL: test_mm_cmp_pd_mask_true_uq
2414 // CHECK: fcmp true <2 x double> %{{.*}}, %{{.*}}
2415 return _mm_cmp_pd_mask(a, b, _CMP_TRUE_UQ);
2418 __mmask8 test_mm_cmp_pd_mask_eq_os(__m128d a, __m128d b) {
2419 // CHECK-LABEL: test_mm_cmp_pd_mask_eq_os
2420 // CHECK: fcmp oeq <2 x double> %{{.*}}, %{{.*}}
2421 return _mm_cmp_pd_mask(a, b, _CMP_EQ_OS);
2424 __mmask8 test_mm_cmp_pd_mask_lt_oq(__m128d a, __m128d b) {
2425 // CHECK-LABEL: test_mm_cmp_pd_mask_lt_oq
2426 // CHECK: fcmp olt <2 x double> %{{.*}}, %{{.*}}
2427 return _mm_cmp_pd_mask(a, b, _CMP_LT_OQ);
2430 __mmask8 test_mm_cmp_pd_mask_le_oq(__m128d a, __m128d b) {
2431 // CHECK-LABEL: test_mm_cmp_pd_mask_le_oq
2432 // CHECK: fcmp ole <2 x double> %{{.*}}, %{{.*}}
2433 return _mm_cmp_pd_mask(a, b, _CMP_LE_OQ);
2436 __mmask8 test_mm_cmp_pd_mask_unord_s(__m128d a, __m128d b) {
2437 // CHECK-LABEL: test_mm_cmp_pd_mask_unord_s
2438 // CHECK: fcmp uno <2 x double> %{{.*}}, %{{.*}}
2439 return _mm_cmp_pd_mask(a, b, _CMP_UNORD_S);
2442 __mmask8 test_mm_cmp_pd_mask_neq_us(__m128d a, __m128d b) {
2443 // CHECK-LABEL: test_mm_cmp_pd_mask_neq_us
2444 // CHECK: fcmp une <2 x double> %{{.*}}, %{{.*}}
2445 return _mm_cmp_pd_mask(a, b, _CMP_NEQ_US);
2448 __mmask8 test_mm_cmp_pd_mask_nlt_uq(__m128d a, __m128d b) {
2449 // CHECK-LABEL: test_mm_cmp_pd_mask_nlt_uq
2450 // CHECK: fcmp uge <2 x double> %{{.*}}, %{{.*}}
2451 return _mm_cmp_pd_mask(a, b, _CMP_NLT_UQ);
2454 __mmask8 test_mm_cmp_pd_mask_nle_uq(__m128d a, __m128d b) {
2455 // CHECK-LABEL: test_mm_cmp_pd_mask_nle_uq
2456 // CHECK: fcmp ugt <2 x double> %{{.*}}, %{{.*}}
2457 return _mm_cmp_pd_mask(a, b, _CMP_NLE_UQ);
2460 __mmask8 test_mm_cmp_pd_mask_ord_s(__m128d a, __m128d b) {
2461 // CHECK-LABEL: test_mm_cmp_pd_mask_ord_s
2462 // CHECK: fcmp ord <2 x double> %{{.*}}, %{{.*}}
2463 return _mm_cmp_pd_mask(a, b, _CMP_ORD_S);
2466 __mmask8 test_mm_cmp_pd_mask_eq_us(__m128d a, __m128d b) {
2467 // CHECK-LABEL: test_mm_cmp_pd_mask_eq_us
2468 // CHECK: fcmp ueq <2 x double> %{{.*}}, %{{.*}}
2469 return _mm_cmp_pd_mask(a, b, _CMP_EQ_US);
2472 __mmask8 test_mm_cmp_pd_mask_nge_uq(__m128d a, __m128d b) {
2473 // CHECK-LABEL: test_mm_cmp_pd_mask_nge_uq
2474 // CHECK: fcmp ult <2 x double> %{{.*}}, %{{.*}}
2475 return _mm_cmp_pd_mask(a, b, _CMP_NGE_UQ);
2478 __mmask8 test_mm_cmp_pd_mask_ngt_uq(__m128d a, __m128d b) {
2479 // CHECK-LABEL: test_mm_cmp_pd_mask_ngt_uq
2480 // CHECK: fcmp ule <2 x double> %{{.*}}, %{{.*}}
2481 return _mm_cmp_pd_mask(a, b, _CMP_NGT_UQ);
2484 __mmask8 test_mm_cmp_pd_mask_false_os(__m128d a, __m128d b) {
2485 // CHECK-LABEL: test_mm_cmp_pd_mask_false_os
2486 // CHECK: fcmp false <2 x double> %{{.*}}, %{{.*}}
2487 return _mm_cmp_pd_mask(a, b, _CMP_FALSE_OS);
2490 __mmask8 test_mm_cmp_pd_mask_neq_os(__m128d a, __m128d b) {
2491 // CHECK-LABEL: test_mm_cmp_pd_mask_neq_os
2492 // CHECK: fcmp one <2 x double> %{{.*}}, %{{.*}}
2493 return _mm_cmp_pd_mask(a, b, _CMP_NEQ_OS);
2496 __mmask8 test_mm_cmp_pd_mask_ge_oq(__m128d a, __m128d b) {
2497 // CHECK-LABEL: test_mm_cmp_pd_mask_ge_oq
2498 // CHECK: fcmp oge <2 x double> %{{.*}}, %{{.*}}
2499 return _mm_cmp_pd_mask(a, b, _CMP_GE_OQ);
2502 __mmask8 test_mm_cmp_pd_mask_gt_oq(__m128d a, __m128d b) {
2503 // CHECK-LABEL: test_mm_cmp_pd_mask_gt_oq
2504 // CHECK: fcmp ogt <2 x double> %{{.*}}, %{{.*}}
2505 return _mm_cmp_pd_mask(a, b, _CMP_GT_OQ);
2508 __mmask8 test_mm_cmp_pd_mask_true_us(__m128d a, __m128d b) {
2509 // CHECK-LABEL: test_mm_cmp_pd_mask_true_us
2510 // CHECK: fcmp true <2 x double> %{{.*}}, %{{.*}}
2511 return _mm_cmp_pd_mask(a, b, _CMP_TRUE_US);
2514 __mmask8 test_mm_mask_cmp_pd_mask_eq_oq(__mmask8 m, __m128d a, __m128d b) {
2515 // CHECK-LABEL: @test_mm_mask_cmp_pd_mask_eq_oq
2516 // CHECK: [[CMP:%.*]] = fcmp oeq <2 x double> %{{.*}}, %{{.*}}
2517 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2518 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OQ);
2521 __mmask8 test_mm_mask_cmp_pd_mask_lt_os(__mmask8 m, __m128d a, __m128d b) {
2522 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_lt_os
2523 // CHECK: [[CMP:%.*]] = fcmp olt <2 x double> %{{.*}}, %{{.*}}
2524 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2525 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_LT_OS);
2528 __mmask8 test_mm_mask_cmp_pd_mask_le_os(__mmask8 m, __m128d a, __m128d b) {
2529 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_le_os
2530 // CHECK: [[CMP:%.*]] = fcmp ole <2 x double> %{{.*}}, %{{.*}}
2531 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2532 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_LE_OS);
2535 __mmask8 test_mm_mask_cmp_pd_mask_unord_q(__mmask8 m, __m128d a, __m128d b) {
2536 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_unord_q
2537 // CHECK: [[CMP:%.*]] = fcmp uno <2 x double> %{{.*}}, %{{.*}}
2538 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2539 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_Q);
2542 __mmask8 test_mm_mask_cmp_pd_mask_neq_uq(__mmask8 m, __m128d a, __m128d b) {
2543 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_neq_uq
2544 // CHECK: [[CMP:%.*]] = fcmp une <2 x double> %{{.*}}, %{{.*}}
2545 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2546 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_UQ);
2549 __mmask8 test_mm_mask_cmp_pd_mask_nlt_us(__mmask8 m, __m128d a, __m128d b) {
2550 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nlt_us
2551 // CHECK: [[CMP:%.*]] = fcmp uge <2 x double> %{{.*}}, %{{.*}}
2552 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2553 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NLT_US);
2556 __mmask8 test_mm_mask_cmp_pd_mask_nle_us(__mmask8 m, __m128d a, __m128d b) {
2557 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nle_us
2558 // CHECK: [[CMP:%.*]] = fcmp ugt <2 x double> %{{.*}}, %{{.*}}
2559 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2560 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NLE_US);
2563 __mmask8 test_mm_mask_cmp_pd_mask_ord_q(__mmask8 m, __m128d a, __m128d b) {
2564 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ord_q
2565 // CHECK: [[CMP:%.*]] = fcmp ord <2 x double> %{{.*}}, %{{.*}}
2566 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2567 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_ORD_Q);
2570 __mmask8 test_mm_mask_cmp_pd_mask_eq_uq(__mmask8 m, __m128d a, __m128d b) {
2571 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_eq_uq
2572 // CHECK: [[CMP:%.*]] = fcmp ueq <2 x double> %{{.*}}, %{{.*}}
2573 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2574 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_EQ_UQ);
2577 __mmask8 test_mm_mask_cmp_pd_mask_nge_us(__mmask8 m, __m128d a, __m128d b) {
2578 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nge_us
2579 // CHECK: [[CMP:%.*]] = fcmp ult <2 x double> %{{.*}}, %{{.*}}
2580 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2581 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NGE_US);
2584 __mmask8 test_mm_mask_cmp_pd_mask_ngt_us(__mmask8 m, __m128d a, __m128d b) {
2585 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ngt_us
2586 // CHECK: [[CMP:%.*]] = fcmp ule <2 x double> %{{.*}}, %{{.*}}
2587 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2588 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NGT_US);
2591 __mmask8 test_mm_mask_cmp_pd_mask_false_oq(__mmask8 m, __m128d a, __m128d b) {
2592 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_false_oq
2593 // CHECK: [[CMP:%.*]] = fcmp false <2 x double> %{{.*}}, %{{.*}}
2594 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2595 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OQ);
2598 __mmask8 test_mm_mask_cmp_pd_mask_neq_oq(__mmask8 m, __m128d a, __m128d b) {
2599 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_neq_oq
2600 // CHECK: [[CMP:%.*]] = fcmp one <2 x double> %{{.*}}, %{{.*}}
2601 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2602 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OQ);
2605 __mmask8 test_mm_mask_cmp_pd_mask_ge_os(__mmask8 m, __m128d a, __m128d b) {
2606 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ge_os
2607 // CHECK: [[CMP:%.*]] = fcmp oge <2 x double> %{{.*}}, %{{.*}}
2608 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2609 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_GE_OS);
2612 __mmask8 test_mm_mask_cmp_pd_mask_gt_os(__mmask8 m, __m128d a, __m128d b) {
2613 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_gt_os
2614 // CHECK: [[CMP:%.*]] = fcmp ogt <2 x double> %{{.*}}, %{{.*}}
2615 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2616 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_GT_OS);
2619 __mmask8 test_mm_mask_cmp_pd_mask_true_uq(__mmask8 m, __m128d a, __m128d b) {
2620 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_true_uq
2621 // CHECK: [[CMP:%.*]] = fcmp true <2 x double> %{{.*}}, %{{.*}}
2622 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2623 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_UQ);
2626 __mmask8 test_mm_mask_cmp_pd_mask_eq_os(__mmask8 m, __m128d a, __m128d b) {
2627 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_eq_os
2628 // CHECK: [[CMP:%.*]] = fcmp oeq <2 x double> %{{.*}}, %{{.*}}
2629 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2630 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OS);
2633 __mmask8 test_mm_mask_cmp_pd_mask_lt_oq(__mmask8 m, __m128d a, __m128d b) {
2634 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_lt_oq
2635 // CHECK: [[CMP:%.*]] = fcmp olt <2 x double> %{{.*}}, %{{.*}}
2636 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2637 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_LT_OQ);
2640 __mmask8 test_mm_mask_cmp_pd_mask_le_oq(__mmask8 m, __m128d a, __m128d b) {
2641 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_le_oq
2642 // CHECK: [[CMP:%.*]] = fcmp ole <2 x double> %{{.*}}, %{{.*}}
2643 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2644 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_LE_OQ);
2647 __mmask8 test_mm_mask_cmp_pd_mask_unord_s(__mmask8 m, __m128d a, __m128d b) {
2648 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_unord_s
2649 // CHECK: [[CMP:%.*]] = fcmp uno <2 x double> %{{.*}}, %{{.*}}
2650 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2651 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_S);
2654 __mmask8 test_mm_mask_cmp_pd_mask_neq_us(__mmask8 m, __m128d a, __m128d b) {
2655 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_neq_us
2656 // CHECK: [[CMP:%.*]] = fcmp une <2 x double> %{{.*}}, %{{.*}}
2657 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2658 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_US);
2661 __mmask8 test_mm_mask_cmp_pd_mask_nlt_uq(__mmask8 m, __m128d a, __m128d b) {
2662 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nlt_uq
2663 // CHECK: [[CMP:%.*]] = fcmp uge <2 x double> %{{.*}}, %{{.*}}
2664 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2665 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NLT_UQ);
2668 __mmask8 test_mm_mask_cmp_pd_mask_nle_uq(__mmask8 m, __m128d a, __m128d b) {
2669 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nle_uq
2670 // CHECK: [[CMP:%.*]] = fcmp ugt <2 x double> %{{.*}}, %{{.*}}
2671 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2672 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NLE_UQ);
2675 __mmask8 test_mm_mask_cmp_pd_mask_ord_s(__mmask8 m, __m128d a, __m128d b) {
2676 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ord_s
2677 // CHECK: [[CMP:%.*]] = fcmp ord <2 x double> %{{.*}}, %{{.*}}
2678 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2679 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_ORD_S);
2682 __mmask8 test_mm_mask_cmp_pd_mask_eq_us(__mmask8 m, __m128d a, __m128d b) {
2683 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_eq_us
2684 // CHECK: [[CMP:%.*]] = fcmp ueq <2 x double> %{{.*}}, %{{.*}}
2685 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2686 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_EQ_US);
2689 __mmask8 test_mm_mask_cmp_pd_mask_nge_uq(__mmask8 m, __m128d a, __m128d b) {
2690 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nge_uq
2691 // CHECK: [[CMP:%.*]] = fcmp ult <2 x double> %{{.*}}, %{{.*}}
2692 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2693 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NGE_UQ);
2696 __mmask8 test_mm_mask_cmp_pd_mask_ngt_uq(__mmask8 m, __m128d a, __m128d b) {
2697 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ngt_uq
2698 // CHECK: [[CMP:%.*]] = fcmp ule <2 x double> %{{.*}}, %{{.*}}
2699 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2700 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NGT_UQ);
2703 __mmask8 test_mm_mask_cmp_pd_mask_false_os(__mmask8 m, __m128d a, __m128d b) {
2704 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_false_os
2705 // CHECK: [[CMP:%.*]] = fcmp false <2 x double> %{{.*}}, %{{.*}}
2706 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2707 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OS);
2710 __mmask8 test_mm_mask_cmp_pd_mask_neq_os(__mmask8 m, __m128d a, __m128d b) {
2711 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_neq_os
2712 // CHECK: [[CMP:%.*]] = fcmp one <2 x double> %{{.*}}, %{{.*}}
2713 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2714 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OS);
2717 __mmask8 test_mm_mask_cmp_pd_mask_ge_oq(__mmask8 m, __m128d a, __m128d b) {
2718 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ge_oq
2719 // CHECK: [[CMP:%.*]] = fcmp oge <2 x double> %{{.*}}, %{{.*}}
2720 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2721 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_GE_OQ);
2724 __mmask8 test_mm_mask_cmp_pd_mask_gt_oq(__mmask8 m, __m128d a, __m128d b) {
2725 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_gt_oq
2726 // CHECK: [[CMP:%.*]] = fcmp ogt <2 x double> %{{.*}}, %{{.*}}
2727 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2728 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_GT_OQ);
2731 __mmask8 test_mm_mask_cmp_pd_mask_true_us(__mmask8 m, __m128d a, __m128d b) {
2732 // CHECK-LABEL: test_mm_mask_cmp_pd_mask_true_us
2733 // CHECK: [[CMP:%.*]] = fcmp true <2 x double> %{{.*}}, %{{.*}}
2734 // CHECK: and <2 x i1> [[CMP]], {{.*}}
2735 return _mm_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_US);
2738 __m128d test_mm_mask_fmadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C) {
2739 // CHECK-LABEL: @test_mm_mask_fmadd_pd
2740 // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
2741 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2742 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
2743 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
2744 return _mm_mask_fmadd_pd(__A, __U, __B, __C);
2747 __m128d test_mm_mask_fmsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C) {
2748 // CHECK-LABEL: @test_mm_mask_fmsub_pd
2749 // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2750 // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
2751 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2752 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
2753 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
2754 return _mm_mask_fmsub_pd(__A, __U, __B, __C);
2757 __m128d test_mm_mask3_fmadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U) {
2758 // CHECK-LABEL: @test_mm_mask3_fmadd_pd
2759 // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
2760 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2761 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
2762 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
2763 return _mm_mask3_fmadd_pd(__A, __B, __C, __U);
2766 __m128d test_mm_mask3_fnmadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U) {
2767 // CHECK-LABEL: @test_mm_mask3_fnmadd_pd
2768 // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2769 // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
2770 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2771 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
2772 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
2773 return _mm_mask3_fnmadd_pd(__A, __B, __C, __U);
2776 __m128d test_mm_maskz_fmadd_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C) {
2777 // CHECK-LABEL: @test_mm_maskz_fmadd_pd
2778 // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
2779 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2780 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
2781 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
2782 return _mm_maskz_fmadd_pd(__U, __A, __B, __C);
2785 __m128d test_mm_maskz_fmsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C) {
2786 // CHECK-LABEL: @test_mm_maskz_fmsub_pd
2787 // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2788 // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
2789 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2790 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
2791 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
2792 return _mm_maskz_fmsub_pd(__U, __A, __B, __C);
2795 __m128d test_mm_maskz_fnmadd_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C) {
2796 // CHECK-LABEL: @test_mm_maskz_fnmadd_pd
2797 // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2798 // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
2799 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2800 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
2801 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
2802 return _mm_maskz_fnmadd_pd(__U, __A, __B, __C);
2805 __m128d test_mm_maskz_fnmsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C) {
2806 // CHECK-LABEL: @test_mm_maskz_fnmsub_pd
2807 // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2808 // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2809 // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
2810 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2811 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
2812 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
2813 return _mm_maskz_fnmsub_pd(__U, __A, __B, __C);
2816 __m256d test_mm256_mask_fmadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) {
2817 // CHECK-LABEL: @test_mm256_mask_fmadd_pd
2818 // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
2819 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2820 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2821 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2822 return _mm256_mask_fmadd_pd(__A, __U, __B, __C);
2825 __m256d test_mm256_mask_fmsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) {
2826 // CHECK-LABEL: @test_mm256_mask_fmsub_pd
2827 // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2828 // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
2829 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2830 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2831 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2832 return _mm256_mask_fmsub_pd(__A, __U, __B, __C);
2835 __m256d test_mm256_mask3_fmadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) {
2836 // CHECK-LABEL: @test_mm256_mask3_fmadd_pd
2837 // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
2838 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2839 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2840 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2841 return _mm256_mask3_fmadd_pd(__A, __B, __C, __U);
2844 __m256d test_mm256_mask3_fnmadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) {
2845 // CHECK-LABEL: @test_mm256_mask3_fnmadd_pd
2846 // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2847 // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
2848 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2849 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2850 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2851 return _mm256_mask3_fnmadd_pd(__A, __B, __C, __U);
2854 __m256d test_mm256_maskz_fmadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) {
2855 // CHECK-LABEL: @test_mm256_maskz_fmadd_pd
2856 // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
2857 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2858 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2859 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2860 return _mm256_maskz_fmadd_pd(__U, __A, __B, __C);
2863 __m256d test_mm256_maskz_fmsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) {
2864 // CHECK-LABEL: @test_mm256_maskz_fmsub_pd
2865 // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2866 // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
2867 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2868 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2869 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2870 return _mm256_maskz_fmsub_pd(__U, __A, __B, __C);
2873 __m256d test_mm256_maskz_fnmadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) {
2874 // CHECK-LABEL: @test_mm256_maskz_fnmadd_pd
2875 // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2876 // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
2877 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2878 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2879 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2880 return _mm256_maskz_fnmadd_pd(__U, __A, __B, __C);
2883 __m256d test_mm256_maskz_fnmsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) {
2884 // CHECK-LABEL: @test_mm256_maskz_fnmsub_pd
2885 // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2886 // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2887 // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
2888 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2889 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2890 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2891 return _mm256_maskz_fnmsub_pd(__U, __A, __B, __C);
2894 __m128 test_mm_mask_fmadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C) {
2895 // CHECK-LABEL: @test_mm_mask_fmadd_ps
2896 // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
2897 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2898 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2899 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
2900 return _mm_mask_fmadd_ps(__A, __U, __B, __C);
2903 __m128 test_mm_mask_fmsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C) {
2904 // CHECK-LABEL: @test_mm_mask_fmsub_ps
2905 // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
2906 // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
2907 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2908 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2909 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
2910 return _mm_mask_fmsub_ps(__A, __U, __B, __C);
2913 __m128 test_mm_mask3_fmadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U) {
2914 // CHECK-LABEL: @test_mm_mask3_fmadd_ps
2915 // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
2916 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2917 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2918 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
2919 return _mm_mask3_fmadd_ps(__A, __B, __C, __U);
2922 __m128 test_mm_mask3_fnmadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U) {
2923 // CHECK-LABEL: @test_mm_mask3_fnmadd_ps
2924 // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
2925 // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
2926 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2927 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2928 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
2929 return _mm_mask3_fnmadd_ps(__A, __B, __C, __U);
2932 __m128 test_mm_maskz_fmadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C) {
2933 // CHECK-LABEL: @test_mm_maskz_fmadd_ps
2934 // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
2935 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2936 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2937 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
2938 return _mm_maskz_fmadd_ps(__U, __A, __B, __C);
2941 __m128 test_mm_maskz_fmsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C) {
2942 // CHECK-LABEL: @test_mm_maskz_fmsub_ps
2943 // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
2944 // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
2945 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2946 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2947 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
2948 return _mm_maskz_fmsub_ps(__U, __A, __B, __C);
2951 __m128 test_mm_maskz_fnmadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C) {
2952 // CHECK-LABEL: @test_mm_maskz_fnmadd_ps
2953 // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
2954 // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
2955 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2956 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2957 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
2958 return _mm_maskz_fnmadd_ps(__U, __A, __B, __C);
2961 __m128 test_mm_maskz_fnmsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C) {
2962 // CHECK-LABEL: @test_mm_maskz_fnmsub_ps
2963 // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
2964 // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
2965 // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
2966 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2967 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
2968 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
2969 return _mm_maskz_fnmsub_ps(__U, __A, __B, __C);
2972 __m256 test_mm256_mask_fmadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) {
2973 // CHECK-LABEL: @test_mm256_mask_fmadd_ps
2974 // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
2975 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2976 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
2977 return _mm256_mask_fmadd_ps(__A, __U, __B, __C);
2980 __m256 test_mm256_mask_fmsub_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) {
2981 // CHECK-LABEL: @test_mm256_mask_fmsub_ps
2982 // CHECK: fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
2983 // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
2984 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2985 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
2986 return _mm256_mask_fmsub_ps(__A, __U, __B, __C);
2989 __m256 test_mm256_mask3_fmadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) {
2990 // CHECK-LABEL: @test_mm256_mask3_fmadd_ps
2991 // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
2992 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
2993 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
2994 return _mm256_mask3_fmadd_ps(__A, __B, __C, __U);
2997 __m256 test_mm256_mask3_fnmadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) {
2998 // CHECK-LABEL: @test_mm256_mask3_fnmadd_ps
2999 // CHECK: fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3000 // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3001 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3002 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3003 return _mm256_mask3_fnmadd_ps(__A, __B, __C, __U);
3006 __m256 test_mm256_maskz_fmadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) {
3007 // CHECK-LABEL: @test_mm256_maskz_fmadd_ps
3008 // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3009 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3010 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3011 return _mm256_maskz_fmadd_ps(__U, __A, __B, __C);
3014 __m256 test_mm256_maskz_fmsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) {
3015 // CHECK-LABEL: @test_mm256_maskz_fmsub_ps
3016 // CHECK: fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3017 // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3018 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3019 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3020 return _mm256_maskz_fmsub_ps(__U, __A, __B, __C);
3023 __m256 test_mm256_maskz_fnmadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) {
3024 // CHECK-LABEL: @test_mm256_maskz_fnmadd_ps
3025 // CHECK: fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3026 // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3027 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3028 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3029 return _mm256_maskz_fnmadd_ps(__U, __A, __B, __C);
3032 __m256 test_mm256_maskz_fnmsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) {
3033 // CHECK-LABEL: @test_mm256_maskz_fnmsub_ps
3034 // CHECK: fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3035 // CHECK: fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3036 // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3037 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3038 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3039 return _mm256_maskz_fnmsub_ps(__U, __A, __B, __C);
3042 __m128d test_mm_mask_fmaddsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C) {
3043 // CHECK-LABEL: @test_mm_mask_fmaddsub_pd
3044 // CHECK: [[ADD:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3045 // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3046 // CHECK: [[SUB:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> [[NEG]]
3047 // CHECK: shufflevector <2 x double> [[SUB]], <2 x double> [[ADD]], <2 x i32> <i32 0, i32 3>
3048 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3049 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3050 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3051 return _mm_mask_fmaddsub_pd(__A, __U, __B, __C);
3054 __m128d test_mm_mask_fmsubadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C) {
3055 // CHECK-LABEL: @test_mm_mask_fmsubadd_pd
3056 // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3057 // CHECK: [[SUB:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> [[NEG]]
3058 // CHECK: [[ADD:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3059 // CHECK: shufflevector <2 x double> [[ADD]], <2 x double> [[SUB]], <2 x i32> <i32 0, i32 3>
3060 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3061 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3062 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3063 return _mm_mask_fmsubadd_pd(__A, __U, __B, __C);
3066 __m128d test_mm_mask3_fmaddsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U) {
3067 // CHECK-LABEL: @test_mm_mask3_fmaddsub_pd
3068 // CHECK: [[ADD:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3069 // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3070 // CHECK: [[SUB:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> [[NEG]]
3071 // CHECK: shufflevector <2 x double> [[SUB]], <2 x double> [[ADD]], <2 x i32> <i32 0, i32 3>
3072 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3073 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3074 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3075 return _mm_mask3_fmaddsub_pd(__A, __B, __C, __U);
3078 __m128d test_mm_maskz_fmaddsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C) {
3079 // CHECK-LABEL: @test_mm_maskz_fmaddsub_pd
3080 // CHECK: [[ADD:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3081 // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3082 // CHECK: [[SUB:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> [[NEG]]
3083 // CHECK: shufflevector <2 x double> [[SUB]], <2 x double> [[ADD]], <2 x i32> <i32 0, i32 3>
3084 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3085 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3086 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3087 return _mm_maskz_fmaddsub_pd(__U, __A, __B, __C);
3090 __m128d test_mm_maskz_fmsubadd_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C) {
3091 // CHECK-LABEL: @test_mm_maskz_fmsubadd_pd
3092 // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3093 // CHECK: [[SUB:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> [[NEG]]
3094 // CHECK: [[ADD:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3095 // CHECK: shufflevector <2 x double> [[ADD]], <2 x double> [[SUB]], <2 x i32> <i32 0, i32 3>
3096 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3097 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3098 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3099 return _mm_maskz_fmsubadd_pd(__U, __A, __B, __C);
3102 __m256d test_mm256_mask_fmaddsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) {
3103 // CHECK-LABEL: @test_mm256_mask_fmaddsub_pd
3104 // CHECK: [[ADD:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3105 // CHECK: [[NEG:%.+]] = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3106 // CHECK: [[SUB:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3107 // CHECK: shufflevector <4 x double> [[SUB]], <4 x double> [[ADD]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3108 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3109 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3110 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3111 return _mm256_mask_fmaddsub_pd(__A, __U, __B, __C);
3114 __m256d test_mm256_mask_fmsubadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) {
3115 // CHECK-LABEL: @test_mm256_mask_fmsubadd_pd
3116 // CHECK: [[NEG:%.+]] = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3117 // CHECK: [[SUB:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> [[NEG]]
3118 // CHECK: [[ADD:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3119 // CHECK: shufflevector <4 x double> [[ADD]], <4 x double> [[SUB]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3120 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3121 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3122 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3123 return _mm256_mask_fmsubadd_pd(__A, __U, __B, __C);
3126 __m256d test_mm256_mask3_fmaddsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) {
3127 // CHECK-LABEL: @test_mm256_mask3_fmaddsub_pd
3128 // CHECK: [[ADD:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3129 // CHECK: [[NEG:%.+]] = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3130 // CHECK: [[SUB:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3131 // CHECK: shufflevector <4 x double> [[SUB]], <4 x double> [[ADD]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3132 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3133 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3134 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3135 return _mm256_mask3_fmaddsub_pd(__A, __B, __C, __U);
3138 __m256d test_mm256_maskz_fmaddsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) {
3139 // CHECK-LABEL: @test_mm256_maskz_fmaddsub_pd
3140 // CHECK: [[ADD:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3141 // CHECK: [[NEG:%.+]] = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3142 // CHECK: [[SUB:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3143 // CHECK: shufflevector <4 x double> [[SUB]], <4 x double> [[ADD]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3144 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3145 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3146 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3147 return _mm256_maskz_fmaddsub_pd(__U, __A, __B, __C);
3150 __m256d test_mm256_maskz_fmsubadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) {
3151 // CHECK-LABEL: @test_mm256_maskz_fmsubadd_pd
3152 // CHECK: [[NEG:%.+]] = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3153 // CHECK: [[SUB:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> [[NEG]]
3154 // CHECK: [[ADD:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3155 // CHECK: shufflevector <4 x double> [[ADD]], <4 x double> [[SUB]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3156 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3157 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3158 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3159 return _mm256_maskz_fmsubadd_pd(__U, __A, __B, __C);
3162 __m128 test_mm_mask_fmaddsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C) {
3163 // CHECK-LABEL: @test_mm_mask_fmaddsub_ps
3164 // CHECK: [[ADD:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3165 // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.+}}
3166 // CHECK: [[SUB:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> [[NEG]]
3167 // CHECK: shufflevector <4 x float> [[SUB]], <4 x float> [[ADD]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3168 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3169 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3170 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3171 return _mm_mask_fmaddsub_ps(__A, __U, __B, __C);
3174 __m128 test_mm_mask_fmsubadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C) {
3175 // CHECK-LABEL: @test_mm_mask_fmsubadd_ps
3176 // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.+}}
3177 // CHECK: [[SUB:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> [[NEG]]
3178 // CHECK: [[ADD:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3179 // CHECK: shufflevector <4 x float> [[ADD]], <4 x float> [[SUB]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3180 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3181 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3182 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3183 return _mm_mask_fmsubadd_ps(__A, __U, __B, __C);
3186 __m128 test_mm_mask3_fmaddsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U) {
3187 // CHECK-LABEL: @test_mm_mask3_fmaddsub_ps
3188 // CHECK: [[ADD:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3189 // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.+}}
3190 // CHECK: [[SUB:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> [[NEG]]
3191 // CHECK: shufflevector <4 x float> [[SUB]], <4 x float> [[ADD]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3192 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3193 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3194 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3195 return _mm_mask3_fmaddsub_ps(__A, __B, __C, __U);
3198 __m128 test_mm_maskz_fmaddsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C) {
3199 // CHECK-LABEL: @test_mm_maskz_fmaddsub_ps
3200 // CHECK: [[ADD:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3201 // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.+}}
3202 // CHECK: [[SUB:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> [[NEG]]
3203 // CHECK: shufflevector <4 x float> [[SUB]], <4 x float> [[ADD]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3204 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3205 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3206 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3207 return _mm_maskz_fmaddsub_ps(__U, __A, __B, __C);
3210 __m128 test_mm_maskz_fmsubadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C) {
3211 // CHECK-LABEL: @test_mm_maskz_fmsubadd_ps
3212 // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.+}}
3213 // CHECK: [[SUB:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> [[NEG]]
3214 // CHECK: [[ADD:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3215 // CHECK: shufflevector <4 x float> [[ADD]], <4 x float> [[SUB]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3216 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3217 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3218 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3219 return _mm_maskz_fmsubadd_ps(__U, __A, __B, __C);
3222 __m256 test_mm256_mask_fmaddsub_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) {
3223 // CHECK-LABEL: @test_mm256_mask_fmaddsub_ps
3224 // CHECK: [[ADD:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3225 // CHECK: [[NEG:%.+]] = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3226 // CHECK: [[SUB:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> [[NEG]]
3227 // CHECK: shufflevector <8 x float> [[SUB]], <8 x float> [[ADD]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
3228 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3229 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3230 return _mm256_mask_fmaddsub_ps(__A, __U, __B, __C);
3233 __m256 test_mm256_mask_fmsubadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) {
3234 // CHECK-LABEL: @test_mm256_mask_fmsubadd_ps
3235 // CHECK: [[NEG:%.+]] = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3236 // CHECK: [[SUB:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> [[NEG]]
3237 // CHECK: [[ADD:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3238 // CHECK: shufflevector <8 x float> [[ADD]], <8 x float> [[SUB]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
3239 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3240 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3241 return _mm256_mask_fmsubadd_ps(__A, __U, __B, __C);
3244 __m256 test_mm256_mask3_fmaddsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) {
3245 // CHECK-LABEL: @test_mm256_mask3_fmaddsub_ps
3246 // CHECK: [[ADD:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3247 // CHECK: [[NEG:%.+]] = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3248 // CHECK: [[SUB:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> [[NEG]]
3249 // CHECK: shufflevector <8 x float> [[SUB]], <8 x float> [[ADD]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
3250 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3251 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3252 return _mm256_mask3_fmaddsub_ps(__A, __B, __C, __U);
3255 __m256 test_mm256_maskz_fmaddsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) {
3256 // CHECK-LABEL: @test_mm256_maskz_fmaddsub_ps
3257 // CHECK: [[ADD:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3258 // CHECK: [[NEG:%.+]] = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3259 // CHECK: [[SUB:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> [[NEG]]
3260 // CHECK: shufflevector <8 x float> [[SUB]], <8 x float> [[ADD]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
3261 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3262 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3263 return _mm256_maskz_fmaddsub_ps(__U, __A, __B, __C);
3266 __m256 test_mm256_maskz_fmsubadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) {
3267 // CHECK-LABEL: @test_mm256_maskz_fmsubadd_ps
3268 // CHECK: [[NEG:%.+]] = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3269 // CHECK: [[SUB:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> [[NEG]]
3270 // CHECK: [[ADD:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3271 // CHECK: shufflevector <8 x float> [[ADD]], <8 x float> [[SUB]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
3272 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3273 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3274 return _mm256_maskz_fmsubadd_ps(__U, __A, __B, __C);
3277 __m128d test_mm_mask3_fmsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U) {
3278 // CHECK-LABEL: @test_mm_mask3_fmsub_pd
3279 // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3280 // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3281 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3282 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3283 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3284 return _mm_mask3_fmsub_pd(__A, __B, __C, __U);
3287 __m256d test_mm256_mask3_fmsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) {
3288 // CHECK-LABEL: @test_mm256_mask3_fmsub_pd
3289 // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3290 // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3291 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3292 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3293 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3294 return _mm256_mask3_fmsub_pd(__A, __B, __C, __U);
3297 __m128 test_mm_mask3_fmsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U) {
3298 // CHECK-LABEL: @test_mm_mask3_fmsub_ps
3299 // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3300 // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3301 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3302 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3303 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3304 return _mm_mask3_fmsub_ps(__A, __B, __C, __U);
3307 __m256 test_mm256_mask3_fmsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) {
3308 // CHECK-LABEL: @test_mm256_mask3_fmsub_ps
3309 // CHECK: fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3310 // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3311 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3312 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3313 return _mm256_mask3_fmsub_ps(__A, __B, __C, __U);
3316 __m128d test_mm_mask3_fmsubadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U) {
3317 // CHECK-LABEL: @test_mm_mask3_fmsubadd_pd
3318 // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3319 // CHECK: [[SUB:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> [[NEG]]
3320 // CHECK: [[ADD:%.+]] = call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3321 // CHECK: shufflevector <2 x double> [[ADD]], <2 x double> [[SUB]], <2 x i32> <i32 0, i32 3>
3322 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3323 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3324 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3325 return _mm_mask3_fmsubadd_pd(__A, __B, __C, __U);
3328 __m256d test_mm256_mask3_fmsubadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) {
3329 // CHECK-LABEL: @test_mm256_mask3_fmsubadd_pd
3330 // CHECK: [[NEG:%.+]] = fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.+}}
3331 // CHECK: [[SUB:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> [[NEG]]
3332 // CHECK: [[ADD:%.+]] = call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3333 // CHECK: shufflevector <4 x double> [[ADD]], <4 x double> [[SUB]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3334 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3335 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3336 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3337 return _mm256_mask3_fmsubadd_pd(__A, __B, __C, __U);
3340 __m128 test_mm_mask3_fmsubadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U) {
3341 // CHECK-LABEL: @test_mm_mask3_fmsubadd_ps
3342 // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.+}}
3343 // CHECK: [[SUB:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> [[NEG]]
3344 // CHECK: [[ADD:%.+]] = call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3345 // CHECK: shufflevector <4 x float> [[ADD]], <4 x float> [[SUB]], <4 x i32> <i32 0, i32 5, i32 2, i32 7>
3346 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3347 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3348 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3349 return _mm_mask3_fmsubadd_ps(__A, __B, __C, __U);
3352 __m256 test_mm256_mask3_fmsubadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) {
3353 // CHECK-LABEL: @test_mm256_mask3_fmsubadd_ps
3354 // CHECK: [[NEG:%.+]] = fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3355 // CHECK: [[SUB:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> [[NEG]]
3356 // CHECK: [[ADD:%.+]] = call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3357 // CHECK: shufflevector <8 x float> [[ADD]], <8 x float> [[SUB]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
3358 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3359 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3360 return _mm256_mask3_fmsubadd_ps(__A, __B, __C, __U);
3363 __m128d test_mm_mask_fnmadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C) {
3364 // CHECK-LABEL: @test_mm_mask_fnmadd_pd
3365 // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3366 // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3367 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3368 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3369 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3370 return _mm_mask_fnmadd_pd(__A, __U, __B, __C);
3373 __m256d test_mm256_mask_fnmadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) {
3374 // CHECK-LABEL: @test_mm256_mask_fnmadd_pd
3375 // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3376 // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3377 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3378 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3379 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3380 return _mm256_mask_fnmadd_pd(__A, __U, __B, __C);
3383 __m128 test_mm_mask_fnmadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C) {
3384 // CHECK-LABEL: @test_mm_mask_fnmadd_ps
3385 // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3386 // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3387 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3388 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3389 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3390 return _mm_mask_fnmadd_ps(__A, __U, __B, __C);
3393 __m256 test_mm256_mask_fnmadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) {
3394 // CHECK-LABEL: @test_mm256_mask_fnmadd_ps
3395 // CHECK: fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3396 // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3397 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3398 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3399 return _mm256_mask_fnmadd_ps(__A, __U, __B, __C);
3402 __m128d test_mm_mask_fnmsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C) {
3403 // CHECK-LABEL: @test_mm_mask_fnmsub_pd
3404 // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3405 // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3406 // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3407 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3408 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3409 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3410 return _mm_mask_fnmsub_pd(__A, __U, __B, __C);
3413 __m128d test_mm_mask3_fnmsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U) {
3414 // CHECK-LABEL: @test_mm_mask3_fnmsub_pd
3415 // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3416 // CHECK: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3417 // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
3418 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3419 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
3420 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3421 return _mm_mask3_fnmsub_pd(__A, __B, __C, __U);
3424 __m256d test_mm256_mask_fnmsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) {
3425 // CHECK-LABEL: @test_mm256_mask_fnmsub_pd
3426 // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3427 // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3428 // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3429 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3430 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3431 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3432 return _mm256_mask_fnmsub_pd(__A, __U, __B, __C);
3435 __m256d test_mm256_mask3_fnmsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) {
3436 // CHECK-LABEL: @test_mm256_mask3_fnmsub_pd
3437 // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3438 // CHECK: fsub <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
3439 // CHECK: call <4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})
3440 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3441 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3442 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3443 return _mm256_mask3_fnmsub_pd(__A, __B, __C, __U);
3446 __m128 test_mm_mask_fnmsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C) {
3447 // CHECK-LABEL: @test_mm_mask_fnmsub_ps
3448 // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3449 // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3450 // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3451 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3452 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3453 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3454 return _mm_mask_fnmsub_ps(__A, __U, __B, __C);
3457 __m128 test_mm_mask3_fnmsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U) {
3458 // CHECK-LABEL: @test_mm_mask3_fnmsub_ps
3459 // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3460 // CHECK: fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3461 // CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
3462 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3463 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
3464 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3465 return _mm_mask3_fnmsub_ps(__A, __B, __C, __U);
3468 __m256 test_mm256_mask_fnmsub_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) {
3469 // CHECK-LABEL: @test_mm256_mask_fnmsub_ps
3470 // CHECK: fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3471 // CHECK: fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3472 // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3473 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3474 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3475 return _mm256_mask_fnmsub_ps(__A, __U, __B, __C);
3478 __m256 test_mm256_mask3_fnmsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) {
3479 // CHECK-LABEL: @test_mm256_mask3_fnmsub_ps
3480 // CHECK: fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3481 // CHECK: fsub <8 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
3482 // CHECK: call <8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})
3483 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
3484 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3485 return _mm256_mask3_fnmsub_ps(__A, __B, __C, __U);
3488 __m128d test_mm_mask_add_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3489 // CHECK-LABEL: @test_mm_mask_add_pd
3490 // CHECK: fadd <2 x double> %{{.*}}, %{{.*}}
3491 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3492 return _mm_mask_add_pd(__W,__U,__A,__B);
3494 __m128d test_mm_maskz_add_pd(__mmask8 __U, __m128d __A, __m128d __B) {
3495 // CHECK-LABEL: @test_mm_maskz_add_pd
3496 // CHECK: fadd <2 x double> %{{.*}}, %{{.*}}
3497 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3498 return _mm_maskz_add_pd(__U,__A,__B);
3500 __m256d test_mm256_mask_add_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
3501 // CHECK-LABEL: @test_mm256_mask_add_pd
3502 // CHECK: fadd <4 x double> %{{.*}}, %{{.*}}
3503 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3504 return _mm256_mask_add_pd(__W,__U,__A,__B);
3506 __m256d test_mm256_maskz_add_pd(__mmask8 __U, __m256d __A, __m256d __B) {
3507 // CHECK-LABEL: @test_mm256_maskz_add_pd
3508 // CHECK: fadd <4 x double> %{{.*}}, %{{.*}}
3509 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3510 return _mm256_maskz_add_pd(__U,__A,__B);
3512 __m128 test_mm_mask_add_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3513 // CHECK-LABEL: @test_mm_mask_add_ps
3514 // CHECK: fadd <4 x float> %{{.*}}, %{{.*}}
3515 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3516 return _mm_mask_add_ps(__W,__U,__A,__B);
3518 __m128 test_mm_maskz_add_ps(__mmask8 __U, __m128 __A, __m128 __B) {
3519 // CHECK-LABEL: @test_mm_maskz_add_ps
3520 // CHECK: fadd <4 x float> %{{.*}}, %{{.*}}
3521 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3522 return _mm_maskz_add_ps(__U,__A,__B);
3524 __m256 test_mm256_mask_add_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
3525 // CHECK-LABEL: @test_mm256_mask_add_ps
3526 // CHECK: fadd <8 x float> %{{.*}}, %{{.*}}
3527 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3528 return _mm256_mask_add_ps(__W,__U,__A,__B);
3530 __m256 test_mm256_maskz_add_ps(__mmask8 __U, __m256 __A, __m256 __B) {
3531 // CHECK-LABEL: @test_mm256_maskz_add_ps
3532 // CHECK: fadd <8 x float> %{{.*}}, %{{.*}}
3533 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3534 return _mm256_maskz_add_ps(__U,__A,__B);
3536 __m128i test_mm_mask_blend_epi32(__mmask8 __U, __m128i __A, __m128i __W) {
3537 // CHECK-LABEL: @test_mm_mask_blend_epi32
3538 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
3539 return _mm_mask_blend_epi32(__U,__A,__W);
3541 __m256i test_mm256_mask_blend_epi32(__mmask8 __U, __m256i __A, __m256i __W) {
3542 // CHECK-LABEL: @test_mm256_mask_blend_epi32
3543 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
3544 return _mm256_mask_blend_epi32(__U,__A,__W);
3546 __m128d test_mm_mask_blend_pd(__mmask8 __U, __m128d __A, __m128d __W) {
3547 // CHECK-LABEL: @test_mm_mask_blend_pd
3548 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
3549 return _mm_mask_blend_pd(__U,__A,__W);
3551 __m256d test_mm256_mask_blend_pd(__mmask8 __U, __m256d __A, __m256d __W) {
3552 // CHECK-LABEL: @test_mm256_mask_blend_pd
3553 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
3554 return _mm256_mask_blend_pd(__U,__A,__W);
3556 __m128 test_mm_mask_blend_ps(__mmask8 __U, __m128 __A, __m128 __W) {
3557 // CHECK-LABEL: @test_mm_mask_blend_ps
3558 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
3559 return _mm_mask_blend_ps(__U,__A,__W);
3561 __m256 test_mm256_mask_blend_ps(__mmask8 __U, __m256 __A, __m256 __W) {
3562 // CHECK-LABEL: @test_mm256_mask_blend_ps
3563 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
3564 return _mm256_mask_blend_ps(__U,__A,__W);
3566 __m128i test_mm_mask_blend_epi64(__mmask8 __U, __m128i __A, __m128i __W) {
3567 // CHECK-LABEL: @test_mm_mask_blend_epi64
3568 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
3569 return _mm_mask_blend_epi64(__U,__A,__W);
3571 __m256i test_mm256_mask_blend_epi64(__mmask8 __U, __m256i __A, __m256i __W) {
3572 // CHECK-LABEL: @test_mm256_mask_blend_epi64
3573 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
3574 return _mm256_mask_blend_epi64(__U,__A,__W);
3576 __m128d test_mm_mask_compress_pd(__m128d __W, __mmask8 __U, __m128d __A) {
3577 // CHECK-LABEL: @test_mm_mask_compress_pd
3578 // CHECK: @llvm.x86.avx512.mask.compress.pd.128
3579 return _mm_mask_compress_pd(__W,__U,__A);
3581 __m128d test_mm_maskz_compress_pd(__mmask8 __U, __m128d __A) {
3582 // CHECK-LABEL: @test_mm_maskz_compress_pd
3583 // CHECK: @llvm.x86.avx512.mask.compress.pd.128
3584 return _mm_maskz_compress_pd(__U,__A);
3586 __m256d test_mm256_mask_compress_pd(__m256d __W, __mmask8 __U, __m256d __A) {
3587 // CHECK-LABEL: @test_mm256_mask_compress_pd
3588 // CHECK: @llvm.x86.avx512.mask.compress.pd.256
3589 return _mm256_mask_compress_pd(__W,__U,__A);
3591 __m256d test_mm256_maskz_compress_pd(__mmask8 __U, __m256d __A) {
3592 // CHECK-LABEL: @test_mm256_maskz_compress_pd
3593 // CHECK: @llvm.x86.avx512.mask.compress.pd.256
3594 return _mm256_maskz_compress_pd(__U,__A);
3596 __m128i test_mm_mask_compress_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
3597 // CHECK-LABEL: @test_mm_mask_compress_epi64
3598 // CHECK: @llvm.x86.avx512.mask.compress.q.128
3599 return _mm_mask_compress_epi64(__W,__U,__A);
3601 __m128i test_mm_maskz_compress_epi64(__mmask8 __U, __m128i __A) {
3602 // CHECK-LABEL: @test_mm_maskz_compress_epi64
3603 // CHECK: @llvm.x86.avx512.mask.compress.q.128
3604 return _mm_maskz_compress_epi64(__U,__A);
3606 __m256i test_mm256_mask_compress_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
3607 // CHECK-LABEL: @test_mm256_mask_compress_epi64
3608 // CHECK: @llvm.x86.avx512.mask.compress.q.256
3609 return _mm256_mask_compress_epi64(__W,__U,__A);
3611 __m256i test_mm256_maskz_compress_epi64(__mmask8 __U, __m256i __A) {
3612 // CHECK-LABEL: @test_mm256_maskz_compress_epi64
3613 // CHECK: @llvm.x86.avx512.mask.compress.q.256
3614 return _mm256_maskz_compress_epi64(__U,__A);
3616 __m128 test_mm_mask_compress_ps(__m128 __W, __mmask8 __U, __m128 __A) {
3617 // CHECK-LABEL: @test_mm_mask_compress_ps
3618 // CHECK: @llvm.x86.avx512.mask.compress.ps.128
3619 return _mm_mask_compress_ps(__W,__U,__A);
3621 __m128 test_mm_maskz_compress_ps(__mmask8 __U, __m128 __A) {
3622 // CHECK-LABEL: @test_mm_maskz_compress_ps
3623 // CHECK: @llvm.x86.avx512.mask.compress.ps.128
3624 return _mm_maskz_compress_ps(__U,__A);
3626 __m256 test_mm256_mask_compress_ps(__m256 __W, __mmask8 __U, __m256 __A) {
3627 // CHECK-LABEL: @test_mm256_mask_compress_ps
3628 // CHECK: @llvm.x86.avx512.mask.compress.ps.256
3629 return _mm256_mask_compress_ps(__W,__U,__A);
3631 __m256 test_mm256_maskz_compress_ps(__mmask8 __U, __m256 __A) {
3632 // CHECK-LABEL: @test_mm256_maskz_compress_ps
3633 // CHECK: @llvm.x86.avx512.mask.compress.ps.256
3634 return _mm256_maskz_compress_ps(__U,__A);
3636 __m128i test_mm_mask_compress_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
3637 // CHECK-LABEL: @test_mm_mask_compress_epi32
3638 // CHECK: @llvm.x86.avx512.mask.compress.d.128
3639 return _mm_mask_compress_epi32(__W,__U,__A);
3641 __m128i test_mm_maskz_compress_epi32(__mmask8 __U, __m128i __A) {
3642 // CHECK-LABEL: @test_mm_maskz_compress_epi32
3643 // CHECK: @llvm.x86.avx512.mask.compress.d.128
3644 return _mm_maskz_compress_epi32(__U,__A);
3646 __m256i test_mm256_mask_compress_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
3647 // CHECK-LABEL: @test_mm256_mask_compress_epi32
3648 // CHECK: @llvm.x86.avx512.mask.compress.d.256
3649 return _mm256_mask_compress_epi32(__W,__U,__A);
3651 __m256i test_mm256_maskz_compress_epi32(__mmask8 __U, __m256i __A) {
3652 // CHECK-LABEL: @test_mm256_maskz_compress_epi32
3653 // CHECK: @llvm.x86.avx512.mask.compress.d.256
3654 return _mm256_maskz_compress_epi32(__U,__A);
3656 void test_mm_mask_compressstoreu_pd(void *__P, __mmask8 __U, __m128d __A) {
3657 // CHECK-LABEL: @test_mm_mask_compressstoreu_pd
3658 // CHECK: @llvm.masked.compressstore.v2f64(<2 x double> %{{.*}}, double* %{{.*}}, <2 x i1> %{{.*}})
3659 return _mm_mask_compressstoreu_pd(__P,__U,__A);
3661 void test_mm256_mask_compressstoreu_pd(void *__P, __mmask8 __U, __m256d __A) {
3662 // CHECK-LABEL: @test_mm256_mask_compressstoreu_pd
3663 // CHECK: @llvm.masked.compressstore.v4f64(<4 x double> %{{.*}}, double* %{{.*}}, <4 x i1> %{{.*}})
3664 return _mm256_mask_compressstoreu_pd(__P,__U,__A);
3666 void test_mm_mask_compressstoreu_epi64(void *__P, __mmask8 __U, __m128i __A) {
3667 // CHECK-LABEL: @test_mm_mask_compressstoreu_epi64
3668 // CHECK: @llvm.masked.compressstore.v2i64(<2 x i64> %{{.*}}, i64* %{{.*}}, <2 x i1> %{{.*}})
3669 return _mm_mask_compressstoreu_epi64(__P,__U,__A);
3671 void test_mm256_mask_compressstoreu_epi64(void *__P, __mmask8 __U, __m256i __A) {
3672 // CHECK-LABEL: @test_mm256_mask_compressstoreu_epi64
3673 // CHECK: @llvm.masked.compressstore.v4i64(<4 x i64> %{{.*}}, i64* %{{.*}}, <4 x i1> %{{.*}})
3674 return _mm256_mask_compressstoreu_epi64(__P,__U,__A);
3676 void test_mm_mask_compressstoreu_ps(void *__P, __mmask8 __U, __m128 __A) {
3677 // CHECK-LABEL: @test_mm_mask_compressstoreu_ps
3678 // CHECK: @llvm.masked.compressstore.v4f32(<4 x float> %{{.*}}, float* %{{.*}}, <4 x i1> %{{.*}})
3679 return _mm_mask_compressstoreu_ps(__P,__U,__A);
3681 void test_mm256_mask_compressstoreu_ps(void *__P, __mmask8 __U, __m256 __A) {
3682 // CHECK-LABEL: @test_mm256_mask_compressstoreu_ps
3683 // CHECK: @llvm.masked.compressstore.v8f32(<8 x float> %{{.*}}, float* %{{.*}}, <8 x i1> %{{.*}})
3684 return _mm256_mask_compressstoreu_ps(__P,__U,__A);
3686 void test_mm_mask_compressstoreu_epi32(void *__P, __mmask8 __U, __m128i __A) {
3687 // CHECK-LABEL: @test_mm_mask_compressstoreu_epi32
3688 // CHECK: @llvm.masked.compressstore.v4i32(<4 x i32> %{{.*}}, i32* %{{.*}}, <4 x i1> %{{.*}})
3689 return _mm_mask_compressstoreu_epi32(__P,__U,__A);
3691 void test_mm256_mask_compressstoreu_epi32(void *__P, __mmask8 __U, __m256i __A) {
3692 // CHECK-LABEL: @test_mm256_mask_compressstoreu_epi32
3693 // CHECK: @llvm.masked.compressstore.v8i32(<8 x i32> %{{.*}}, i32* %{{.*}}, <8 x i1> %{{.*}})
3694 return _mm256_mask_compressstoreu_epi32(__P,__U,__A);
3696 __m128d test_mm_mask_cvtepi32_pd(__m128d __W, __mmask8 __U, __m128i __A) {
3697 // CHECK-LABEL: @test_mm_mask_cvtepi32_pd
3698 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i32> <i32 0, i32 1>
3699 // CHECK: sitofp <2 x i32> %{{.*}} to <2 x double>
3700 // CHECK: select <2 x i1> {{.*}}, <2 x double> {{.*}}, <2 x double> {{.*}}
3701 return _mm_mask_cvtepi32_pd(__W,__U,__A);
3703 __m128d test_mm_maskz_cvtepi32_pd(__mmask8 __U, __m128i __A) {
3704 // CHECK-LABEL: @test_mm_maskz_cvtepi32_pd
3705 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i32> <i32 0, i32 1>
3706 // CHECK: sitofp <2 x i32> %{{.*}} to <2 x double>
3707 // CHECK: select <2 x i1> {{.*}}, <2 x double> {{.*}}, <2 x double> {{.*}}
3708 return _mm_maskz_cvtepi32_pd(__U,__A);
3710 __m256d test_mm256_mask_cvtepi32_pd(__m256d __W, __mmask8 __U, __m128i __A) {
3711 // CHECK-LABEL: @test_mm256_mask_cvtepi32_pd
3712 // CHECK: sitofp <4 x i32> %{{.*}} to <4 x double>
3713 // CHECK: select <4 x i1> {{.*}}, <4 x double> {{.*}}, <4 x double> {{.*}}
3714 return _mm256_mask_cvtepi32_pd(__W,__U,__A);
3716 __m256d test_mm256_maskz_cvtepi32_pd(__mmask8 __U, __m128i __A) {
3717 // CHECK-LABEL: @test_mm256_maskz_cvtepi32_pd
3718 // CHECK: sitofp <4 x i32> %{{.*}} to <4 x double>
3719 // CHECK: select <4 x i1> {{.*}}, <4 x double> {{.*}}, <4 x double> {{.*}}
3720 return _mm256_maskz_cvtepi32_pd(__U,__A);
3722 __m128 test_mm_mask_cvtepi32_ps(__m128 __W, __mmask8 __U, __m128i __A) {
3723 // CHECK-LABEL: @test_mm_mask_cvtepi32_ps
3724 // CHECK: sitofp <4 x i32> %{{.*}} to <4 x float>
3725 // CHECK: select <4 x i1> {{.*}}, <4 x float> {{.*}}, <4 x float> {{.*}}
3726 return _mm_mask_cvtepi32_ps(__W,__U,__A);
3728 __m128 test_mm_maskz_cvtepi32_ps(__mmask8 __U, __m128i __A) {
3729 // CHECK-LABEL: @test_mm_maskz_cvtepi32_ps
3730 // CHECK: sitofp <4 x i32> %{{.*}} to <4 x float>
3731 // CHECK: select <4 x i1> {{.*}}, <4 x float> {{.*}}, <4 x float> {{.*}}
3732 return _mm_maskz_cvtepi32_ps(__U,__A);
3734 __m256 test_mm256_mask_cvtepi32_ps(__m256 __W, __mmask8 __U, __m256i __A) {
3735 // CHECK-LABEL: @test_mm256_mask_cvtepi32_ps
3736 // CHECK: sitofp <8 x i32> %{{.*}} to <8 x float>
3737 // CHECK: select <8 x i1> {{.*}}, <8 x float> {{.*}}, <8 x float> {{.*}}
3738 return _mm256_mask_cvtepi32_ps(__W,__U,__A);
3740 __m256 test_mm256_maskz_cvtepi32_ps(__mmask8 __U, __m256i __A) {
3741 // CHECK-LABEL: @test_mm256_maskz_cvtepi32_ps
3742 // CHECK: sitofp <8 x i32> %{{.*}} to <8 x float>
3743 // CHECK: select <8 x i1> {{.*}}, <8 x float> {{.*}}, <8 x float> {{.*}}
3744 return _mm256_maskz_cvtepi32_ps(__U,__A);
3746 __m128i test_mm_mask_cvtpd_epi32(__m128i __W, __mmask8 __U, __m128d __A) {
3747 // CHECK-LABEL: @test_mm_mask_cvtpd_epi32
3748 // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.128
3749 return _mm_mask_cvtpd_epi32(__W,__U,__A);
3751 __m128i test_mm_maskz_cvtpd_epi32(__mmask8 __U, __m128d __A) {
3752 // CHECK-LABEL: @test_mm_maskz_cvtpd_epi32
3753 // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.128
3754 return _mm_maskz_cvtpd_epi32(__U,__A);
3756 __m128i test_mm256_mask_cvtpd_epi32(__m128i __W, __mmask8 __U, __m256d __A) {
3757 // CHECK-LABEL: @test_mm256_mask_cvtpd_epi32
3758 // CHECK: @llvm.x86.avx.cvt.pd2dq.256
3759 // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}
3760 return _mm256_mask_cvtpd_epi32(__W,__U,__A);
3762 __m128i test_mm256_maskz_cvtpd_epi32(__mmask8 __U, __m256d __A) {
3763 // CHECK-LABEL: @test_mm256_maskz_cvtpd_epi32
3764 // CHECK: @llvm.x86.avx.cvt.pd2dq.256
3765 // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}
3766 return _mm256_maskz_cvtpd_epi32(__U,__A);
3768 __m128 test_mm_mask_cvtpd_ps(__m128 __W, __mmask8 __U, __m128d __A) {
3769 // CHECK-LABEL: @test_mm_mask_cvtpd_ps
3770 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps
3771 return _mm_mask_cvtpd_ps(__W,__U,__A);
3773 __m128 test_mm_maskz_cvtpd_ps(__mmask8 __U, __m128d __A) {
3774 // CHECK-LABEL: @test_mm_maskz_cvtpd_ps
3775 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps
3776 return _mm_maskz_cvtpd_ps(__U,__A);
3778 __m128 test_mm256_mask_cvtpd_ps(__m128 __W, __mmask8 __U, __m256d __A) {
3779 // CHECK-LABEL: @test_mm256_mask_cvtpd_ps
3780 // CHECK: @llvm.x86.avx.cvt.pd2.ps.256
3781 // CHECK: select <4 x i1> {{.*}}, <4 x float> {{.*}}, <4 x float> {{.*}}
3782 return _mm256_mask_cvtpd_ps(__W,__U,__A);
3784 __m128 test_mm256_maskz_cvtpd_ps(__mmask8 __U, __m256d __A) {
3785 // CHECK-LABEL: @test_mm256_maskz_cvtpd_ps
3786 // CHECK: @llvm.x86.avx.cvt.pd2.ps.256
3787 // CHECK: select <4 x i1> {{.*}}, <4 x float> {{.*}}, <4 x float> {{.*}}
3788 return _mm256_maskz_cvtpd_ps(__U,__A);
3790 __m128i test_mm_cvtpd_epu32(__m128d __A) {
3791 // CHECK-LABEL: @test_mm_cvtpd_epu32
3792 // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.128
3793 return _mm_cvtpd_epu32(__A);
3795 __m128i test_mm_mask_cvtpd_epu32(__m128i __W, __mmask8 __U, __m128d __A) {
3796 // CHECK-LABEL: @test_mm_mask_cvtpd_epu32
3797 // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.128
3798 return _mm_mask_cvtpd_epu32(__W,__U,__A);
3800 __m128i test_mm_maskz_cvtpd_epu32(__mmask8 __U, __m128d __A) {
3801 // CHECK-LABEL: @test_mm_maskz_cvtpd_epu32
3802 // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.128
3803 return _mm_maskz_cvtpd_epu32(__U,__A);
3805 __m128i test_mm256_cvtpd_epu32(__m256d __A) {
3806 // CHECK-LABEL: @test_mm256_cvtpd_epu32
3807 // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.256
3808 return _mm256_cvtpd_epu32(__A);
3810 __m128i test_mm256_mask_cvtpd_epu32(__m128i __W, __mmask8 __U, __m256d __A) {
3811 // CHECK-LABEL: @test_mm256_mask_cvtpd_epu32
3812 // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.256
3813 return _mm256_mask_cvtpd_epu32(__W,__U,__A);
3815 __m128i test_mm256_maskz_cvtpd_epu32(__mmask8 __U, __m256d __A) {
3816 // CHECK-LABEL: @test_mm256_maskz_cvtpd_epu32
3817 // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.256
3818 return _mm256_maskz_cvtpd_epu32(__U,__A);
3820 __m128i test_mm_mask_cvtps_epi32(__m128i __W, __mmask8 __U, __m128 __A) {
3821 // CHECK-LABEL: @test_mm_mask_cvtps_epi32
3822 // CHECK: @llvm.x86.sse2.cvtps2dq
3823 // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}
3824 return _mm_mask_cvtps_epi32(__W,__U,__A);
3826 __m128i test_mm_maskz_cvtps_epi32(__mmask8 __U, __m128 __A) {
3827 // CHECK-LABEL: @test_mm_maskz_cvtps_epi32
3828 // CHECK: @llvm.x86.sse2.cvtps2dq
3829 // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}
3830 return _mm_maskz_cvtps_epi32(__U,__A);
3832 __m256i test_mm256_mask_cvtps_epi32(__m256i __W, __mmask8 __U, __m256 __A) {
3833 // CHECK-LABEL: @test_mm256_mask_cvtps_epi32
3834 // CHECK: @llvm.x86.avx.cvt.ps2dq.256
3835 // CHECK: select <8 x i1> {{.*}}, <8 x i32> {{.*}}, <8 x i32> {{.*}}
3836 return _mm256_mask_cvtps_epi32(__W,__U,__A);
3838 __m256i test_mm256_maskz_cvtps_epi32(__mmask8 __U, __m256 __A) {
3839 // CHECK-LABEL: @test_mm256_maskz_cvtps_epi32
3840 // CHECK: @llvm.x86.avx.cvt.ps2dq.256
3841 // CHECK: select <8 x i1> {{.*}}, <8 x i32> {{.*}}, <8 x i32> {{.*}}
3842 return _mm256_maskz_cvtps_epi32(__U,__A);
3844 __m128d test_mm_mask_cvtps_pd(__m128d __W, __mmask8 __U, __m128 __A) {
3845 // CHECK-LABEL: @test_mm_mask_cvtps_pd
3846 // CHECK: fpext <2 x float> %{{.*}} to <2 x double>
3847 // CHECK: select <2 x i1> {{.*}}, <2 x double> {{.*}}, <2 x double> {{.*}}
3848 return _mm_mask_cvtps_pd(__W,__U,__A);
3850 __m128d test_mm_maskz_cvtps_pd(__mmask8 __U, __m128 __A) {
3851 // CHECK-LABEL: @test_mm_maskz_cvtps_pd
3852 // CHECK: fpext <2 x float> %{{.*}} to <2 x double>
3853 // CHECK: select <2 x i1> {{.*}}, <2 x double> {{.*}}, <2 x double> {{.*}}
3854 return _mm_maskz_cvtps_pd(__U,__A);
3856 __m256d test_mm256_mask_cvtps_pd(__m256d __W, __mmask8 __U, __m128 __A) {
3857 // CHECK-LABEL: @test_mm256_mask_cvtps_pd
3858 // CHECK: fpext <4 x float> %{{.*}} to <4 x double>
3859 // CHECK: select <4 x i1> {{.*}}, <4 x double> {{.*}}, <4 x double> {{.*}}
3860 return _mm256_mask_cvtps_pd(__W,__U,__A);
3862 __m256d test_mm256_maskz_cvtps_pd(__mmask8 __U, __m128 __A) {
3863 // CHECK-LABEL: @test_mm256_maskz_cvtps_pd
3864 // CHECK: fpext <4 x float> %{{.*}} to <4 x double>
3865 // CHECK: select <4 x i1> {{.*}}, <4 x double> {{.*}}, <4 x double> {{.*}}
3866 return _mm256_maskz_cvtps_pd(__U,__A);
3868 __m128i test_mm_cvtps_epu32(__m128 __A) {
3869 // CHECK-LABEL: @test_mm_cvtps_epu32
3870 // CHECK: @llvm.x86.avx512.mask.cvtps2udq.128
3871 return _mm_cvtps_epu32(__A);
3873 __m128i test_mm_mask_cvtps_epu32(__m128i __W, __mmask8 __U, __m128 __A) {
3874 // CHECK-LABEL: @test_mm_mask_cvtps_epu32
3875 // CHECK: @llvm.x86.avx512.mask.cvtps2udq.128
3876 return _mm_mask_cvtps_epu32(__W,__U,__A);
3878 __m128i test_mm_maskz_cvtps_epu32(__mmask8 __U, __m128 __A) {
3879 // CHECK-LABEL: @test_mm_maskz_cvtps_epu32
3880 // CHECK: @llvm.x86.avx512.mask.cvtps2udq.128
3881 return _mm_maskz_cvtps_epu32(__U,__A);
3883 __m256i test_mm256_cvtps_epu32(__m256 __A) {
3884 // CHECK-LABEL: @test_mm256_cvtps_epu32
3885 // CHECK: @llvm.x86.avx512.mask.cvtps2udq.256
3886 return _mm256_cvtps_epu32(__A);
3888 __m256i test_mm256_mask_cvtps_epu32(__m256i __W, __mmask8 __U, __m256 __A) {
3889 // CHECK-LABEL: @test_mm256_mask_cvtps_epu32
3890 // CHECK: @llvm.x86.avx512.mask.cvtps2udq.256
3891 return _mm256_mask_cvtps_epu32(__W,__U,__A);
3893 __m256i test_mm256_maskz_cvtps_epu32(__mmask8 __U, __m256 __A) {
3894 // CHECK-LABEL: @test_mm256_maskz_cvtps_epu32
3895 // CHECK: @llvm.x86.avx512.mask.cvtps2udq.256
3896 return _mm256_maskz_cvtps_epu32(__U,__A);
3898 __m128i test_mm_mask_cvttpd_epi32(__m128i __W, __mmask8 __U, __m128d __A) {
3899 // CHECK-LABEL: @test_mm_mask_cvttpd_epi32
3900 // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.128
3901 return _mm_mask_cvttpd_epi32(__W,__U,__A);
3903 __m128i test_mm_maskz_cvttpd_epi32(__mmask8 __U, __m128d __A) {
3904 // CHECK-LABEL: @test_mm_maskz_cvttpd_epi32
3905 // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.128
3906 return _mm_maskz_cvttpd_epi32(__U,__A);
3908 __m128i test_mm256_mask_cvttpd_epi32(__m128i __W, __mmask8 __U, __m256d __A) {
3909 // CHECK-LABEL: @test_mm256_mask_cvttpd_epi32
3910 // CHECK: @llvm.x86.avx.cvtt.pd2dq.256
3911 // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}
3912 return _mm256_mask_cvttpd_epi32(__W,__U,__A);
3914 __m128i test_mm256_maskz_cvttpd_epi32(__mmask8 __U, __m256d __A) {
3915 // CHECK-LABEL: @test_mm256_maskz_cvttpd_epi32
3916 // CHECK: @llvm.x86.avx.cvtt.pd2dq.256
3917 // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}
3918 return _mm256_maskz_cvttpd_epi32(__U,__A);
3920 __m128i test_mm_cvttpd_epu32(__m128d __A) {
3921 // CHECK-LABEL: @test_mm_cvttpd_epu32
3922 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.128
3923 return _mm_cvttpd_epu32(__A);
3925 __m128i test_mm_mask_cvttpd_epu32(__m128i __W, __mmask8 __U, __m128d __A) {
3926 // CHECK-LABEL: @test_mm_mask_cvttpd_epu32
3927 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.128
3928 return _mm_mask_cvttpd_epu32(__W,__U,__A);
3930 __m128i test_mm_maskz_cvttpd_epu32(__mmask8 __U, __m128d __A) {
3931 // CHECK-LABEL: @test_mm_maskz_cvttpd_epu32
3932 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.128
3933 return _mm_maskz_cvttpd_epu32(__U,__A);
3935 __m128i test_mm256_cvttpd_epu32(__m256d __A) {
3936 // CHECK-LABEL: @test_mm256_cvttpd_epu32
3937 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.256
3938 return _mm256_cvttpd_epu32(__A);
3940 __m128i test_mm256_mask_cvttpd_epu32(__m128i __W, __mmask8 __U, __m256d __A) {
3941 // CHECK-LABEL: @test_mm256_mask_cvttpd_epu32
3942 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.256
3943 return _mm256_mask_cvttpd_epu32(__W,__U,__A);
3945 __m128i test_mm256_maskz_cvttpd_epu32(__mmask8 __U, __m256d __A) {
3946 // CHECK-LABEL: @test_mm256_maskz_cvttpd_epu32
3947 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.256
3948 return _mm256_maskz_cvttpd_epu32(__U,__A);
3950 __m128i test_mm_mask_cvttps_epi32(__m128i __W, __mmask8 __U, __m128 __A) {
3951 // CHECK-LABEL: @test_mm_mask_cvttps_epi32
3952 // CHECK: @llvm.x86.sse2.cvttps2dq
3953 // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}
3954 return _mm_mask_cvttps_epi32(__W,__U,__A);
3956 __m128i test_mm_maskz_cvttps_epi32(__mmask8 __U, __m128 __A) {
3957 // CHECK-LABEL: @test_mm_maskz_cvttps_epi32
3958 // CHECK: @llvm.x86.sse2.cvttps2dq
3959 // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}
3960 return _mm_maskz_cvttps_epi32(__U,__A);
3962 __m256i test_mm256_mask_cvttps_epi32(__m256i __W, __mmask8 __U, __m256 __A) {
3963 // CHECK-LABEL: @test_mm256_mask_cvttps_epi32
3964 // CHECK: @llvm.x86.avx.cvtt.ps2dq.256
3965 // CHECK: select <8 x i1> {{.*}}, <8 x i32> {{.*}}, <8 x i32> {{.*}}
3966 return _mm256_mask_cvttps_epi32(__W,__U,__A);
3968 __m256i test_mm256_maskz_cvttps_epi32(__mmask8 __U, __m256 __A) {
3969 // CHECK-LABEL: @test_mm256_maskz_cvttps_epi32
3970 // CHECK: @llvm.x86.avx.cvtt.ps2dq.256
3971 // CHECK: select <8 x i1> {{.*}}, <8 x i32> {{.*}}, <8 x i32> {{.*}}
3972 return _mm256_maskz_cvttps_epi32(__U,__A);
3974 __m128i test_mm_cvttps_epu32(__m128 __A) {
3975 // CHECK-LABEL: @test_mm_cvttps_epu32
3976 // CHECK: @llvm.x86.avx512.mask.cvttps2udq.128
3977 return _mm_cvttps_epu32(__A);
3979 __m128i test_mm_mask_cvttps_epu32(__m128i __W, __mmask8 __U, __m128 __A) {
3980 // CHECK-LABEL: @test_mm_mask_cvttps_epu32
3981 // CHECK: @llvm.x86.avx512.mask.cvttps2udq.128
3982 return _mm_mask_cvttps_epu32(__W,__U,__A);
3984 __m128i test_mm_maskz_cvttps_epu32(__mmask8 __U, __m128 __A) {
3985 // CHECK-LABEL: @test_mm_maskz_cvttps_epu32
3986 // CHECK: @llvm.x86.avx512.mask.cvttps2udq.128
3987 return _mm_maskz_cvttps_epu32(__U,__A);
3989 __m256i test_mm256_cvttps_epu32(__m256 __A) {
3990 // CHECK-LABEL: @test_mm256_cvttps_epu32
3991 // CHECK: @llvm.x86.avx512.mask.cvttps2udq.256
3992 return _mm256_cvttps_epu32(__A);
3994 __m256i test_mm256_mask_cvttps_epu32(__m256i __W, __mmask8 __U, __m256 __A) {
3995 // CHECK-LABEL: @test_mm256_mask_cvttps_epu32
3996 // CHECK: @llvm.x86.avx512.mask.cvttps2udq.256
3997 return _mm256_mask_cvttps_epu32(__W,__U,__A);
3999 __m256i test_mm256_maskz_cvttps_epu32(__mmask8 __U, __m256 __A) {
4000 // CHECK-LABEL: @test_mm256_maskz_cvttps_epu32
4001 // CHECK: @llvm.x86.avx512.mask.cvttps2udq.256
4002 return _mm256_maskz_cvttps_epu32(__U,__A);
4004 __m128d test_mm_cvtepu32_pd(__m128i __A) {
4005 // CHECK-LABEL: @test_mm_cvtepu32_pd
4006 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i32> <i32 0, i32 1>
4007 // CHECK: uitofp <2 x i32> %{{.*}} to <2 x double>
4008 return _mm_cvtepu32_pd(__A);
4010 __m128d test_mm_mask_cvtepu32_pd(__m128d __W, __mmask8 __U, __m128i __A) {
4011 // CHECK-LABEL: @test_mm_mask_cvtepu32_pd
4012 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i32> <i32 0, i32 1>
4013 // CHECK: uitofp <2 x i32> %{{.*}} to <2 x double>
4014 // CHECK: select <2 x i1> {{.*}}, <2 x double> {{.*}}, <2 x double> {{.*}}
4015 return _mm_mask_cvtepu32_pd(__W,__U,__A);
4017 __m128d test_mm_maskz_cvtepu32_pd(__mmask8 __U, __m128i __A) {
4018 // CHECK-LABEL: @test_mm_maskz_cvtepu32_pd
4019 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i32> <i32 0, i32 1>
4020 // CHECK: uitofp <2 x i32> %{{.*}} to <2 x double>
4021 // CHECK: select <2 x i1> {{.*}}, <2 x double> {{.*}}, <2 x double> {{.*}}
4022 return _mm_maskz_cvtepu32_pd(__U,__A);
4024 __m256d test_mm256_cvtepu32_pd(__m128i __A) {
4025 // CHECK-LABEL: @test_mm256_cvtepu32_pd
4026 // CHECK: uitofp <4 x i32> %{{.*}} to <4 x double>
4027 return _mm256_cvtepu32_pd(__A);
4029 __m256d test_mm256_mask_cvtepu32_pd(__m256d __W, __mmask8 __U, __m128i __A) {
4030 // CHECK-LABEL: @test_mm256_mask_cvtepu32_pd
4031 // CHECK: uitofp <4 x i32> %{{.*}} to <4 x double>
4032 // CHECK: select <4 x i1> {{.*}}, <4 x double> {{.*}}, <4 x double> {{.*}}
4033 return _mm256_mask_cvtepu32_pd(__W,__U,__A);
4035 __m256d test_mm256_maskz_cvtepu32_pd(__mmask8 __U, __m128i __A) {
4036 // CHECK-LABEL: @test_mm256_maskz_cvtepu32_pd
4037 // CHECK: uitofp <4 x i32> %{{.*}} to <4 x double>
4038 // CHECK: select <4 x i1> {{.*}}, <4 x double> {{.*}}, <4 x double> {{.*}}
4039 return _mm256_maskz_cvtepu32_pd(__U,__A);
4041 __m128 test_mm_cvtepu32_ps(__m128i __A) {
4042 // CHECK-LABEL: @test_mm_cvtepu32_ps
4043 // CHECK: uitofp <4 x i32> %{{.*}} to <4 x float>
4044 return _mm_cvtepu32_ps(__A);
4046 __m128 test_mm_mask_cvtepu32_ps(__m128 __W, __mmask8 __U, __m128i __A) {
4047 // CHECK-LABEL: @test_mm_mask_cvtepu32_ps
4048 // CHECK: uitofp <4 x i32> %{{.*}} to <4 x float>
4049 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4050 return _mm_mask_cvtepu32_ps(__W,__U,__A);
4052 __m128 test_mm_maskz_cvtepu32_ps(__mmask8 __U, __m128i __A) {
4053 // CHECK-LABEL: @test_mm_maskz_cvtepu32_ps
4054 // CHECK: uitofp <4 x i32> %{{.*}} to <4 x float>
4055 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4056 return _mm_maskz_cvtepu32_ps(__U,__A);
4058 __m256 test_mm256_cvtepu32_ps(__m256i __A) {
4059 // CHECK-LABEL: @test_mm256_cvtepu32_ps
4060 // CHECK: uitofp <8 x i32> %{{.*}} to <8 x float>
4061 return _mm256_cvtepu32_ps(__A);
4063 __m256 test_mm256_mask_cvtepu32_ps(__m256 __W, __mmask8 __U, __m256i __A) {
4064 // CHECK-LABEL: @test_mm256_mask_cvtepu32_ps
4065 // CHECK: uitofp <8 x i32> %{{.*}} to <8 x float>
4066 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4067 return _mm256_mask_cvtepu32_ps(__W,__U,__A);
4069 __m256 test_mm256_maskz_cvtepu32_ps(__mmask8 __U, __m256i __A) {
4070 // CHECK-LABEL: @test_mm256_maskz_cvtepu32_ps
4071 // CHECK: uitofp <8 x i32> %{{.*}} to <8 x float>
4072 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4073 return _mm256_maskz_cvtepu32_ps(__U,__A);
4075 __m128d test_mm_mask_div_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
4076 // CHECK-LABEL: @test_mm_mask_div_pd
4077 // CHECK: fdiv <2 x double> %{{.*}}, %{{.*}}
4078 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
4079 return _mm_mask_div_pd(__W,__U,__A,__B);
4081 __m128d test_mm_maskz_div_pd(__mmask8 __U, __m128d __A, __m128d __B) {
4082 // CHECK-LABEL: @test_mm_maskz_div_pd
4083 // CHECK: fdiv <2 x double> %{{.*}}, %{{.*}}
4084 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
4085 return _mm_maskz_div_pd(__U,__A,__B);
4087 __m256d test_mm256_mask_div_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
4088 // CHECK-LABEL: @test_mm256_mask_div_pd
4089 // CHECK: fdiv <4 x double> %{{.*}}, %{{.*}}
4090 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
4091 return _mm256_mask_div_pd(__W,__U,__A,__B);
4093 __m256d test_mm256_maskz_div_pd(__mmask8 __U, __m256d __A, __m256d __B) {
4094 // CHECK-LABEL: @test_mm256_maskz_div_pd
4095 // CHECK: fdiv <4 x double> %{{.*}}, %{{.*}}
4096 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
4097 return _mm256_maskz_div_pd(__U,__A,__B);
4099 __m128 test_mm_mask_div_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
4100 // CHECK-LABEL: @test_mm_mask_div_ps
4101 // CHECK: fdiv <4 x float> %{{.*}}, %{{.*}}
4102 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4103 return _mm_mask_div_ps(__W,__U,__A,__B);
4105 __m128 test_mm_maskz_div_ps(__mmask8 __U, __m128 __A, __m128 __B) {
4106 // CHECK-LABEL: @test_mm_maskz_div_ps
4107 // CHECK: fdiv <4 x float> %{{.*}}, %{{.*}}
4108 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4109 return _mm_maskz_div_ps(__U,__A,__B);
4111 __m256 test_mm256_mask_div_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
4112 // CHECK-LABEL: @test_mm256_mask_div_ps
4113 // CHECK: fdiv <8 x float> %{{.*}}, %{{.*}}
4114 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4115 return _mm256_mask_div_ps(__W,__U,__A,__B);
4117 __m256 test_mm256_maskz_div_ps(__mmask8 __U, __m256 __A, __m256 __B) {
4118 // CHECK-LABEL: @test_mm256_maskz_div_ps
4119 // CHECK: fdiv <8 x float> %{{.*}}, %{{.*}}
4120 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4121 return _mm256_maskz_div_ps(__U,__A,__B);
4123 __m128d test_mm_mask_expand_pd(__m128d __W, __mmask8 __U, __m128d __A) {
4124 // CHECK-LABEL: @test_mm_mask_expand_pd
4125 // CHECK: @llvm.x86.avx512.mask.expand.pd.128
4126 return _mm_mask_expand_pd(__W,__U,__A);
4128 __m128d test_mm_maskz_expand_pd(__mmask8 __U, __m128d __A) {
4129 // CHECK-LABEL: @test_mm_maskz_expand_pd
4130 // CHECK: @llvm.x86.avx512.mask.expand.pd.128
4131 return _mm_maskz_expand_pd(__U,__A);
4133 __m256d test_mm256_mask_expand_pd(__m256d __W, __mmask8 __U, __m256d __A) {
4134 // CHECK-LABEL: @test_mm256_mask_expand_pd
4135 // CHECK: @llvm.x86.avx512.mask.expand.pd.256
4136 return _mm256_mask_expand_pd(__W,__U,__A);
4138 __m256d test_mm256_maskz_expand_pd(__mmask8 __U, __m256d __A) {
4139 // CHECK-LABEL: @test_mm256_maskz_expand_pd
4140 // CHECK: @llvm.x86.avx512.mask.expand.pd.256
4141 return _mm256_maskz_expand_pd(__U,__A);
4143 __m128i test_mm_mask_expand_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
4144 // CHECK-LABEL: @test_mm_mask_expand_epi64
4145 // CHECK: @llvm.x86.avx512.mask.expand.q.128
4146 return _mm_mask_expand_epi64(__W,__U,__A);
4148 __m128i test_mm_maskz_expand_epi64(__mmask8 __U, __m128i __A) {
4149 // CHECK-LABEL: @test_mm_maskz_expand_epi64
4150 // CHECK: @llvm.x86.avx512.mask.expand.q.128
4151 return _mm_maskz_expand_epi64(__U,__A);
4153 __m256i test_mm256_mask_expand_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
4154 // CHECK-LABEL: @test_mm256_mask_expand_epi64
4155 // CHECK: @llvm.x86.avx512.mask.expand.q.256
4156 return _mm256_mask_expand_epi64(__W,__U,__A);
4158 __m256i test_mm256_maskz_expand_epi64(__mmask8 __U, __m256i __A) {
4159 // CHECK-LABEL: @test_mm256_maskz_expand_epi64
4160 // CHECK: @llvm.x86.avx512.mask.expand.q.256
4161 return _mm256_maskz_expand_epi64(__U,__A);
4163 __m128d test_mm_mask_expandloadu_pd(__m128d __W, __mmask8 __U, void const *__P) {
4164 // CHECK-LABEL: @test_mm_mask_expandloadu_pd
4165 // CHECK: @llvm.masked.expandload.v2f64(double* %{{.*}}, <2 x i1> %{{.*}}, <2 x double> %{{.*}})
4166 return _mm_mask_expandloadu_pd(__W,__U,__P);
4168 __m128d test_mm_maskz_expandloadu_pd(__mmask8 __U, void const *__P) {
4169 // CHECK-LABEL: @test_mm_maskz_expandloadu_pd
4170 // CHECK: @llvm.masked.expandload.v2f64(double* %{{.*}}, <2 x i1> %{{.*}}, <2 x double> %{{.*}})
4171 return _mm_maskz_expandloadu_pd(__U,__P);
4173 __m256d test_mm256_mask_expandloadu_pd(__m256d __W, __mmask8 __U, void const *__P) {
4174 // CHECK-LABEL: @test_mm256_mask_expandloadu_pd
4175 // CHECK: @llvm.masked.expandload.v4f64(double* %{{.*}}, <4 x i1> %{{.*}}, <4 x double> %{{.*}})
4176 return _mm256_mask_expandloadu_pd(__W,__U,__P);
4178 __m256d test_mm256_maskz_expandloadu_pd(__mmask8 __U, void const *__P) {
4179 // CHECK-LABEL: @test_mm256_maskz_expandloadu_pd
4180 // CHECK: @llvm.masked.expandload.v4f64(double* %{{.*}}, <4 x i1> %{{.*}}, <4 x double> %{{.*}})
4181 return _mm256_maskz_expandloadu_pd(__U,__P);
4183 __m128i test_mm_mask_expandloadu_epi64(__m128i __W, __mmask8 __U, void const *__P) {
4184 // CHECK-LABEL: @test_mm_mask_expandloadu_epi64
4185 // CHECK: @llvm.masked.expandload.v2i64(i64* %{{.*}}, <2 x i1> %{{.*}}, <2 x i64> %{{.*}})
4186 return _mm_mask_expandloadu_epi64(__W,__U,__P);
4188 __m128i test_mm_maskz_expandloadu_epi64(__mmask8 __U, void const *__P) {
4189 // CHECK-LABEL: @test_mm_maskz_expandloadu_epi64
4190 // CHECK: @llvm.masked.expandload.v2i64(i64* %{{.*}}, <2 x i1> %{{.*}}, <2 x i64> %{{.*}})
4191 return _mm_maskz_expandloadu_epi64(__U,__P);
4193 __m256i test_mm256_mask_expandloadu_epi64(__m256i __W, __mmask8 __U, void const *__P) {
4194 // CHECK-LABEL: @test_mm256_mask_expandloadu_epi64
4195 // CHECK: @llvm.masked.expandload.v4i64(i64* %{{.*}}, <4 x i1> %{{.*}}, <4 x i64> %{{.*}})
4196 return _mm256_mask_expandloadu_epi64(__W,__U,__P);
4198 __m256i test_mm256_maskz_expandloadu_epi64(__mmask8 __U, void const *__P) {
4199 // CHECK-LABEL: @test_mm256_maskz_expandloadu_epi64
4200 // CHECK: @llvm.masked.expandload.v4i64(i64* %{{.*}}, <4 x i1> %{{.*}}, <4 x i64> %{{.*}})
4201 return _mm256_maskz_expandloadu_epi64(__U,__P);
4203 __m128 test_mm_mask_expandloadu_ps(__m128 __W, __mmask8 __U, void const *__P) {
4204 // CHECK-LABEL: @test_mm_mask_expandloadu_ps
4205 // CHECK: @llvm.masked.expandload.v4f32(float* %{{.*}}, <4 x i1> %{{.*}}, <4 x float> %{{.*}})
4206 return _mm_mask_expandloadu_ps(__W,__U,__P);
4208 __m128 test_mm_maskz_expandloadu_ps(__mmask8 __U, void const *__P) {
4209 // CHECK-LABEL: @test_mm_maskz_expandloadu_ps
4210 // CHECK: @llvm.masked.expandload.v4f32(float* %{{.*}}, <4 x i1> %{{.*}}, <4 x float> %{{.*}})
4211 return _mm_maskz_expandloadu_ps(__U,__P);
4213 __m256 test_mm256_mask_expandloadu_ps(__m256 __W, __mmask8 __U, void const *__P) {
4214 // CHECK-LABEL: @test_mm256_mask_expandloadu_ps
4215 // CHECK: @llvm.masked.expandload.v8f32(float* %{{.*}}, <8 x i1> %{{.*}}, <8 x float> %{{.*}})
4216 return _mm256_mask_expandloadu_ps(__W,__U,__P);
4218 __m256 test_mm256_maskz_expandloadu_ps(__mmask8 __U, void const *__P) {
4219 // CHECK-LABEL: @test_mm256_maskz_expandloadu_ps
4220 // CHECK: @llvm.masked.expandload.v8f32(float* %{{.*}}, <8 x i1> %{{.*}}, <8 x float> %{{.*}})
4221 return _mm256_maskz_expandloadu_ps(__U,__P);
4223 __m128i test_mm_mask_expandloadu_epi32(__m128i __W, __mmask8 __U, void const *__P) {
4224 // CHECK-LABEL: @test_mm_mask_expandloadu_epi32
4225 // CHECK: @llvm.masked.expandload.v4i32(i32* %{{.*}}, <4 x i1> %{{.*}}, <4 x i32> %{{.*}})
4226 return _mm_mask_expandloadu_epi32(__W,__U,__P);
4228 __m128i test_mm_maskz_expandloadu_epi32(__mmask8 __U, void const *__P) {
4229 // CHECK-LABEL: @test_mm_maskz_expandloadu_epi32
4230 // CHECK: @llvm.masked.expandload.v4i32(i32* %{{.*}}, <4 x i1> %{{.*}}, <4 x i32> %{{.*}})
4231 return _mm_maskz_expandloadu_epi32(__U,__P);
4233 __m256i test_mm256_mask_expandloadu_epi32(__m256i __W, __mmask8 __U, void const *__P) {
4234 // CHECK-LABEL: @test_mm256_mask_expandloadu_epi32
4235 // CHECK: @llvm.masked.expandload.v8i32(i32* %{{.*}}, <8 x i1> %{{.*}}, <8 x i32> %{{.*}})
4236 return _mm256_mask_expandloadu_epi32(__W,__U,__P);
4238 __m256i test_mm256_maskz_expandloadu_epi32(__mmask8 __U, void const *__P) {
4239 // CHECK-LABEL: @test_mm256_maskz_expandloadu_epi32
4240 // CHECK: @llvm.masked.expandload.v8i32(i32* %{{.*}}, <8 x i1> %{{.*}}, <8 x i32> %{{.*}})
4241 return _mm256_maskz_expandloadu_epi32(__U,__P);
4243 __m128 test_mm_mask_expand_ps(__m128 __W, __mmask8 __U, __m128 __A) {
4244 // CHECK-LABEL: @test_mm_mask_expand_ps
4245 // CHECK: @llvm.x86.avx512.mask.expand.ps.128
4246 return _mm_mask_expand_ps(__W,__U,__A);
4248 __m128 test_mm_maskz_expand_ps(__mmask8 __U, __m128 __A) {
4249 // CHECK-LABEL: @test_mm_maskz_expand_ps
4250 // CHECK: @llvm.x86.avx512.mask.expand.ps.128
4251 return _mm_maskz_expand_ps(__U,__A);
4253 __m256 test_mm256_mask_expand_ps(__m256 __W, __mmask8 __U, __m256 __A) {
4254 // CHECK-LABEL: @test_mm256_mask_expand_ps
4255 // CHECK: @llvm.x86.avx512.mask.expand.ps.256
4256 return _mm256_mask_expand_ps(__W,__U,__A);
4258 __m256 test_mm256_maskz_expand_ps(__mmask8 __U, __m256 __A) {
4259 // CHECK-LABEL: @test_mm256_maskz_expand_ps
4260 // CHECK: @llvm.x86.avx512.mask.expand.ps.256
4261 return _mm256_maskz_expand_ps(__U,__A);
4263 __m128i test_mm_mask_expand_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
4264 // CHECK-LABEL: @test_mm_mask_expand_epi32
4265 // CHECK: @llvm.x86.avx512.mask.expand.d.128
4266 return _mm_mask_expand_epi32(__W,__U,__A);
4268 __m128i test_mm_maskz_expand_epi32(__mmask8 __U, __m128i __A) {
4269 // CHECK-LABEL: @test_mm_maskz_expand_epi32
4270 // CHECK: @llvm.x86.avx512.mask.expand.d.128
4271 return _mm_maskz_expand_epi32(__U,__A);
4273 __m256i test_mm256_mask_expand_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
4274 // CHECK-LABEL: @test_mm256_mask_expand_epi32
4275 // CHECK: @llvm.x86.avx512.mask.expand.d.256
4276 return _mm256_mask_expand_epi32(__W,__U,__A);
4278 __m256i test_mm256_maskz_expand_epi32(__mmask8 __U, __m256i __A) {
4279 // CHECK-LABEL: @test_mm256_maskz_expand_epi32
4280 // CHECK: @llvm.x86.avx512.mask.expand.d.256
4281 return _mm256_maskz_expand_epi32(__U,__A);
4283 __m128d test_mm_getexp_pd(__m128d __A) {
4284 // CHECK-LABEL: @test_mm_getexp_pd
4285 // CHECK: @llvm.x86.avx512.mask.getexp.pd.128
4286 return _mm_getexp_pd(__A);
4288 __m128d test_mm_mask_getexp_pd(__m128d __W, __mmask8 __U, __m128d __A) {
4289 // CHECK-LABEL: @test_mm_mask_getexp_pd
4290 // CHECK: @llvm.x86.avx512.mask.getexp.pd.128
4291 return _mm_mask_getexp_pd(__W,__U,__A);
4293 __m128d test_mm_maskz_getexp_pd(__mmask8 __U, __m128d __A) {
4294 // CHECK-LABEL: @test_mm_maskz_getexp_pd
4295 // CHECK: @llvm.x86.avx512.mask.getexp.pd.128
4296 return _mm_maskz_getexp_pd(__U,__A);
4298 __m256d test_mm256_getexp_pd(__m256d __A) {
4299 // CHECK-LABEL: @test_mm256_getexp_pd
4300 // CHECK: @llvm.x86.avx512.mask.getexp.pd.256
4301 return _mm256_getexp_pd(__A);
4303 __m256d test_mm256_mask_getexp_pd(__m256d __W, __mmask8 __U, __m256d __A) {
4304 // CHECK-LABEL: @test_mm256_mask_getexp_pd
4305 // CHECK: @llvm.x86.avx512.mask.getexp.pd.256
4306 return _mm256_mask_getexp_pd(__W,__U,__A);
4308 __m256d test_mm256_maskz_getexp_pd(__mmask8 __U, __m256d __A) {
4309 // CHECK-LABEL: @test_mm256_maskz_getexp_pd
4310 // CHECK: @llvm.x86.avx512.mask.getexp.pd.256
4311 return _mm256_maskz_getexp_pd(__U,__A);
4313 __m128 test_mm_getexp_ps(__m128 __A) {
4314 // CHECK-LABEL: @test_mm_getexp_ps
4315 // CHECK: @llvm.x86.avx512.mask.getexp.ps.128
4316 return _mm_getexp_ps(__A);
4318 __m128 test_mm_mask_getexp_ps(__m128 __W, __mmask8 __U, __m128 __A) {
4319 // CHECK-LABEL: @test_mm_mask_getexp_ps
4320 // CHECK: @llvm.x86.avx512.mask.getexp.ps.128
4321 return _mm_mask_getexp_ps(__W,__U,__A);
4323 __m128 test_mm_maskz_getexp_ps(__mmask8 __U, __m128 __A) {
4324 // CHECK-LABEL: @test_mm_maskz_getexp_ps
4325 // CHECK: @llvm.x86.avx512.mask.getexp.ps.128
4326 return _mm_maskz_getexp_ps(__U,__A);
4328 __m256 test_mm256_getexp_ps(__m256 __A) {
4329 // CHECK-LABEL: @test_mm256_getexp_ps
4330 // CHECK: @llvm.x86.avx512.mask.getexp.ps.256
4331 return _mm256_getexp_ps(__A);
4333 __m256 test_mm256_mask_getexp_ps(__m256 __W, __mmask8 __U, __m256 __A) {
4334 // CHECK-LABEL: @test_mm256_mask_getexp_ps
4335 // CHECK: @llvm.x86.avx512.mask.getexp.ps.256
4336 return _mm256_mask_getexp_ps(__W,__U,__A);
4338 __m256 test_mm256_maskz_getexp_ps(__mmask8 __U, __m256 __A) {
4339 // CHECK-LABEL: @test_mm256_maskz_getexp_ps
4340 // CHECK: @llvm.x86.avx512.mask.getexp.ps.256
4341 return _mm256_maskz_getexp_ps(__U,__A);
4343 __m128d test_mm_mask_max_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
4344 // CHECK-LABEL: @test_mm_mask_max_pd
4345 // CHECK: @llvm.x86.sse2.max.pd
4346 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
4347 return _mm_mask_max_pd(__W,__U,__A,__B);
4349 __m128d test_mm_maskz_max_pd(__mmask8 __U, __m128d __A, __m128d __B) {
4350 // CHECK-LABEL: @test_mm_maskz_max_pd
4351 // CHECK: @llvm.x86.sse2.max.pd
4352 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
4353 return _mm_maskz_max_pd(__U,__A,__B);
4355 __m256d test_mm256_mask_max_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
4356 // CHECK-LABEL: @test_mm256_mask_max_pd
4357 // CHECK: @llvm.x86.avx.max.pd.256
4358 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
4359 return _mm256_mask_max_pd(__W,__U,__A,__B);
4361 __m256d test_mm256_maskz_max_pd(__mmask8 __U, __m256d __A, __m256d __B) {
4362 // CHECK-LABEL: @test_mm256_maskz_max_pd
4363 // CHECK: @llvm.x86.avx.max.pd.256
4364 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
4365 return _mm256_maskz_max_pd(__U,__A,__B);
4367 __m128 test_mm_mask_max_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
4368 // CHECK-LABEL: @test_mm_mask_max_ps
4369 // CHECK: @llvm.x86.sse.max.ps
4370 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4371 return _mm_mask_max_ps(__W,__U,__A,__B);
4373 __m128 test_mm_maskz_max_ps(__mmask8 __U, __m128 __A, __m128 __B) {
4374 // CHECK-LABEL: @test_mm_maskz_max_ps
4375 // CHECK: @llvm.x86.sse.max.ps
4376 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4377 return _mm_maskz_max_ps(__U,__A,__B);
4379 __m256 test_mm256_mask_max_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
4380 // CHECK-LABEL: @test_mm256_mask_max_ps
4381 // CHECK: @llvm.x86.avx.max.ps.256
4382 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4383 return _mm256_mask_max_ps(__W,__U,__A,__B);
4385 __m256 test_mm256_maskz_max_ps(__mmask8 __U, __m256 __A, __m256 __B) {
4386 // CHECK-LABEL: @test_mm256_maskz_max_ps
4387 // CHECK: @llvm.x86.avx.max.ps.256
4388 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4389 return _mm256_maskz_max_ps(__U,__A,__B);
4391 __m128d test_mm_mask_min_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
4392 // CHECK-LABEL: @test_mm_mask_min_pd
4393 // CHECK: @llvm.x86.sse2.min.pd
4394 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
4395 return _mm_mask_min_pd(__W,__U,__A,__B);
4397 __m128d test_mm_maskz_min_pd(__mmask8 __U, __m128d __A, __m128d __B) {
4398 // CHECK-LABEL: @test_mm_maskz_min_pd
4399 // CHECK: @llvm.x86.sse2.min.pd
4400 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
4401 return _mm_maskz_min_pd(__U,__A,__B);
4403 __m256d test_mm256_mask_min_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
4404 // CHECK-LABEL: @test_mm256_mask_min_pd
4405 // CHECK: @llvm.x86.avx.min.pd.256
4406 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
4407 return _mm256_mask_min_pd(__W,__U,__A,__B);
4409 __m256d test_mm256_maskz_min_pd(__mmask8 __U, __m256d __A, __m256d __B) {
4410 // CHECK-LABEL: @test_mm256_maskz_min_pd
4411 // CHECK: @llvm.x86.avx.min.pd.256
4412 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
4413 return _mm256_maskz_min_pd(__U,__A,__B);
4415 __m128 test_mm_mask_min_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
4416 // CHECK-LABEL: @test_mm_mask_min_ps
4417 // CHECK: @llvm.x86.sse.min.ps
4418 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4419 return _mm_mask_min_ps(__W,__U,__A,__B);
4421 __m128 test_mm_maskz_min_ps(__mmask8 __U, __m128 __A, __m128 __B) {
4422 // CHECK-LABEL: @test_mm_maskz_min_ps
4423 // CHECK: @llvm.x86.sse.min.ps
4424 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4425 return _mm_maskz_min_ps(__U,__A,__B);
4427 __m256 test_mm256_mask_min_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
4428 // CHECK-LABEL: @test_mm256_mask_min_ps
4429 // CHECK: @llvm.x86.avx.min.ps.256
4430 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4431 return _mm256_mask_min_ps(__W,__U,__A,__B);
4433 __m256 test_mm256_maskz_min_ps(__mmask8 __U, __m256 __A, __m256 __B) {
4434 // CHECK-LABEL: @test_mm256_maskz_min_ps
4435 // CHECK: @llvm.x86.avx.min.ps.256
4436 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4437 return _mm256_maskz_min_ps(__U,__A,__B);
4439 __m128d test_mm_mask_mul_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
4440 // CHECK-LABEL: @test_mm_mask_mul_pd
4441 // CHECK: fmul <2 x double> %{{.*}}, %{{.*}}
4442 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
4443 return _mm_mask_mul_pd(__W,__U,__A,__B);
4445 __m128d test_mm_maskz_mul_pd(__mmask8 __U, __m128d __A, __m128d __B) {
4446 // CHECK-LABEL: @test_mm_maskz_mul_pd
4447 // CHECK: fmul <2 x double> %{{.*}}, %{{.*}}
4448 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
4449 return _mm_maskz_mul_pd(__U,__A,__B);
4451 __m256d test_mm256_mask_mul_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
4452 // CHECK-LABEL: @test_mm256_mask_mul_pd
4453 // CHECK: fmul <4 x double> %{{.*}}, %{{.*}}
4454 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
4455 return _mm256_mask_mul_pd(__W,__U,__A,__B);
4457 __m256d test_mm256_maskz_mul_pd(__mmask8 __U, __m256d __A, __m256d __B) {
4458 // CHECK-LABEL: @test_mm256_maskz_mul_pd
4459 // CHECK: fmul <4 x double> %{{.*}}, %{{.*}}
4460 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
4461 return _mm256_maskz_mul_pd(__U,__A,__B);
4463 __m128 test_mm_mask_mul_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
4464 // CHECK-LABEL: @test_mm_mask_mul_ps
4465 // CHECK: fmul <4 x float> %{{.*}}, %{{.*}}
4466 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4467 return _mm_mask_mul_ps(__W,__U,__A,__B);
4469 __m128 test_mm_maskz_mul_ps(__mmask8 __U, __m128 __A, __m128 __B) {
4470 // CHECK-LABEL: @test_mm_maskz_mul_ps
4471 // CHECK: fmul <4 x float> %{{.*}}, %{{.*}}
4472 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
4473 return _mm_maskz_mul_ps(__U,__A,__B);
4475 __m256 test_mm256_mask_mul_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
4476 // CHECK-LABEL: @test_mm256_mask_mul_ps
4477 // CHECK: fmul <8 x float> %{{.*}}, %{{.*}}
4478 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4479 return _mm256_mask_mul_ps(__W,__U,__A,__B);
4481 __m256 test_mm256_maskz_mul_ps(__mmask8 __U, __m256 __A, __m256 __B) {
4482 // CHECK-LABEL: @test_mm256_maskz_mul_ps
4483 // CHECK: fmul <8 x float> %{{.*}}, %{{.*}}
4484 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
4485 return _mm256_maskz_mul_ps(__U,__A,__B);
4487 __m128i test_mm_mask_abs_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
4488 // CHECK-LABEL: @test_mm_mask_abs_epi32
4489 // CHECK: [[SUB:%.*]] = sub <4 x i32> zeroinitializer, [[A:%.*]]
4490 // CHECK: [[CMP:%.*]] = icmp sgt <4 x i32> [[A]], zeroinitializer
4491 // CHECK: [[SEL:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[A]], <4 x i32> [[SUB]]
4492 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> [[SEL]], <4 x i32> %{{.*}}
4493 return _mm_mask_abs_epi32(__W,__U,__A);
4495 __m128i test_mm_maskz_abs_epi32(__mmask8 __U, __m128i __A) {
4496 // CHECK-LABEL: @test_mm_maskz_abs_epi32
4497 // CHECK: [[SUB:%.*]] = sub <4 x i32> zeroinitializer, [[A:%.*]]
4498 // CHECK: [[CMP:%.*]] = icmp sgt <4 x i32> [[A]], zeroinitializer
4499 // CHECK: [[SEL:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[A]], <4 x i32> [[SUB]]
4500 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> [[SEL]], <4 x i32> %{{.*}}
4501 return _mm_maskz_abs_epi32(__U,__A);
4503 __m256i test_mm256_mask_abs_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
4504 // CHECK-LABEL: @test_mm256_mask_abs_epi32
4505 // CHECK: [[SUB:%.*]] = sub <8 x i32> zeroinitializer, [[A:%.*]]
4506 // CHECK: [[CMP:%.*]] = icmp sgt <8 x i32> [[A]], zeroinitializer
4507 // CHECK: [[SEL:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[A]], <8 x i32> [[SUB]]
4508 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> [[SEL]], <8 x i32> %{{.*}}
4509 return _mm256_mask_abs_epi32(__W,__U,__A);
4511 __m256i test_mm256_maskz_abs_epi32(__mmask8 __U, __m256i __A) {
4512 // CHECK-LABEL: @test_mm256_maskz_abs_epi32
4513 // CHECK: [[SUB:%.*]] = sub <8 x i32> zeroinitializer, [[A:%.*]]
4514 // CHECK: [[CMP:%.*]] = icmp sgt <8 x i32> [[A]], zeroinitializer
4515 // CHECK: [[SEL:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[A]], <8 x i32> [[SUB]]
4516 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> [[SEL]], <8 x i32> %{{.*}}
4517 return _mm256_maskz_abs_epi32(__U,__A);
4519 __m128i test_mm_abs_epi64(__m128i __A) {
4520 // CHECK-LABEL: @test_mm_abs_epi64
4521 // CHECK: [[SUB:%.*]] = sub <2 x i64> zeroinitializer, [[A:%.*]]
4522 // CHECK: [[CMP:%.*]] = icmp sgt <2 x i64> [[A]], zeroinitializer
4523 // CHECK: select <2 x i1> [[CMP]], <2 x i64> [[A]], <2 x i64> [[SUB]]
4525 return _mm_abs_epi64(__A);
4527 __m128i test_mm_mask_abs_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
4528 // CHECK-LABEL: @test_mm_mask_abs_epi64
4529 // CHECK: [[SUB:%.*]] = sub <2 x i64> zeroinitializer, [[A:%.*]]
4530 // CHECK: [[CMP:%.*]] = icmp sgt <2 x i64> [[A]], zeroinitializer
4531 // CHECK: [[SEL:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[A]], <2 x i64> [[SUB]]
4532 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> [[SEL]], <2 x i64> %{{.*}}
4534 return _mm_mask_abs_epi64(__W,__U,__A);
4536 __m128i test_mm_maskz_abs_epi64(__mmask8 __U, __m128i __A) {
4537 // CHECK-LABEL: @test_mm_maskz_abs_epi64
4538 // CHECK: [[SUB:%.*]] = sub <2 x i64> zeroinitializer, [[A:%.*]]
4539 // CHECK: [[CMP:%.*]] = icmp sgt <2 x i64> [[A]], zeroinitializer
4540 // CHECK: [[SEL:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[A]], <2 x i64> [[SUB]]
4541 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> [[SEL]], <2 x i64> %{{.*}}
4542 return _mm_maskz_abs_epi64(__U,__A);
4544 __m256i test_mm256_abs_epi64(__m256i __A) {
4545 // CHECK-LABEL: @test_mm256_abs_epi64
4546 // CHECK: [[SUB:%.*]] = sub <4 x i64> zeroinitializer, [[A:%.*]]
4547 // CHECK: [[CMP:%.*]] = icmp sgt <4 x i64> [[A]], zeroinitializer
4548 // CHECK: select <4 x i1> [[CMP]], <4 x i64> [[A]], <4 x i64> [[SUB]]
4549 return _mm256_abs_epi64(__A);
4551 __m256i test_mm256_mask_abs_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
4552 // CHECK-LABEL: @test_mm256_mask_abs_epi64
4553 // CHECK: [[SUB:%.*]] = sub <4 x i64> zeroinitializer, [[A:%.*]]
4554 // CHECK: [[CMP:%.*]] = icmp sgt <4 x i64> [[A]], zeroinitializer
4555 // CHECK: [[SEL:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[A]], <4 x i64> [[SUB]]
4556 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> [[SEL]], <4 x i64> %{{.*}}
4557 return _mm256_mask_abs_epi64(__W,__U,__A);
4559 __m256i test_mm256_maskz_abs_epi64(__mmask8 __U, __m256i __A) {
4560 // CHECK-LABEL: @test_mm256_maskz_abs_epi64
4561 // CHECK: [[SUB:%.*]] = sub <4 x i64> zeroinitializer, [[A:%.*]]
4562 // CHECK: [[CMP:%.*]] = icmp sgt <4 x i64> [[A]], zeroinitializer
4563 // CHECK: [[SEL:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[A]], <4 x i64> [[SUB]]
4564 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> [[SEL]], <4 x i64> %{{.*}}
4565 return _mm256_maskz_abs_epi64(__U,__A);
4567 __m128i test_mm_maskz_max_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
4568 // CHECK-LABEL: @test_mm_maskz_max_epi32
4569 // CHECK: [[CMP:%.*]] = icmp sgt <4 x i32> [[X:%.*]], [[Y:%.*]]
4570 // CHECK-NEXT: [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[X]], <4 x i32> [[Y]]
4571 // CHECK: select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}
4572 return _mm_maskz_max_epi32(__M,__A,__B);
4574 __m128i test_mm_mask_max_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
4575 // CHECK-LABEL: @test_mm_mask_max_epi32
4576 // CHECK: [[CMP:%.*]] = icmp sgt <4 x i32> [[X:%.*]], [[Y:%.*]]
4577 // CHECK-NEXT: [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[X]], <4 x i32> [[Y]]
4578 // CHECK: select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}
4579 return _mm_mask_max_epi32(__W,__M,__A,__B);
4581 __m256i test_mm256_maskz_max_epi32(__mmask8 __M, __m256i __A, __m256i __B) {
4582 // CHECK-LABEL: @test_mm256_maskz_max_epi32
4583 // CHECK: [[CMP:%.*]] = icmp sgt <8 x i32> [[X:%.*]], [[Y:%.*]]
4584 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[X]], <8 x i32> [[Y]]
4585 // CHECK: select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}
4586 return _mm256_maskz_max_epi32(__M,__A,__B);
4588 __m256i test_mm256_mask_max_epi32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
4589 // CHECK-LABEL: @test_mm256_mask_max_epi32
4590 // CHECK: [[CMP:%.*]] = icmp sgt <8 x i32> [[X:%.*]], [[Y:%.*]]
4591 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[X]], <8 x i32> [[Y]]
4592 // CHECK: select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}
4593 return _mm256_mask_max_epi32(__W,__M,__A,__B);
4595 __m128i test_mm_maskz_max_epi64(__mmask8 __M, __m128i __A, __m128i __B) {
4596 // CHECK-LABEL: @test_mm_maskz_max_epi64
4597 // CHECK: [[CMP:%.*]] = icmp sgt <2 x i64> [[X:%.*]], [[Y:%.*]]
4598 // CHECK-NEXT: [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4599 // CHECK: select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}
4600 return _mm_maskz_max_epi64(__M,__A,__B);
4602 __m128i test_mm_mask_max_epi64(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
4603 // CHECK-LABEL: @test_mm_mask_max_epi64
4604 // CHECK: [[CMP:%.*]] = icmp sgt <2 x i64> [[X:%.*]], [[Y:%.*]]
4605 // CHECK-NEXT: [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4606 // CHECK: select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}
4607 return _mm_mask_max_epi64(__W,__M,__A,__B);
4609 __m128i test_mm_max_epi64(__m128i __A, __m128i __B) {
4610 // CHECK-LABEL: @test_mm_max_epi64
4611 // CHECK: [[CMP:%.*]] = icmp sgt <2 x i64> [[X:%.*]], [[Y:%.*]]
4612 // CHECK-NEXT: [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4613 return _mm_max_epi64(__A,__B);
4615 __m256i test_mm256_maskz_max_epi64(__mmask8 __M, __m256i __A, __m256i __B) {
4616 // CHECK-LABEL: @test_mm256_maskz_max_epi64
4617 // CHECK: [[CMP:%.*]] = icmp sgt <4 x i64> [[X:%.*]], [[Y:%.*]]
4618 // CHECK-NEXT: [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4619 // CHECK: select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}
4620 return _mm256_maskz_max_epi64(__M,__A,__B);
4622 __m256i test_mm256_mask_max_epi64(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
4623 // CHECK-LABEL: @test_mm256_mask_max_epi64
4624 // CHECK: [[CMP:%.*]] = icmp sgt <4 x i64> [[X:%.*]], [[Y:%.*]]
4625 // CHECK-NEXT: [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4626 // CHECK: select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}
4627 return _mm256_mask_max_epi64(__W,__M,__A,__B);
4629 __m256i test_mm256_max_epi64(__m256i __A, __m256i __B) {
4630 // CHECK-LABEL: @test_mm256_max_epi64
4631 // CHECK: [[CMP:%.*]] = icmp sgt <4 x i64> [[X:%.*]], [[Y:%.*]]
4632 // CHECK-NEXT: [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4633 return _mm256_max_epi64(__A,__B);
4635 __m128i test_mm_maskz_max_epu32(__mmask8 __M, __m128i __A, __m128i __B) {
4636 // CHECK-LABEL: @test_mm_maskz_max_epu32
4637 // CHECK: [[CMP:%.*]] = icmp ugt <4 x i32> [[X:%.*]], [[Y:%.*]]
4638 // CHECK-NEXT: [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[X]], <4 x i32> [[Y]]
4639 // CHECK: select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}
4640 return _mm_maskz_max_epu32(__M,__A,__B);
4642 __m128i test_mm_mask_max_epu32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
4643 // CHECK-LABEL: @test_mm_mask_max_epu32
4644 // CHECK: [[CMP:%.*]] = icmp ugt <4 x i32> [[X:%.*]], [[Y:%.*]]
4645 // CHECK-NEXT: [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[X]], <4 x i32> [[Y]]
4646 // CHECK: select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}
4647 return _mm_mask_max_epu32(__W,__M,__A,__B);
4649 __m256i test_mm256_maskz_max_epu32(__mmask8 __M, __m256i __A, __m256i __B) {
4650 // CHECK-LABEL: @test_mm256_maskz_max_epu32
4651 // CHECK: [[CMP:%.*]] = icmp ugt <8 x i32> [[X:%.*]], [[Y:%.*]]
4652 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[X]], <8 x i32> [[Y]]
4653 // CHECK: select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}
4654 return _mm256_maskz_max_epu32(__M,__A,__B);
4656 __m256i test_mm256_mask_max_epu32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
4657 // CHECK-LABEL: @test_mm256_mask_max_epu32
4658 // CHECK: [[CMP:%.*]] = icmp ugt <8 x i32> [[X:%.*]], [[Y:%.*]]
4659 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[X]], <8 x i32> [[Y]]
4660 // CHECK: select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}
4661 return _mm256_mask_max_epu32(__W,__M,__A,__B);
4663 __m128i test_mm_maskz_max_epu64(__mmask8 __M, __m128i __A, __m128i __B) {
4664 // CHECK-LABEL: @test_mm_maskz_max_epu64
4665 // CHECK: [[CMP:%.*]] = icmp ugt <2 x i64> [[X:%.*]], [[Y:%.*]]
4666 // CHECK-NEXT: [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4667 // CHECK: select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}
4668 return _mm_maskz_max_epu64(__M,__A,__B);
4670 __m128i test_mm_max_epu64(__m128i __A, __m128i __B) {
4671 // CHECK-LABEL: @test_mm_max_epu64
4672 // CHECK: [[CMP:%.*]] = icmp ugt <2 x i64> [[X:%.*]], [[Y:%.*]]
4673 // CHECK-NEXT: [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4674 return _mm_max_epu64(__A,__B);
4676 __m128i test_mm_mask_max_epu64(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
4677 // CHECK-LABEL: @test_mm_mask_max_epu64
4678 // CHECK: [[CMP:%.*]] = icmp ugt <2 x i64> [[X:%.*]], [[Y:%.*]]
4679 // CHECK-NEXT: [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4680 // CHECK: select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}
4681 return _mm_mask_max_epu64(__W,__M,__A,__B);
4683 __m256i test_mm256_maskz_max_epu64(__mmask8 __M, __m256i __A, __m256i __B) {
4684 // CHECK-LABEL: @test_mm256_maskz_max_epu64
4685 // CHECK: [[CMP:%.*]] = icmp ugt <4 x i64> [[X:%.*]], [[Y:%.*]]
4686 // CHECK-NEXT: [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4687 // CHECK: select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}
4688 return _mm256_maskz_max_epu64(__M,__A,__B);
4690 __m256i test_mm256_max_epu64(__m256i __A, __m256i __B) {
4691 // CHECK-LABEL: @test_mm256_max_epu64
4692 // CHECK: [[CMP:%.*]] = icmp ugt <4 x i64> [[X:%.*]], [[Y:%.*]]
4693 // CHECK-NEXT: [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4694 return _mm256_max_epu64(__A,__B);
4696 __m256i test_mm256_mask_max_epu64(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
4697 // CHECK-LABEL: @test_mm256_mask_max_epu64
4698 // CHECK: [[CMP:%.*]] = icmp ugt <4 x i64> [[X:%.*]], [[Y:%.*]]
4699 // CHECK-NEXT: [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4700 // CHECK: select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}
4701 return _mm256_mask_max_epu64(__W,__M,__A,__B);
4703 __m128i test_mm_maskz_min_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
4704 // CHECK-LABEL: @test_mm_maskz_min_epi32
4705 // CHECK: [[CMP:%.*]] = icmp slt <4 x i32> [[X:%.*]], [[Y:%.*]]
4706 // CHECK-NEXT: [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[X]], <4 x i32> [[Y]]
4707 // CHECK: select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}
4708 return _mm_maskz_min_epi32(__M,__A,__B);
4710 __m128i test_mm_mask_min_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
4711 // CHECK-LABEL: @test_mm_mask_min_epi32
4712 // CHECK: [[CMP:%.*]] = icmp slt <4 x i32> [[X:%.*]], [[Y:%.*]]
4713 // CHECK-NEXT: [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[X]], <4 x i32> [[Y]]
4714 // CHECK: select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}
4715 return _mm_mask_min_epi32(__W,__M,__A,__B);
4717 __m256i test_mm256_maskz_min_epi32(__mmask8 __M, __m256i __A, __m256i __B) {
4718 // CHECK-LABEL: @test_mm256_maskz_min_epi32
4719 // CHECK: [[CMP:%.*]] = icmp slt <8 x i32> [[X:%.*]], [[Y:%.*]]
4720 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[X]], <8 x i32> [[Y]]
4721 // CHECK: select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}
4722 return _mm256_maskz_min_epi32(__M,__A,__B);
4724 __m256i test_mm256_mask_min_epi32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
4725 // CHECK-LABEL: @test_mm256_mask_min_epi32
4726 // CHECK: [[CMP:%.*]] = icmp slt <8 x i32> [[X:%.*]], [[Y:%.*]]
4727 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[X]], <8 x i32> [[Y]]
4728 // CHECK: select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}
4729 return _mm256_mask_min_epi32(__W,__M,__A,__B);
4731 __m128i test_mm_min_epi64(__m128i __A, __m128i __B) {
4732 // CHECK-LABEL: @test_mm_min_epi64
4733 // CHECK: [[CMP:%.*]] = icmp slt <2 x i64> [[X:%.*]], [[Y:%.*]]
4734 // CHECK-NEXT: [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4735 return _mm_min_epi64(__A,__B);
4737 __m128i test_mm_mask_min_epi64(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
4738 // CHECK-LABEL: @test_mm_mask_min_epi64
4739 // CHECK: [[CMP:%.*]] = icmp slt <2 x i64> [[X:%.*]], [[Y:%.*]]
4740 // CHECK-NEXT: [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4741 // CHECK: select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}
4742 return _mm_mask_min_epi64(__W,__M,__A,__B);
4744 __m128i test_mm_maskz_min_epi64(__mmask8 __M, __m128i __A, __m128i __B) {
4745 // CHECK-LABEL: @test_mm_maskz_min_epi64
4746 // CHECK: [[CMP:%.*]] = icmp slt <2 x i64> [[X:%.*]], [[Y:%.*]]
4747 // CHECK-NEXT: [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4748 // CHECK: select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}
4749 return _mm_maskz_min_epi64(__M,__A,__B);
4751 __m256i test_mm256_min_epi64(__m256i __A, __m256i __B) {
4752 // CHECK-LABEL: @test_mm256_min_epi64
4753 // CHECK: [[CMP:%.*]] = icmp slt <4 x i64> [[X:%.*]], [[Y:%.*]]
4754 // CHECK-NEXT: [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4755 return _mm256_min_epi64(__A,__B);
4757 __m256i test_mm256_mask_min_epi64(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
4758 // CHECK-LABEL: @test_mm256_mask_min_epi64
4759 // CHECK: [[CMP:%.*]] = icmp slt <4 x i64> [[X:%.*]], [[Y:%.*]]
4760 // CHECK-NEXT: [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4761 // CHECK: select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}
4762 return _mm256_mask_min_epi64(__W,__M,__A,__B);
4764 __m256i test_mm256_maskz_min_epi64(__mmask8 __M, __m256i __A, __m256i __B) {
4765 // CHECK-LABEL: @test_mm256_maskz_min_epi64
4766 // CHECK: [[CMP:%.*]] = icmp slt <4 x i64> [[X:%.*]], [[Y:%.*]]
4767 // CHECK-NEXT: [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4768 // CHECK: select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}
4769 return _mm256_maskz_min_epi64(__M,__A,__B);
4771 __m128i test_mm_maskz_min_epu32(__mmask8 __M, __m128i __A, __m128i __B) {
4772 // CHECK-LABEL: @test_mm_maskz_min_epu32
4773 // CHECK: [[CMP:%.*]] = icmp ult <4 x i32> [[X:%.*]], [[Y:%.*]]
4774 // CHECK-NEXT: [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[X]], <4 x i32> [[Y]]
4775 // CHECK: select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}
4776 return _mm_maskz_min_epu32(__M,__A,__B);
4778 __m128i test_mm_mask_min_epu32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
4779 // CHECK-LABEL: @test_mm_mask_min_epu32
4780 // CHECK: [[CMP:%.*]] = icmp ult <4 x i32> [[X:%.*]], [[Y:%.*]]
4781 // CHECK-NEXT: [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i32> [[X]], <4 x i32> [[Y]]
4782 // CHECK: select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}
4783 return _mm_mask_min_epu32(__W,__M,__A,__B);
4785 __m256i test_mm256_maskz_min_epu32(__mmask8 __M, __m256i __A, __m256i __B) {
4786 // CHECK-LABEL: @test_mm256_maskz_min_epu32
4787 // CHECK: [[CMP:%.*]] = icmp ult <8 x i32> [[X:%.*]], [[Y:%.*]]
4788 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[X]], <8 x i32> [[Y]]
4789 // CHECK: select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}
4790 return _mm256_maskz_min_epu32(__M,__A,__B);
4792 __m256i test_mm256_mask_min_epu32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
4793 // CHECK-LABEL: @test_mm256_mask_min_epu32
4794 // CHECK: [[CMP:%.*]] = icmp ult <8 x i32> [[X:%.*]], [[Y:%.*]]
4795 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i32> [[X]], <8 x i32> [[Y]]
4796 // CHECK: select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}
4797 return _mm256_mask_min_epu32(__W,__M,__A,__B);
4799 __m128i test_mm_min_epu64(__m128i __A, __m128i __B) {
4800 // CHECK-LABEL: @test_mm_min_epu64
4801 // CHECK: [[CMP:%.*]] = icmp ult <2 x i64> [[X:%.*]], [[Y:%.*]]
4802 // CHECK-NEXT: [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4803 return _mm_min_epu64(__A,__B);
4805 __m128i test_mm_mask_min_epu64(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
4806 // CHECK-LABEL: @test_mm_mask_min_epu64
4807 // CHECK: [[CMP:%.*]] = icmp ult <2 x i64> [[X:%.*]], [[Y:%.*]]
4808 // CHECK-NEXT: [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4809 // CHECK: select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}
4810 return _mm_mask_min_epu64(__W,__M,__A,__B);
4812 __m128i test_mm_maskz_min_epu64(__mmask8 __M, __m128i __A, __m128i __B) {
4813 // CHECK-LABEL: @test_mm_maskz_min_epu64
4814 // CHECK: [[CMP:%.*]] = icmp ult <2 x i64> [[X:%.*]], [[Y:%.*]]
4815 // CHECK-NEXT: [[RES:%.*]] = select <2 x i1> [[CMP]], <2 x i64> [[X]], <2 x i64> [[Y]]
4816 // CHECK: select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}
4817 return _mm_maskz_min_epu64(__M,__A,__B);
4819 __m256i test_mm256_min_epu64(__m256i __A, __m256i __B) {
4820 // CHECK-LABEL: @test_mm256_min_epu64
4821 // CHECK: [[CMP:%.*]] = icmp ult <4 x i64> [[X:%.*]], [[Y:%.*]]
4822 // CHECK-NEXT: [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4823 return _mm256_min_epu64(__A,__B);
4825 __m256i test_mm256_mask_min_epu64(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
4826 // CHECK-LABEL: @test_mm256_mask_min_epu64
4827 // CHECK: [[CMP:%.*]] = icmp ult <4 x i64> [[X:%.*]], [[Y:%.*]]
4828 // CHECK-NEXT: [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4829 // CHECK: select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}
4830 return _mm256_mask_min_epu64(__W,__M,__A,__B);
4832 __m256i test_mm256_maskz_min_epu64(__mmask8 __M, __m256i __A, __m256i __B) {
4833 // CHECK-LABEL: @test_mm256_maskz_min_epu64
4834 // CHECK: [[CMP:%.*]] = icmp ult <4 x i64> [[X:%.*]], [[Y:%.*]]
4835 // CHECK-NEXT: [[RES:%.*]] = select <4 x i1> [[CMP]], <4 x i64> [[X]], <4 x i64> [[Y]]
4836 // CHECK: select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}
4837 return _mm256_maskz_min_epu64(__M,__A,__B);
4839 __m128d test_mm_roundscale_pd(__m128d __A) {
4840 // CHECK-LABEL: @test_mm_roundscale_pd
4841 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.128
4842 return _mm_roundscale_pd(__A,4);
4844 __m128d test_mm_mask_roundscale_pd(__m128d __W, __mmask8 __U, __m128d __A) {
4845 // CHECK-LABEL: @test_mm_mask_roundscale_pd
4846 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.128
4847 return _mm_mask_roundscale_pd(__W,__U,__A,4);
4849 __m128d test_mm_maskz_roundscale_pd(__mmask8 __U, __m128d __A) {
4850 // CHECK-LABEL: @test_mm_maskz_roundscale_pd
4851 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.128
4852 return _mm_maskz_roundscale_pd(__U,__A,4);
4854 __m256d test_mm256_roundscale_pd(__m256d __A) {
4855 // CHECK-LABEL: @test_mm256_roundscale_pd
4856 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.256
4857 return _mm256_roundscale_pd(__A,4);
4859 __m256d test_mm256_mask_roundscale_pd(__m256d __W, __mmask8 __U, __m256d __A) {
4860 // CHECK-LABEL: @test_mm256_mask_roundscale_pd
4861 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.256
4862 return _mm256_mask_roundscale_pd(__W,__U,__A,4);
4864 __m256d test_mm256_maskz_roundscale_pd(__mmask8 __U, __m256d __A) {
4865 // CHECK-LABEL: @test_mm256_maskz_roundscale_pd
4866 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.256
4867 return _mm256_maskz_roundscale_pd(__U,__A,4);
4869 __m128 test_mm_roundscale_ps(__m128 __A) {
4870 // CHECK-LABEL: @test_mm_roundscale_ps
4871 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.128
4872 return _mm_roundscale_ps(__A,4);
4874 __m128 test_mm_mask_roundscale_ps(__m128 __W, __mmask8 __U, __m128 __A) {
4875 // CHECK-LABEL: @test_mm_mask_roundscale_ps
4876 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.128
4877 return _mm_mask_roundscale_ps(__W,__U,__A,4);
4879 __m128 test_mm_maskz_roundscale_ps(__mmask8 __U, __m128 __A) {
4880 // CHECK-LABEL: @test_mm_maskz_roundscale_ps
4881 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.128
4882 return _mm_maskz_roundscale_ps(__U,__A, 4);
4884 __m256 test_mm256_roundscale_ps(__m256 __A) {
4885 // CHECK-LABEL: @test_mm256_roundscale_ps
4886 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.256
4887 return _mm256_roundscale_ps(__A,4);
4889 __m256 test_mm256_mask_roundscale_ps(__m256 __W, __mmask8 __U, __m256 __A) {
4890 // CHECK-LABEL: @test_mm256_mask_roundscale_ps
4891 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.256
4892 return _mm256_mask_roundscale_ps(__W,__U,__A,4);
4894 __m256 test_mm256_maskz_roundscale_ps(__mmask8 __U, __m256 __A) {
4895 // CHECK-LABEL: @test_mm256_maskz_roundscale_ps
4896 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.256
4897 return _mm256_maskz_roundscale_ps(__U,__A,4);
4899 __m128d test_mm_scalef_pd(__m128d __A, __m128d __B) {
4900 // CHECK-LABEL: @test_mm_scalef_pd
4901 // CHECK: @llvm.x86.avx512.mask.scalef.pd.128
4902 return _mm_scalef_pd(__A,__B);
4904 __m128d test_mm_mask_scalef_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
4905 // CHECK-LABEL: @test_mm_mask_scalef_pd
4906 // CHECK: @llvm.x86.avx512.mask.scalef.pd.128
4907 return _mm_mask_scalef_pd(__W,__U,__A,__B);
4909 __m128d test_mm_maskz_scalef_pd(__mmask8 __U, __m128d __A, __m128d __B) {
4910 // CHECK-LABEL: @test_mm_maskz_scalef_pd
4911 // CHECK: @llvm.x86.avx512.mask.scalef.pd.128
4912 return _mm_maskz_scalef_pd(__U,__A,__B);
4914 __m256d test_mm256_scalef_pd(__m256d __A, __m256d __B) {
4915 // CHECK-LABEL: @test_mm256_scalef_pd
4916 // CHECK: @llvm.x86.avx512.mask.scalef.pd.256
4917 return _mm256_scalef_pd(__A,__B);
4919 __m256d test_mm256_mask_scalef_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
4920 // CHECK-LABEL: @test_mm256_mask_scalef_pd
4921 // CHECK: @llvm.x86.avx512.mask.scalef.pd.256
4922 return _mm256_mask_scalef_pd(__W,__U,__A,__B);
4924 __m256d test_mm256_maskz_scalef_pd(__mmask8 __U, __m256d __A, __m256d __B) {
4925 // CHECK-LABEL: @test_mm256_maskz_scalef_pd
4926 // CHECK: @llvm.x86.avx512.mask.scalef.pd.256
4927 return _mm256_maskz_scalef_pd(__U,__A,__B);
4929 __m128 test_mm_scalef_ps(__m128 __A, __m128 __B) {
4930 // CHECK-LABEL: @test_mm_scalef_ps
4931 // CHECK: @llvm.x86.avx512.mask.scalef.ps.128
4932 return _mm_scalef_ps(__A,__B);
4934 __m128 test_mm_mask_scalef_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
4935 // CHECK-LABEL: @test_mm_mask_scalef_ps
4936 // CHECK: @llvm.x86.avx512.mask.scalef.ps.128
4937 return _mm_mask_scalef_ps(__W,__U,__A,__B);
4939 __m128 test_mm_maskz_scalef_ps(__mmask8 __U, __m128 __A, __m128 __B) {
4940 // CHECK-LABEL: @test_mm_maskz_scalef_ps
4941 // CHECK: @llvm.x86.avx512.mask.scalef.ps.128
4942 return _mm_maskz_scalef_ps(__U,__A,__B);
4944 __m256 test_mm256_scalef_ps(__m256 __A, __m256 __B) {
4945 // CHECK-LABEL: @test_mm256_scalef_ps
4946 // CHECK: @llvm.x86.avx512.mask.scalef.ps.256
4947 return _mm256_scalef_ps(__A,__B);
4949 __m256 test_mm256_mask_scalef_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
4950 // CHECK-LABEL: @test_mm256_mask_scalef_ps
4951 // CHECK: @llvm.x86.avx512.mask.scalef.ps.256
4952 return _mm256_mask_scalef_ps(__W,__U,__A,__B);
4954 __m256 test_mm256_maskz_scalef_ps(__mmask8 __U, __m256 __A, __m256 __B) {
4955 // CHECK-LABEL: @test_mm256_maskz_scalef_ps
4956 // CHECK: @llvm.x86.avx512.mask.scalef.ps.256
4957 return _mm256_maskz_scalef_ps(__U,__A,__B);
4959 void test_mm_i64scatter_pd(double *__addr, __m128i __index, __m128d __v1) {
4960 // CHECK-LABEL: @test_mm_i64scatter_pd
4961 // CHECK: @llvm.x86.avx512.scatterdiv2.df
4962 return _mm_i64scatter_pd(__addr,__index,__v1,2);
4964 void test_mm_mask_i64scatter_pd(double *__addr, __mmask8 __mask, __m128i __index, __m128d __v1) {
4965 // CHECK-LABEL: @test_mm_mask_i64scatter_pd
4966 // CHECK: @llvm.x86.avx512.scatterdiv2.df
4967 return _mm_mask_i64scatter_pd(__addr,__mask,__index,__v1,2);
4969 void test_mm_i64scatter_epi64(long long *__addr, __m128i __index, __m128i __v1) {
4970 // CHECK-LABEL: @test_mm_i64scatter_epi64
4971 // CHECK: @llvm.x86.avx512.scatterdiv2.di
4972 return _mm_i64scatter_epi64(__addr,__index,__v1,2);
4974 void test_mm_mask_i64scatter_epi64(long long *__addr, __mmask8 __mask, __m128i __index, __m128i __v1) {
4975 // CHECK-LABEL: @test_mm_mask_i64scatter_epi64
4976 // CHECK: @llvm.x86.avx512.scatterdiv2.di
4977 return _mm_mask_i64scatter_epi64(__addr,__mask,__index,__v1,2);
4979 void test_mm256_i64scatter_pd(double *__addr, __m256i __index, __m256d __v1) {
4980 // CHECK-LABEL: @test_mm256_i64scatter_pd
4981 // CHECK: @llvm.x86.avx512.scatterdiv4.df
4982 return _mm256_i64scatter_pd(__addr,__index,__v1,2);
4984 void test_mm256_mask_i64scatter_pd(double *__addr, __mmask8 __mask, __m256i __index, __m256d __v1) {
4985 // CHECK-LABEL: @test_mm256_mask_i64scatter_pd
4986 // CHECK: @llvm.x86.avx512.scatterdiv4.df
4987 return _mm256_mask_i64scatter_pd(__addr,__mask,__index,__v1,2);
4989 void test_mm256_i64scatter_epi64(long long *__addr, __m256i __index, __m256i __v1) {
4990 // CHECK-LABEL: @test_mm256_i64scatter_epi64
4991 // CHECK: @llvm.x86.avx512.scatterdiv4.di
4992 return _mm256_i64scatter_epi64(__addr,__index,__v1,2);
4994 void test_mm256_mask_i64scatter_epi64(long long *__addr, __mmask8 __mask, __m256i __index, __m256i __v1) {
4995 // CHECK-LABEL: @test_mm256_mask_i64scatter_epi64
4996 // CHECK: @llvm.x86.avx512.scatterdiv4.di
4997 return _mm256_mask_i64scatter_epi64(__addr,__mask,__index,__v1,2);
4999 void test_mm_i64scatter_ps(float *__addr, __m128i __index, __m128 __v1) {
5000 // CHECK-LABEL: @test_mm_i64scatter_ps
5001 // CHECK: @llvm.x86.avx512.scatterdiv4.sf
5002 return _mm_i64scatter_ps(__addr,__index,__v1,2);
5004 void test_mm_mask_i64scatter_ps(float *__addr, __mmask8 __mask, __m128i __index, __m128 __v1) {
5005 // CHECK-LABEL: @test_mm_mask_i64scatter_ps
5006 // CHECK: @llvm.x86.avx512.scatterdiv4.sf
5007 return _mm_mask_i64scatter_ps(__addr,__mask,__index,__v1,2);
5009 void test_mm_i64scatter_epi32(int *__addr, __m128i __index, __m128i __v1) {
5010 // CHECK-LABEL: @test_mm_i64scatter_epi32
5011 // CHECK: @llvm.x86.avx512.scatterdiv4.si
5012 return _mm_i64scatter_epi32(__addr,__index,__v1,2);
5014 void test_mm_mask_i64scatter_epi32(int *__addr, __mmask8 __mask, __m128i __index, __m128i __v1) {
5015 // CHECK-LABEL: @test_mm_mask_i64scatter_epi32
5016 // CHECK: @llvm.x86.avx512.scatterdiv4.si
5017 return _mm_mask_i64scatter_epi32(__addr,__mask,__index,__v1,2);
5019 void test_mm256_i64scatter_ps(float *__addr, __m256i __index, __m128 __v1) {
5020 // CHECK-LABEL: @test_mm256_i64scatter_ps
5021 // CHECK: @llvm.x86.avx512.scatterdiv8.sf
5022 return _mm256_i64scatter_ps(__addr,__index,__v1,2);
5024 void test_mm256_mask_i64scatter_ps(float *__addr, __mmask8 __mask, __m256i __index, __m128 __v1) {
5025 // CHECK-LABEL: @test_mm256_mask_i64scatter_ps
5026 // CHECK: @llvm.x86.avx512.scatterdiv8.sf
5027 return _mm256_mask_i64scatter_ps(__addr,__mask,__index,__v1,2);
5029 void test_mm256_i64scatter_epi32(int *__addr, __m256i __index, __m128i __v1) {
5030 // CHECK-LABEL: @test_mm256_i64scatter_epi32
5031 // CHECK: @llvm.x86.avx512.scatterdiv8.si
5032 return _mm256_i64scatter_epi32(__addr,__index,__v1,2);
5034 void test_mm256_mask_i64scatter_epi32(int *__addr, __mmask8 __mask, __m256i __index, __m128i __v1) {
5035 // CHECK-LABEL: @test_mm256_mask_i64scatter_epi32
5036 // CHECK: @llvm.x86.avx512.scatterdiv8.si
5037 return _mm256_mask_i64scatter_epi32(__addr,__mask,__index,__v1,2);
5039 void test_mm_i32scatter_pd(double *__addr, __m128i __index, __m128d __v1) {
5040 // CHECK-LABEL: @test_mm_i32scatter_pd
5041 // CHECK: @llvm.x86.avx512.scattersiv2.df
5042 return _mm_i32scatter_pd(__addr,__index,__v1,2);
5044 void test_mm_mask_i32scatter_pd(double *__addr, __mmask8 __mask, __m128i __index, __m128d __v1) {
5045 // CHECK-LABEL: @test_mm_mask_i32scatter_pd
5046 // CHECK: @llvm.x86.avx512.scattersiv2.df
5047 return _mm_mask_i32scatter_pd(__addr,__mask,__index,__v1,2);
5049 void test_mm_i32scatter_epi64(long long *__addr, __m128i __index, __m128i __v1) {
5050 // CHECK-LABEL: @test_mm_i32scatter_epi64
5051 // CHECK: @llvm.x86.avx512.scattersiv2.di
5052 return _mm_i32scatter_epi64(__addr,__index,__v1,2);
5054 void test_mm_mask_i32scatter_epi64(long long *__addr, __mmask8 __mask, __m128i __index, __m128i __v1) {
5055 // CHECK-LABEL: @test_mm_mask_i32scatter_epi64
5056 // CHECK: @llvm.x86.avx512.scattersiv2.di
5057 return _mm_mask_i32scatter_epi64(__addr,__mask,__index,__v1,2);
5059 void test_mm256_i32scatter_pd(double *__addr, __m128i __index, __m256d __v1) {
5060 // CHECK-LABEL: @test_mm256_i32scatter_pd
5061 // CHECK: @llvm.x86.avx512.scattersiv4.df
5062 return _mm256_i32scatter_pd(__addr,__index,__v1,2);
5064 void test_mm256_mask_i32scatter_pd(double *__addr, __mmask8 __mask, __m128i __index, __m256d __v1) {
5065 // CHECK-LABEL: @test_mm256_mask_i32scatter_pd
5066 // CHECK: @llvm.x86.avx512.scattersiv4.df
5067 return _mm256_mask_i32scatter_pd(__addr,__mask,__index,__v1,2);
5069 void test_mm256_i32scatter_epi64(long long *__addr, __m128i __index, __m256i __v1) {
5070 // CHECK-LABEL: @test_mm256_i32scatter_epi64
5071 // CHECK: @llvm.x86.avx512.scattersiv4.di
5072 return _mm256_i32scatter_epi64(__addr,__index,__v1,2);
5074 void test_mm256_mask_i32scatter_epi64(long long *__addr, __mmask8 __mask, __m128i __index, __m256i __v1) {
5075 // CHECK-LABEL: @test_mm256_mask_i32scatter_epi64
5076 // CHECK: @llvm.x86.avx512.scattersiv4.di
5077 return _mm256_mask_i32scatter_epi64(__addr,__mask,__index,__v1,2);
5079 void test_mm_i32scatter_ps(float *__addr, __m128i __index, __m128 __v1) {
5080 // CHECK-LABEL: @test_mm_i32scatter_ps
5081 // CHECK: @llvm.x86.avx512.scattersiv4.sf
5082 return _mm_i32scatter_ps(__addr,__index,__v1,2);
5084 void test_mm_mask_i32scatter_ps(float *__addr, __mmask8 __mask, __m128i __index, __m128 __v1) {
5085 // CHECK-LABEL: @test_mm_mask_i32scatter_ps
5086 // CHECK: @llvm.x86.avx512.scattersiv4.sf
5087 return _mm_mask_i32scatter_ps(__addr,__mask,__index,__v1,2);
5089 void test_mm_i32scatter_epi32(int *__addr, __m128i __index, __m128i __v1) {
5090 // CHECK-LABEL: @test_mm_i32scatter_epi32
5091 // CHECK: @llvm.x86.avx512.scattersiv4.si
5092 return _mm_i32scatter_epi32(__addr,__index,__v1,2);
5094 void test_mm_mask_i32scatter_epi32(int *__addr, __mmask8 __mask, __m128i __index, __m128i __v1) {
5095 // CHECK-LABEL: @test_mm_mask_i32scatter_epi32
5096 // CHECK: @llvm.x86.avx512.scattersiv4.si
5097 return _mm_mask_i32scatter_epi32(__addr,__mask,__index,__v1,2);
5099 void test_mm256_i32scatter_ps(float *__addr, __m256i __index, __m256 __v1) {
5100 // CHECK-LABEL: @test_mm256_i32scatter_ps
5101 // CHECK: @llvm.x86.avx512.scattersiv8.sf
5102 return _mm256_i32scatter_ps(__addr,__index,__v1,2);
5104 void test_mm256_mask_i32scatter_ps(float *__addr, __mmask8 __mask, __m256i __index, __m256 __v1) {
5105 // CHECK-LABEL: @test_mm256_mask_i32scatter_ps
5106 // CHECK: @llvm.x86.avx512.scattersiv8.sf
5107 return _mm256_mask_i32scatter_ps(__addr,__mask,__index,__v1,2);
5109 void test_mm256_i32scatter_epi32(int *__addr, __m256i __index, __m256i __v1) {
5110 // CHECK-LABEL: @test_mm256_i32scatter_epi32
5111 // CHECK: @llvm.x86.avx512.scattersiv8.si
5112 return _mm256_i32scatter_epi32(__addr,__index,__v1,2);
5114 void test_mm256_mask_i32scatter_epi32(int *__addr, __mmask8 __mask, __m256i __index, __m256i __v1) {
5115 // CHECK-LABEL: @test_mm256_mask_i32scatter_epi32
5116 // CHECK: @llvm.x86.avx512.scattersiv8.si
5117 return _mm256_mask_i32scatter_epi32(__addr,__mask,__index,__v1,2);
5119 __m128d test_mm_mask_sqrt_pd(__m128d __W, __mmask8 __U, __m128d __A) {
5120 // CHECK-LABEL: @test_mm_mask_sqrt_pd
5121 // CHECK: @llvm.sqrt.v2f64
5122 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
5123 return _mm_mask_sqrt_pd(__W,__U,__A);
5125 __m128d test_mm_maskz_sqrt_pd(__mmask8 __U, __m128d __A) {
5126 // CHECK-LABEL: @test_mm_maskz_sqrt_pd
5127 // CHECK: @llvm.sqrt.v2f64
5128 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
5129 return _mm_maskz_sqrt_pd(__U,__A);
5131 __m256d test_mm256_mask_sqrt_pd(__m256d __W, __mmask8 __U, __m256d __A) {
5132 // CHECK-LABEL: @test_mm256_mask_sqrt_pd
5133 // CHECK: @llvm.sqrt.v4f64
5134 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
5135 return _mm256_mask_sqrt_pd(__W,__U,__A);
5137 __m256d test_mm256_maskz_sqrt_pd(__mmask8 __U, __m256d __A) {
5138 // CHECK-LABEL: @test_mm256_maskz_sqrt_pd
5139 // CHECK: @llvm.sqrt.v4f64
5140 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
5141 return _mm256_maskz_sqrt_pd(__U,__A);
5143 __m128 test_mm_mask_sqrt_ps(__m128 __W, __mmask8 __U, __m128 __A) {
5144 // CHECK-LABEL: @test_mm_mask_sqrt_ps
5145 // CHECK: @llvm.sqrt.v4f32
5146 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
5147 return _mm_mask_sqrt_ps(__W,__U,__A);
5149 __m128 test_mm_maskz_sqrt_ps(__mmask8 __U, __m128 __A) {
5150 // CHECK-LABEL: @test_mm_maskz_sqrt_ps
5151 // CHECK: @llvm.sqrt.v4f32
5152 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
5153 return _mm_maskz_sqrt_ps(__U,__A);
5155 __m256 test_mm256_mask_sqrt_ps(__m256 __W, __mmask8 __U, __m256 __A) {
5156 // CHECK-LABEL: @test_mm256_mask_sqrt_ps
5157 // CHECK: @llvm.sqrt.v8f32
5158 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
5159 return _mm256_mask_sqrt_ps(__W,__U,__A);
5161 __m256 test_mm256_maskz_sqrt_ps(__mmask8 __U, __m256 __A) {
5162 // CHECK-LABEL: @test_mm256_maskz_sqrt_ps
5163 // CHECK: @llvm.sqrt.v8f32
5164 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
5165 return _mm256_maskz_sqrt_ps(__U,__A);
5167 __m128d test_mm_mask_sub_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
5168 // CHECK-LABEL: @test_mm_mask_sub_pd
5169 // CHECK: fsub <2 x double> %{{.*}}, %{{.*}}
5170 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
5171 return _mm_mask_sub_pd(__W,__U,__A,__B);
5173 __m128d test_mm_maskz_sub_pd(__mmask8 __U, __m128d __A, __m128d __B) {
5174 // CHECK-LABEL: @test_mm_maskz_sub_pd
5175 // CHECK: fsub <2 x double> %{{.*}}, %{{.*}}
5176 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
5177 return _mm_maskz_sub_pd(__U,__A,__B);
5179 __m256d test_mm256_mask_sub_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
5180 // CHECK-LABEL: @test_mm256_mask_sub_pd
5181 // CHECK: fsub <4 x double> %{{.*}}, %{{.*}}
5182 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
5183 return _mm256_mask_sub_pd(__W,__U,__A,__B);
5185 __m256d test_mm256_maskz_sub_pd(__mmask8 __U, __m256d __A, __m256d __B) {
5186 // CHECK-LABEL: @test_mm256_maskz_sub_pd
5187 // CHECK: fsub <4 x double> %{{.*}}, %{{.*}}
5188 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
5189 return _mm256_maskz_sub_pd(__U,__A,__B);
5191 __m128 test_mm_mask_sub_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
5192 // CHECK-LABEL: @test_mm_mask_sub_ps
5193 // CHECK: fsub <4 x float> %{{.*}}, %{{.*}}
5194 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
5195 return _mm_mask_sub_ps(__W,__U,__A,__B);
5197 __m128 test_mm_maskz_sub_ps(__mmask8 __U, __m128 __A, __m128 __B) {
5198 // CHECK-LABEL: @test_mm_maskz_sub_ps
5199 // CHECK: fsub <4 x float> %{{.*}}, %{{.*}}
5200 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
5201 return _mm_maskz_sub_ps(__U,__A,__B);
5203 __m256 test_mm256_mask_sub_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
5204 // CHECK-LABEL: @test_mm256_mask_sub_ps
5205 // CHECK: fsub <8 x float> %{{.*}}, %{{.*}}
5206 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
5207 return _mm256_mask_sub_ps(__W,__U,__A,__B);
5209 __m256 test_mm256_maskz_sub_ps(__mmask8 __U, __m256 __A, __m256 __B) {
5210 // CHECK-LABEL: @test_mm256_maskz_sub_ps
5211 // CHECK: fsub <8 x float> %{{.*}}, %{{.*}}
5212 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
5213 return _mm256_maskz_sub_ps(__U,__A,__B);
5215 __m128i test_mm_mask2_permutex2var_epi32(__m128i __A, __m128i __I, __mmask8 __U, __m128i __B) {
5216 // CHECK-LABEL: @test_mm_mask2_permutex2var_epi32
5217 // CHECK: @llvm.x86.avx512.vpermi2var.d.128
5218 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5219 return _mm_mask2_permutex2var_epi32(__A,__I,__U,__B);
5221 __m256i test_mm256_mask2_permutex2var_epi32(__m256i __A, __m256i __I, __mmask8 __U, __m256i __B) {
5222 // CHECK-LABEL: @test_mm256_mask2_permutex2var_epi32
5223 // CHECK: @llvm.x86.avx512.vpermi2var.d.256
5224 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5225 return _mm256_mask2_permutex2var_epi32(__A,__I,__U,__B);
5227 __m128d test_mm_mask2_permutex2var_pd(__m128d __A, __m128i __I, __mmask8 __U, __m128d __B) {
5228 // CHECK-LABEL: @test_mm_mask2_permutex2var_pd
5229 // CHECK: @llvm.x86.avx512.vpermi2var.pd.128
5230 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
5231 return _mm_mask2_permutex2var_pd(__A,__I,__U,__B);
5233 __m256d test_mm256_mask2_permutex2var_pd(__m256d __A, __m256i __I, __mmask8 __U, __m256d __B) {
5234 // CHECK-LABEL: @test_mm256_mask2_permutex2var_pd
5235 // CHECK: @llvm.x86.avx512.vpermi2var.pd.256
5236 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
5237 return _mm256_mask2_permutex2var_pd(__A,__I,__U,__B);
5239 __m128 test_mm_mask2_permutex2var_ps(__m128 __A, __m128i __I, __mmask8 __U, __m128 __B) {
5240 // CHECK-LABEL: @test_mm_mask2_permutex2var_ps
5241 // CHECK: @llvm.x86.avx512.vpermi2var.ps.128
5242 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
5243 return _mm_mask2_permutex2var_ps(__A,__I,__U,__B);
5245 __m256 test_mm256_mask2_permutex2var_ps(__m256 __A, __m256i __I, __mmask8 __U, __m256 __B) {
5246 // CHECK-LABEL: @test_mm256_mask2_permutex2var_ps
5247 // CHECK: @llvm.x86.avx512.vpermi2var.ps.256
5248 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
5249 return _mm256_mask2_permutex2var_ps(__A,__I,__U,__B);
5251 __m128i test_mm_mask2_permutex2var_epi64(__m128i __A, __m128i __I, __mmask8 __U, __m128i __B) {
5252 // CHECK-LABEL: @test_mm_mask2_permutex2var_epi64
5253 // CHECK: @llvm.x86.avx512.vpermi2var.q.128
5254 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5255 return _mm_mask2_permutex2var_epi64(__A,__I,__U,__B);
5257 __m256i test_mm256_mask2_permutex2var_epi64(__m256i __A, __m256i __I, __mmask8 __U, __m256i __B) {
5258 // CHECK-LABEL: @test_mm256_mask2_permutex2var_epi64
5259 // CHECK: @llvm.x86.avx512.vpermi2var.q.256
5260 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5261 return _mm256_mask2_permutex2var_epi64(__A,__I,__U,__B);
5263 __m128i test_mm_permutex2var_epi32(__m128i __A, __m128i __I, __m128i __B) {
5264 // CHECK-LABEL: @test_mm_permutex2var_epi32
5265 // CHECK: @llvm.x86.avx512.vpermi2var.d.128
5266 return _mm_permutex2var_epi32(__A,__I,__B);
5268 __m128i test_mm_mask_permutex2var_epi32(__m128i __A, __mmask8 __U, __m128i __I, __m128i __B) {
5269 // CHECK-LABEL: @test_mm_mask_permutex2var_epi32
5270 // CHECK: @llvm.x86.avx512.vpermi2var.d.128
5271 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5272 return _mm_mask_permutex2var_epi32(__A,__U,__I,__B);
5274 __m128i test_mm_maskz_permutex2var_epi32(__mmask8 __U, __m128i __A, __m128i __I, __m128i __B) {
5275 // CHECK-LABEL: @test_mm_maskz_permutex2var_epi32
5276 // CHECK: @llvm.x86.avx512.vpermi2var.d.128
5277 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5278 return _mm_maskz_permutex2var_epi32(__U,__A,__I,__B);
5280 __m256i test_mm256_permutex2var_epi32(__m256i __A, __m256i __I, __m256i __B) {
5281 // CHECK-LABEL: @test_mm256_permutex2var_epi32
5282 // CHECK: @llvm.x86.avx512.vpermi2var.d.256
5283 return _mm256_permutex2var_epi32(__A,__I,__B);
5285 __m256i test_mm256_mask_permutex2var_epi32(__m256i __A, __mmask8 __U, __m256i __I, __m256i __B) {
5286 // CHECK-LABEL: @test_mm256_mask_permutex2var_epi32
5287 // CHECK: @llvm.x86.avx512.vpermi2var.d.256
5288 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5289 return _mm256_mask_permutex2var_epi32(__A,__U,__I,__B);
5291 __m256i test_mm256_maskz_permutex2var_epi32(__mmask8 __U, __m256i __A, __m256i __I, __m256i __B) {
5292 // CHECK-LABEL: @test_mm256_maskz_permutex2var_epi32
5293 // CHECK: @llvm.x86.avx512.vpermi2var.d.256
5294 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5295 return _mm256_maskz_permutex2var_epi32(__U,__A,__I,__B);
5297 __m128d test_mm_permutex2var_pd(__m128d __A, __m128i __I, __m128d __B) {
5298 // CHECK-LABEL: @test_mm_permutex2var_pd
5299 // CHECK: @llvm.x86.avx512.vpermi2var.pd.128
5300 return _mm_permutex2var_pd(__A,__I,__B);
5302 __m128d test_mm_mask_permutex2var_pd(__m128d __A, __mmask8 __U, __m128i __I, __m128d __B) {
5303 // CHECK-LABEL: @test_mm_mask_permutex2var_pd
5304 // CHECK: @llvm.x86.avx512.vpermi2var.pd.128
5305 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
5306 return _mm_mask_permutex2var_pd(__A,__U,__I,__B);
5308 __m128d test_mm_maskz_permutex2var_pd(__mmask8 __U, __m128d __A, __m128i __I, __m128d __B) {
5309 // CHECK-LABEL: @test_mm_maskz_permutex2var_pd
5310 // CHECK: @llvm.x86.avx512.vpermi2var.pd.128
5311 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
5312 return _mm_maskz_permutex2var_pd(__U,__A,__I,__B);
5314 __m256d test_mm256_permutex2var_pd(__m256d __A, __m256i __I, __m256d __B) {
5315 // CHECK-LABEL: @test_mm256_permutex2var_pd
5316 // CHECK: @llvm.x86.avx512.vpermi2var.pd.256
5317 return _mm256_permutex2var_pd(__A,__I,__B);
5319 __m256d test_mm256_mask_permutex2var_pd(__m256d __A, __mmask8 __U, __m256i __I, __m256d __B) {
5320 // CHECK-LABEL: @test_mm256_mask_permutex2var_pd
5321 // CHECK: @llvm.x86.avx512.vpermi2var.pd.256
5322 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
5323 return _mm256_mask_permutex2var_pd(__A,__U,__I,__B);
5325 __m256d test_mm256_maskz_permutex2var_pd(__mmask8 __U, __m256d __A, __m256i __I, __m256d __B) {
5326 // CHECK-LABEL: @test_mm256_maskz_permutex2var_pd
5327 // CHECK: @llvm.x86.avx512.vpermi2var.pd.256
5328 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
5329 return _mm256_maskz_permutex2var_pd(__U,__A,__I,__B);
5331 __m128 test_mm_permutex2var_ps(__m128 __A, __m128i __I, __m128 __B) {
5332 // CHECK-LABEL: @test_mm_permutex2var_ps
5333 // CHECK: @llvm.x86.avx512.vpermi2var.ps.128
5334 return _mm_permutex2var_ps(__A,__I,__B);
5336 __m128 test_mm_mask_permutex2var_ps(__m128 __A, __mmask8 __U, __m128i __I, __m128 __B) {
5337 // CHECK-LABEL: @test_mm_mask_permutex2var_ps
5338 // CHECK: @llvm.x86.avx512.vpermi2var.ps.128
5339 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
5340 return _mm_mask_permutex2var_ps(__A,__U,__I,__B);
5342 __m128 test_mm_maskz_permutex2var_ps(__mmask8 __U, __m128 __A, __m128i __I, __m128 __B) {
5343 // CHECK-LABEL: @test_mm_maskz_permutex2var_ps
5344 // CHECK: @llvm.x86.avx512.vpermi2var.ps.128
5345 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
5346 return _mm_maskz_permutex2var_ps(__U,__A,__I,__B);
5348 __m256 test_mm256_permutex2var_ps(__m256 __A, __m256i __I, __m256 __B) {
5349 // CHECK-LABEL: @test_mm256_permutex2var_ps
5350 // CHECK: @llvm.x86.avx512.vpermi2var.ps.256
5351 return _mm256_permutex2var_ps(__A,__I,__B);
5353 __m256 test_mm256_mask_permutex2var_ps(__m256 __A, __mmask8 __U, __m256i __I, __m256 __B) {
5354 // CHECK-LABEL: @test_mm256_mask_permutex2var_ps
5355 // CHECK: @llvm.x86.avx512.vpermi2var.ps.256
5356 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
5357 return _mm256_mask_permutex2var_ps(__A,__U,__I,__B);
5359 __m256 test_mm256_maskz_permutex2var_ps(__mmask8 __U, __m256 __A, __m256i __I, __m256 __B) {
5360 // CHECK-LABEL: @test_mm256_maskz_permutex2var_ps
5361 // CHECK: @llvm.x86.avx512.vpermi2var.ps.256
5362 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
5363 return _mm256_maskz_permutex2var_ps(__U,__A,__I,__B);
5365 __m128i test_mm_permutex2var_epi64(__m128i __A, __m128i __I, __m128i __B) {
5366 // CHECK-LABEL: @test_mm_permutex2var_epi64
5367 // CHECK: @llvm.x86.avx512.vpermi2var.q.128
5368 return _mm_permutex2var_epi64(__A,__I,__B);
5370 __m128i test_mm_mask_permutex2var_epi64(__m128i __A, __mmask8 __U, __m128i __I, __m128i __B) {
5371 // CHECK-LABEL: @test_mm_mask_permutex2var_epi64
5372 // CHECK: @llvm.x86.avx512.vpermi2var.q.128
5373 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5374 return _mm_mask_permutex2var_epi64(__A,__U,__I,__B);
5376 __m128i test_mm_maskz_permutex2var_epi64(__mmask8 __U, __m128i __A, __m128i __I, __m128i __B) {
5377 // CHECK-LABEL: @test_mm_maskz_permutex2var_epi64
5378 // CHECK: @llvm.x86.avx512.vpermi2var.q.128
5379 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5380 return _mm_maskz_permutex2var_epi64(__U,__A,__I,__B);
5382 __m256i test_mm256_permutex2var_epi64(__m256i __A, __m256i __I, __m256i __B) {
5383 // CHECK-LABEL: @test_mm256_permutex2var_epi64
5384 // CHECK: @llvm.x86.avx512.vpermi2var.q.256
5385 return _mm256_permutex2var_epi64(__A,__I,__B);
5387 __m256i test_mm256_mask_permutex2var_epi64(__m256i __A, __mmask8 __U, __m256i __I, __m256i __B) {
5388 // CHECK-LABEL: @test_mm256_mask_permutex2var_epi64
5389 // CHECK: @llvm.x86.avx512.vpermi2var.q.256
5390 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5391 return _mm256_mask_permutex2var_epi64(__A,__U,__I,__B);
5393 __m256i test_mm256_maskz_permutex2var_epi64(__mmask8 __U, __m256i __A, __m256i __I, __m256i __B) {
5394 // CHECK-LABEL: @test_mm256_maskz_permutex2var_epi64
5395 // CHECK: @llvm.x86.avx512.vpermi2var.q.256
5396 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5397 return _mm256_maskz_permutex2var_epi64(__U,__A,__I,__B);
5400 __m128i test_mm_mask_cvtepi8_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
5401 // CHECK-LABEL: @test_mm_mask_cvtepi8_epi32
5402 // CHECK: sext <4 x i8> %{{.*}} to <4 x i32>
5403 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5404 return _mm_mask_cvtepi8_epi32(__W, __U, __A);
5407 __m128i test_mm_maskz_cvtepi8_epi32(__mmask8 __U, __m128i __A) {
5408 // CHECK-LABEL: @test_mm_maskz_cvtepi8_epi32
5409 // CHECK: sext <4 x i8> %{{.*}} to <4 x i32>
5410 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5411 return _mm_maskz_cvtepi8_epi32(__U, __A);
5414 __m256i test_mm256_mask_cvtepi8_epi32(__m256i __W, __mmask8 __U, __m128i __A) {
5415 // CHECK-LABEL: @test_mm256_mask_cvtepi8_epi32
5416 // CHECK: sext <8 x i8> %{{.*}} to <8 x i32>
5417 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5418 return _mm256_mask_cvtepi8_epi32(__W, __U, __A);
5421 __m256i test_mm256_maskz_cvtepi8_epi32(__mmask8 __U, __m128i __A) {
5422 // CHECK-LABEL: @test_mm256_maskz_cvtepi8_epi32
5423 // CHECK: sext <8 x i8> %{{.*}} to <8 x i32>
5424 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5425 return _mm256_maskz_cvtepi8_epi32(__U, __A);
5428 __m128i test_mm_mask_cvtepi8_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
5429 // CHECK-LABEL: @test_mm_mask_cvtepi8_epi64
5430 // CHECK: sext <2 x i8> %{{.*}} to <2 x i64>
5431 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5432 return _mm_mask_cvtepi8_epi64(__W, __U, __A);
5435 __m128i test_mm_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A) {
5436 // CHECK-LABEL: @test_mm_maskz_cvtepi8_epi64
5437 // CHECK: sext <2 x i8> %{{.*}} to <2 x i64>
5438 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5439 return _mm_maskz_cvtepi8_epi64(__U, __A);
5442 __m256i test_mm256_mask_cvtepi8_epi64(__m256i __W, __mmask8 __U, __m128i __A) {
5443 // CHECK-LABEL: @test_mm256_mask_cvtepi8_epi64
5444 // CHECK: sext <4 x i8> %{{.*}} to <4 x i64>
5445 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5446 return _mm256_mask_cvtepi8_epi64(__W, __U, __A);
5449 __m256i test_mm256_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A) {
5450 // CHECK-LABEL: @test_mm256_maskz_cvtepi8_epi64
5451 // CHECK: sext <4 x i8> %{{.*}} to <4 x i64>
5452 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5453 return _mm256_maskz_cvtepi8_epi64(__U, __A);
5456 __m128i test_mm_mask_cvtepi32_epi64(__m128i __W, __mmask8 __U, __m128i __X) {
5457 // CHECK-LABEL: @test_mm_mask_cvtepi32_epi64
5458 // CHECK: sext <2 x i32> %{{.*}} to <2 x i64>
5459 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5460 return _mm_mask_cvtepi32_epi64(__W, __U, __X);
5463 __m128i test_mm_maskz_cvtepi32_epi64(__mmask8 __U, __m128i __X) {
5464 // CHECK-LABEL: @test_mm_maskz_cvtepi32_epi64
5465 // CHECK: sext <2 x i32> %{{.*}} to <2 x i64>
5466 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5467 return _mm_maskz_cvtepi32_epi64(__U, __X);
5470 __m256i test_mm256_mask_cvtepi32_epi64(__m256i __W, __mmask8 __U, __m128i __X) {
5471 // CHECK-LABEL: @test_mm256_mask_cvtepi32_epi64
5472 // CHECK: sext <4 x i32> %{{.*}} to <4 x i64>
5473 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5474 return _mm256_mask_cvtepi32_epi64(__W, __U, __X);
5477 __m256i test_mm256_maskz_cvtepi32_epi64(__mmask8 __U, __m128i __X) {
5478 // CHECK-LABEL: @test_mm256_maskz_cvtepi32_epi64
5479 // CHECK: sext <4 x i32> %{{.*}} to <4 x i64>
5480 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5481 return _mm256_maskz_cvtepi32_epi64(__U, __X);
5484 __m128i test_mm_mask_cvtepi16_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
5485 // CHECK-LABEL: @test_mm_mask_cvtepi16_epi32
5486 // CHECK: sext <4 x i16> %{{.*}} to <4 x i32>
5487 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5488 return _mm_mask_cvtepi16_epi32(__W, __U, __A);
5491 __m128i test_mm_maskz_cvtepi16_epi32(__mmask8 __U, __m128i __A) {
5492 // CHECK-LABEL: @test_mm_maskz_cvtepi16_epi32
5493 // CHECK: sext <4 x i16> %{{.*}} to <4 x i32>
5494 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5495 return _mm_maskz_cvtepi16_epi32(__U, __A);
5498 __m256i test_mm256_mask_cvtepi16_epi32(__m256i __W, __mmask8 __U, __m128i __A) {
5499 // CHECK-LABEL: @test_mm256_mask_cvtepi16_epi32
5500 // CHECK: sext <8 x i16> %{{.*}} to <8 x i32>
5501 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5502 return _mm256_mask_cvtepi16_epi32(__W, __U, __A);
5505 __m256i test_mm256_maskz_cvtepi16_epi32(__mmask8 __U, __m128i __A) {
5506 // CHECK-LABEL: @test_mm256_maskz_cvtepi16_epi32
5507 // CHECK: sext <8 x i16> %{{.*}} to <8 x i32>
5508 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5509 return _mm256_maskz_cvtepi16_epi32(__U, __A);
5512 __m128i test_mm_mask_cvtepi16_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
5513 // CHECK-LABEL: @test_mm_mask_cvtepi16_epi64
5514 // CHECK: sext <2 x i16> %{{.*}} to <2 x i64>
5515 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5516 return _mm_mask_cvtepi16_epi64(__W, __U, __A);
5519 __m128i test_mm_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A) {
5520 // CHECK-LABEL: @test_mm_maskz_cvtepi16_epi64
5521 // CHECK: sext <2 x i16> %{{.*}} to <2 x i64>
5522 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5523 return _mm_maskz_cvtepi16_epi64(__U, __A);
5526 __m256i test_mm256_mask_cvtepi16_epi64(__m256i __W, __mmask8 __U, __m128i __A) {
5527 // CHECK-LABEL: @test_mm256_mask_cvtepi16_epi64
5528 // CHECK: sext <4 x i16> %{{.*}} to <4 x i64>
5529 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5530 return _mm256_mask_cvtepi16_epi64(__W, __U, __A);
5533 __m256i test_mm256_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A) {
5534 // CHECK-LABEL: @test_mm256_maskz_cvtepi16_epi64
5535 // CHECK: sext <4 x i16> %{{.*}} to <4 x i64>
5536 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5537 return _mm256_maskz_cvtepi16_epi64(__U, __A);
5540 __m128i test_mm_mask_cvtepu8_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
5541 // CHECK-LABEL: @test_mm_mask_cvtepu8_epi32
5542 // CHECK: zext <4 x i8> %{{.*}} to <4 x i32>
5543 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5544 return _mm_mask_cvtepu8_epi32(__W, __U, __A);
5547 __m128i test_mm_maskz_cvtepu8_epi32(__mmask8 __U, __m128i __A) {
5548 // CHECK-LABEL: @test_mm_maskz_cvtepu8_epi32
5549 // CHECK: zext <4 x i8> %{{.*}} to <4 x i32>
5550 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5551 return _mm_maskz_cvtepu8_epi32(__U, __A);
5554 __m256i test_mm256_mask_cvtepu8_epi32(__m256i __W, __mmask8 __U, __m128i __A) {
5555 // CHECK-LABEL: @test_mm256_mask_cvtepu8_epi32
5556 // CHECK: zext <8 x i8> %{{.*}} to <8 x i32>
5557 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5558 return _mm256_mask_cvtepu8_epi32(__W, __U, __A);
5561 __m256i test_mm256_maskz_cvtepu8_epi32(__mmask8 __U, __m128i __A) {
5562 // CHECK-LABEL: @test_mm256_maskz_cvtepu8_epi32
5563 // CHECK: zext <8 x i8> %{{.*}} to <8 x i32>
5564 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5565 return _mm256_maskz_cvtepu8_epi32(__U, __A);
5568 __m128i test_mm_mask_cvtepu8_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
5569 // CHECK-LABEL: @test_mm_mask_cvtepu8_epi64
5570 // CHECK: zext <2 x i8> %{{.*}} to <2 x i64>
5571 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5572 return _mm_mask_cvtepu8_epi64(__W, __U, __A);
5575 __m128i test_mm_maskz_cvtepu8_epi64(__mmask8 __U, __m128i __A) {
5576 // CHECK-LABEL: @test_mm_maskz_cvtepu8_epi64
5577 // CHECK: zext <2 x i8> %{{.*}} to <2 x i64>
5578 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5579 return _mm_maskz_cvtepu8_epi64(__U, __A);
5582 __m256i test_mm256_mask_cvtepu8_epi64(__m256i __W, __mmask8 __U, __m128i __A) {
5583 // CHECK-LABEL: @test_mm256_mask_cvtepu8_epi64
5584 // CHECK: zext <4 x i8> %{{.*}} to <4 x i64>
5585 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5586 return _mm256_mask_cvtepu8_epi64(__W, __U, __A);
5589 __m256i test_mm256_maskz_cvtepu8_epi64(__mmask8 __U, __m128i __A) {
5590 // CHECK-LABEL: @test_mm256_maskz_cvtepu8_epi64
5591 // CHECK: zext <4 x i8> %{{.*}} to <4 x i64>
5592 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5593 return _mm256_maskz_cvtepu8_epi64(__U, __A);
5596 __m128i test_mm_mask_cvtepu32_epi64(__m128i __W, __mmask8 __U, __m128i __X) {
5597 // CHECK-LABEL: @test_mm_mask_cvtepu32_epi64
5598 // CHECK: zext <2 x i32> %{{.*}} to <2 x i64>
5599 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5600 return _mm_mask_cvtepu32_epi64(__W, __U, __X);
5603 __m128i test_mm_maskz_cvtepu32_epi64(__mmask8 __U, __m128i __X) {
5604 // CHECK-LABEL: @test_mm_maskz_cvtepu32_epi64
5605 // CHECK: zext <2 x i32> %{{.*}} to <2 x i64>
5606 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5607 return _mm_maskz_cvtepu32_epi64(__U, __X);
5610 __m256i test_mm256_mask_cvtepu32_epi64(__m256i __W, __mmask8 __U, __m128i __X) {
5611 // CHECK-LABEL: @test_mm256_mask_cvtepu32_epi64
5612 // CHECK: zext <4 x i32> %{{.*}} to <4 x i64>
5613 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5614 return _mm256_mask_cvtepu32_epi64(__W, __U, __X);
5617 __m256i test_mm256_maskz_cvtepu32_epi64(__mmask8 __U, __m128i __X) {
5618 // CHECK-LABEL: @test_mm256_maskz_cvtepu32_epi64
5619 // CHECK: zext <4 x i32> %{{.*}} to <4 x i64>
5620 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5621 return _mm256_maskz_cvtepu32_epi64(__U, __X);
5624 __m128i test_mm_mask_cvtepu16_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
5625 // CHECK-LABEL: @test_mm_mask_cvtepu16_epi32
5626 // CHECK: zext <4 x i16> %{{.*}} to <4 x i32>
5627 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5628 return _mm_mask_cvtepu16_epi32(__W, __U, __A);
5631 __m128i test_mm_maskz_cvtepu16_epi32(__mmask8 __U, __m128i __A) {
5632 // CHECK-LABEL: @test_mm_maskz_cvtepu16_epi32
5633 // CHECK: zext <4 x i16> %{{.*}} to <4 x i32>
5634 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5635 return _mm_maskz_cvtepu16_epi32(__U, __A);
5638 __m256i test_mm256_mask_cvtepu16_epi32(__m256i __W, __mmask8 __U, __m128i __A) {
5639 // CHECK-LABEL: @test_mm256_mask_cvtepu16_epi32
5640 // CHECK: zext <8 x i16> %{{.*}} to <8 x i32>
5641 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5642 return _mm256_mask_cvtepu16_epi32(__W, __U, __A);
5645 __m256i test_mm256_maskz_cvtepu16_epi32(__mmask8 __U, __m128i __A) {
5646 // CHECK-LABEL: @test_mm256_maskz_cvtepu16_epi32
5647 // CHECK: zext <8 x i16> %{{.*}} to <8 x i32>
5648 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5649 return _mm256_maskz_cvtepu16_epi32(__U, __A);
5652 __m128i test_mm_mask_cvtepu16_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
5653 // CHECK-LABEL: @test_mm_mask_cvtepu16_epi64
5654 // CHECK: zext <2 x i16> %{{.*}} to <2 x i64>
5655 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5656 return _mm_mask_cvtepu16_epi64(__W, __U, __A);
5659 __m128i test_mm_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A) {
5660 // CHECK-LABEL: @test_mm_maskz_cvtepu16_epi64
5661 // CHECK: zext <2 x i16> %{{.*}} to <2 x i64>
5662 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5663 return _mm_maskz_cvtepu16_epi64(__U, __A);
5666 __m256i test_mm256_mask_cvtepu16_epi64(__m256i __W, __mmask8 __U, __m128i __A) {
5667 // CHECK-LABEL: @test_mm256_mask_cvtepu16_epi64
5668 // CHECK: zext <4 x i16> %{{.*}} to <4 x i64>
5669 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5670 return _mm256_mask_cvtepu16_epi64(__W, __U, __A);
5673 __m256i test_mm256_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A) {
5674 // CHECK-LABEL: @test_mm256_maskz_cvtepu16_epi64
5675 // CHECK: zext <4 x i16> %{{.*}} to <4 x i64>
5676 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5677 return _mm256_maskz_cvtepu16_epi64(__U, __A);
5680 __m128i test_mm_rol_epi32(__m128i __A) {
5681 // CHECK-LABEL: @test_mm_rol_epi32
5682 // CHECK: @llvm.x86.avx512.prol.d.128
5683 return _mm_rol_epi32(__A, 5);
5686 __m128i test_mm_mask_rol_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
5687 // CHECK-LABEL: @test_mm_mask_rol_epi32
5688 // CHECK: @llvm.x86.avx512.prol.d.128
5689 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5690 return _mm_mask_rol_epi32(__W, __U, __A, 5);
5693 __m128i test_mm_maskz_rol_epi32(__mmask8 __U, __m128i __A) {
5694 // CHECK-LABEL: @test_mm_maskz_rol_epi32
5695 // CHECK: @llvm.x86.avx512.prol.d.128
5696 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5697 return _mm_maskz_rol_epi32(__U, __A, 5);
5700 __m256i test_mm256_rol_epi32(__m256i __A) {
5701 // CHECK-LABEL: @test_mm256_rol_epi32
5702 // CHECK: @llvm.x86.avx512.prol.d.256
5703 return _mm256_rol_epi32(__A, 5);
5706 __m256i test_mm256_mask_rol_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
5707 // CHECK-LABEL: @test_mm256_mask_rol_epi32
5708 // CHECK: @llvm.x86.avx512.prol.d.256
5709 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5710 return _mm256_mask_rol_epi32(__W, __U, __A, 5);
5713 __m256i test_mm256_maskz_rol_epi32(__mmask8 __U, __m256i __A) {
5714 // CHECK-LABEL: @test_mm256_maskz_rol_epi32
5715 // CHECK: @llvm.x86.avx512.prol.d.256
5716 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5717 return _mm256_maskz_rol_epi32(__U, __A, 5);
5720 __m128i test_mm_rol_epi64(__m128i __A) {
5721 // CHECK-LABEL: @test_mm_rol_epi64
5722 // CHECK: @llvm.x86.avx512.prol.q.128
5723 return _mm_rol_epi64(__A, 5);
5726 __m128i test_mm_mask_rol_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
5727 // CHECK-LABEL: @test_mm_mask_rol_epi64
5728 // CHECK: @llvm.x86.avx512.prol.q.128
5729 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5730 return _mm_mask_rol_epi64(__W, __U, __A, 5);
5733 __m128i test_mm_maskz_rol_epi64(__mmask8 __U, __m128i __A) {
5734 // CHECK-LABEL: @test_mm_maskz_rol_epi64
5735 // CHECK: @llvm.x86.avx512.prol.q.128
5736 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5737 return _mm_maskz_rol_epi64(__U, __A, 5);
5740 __m256i test_mm256_rol_epi64(__m256i __A) {
5741 // CHECK-LABEL: @test_mm256_rol_epi64
5742 // CHECK: @llvm.x86.avx512.prol.q.256
5743 return _mm256_rol_epi64(__A, 5);
5746 __m256i test_mm256_mask_rol_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
5747 // CHECK-LABEL: @test_mm256_mask_rol_epi64
5748 // CHECK: @llvm.x86.avx512.prol.q.256
5749 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5750 return _mm256_mask_rol_epi64(__W, __U, __A, 5);
5753 __m256i test_mm256_maskz_rol_epi64(__mmask8 __U, __m256i __A) {
5754 // CHECK-LABEL: @test_mm256_maskz_rol_epi64
5755 // CHECK: @llvm.x86.avx512.prol.q.256
5756 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5757 return _mm256_maskz_rol_epi64(__U, __A, 5);
5760 __m128i test_mm_rolv_epi32(__m128i __A, __m128i __B) {
5761 // CHECK-LABEL: @test_mm_rolv_epi32
5762 // CHECK: @llvm.x86.avx512.prolv.d.128
5763 return _mm_rolv_epi32(__A, __B);
5766 __m128i test_mm_mask_rolv_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
5767 // CHECK-LABEL: @test_mm_mask_rolv_epi32
5768 // CHECK: @llvm.x86.avx512.prolv.d.128
5769 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5770 return _mm_mask_rolv_epi32(__W, __U, __A, __B);
5773 __m128i test_mm_maskz_rolv_epi32(__mmask8 __U, __m128i __A, __m128i __B) {
5774 // CHECK-LABEL: @test_mm_maskz_rolv_epi32
5775 // CHECK: @llvm.x86.avx512.prolv.d.128
5776 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5777 return _mm_maskz_rolv_epi32(__U, __A, __B);
5780 __m256i test_mm256_rolv_epi32(__m256i __A, __m256i __B) {
5781 // CHECK-LABEL: @test_mm256_rolv_epi32
5782 // CHECK: @llvm.x86.avx512.prolv.d.256
5783 return _mm256_rolv_epi32(__A, __B);
5786 __m256i test_mm256_mask_rolv_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
5787 // CHECK-LABEL: @test_mm256_mask_rolv_epi32
5788 // CHECK: @llvm.x86.avx512.prolv.d.256
5789 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5790 return _mm256_mask_rolv_epi32(__W, __U, __A, __B);
5793 __m256i test_mm256_maskz_rolv_epi32(__mmask8 __U, __m256i __A, __m256i __B) {
5794 // CHECK-LABEL: @test_mm256_maskz_rolv_epi32
5795 // CHECK: @llvm.x86.avx512.prolv.d.256
5796 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5797 return _mm256_maskz_rolv_epi32(__U, __A, __B);
5800 __m128i test_mm_rolv_epi64(__m128i __A, __m128i __B) {
5801 // CHECK-LABEL: @test_mm_rolv_epi64
5802 // CHECK: @llvm.x86.avx512.prolv.q.128
5803 return _mm_rolv_epi64(__A, __B);
5806 __m128i test_mm_mask_rolv_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
5807 // CHECK-LABEL: @test_mm_mask_rolv_epi64
5808 // CHECK: @llvm.x86.avx512.prolv.q.128
5809 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5810 return _mm_mask_rolv_epi64(__W, __U, __A, __B);
5813 __m128i test_mm_maskz_rolv_epi64(__mmask8 __U, __m128i __A, __m128i __B) {
5814 // CHECK-LABEL: @test_mm_maskz_rolv_epi64
5815 // CHECK: @llvm.x86.avx512.prolv.q.128
5816 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5817 return _mm_maskz_rolv_epi64(__U, __A, __B);
5820 __m256i test_mm256_rolv_epi64(__m256i __A, __m256i __B) {
5821 // CHECK-LABEL: @test_mm256_rolv_epi64
5822 // CHECK: @llvm.x86.avx512.prolv.q.256
5823 return _mm256_rolv_epi64(__A, __B);
5826 __m256i test_mm256_mask_rolv_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
5827 // CHECK-LABEL: @test_mm256_mask_rolv_epi64
5828 // CHECK: @llvm.x86.avx512.prolv.q.256
5829 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5830 return _mm256_mask_rolv_epi64(__W, __U, __A, __B);
5833 __m256i test_mm256_maskz_rolv_epi64(__mmask8 __U, __m256i __A, __m256i __B) {
5834 // CHECK-LABEL: @test_mm256_maskz_rolv_epi64
5835 // CHECK: @llvm.x86.avx512.prolv.q.256
5836 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5837 return _mm256_maskz_rolv_epi64(__U, __A, __B);
5840 __m128i test_mm_ror_epi32(__m128i __A) {
5841 // CHECK-LABEL: @test_mm_ror_epi32
5842 // CHECK: @llvm.x86.avx512.pror.d.128
5843 return _mm_ror_epi32(__A, 5);
5846 __m128i test_mm_mask_ror_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
5847 // CHECK-LABEL: @test_mm_mask_ror_epi32
5848 // CHECK: @llvm.x86.avx512.pror.d.128
5849 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5850 return _mm_mask_ror_epi32(__W, __U, __A, 5);
5853 __m128i test_mm_maskz_ror_epi32(__mmask8 __U, __m128i __A) {
5854 // CHECK-LABEL: @test_mm_maskz_ror_epi32
5855 // CHECK: @llvm.x86.avx512.pror.d.128
5856 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5857 return _mm_maskz_ror_epi32(__U, __A, 5);
5860 __m256i test_mm256_ror_epi32(__m256i __A) {
5861 // CHECK-LABEL: @test_mm256_ror_epi32
5862 // CHECK: @llvm.x86.avx512.pror.d.256
5863 return _mm256_ror_epi32(__A, 5);
5866 __m256i test_mm256_mask_ror_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
5867 // CHECK-LABEL: @test_mm256_mask_ror_epi32
5868 // CHECK: @llvm.x86.avx512.pror.d.256
5869 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5870 return _mm256_mask_ror_epi32(__W, __U, __A, 5);
5873 __m256i test_mm256_maskz_ror_epi32(__mmask8 __U, __m256i __A) {
5874 // CHECK-LABEL: @test_mm256_maskz_ror_epi32
5875 // CHECK: @llvm.x86.avx512.pror.d.256
5876 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5877 return _mm256_maskz_ror_epi32(__U, __A, 5);
5880 __m128i test_mm_ror_epi64(__m128i __A) {
5881 // CHECK-LABEL: @test_mm_ror_epi64
5882 // CHECK: @llvm.x86.avx512.pror.q.128
5883 return _mm_ror_epi64(__A, 5);
5886 __m128i test_mm_mask_ror_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
5887 // CHECK-LABEL: @test_mm_mask_ror_epi64
5888 // CHECK: @llvm.x86.avx512.pror.q.128
5889 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5890 return _mm_mask_ror_epi64(__W, __U, __A, 5);
5893 __m128i test_mm_maskz_ror_epi64(__mmask8 __U, __m128i __A) {
5894 // CHECK-LABEL: @test_mm_maskz_ror_epi64
5895 // CHECK: @llvm.x86.avx512.pror.q.128
5896 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5897 return _mm_maskz_ror_epi64(__U, __A, 5);
5900 __m256i test_mm256_ror_epi64(__m256i __A) {
5901 // CHECK-LABEL: @test_mm256_ror_epi64
5902 // CHECK: @llvm.x86.avx512.pror.q.256
5903 return _mm256_ror_epi64(__A, 5);
5906 __m256i test_mm256_mask_ror_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
5907 // CHECK-LABEL: @test_mm256_mask_ror_epi64
5908 // CHECK: @llvm.x86.avx512.pror.q.256
5909 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5910 return _mm256_mask_ror_epi64(__W, __U, __A,5);
5913 __m256i test_mm256_maskz_ror_epi64(__mmask8 __U, __m256i __A) {
5914 // CHECK-LABEL: @test_mm256_maskz_ror_epi64
5915 // CHECK: @llvm.x86.avx512.pror.q.256
5916 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5917 return _mm256_maskz_ror_epi64(__U, __A, 5);
5921 __m128i test_mm_rorv_epi32(__m128i __A, __m128i __B) {
5922 // CHECK-LABEL: @test_mm_rorv_epi32
5923 // CHECK: @llvm.x86.avx512.prorv.d.128
5924 return _mm_rorv_epi32(__A, __B);
5927 __m128i test_mm_mask_rorv_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
5928 // CHECK-LABEL: @test_mm_mask_rorv_epi32
5929 // CHECK: @llvm.x86.avx512.prorv.d.128
5930 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5931 return _mm_mask_rorv_epi32(__W, __U, __A, __B);
5934 __m128i test_mm_maskz_rorv_epi32(__mmask8 __U, __m128i __A, __m128i __B) {
5935 // CHECK-LABEL: @test_mm_maskz_rorv_epi32
5936 // CHECK: @llvm.x86.avx512.prorv.d.128
5937 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
5938 return _mm_maskz_rorv_epi32(__U, __A, __B);
5941 __m256i test_mm256_rorv_epi32(__m256i __A, __m256i __B) {
5942 // CHECK-LABEL: @test_mm256_rorv_epi32
5943 // CHECK: @llvm.x86.avx512.prorv.d.256
5944 return _mm256_rorv_epi32(__A, __B);
5947 __m256i test_mm256_mask_rorv_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
5948 // CHECK-LABEL: @test_mm256_mask_rorv_epi32
5949 // CHECK: @llvm.x86.avx512.prorv.d.256
5950 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5951 return _mm256_mask_rorv_epi32(__W, __U, __A, __B);
5954 __m256i test_mm256_maskz_rorv_epi32(__mmask8 __U, __m256i __A, __m256i __B) {
5955 // CHECK-LABEL: @test_mm256_maskz_rorv_epi32
5956 // CHECK: @llvm.x86.avx512.prorv.d.256
5957 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
5958 return _mm256_maskz_rorv_epi32(__U, __A, __B);
5961 __m128i test_mm_rorv_epi64(__m128i __A, __m128i __B) {
5962 // CHECK-LABEL: @test_mm_rorv_epi64
5963 // CHECK: @llvm.x86.avx512.prorv.q.128
5964 return _mm_rorv_epi64(__A, __B);
5967 __m128i test_mm_mask_rorv_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
5968 // CHECK-LABEL: @test_mm_mask_rorv_epi64
5969 // CHECK: @llvm.x86.avx512.prorv.q.128
5970 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5971 return _mm_mask_rorv_epi64(__W, __U, __A, __B);
5974 __m128i test_mm_maskz_rorv_epi64(__mmask8 __U, __m128i __A, __m128i __B) {
5975 // CHECK-LABEL: @test_mm_maskz_rorv_epi64
5976 // CHECK: @llvm.x86.avx512.prorv.q.128
5977 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5978 return _mm_maskz_rorv_epi64(__U, __A, __B);
5981 __m256i test_mm256_rorv_epi64(__m256i __A, __m256i __B) {
5982 // CHECK-LABEL: @test_mm256_rorv_epi64
5983 // CHECK: @llvm.x86.avx512.prorv.q.256
5984 return _mm256_rorv_epi64(__A, __B);
5987 __m256i test_mm256_mask_rorv_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
5988 // CHECK-LABEL: @test_mm256_mask_rorv_epi64
5989 // CHECK: @llvm.x86.avx512.prorv.q.256
5990 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5991 return _mm256_mask_rorv_epi64(__W, __U, __A, __B);
5994 __m256i test_mm256_maskz_rorv_epi64(__mmask8 __U, __m256i __A, __m256i __B) {
5995 // CHECK-LABEL: @test_mm256_maskz_rorv_epi64
5996 // CHECK: @llvm.x86.avx512.prorv.q.256
5997 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
5998 return _mm256_maskz_rorv_epi64(__U, __A, __B);
6001 __m128i test_mm_mask_sllv_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
6002 // CHECK-LABEL: @test_mm_mask_sllv_epi64
6003 // CHECK: @llvm.x86.avx2.psllv.q
6004 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6005 return _mm_mask_sllv_epi64(__W, __U, __X, __Y);
6008 __m128i test_mm_maskz_sllv_epi64(__mmask8 __U, __m128i __X, __m128i __Y) {
6009 // CHECK-LABEL: @test_mm_maskz_sllv_epi64
6010 // CHECK: @llvm.x86.avx2.psllv.q
6011 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6012 return _mm_maskz_sllv_epi64(__U, __X, __Y);
6015 __m256i test_mm256_mask_sllv_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y) {
6016 // CHECK-LABEL: @test_mm256_mask_sllv_epi64
6017 // CHECK: @llvm.x86.avx2.psllv.q.256
6018 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6019 return _mm256_mask_sllv_epi64(__W, __U, __X, __Y);
6022 __m256i test_mm256_maskz_sllv_epi64(__mmask8 __U, __m256i __X, __m256i __Y) {
6023 // CHECK-LABEL: @test_mm256_maskz_sllv_epi64
6024 // CHECK: @llvm.x86.avx2.psllv.q.256
6025 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6026 return _mm256_maskz_sllv_epi64(__U, __X, __Y);
6029 __m128i test_mm_mask_sllv_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
6030 // CHECK-LABEL: @test_mm_mask_sllv_epi32
6031 // CHECK: @llvm.x86.avx2.psllv.d
6032 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6033 return _mm_mask_sllv_epi32(__W, __U, __X, __Y);
6036 __m128i test_mm_maskz_sllv_epi32(__mmask8 __U, __m128i __X, __m128i __Y) {
6037 // CHECK-LABEL: @test_mm_maskz_sllv_epi32
6038 // CHECK: @llvm.x86.avx2.psllv.d
6039 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6040 return _mm_maskz_sllv_epi32(__U, __X, __Y);
6043 __m256i test_mm256_mask_sllv_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y) {
6044 // CHECK-LABEL: @test_mm256_mask_sllv_epi32
6045 // CHECK: @llvm.x86.avx2.psllv.d.256
6046 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6047 return _mm256_mask_sllv_epi32(__W, __U, __X, __Y);
6050 __m256i test_mm256_maskz_sllv_epi32(__mmask8 __U, __m256i __X, __m256i __Y) {
6051 // CHECK-LABEL: @test_mm256_maskz_sllv_epi32
6052 // CHECK: @llvm.x86.avx2.psllv.d.256
6053 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6054 return _mm256_maskz_sllv_epi32(__U, __X, __Y);
6057 __m128i test_mm_mask_srlv_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
6058 // CHECK-LABEL: @test_mm_mask_srlv_epi64
6059 // CHECK: @llvm.x86.avx2.psrlv.q
6060 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6061 return _mm_mask_srlv_epi64(__W, __U, __X, __Y);
6064 __m128i test_mm_maskz_srlv_epi64(__mmask8 __U, __m128i __X, __m128i __Y) {
6065 // CHECK-LABEL: @test_mm_maskz_srlv_epi64
6066 // CHECK: @llvm.x86.avx2.psrlv.q
6067 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6068 return _mm_maskz_srlv_epi64(__U, __X, __Y);
6071 __m256i test_mm256_mask_srlv_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y) {
6072 // CHECK-LABEL: @test_mm256_mask_srlv_epi64
6073 // CHECK: @llvm.x86.avx2.psrlv.q.256
6074 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6075 return _mm256_mask_srlv_epi64(__W, __U, __X, __Y);
6078 __m256i test_mm256_maskz_srlv_epi64(__mmask8 __U, __m256i __X, __m256i __Y) {
6079 // CHECK-LABEL: @test_mm256_maskz_srlv_epi64
6080 // CHECK: @llvm.x86.avx2.psrlv.q.256
6081 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6082 return _mm256_maskz_srlv_epi64(__U, __X, __Y);
6085 __m128i test_mm_mask_srlv_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
6086 // CHECK-LABEL: @test_mm_mask_srlv_epi32
6087 // CHECK: @llvm.x86.avx2.psrlv.d
6088 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6089 return _mm_mask_srlv_epi32(__W, __U, __X, __Y);
6092 __m128i test_mm_maskz_srlv_epi32(__mmask8 __U, __m128i __X, __m128i __Y) {
6093 // CHECK-LABEL: @test_mm_maskz_srlv_epi32
6094 // CHECK: @llvm.x86.avx2.psrlv.d
6095 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6096 return _mm_maskz_srlv_epi32(__U, __X, __Y);
6099 __m256i test_mm256_mask_srlv_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y) {
6100 // CHECK-LABEL: @test_mm256_mask_srlv_epi32
6101 // CHECK: @llvm.x86.avx2.psrlv.d.256
6102 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6103 return _mm256_mask_srlv_epi32(__W, __U, __X, __Y);
6106 __m256i test_mm256_maskz_srlv_epi32(__mmask8 __U, __m256i __X, __m256i __Y) {
6107 // CHECK-LABEL: @test_mm256_maskz_srlv_epi32
6108 // CHECK: @llvm.x86.avx2.psrlv.d.256
6109 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6110 return _mm256_maskz_srlv_epi32(__U, __X, __Y);
6113 __m128i test_mm_mask_srl_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
6114 // CHECK-LABEL: @test_mm_mask_srl_epi32
6115 // CHECK: @llvm.x86.sse2.psrl.d
6116 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6117 return _mm_mask_srl_epi32(__W, __U, __A, __B);
6120 __m128i test_mm_maskz_srl_epi32(__mmask8 __U, __m128i __A, __m128i __B) {
6121 // CHECK-LABEL: @test_mm_maskz_srl_epi32
6122 // CHECK: @llvm.x86.sse2.psrl.d
6123 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6124 return _mm_maskz_srl_epi32(__U, __A, __B);
6127 __m256i test_mm256_mask_srl_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {
6128 // CHECK-LABEL: @test_mm256_mask_srl_epi32
6129 // CHECK: @llvm.x86.avx2.psrl.d
6130 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6131 return _mm256_mask_srl_epi32(__W, __U, __A, __B);
6134 __m256i test_mm256_maskz_srl_epi32(__mmask8 __U, __m256i __A, __m128i __B) {
6135 // CHECK-LABEL: @test_mm256_maskz_srl_epi32
6136 // CHECK: @llvm.x86.avx2.psrl.d
6137 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6138 return _mm256_maskz_srl_epi32(__U, __A, __B);
6141 __m128i test_mm_mask_srli_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
6142 // CHECK-LABEL: @test_mm_mask_srli_epi32
6143 // CHECK: @llvm.x86.sse2.psrli.d
6144 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6145 return _mm_mask_srli_epi32(__W, __U, __A, 5);
6148 __m128i test_mm_maskz_srli_epi32(__mmask8 __U, __m128i __A) {
6149 // CHECK-LABEL: @test_mm_maskz_srli_epi32
6150 // CHECK: @llvm.x86.sse2.psrli.d
6151 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6152 return _mm_maskz_srli_epi32(__U, __A, 5);
6155 __m256i test_mm256_mask_srli_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
6156 // CHECK-LABEL: @test_mm256_mask_srli_epi32
6157 // CHECK: @llvm.x86.avx2.psrli.d
6158 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6159 return _mm256_mask_srli_epi32(__W, __U, __A, 5);
6162 __m256i test_mm256_maskz_srli_epi32(__mmask8 __U, __m256i __A) {
6163 // CHECK-LABEL: @test_mm256_maskz_srli_epi32
6164 // CHECK: @llvm.x86.avx2.psrli.d
6165 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6166 return _mm256_maskz_srli_epi32(__U, __A, 5);
6169 __m128i test_mm_mask_srl_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
6170 // CHECK-LABEL: @test_mm_mask_srl_epi64
6171 // CHECK: @llvm.x86.sse2.psrl.q
6172 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6173 return _mm_mask_srl_epi64(__W, __U, __A, __B);
6176 __m128i test_mm_maskz_srl_epi64(__mmask8 __U, __m128i __A, __m128i __B) {
6177 // CHECK-LABEL: @test_mm_maskz_srl_epi64
6178 // CHECK: @llvm.x86.sse2.psrl.q
6179 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6180 return _mm_maskz_srl_epi64(__U, __A, __B);
6183 __m256i test_mm256_mask_srl_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {
6184 // CHECK-LABEL: @test_mm256_mask_srl_epi64
6185 // CHECK: @llvm.x86.avx2.psrl.q
6186 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6187 return _mm256_mask_srl_epi64(__W, __U, __A, __B);
6190 __m256i test_mm256_maskz_srl_epi64(__mmask8 __U, __m256i __A, __m128i __B) {
6191 // CHECK-LABEL: @test_mm256_maskz_srl_epi64
6192 // CHECK: @llvm.x86.avx2.psrl.q
6193 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6194 return _mm256_maskz_srl_epi64(__U, __A, __B);
6197 __m128i test_mm_mask_srli_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
6198 // CHECK-LABEL: @test_mm_mask_srli_epi64
6199 // CHECK: @llvm.x86.sse2.psrli.q
6200 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6201 return _mm_mask_srli_epi64(__W, __U, __A, 5);
6204 __m128i test_mm_maskz_srli_epi64(__mmask8 __U, __m128i __A) {
6205 // CHECK-LABEL: @test_mm_maskz_srli_epi64
6206 // CHECK: @llvm.x86.sse2.psrli.q
6207 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6208 return _mm_maskz_srli_epi64(__U, __A, 5);
6211 __m256i test_mm256_mask_srli_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
6212 // CHECK-LABEL: @test_mm256_mask_srli_epi64
6213 // CHECK: @llvm.x86.avx2.psrli.q
6214 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6215 return _mm256_mask_srli_epi64(__W, __U, __A, 5);
6218 __m256i test_mm256_maskz_srli_epi64(__mmask8 __U, __m256i __A) {
6219 // CHECK-LABEL: @test_mm256_maskz_srli_epi64
6220 // CHECK: @llvm.x86.avx2.psrli.q
6221 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6222 return _mm256_maskz_srli_epi64(__U, __A, 5);
6225 __m128i test_mm_mask_sll_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
6226 // CHECK-LABEL: @test_mm_mask_sll_epi32
6227 // CHECK: @llvm.x86.sse2.psll.d
6228 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6229 return _mm_mask_sll_epi32(__W, __U, __A, __B);
6232 __m128i test_mm_maskz_sll_epi32(__mmask8 __U, __m128i __A, __m128i __B) {
6233 // CHECK-LABEL: @test_mm_maskz_sll_epi32
6234 // CHECK: @llvm.x86.sse2.psll.d
6235 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6236 return _mm_maskz_sll_epi32(__U, __A, __B);
6239 __m256i test_mm256_mask_sll_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {
6240 // CHECK-LABEL: @test_mm256_mask_sll_epi32
6241 // CHECK: @llvm.x86.avx2.psll.d
6242 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6243 return _mm256_mask_sll_epi32(__W, __U, __A, __B);
6246 __m256i test_mm256_maskz_sll_epi32(__mmask8 __U, __m256i __A, __m128i __B) {
6247 // CHECK-LABEL: @test_mm256_maskz_sll_epi32
6248 // CHECK: @llvm.x86.avx2.psll.d
6249 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6250 return _mm256_maskz_sll_epi32(__U, __A, __B);
6253 __m128i test_mm_mask_slli_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
6254 // CHECK-LABEL: @test_mm_mask_slli_epi32
6255 // CHECK: @llvm.x86.sse2.pslli.d
6256 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6257 return _mm_mask_slli_epi32(__W, __U, __A, 5);
6260 __m128i test_mm_maskz_slli_epi32(__mmask8 __U, __m128i __A) {
6261 // CHECK-LABEL: @test_mm_maskz_slli_epi32
6262 // CHECK: @llvm.x86.sse2.pslli.d
6263 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6264 return _mm_maskz_slli_epi32(__U, __A, 5);
6267 __m256i test_mm256_mask_slli_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
6268 // CHECK-LABEL: @test_mm256_mask_slli_epi32
6269 // CHECK: @llvm.x86.avx2.pslli.d
6270 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6271 return _mm256_mask_slli_epi32(__W, __U, __A, 5);
6274 __m256i test_mm256_maskz_slli_epi32(__mmask8 __U, __m256i __A) {
6275 // CHECK-LABEL: @test_mm256_maskz_slli_epi32
6276 // CHECK: @llvm.x86.avx2.pslli.d
6277 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6278 return _mm256_maskz_slli_epi32(__U, __A, 5);
6281 __m128i test_mm_mask_sll_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
6282 // CHECK-LABEL: @test_mm_mask_sll_epi64
6283 // CHECK: @llvm.x86.sse2.psll.q
6284 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6285 return _mm_mask_sll_epi64(__W, __U, __A, __B);
6288 __m128i test_mm_maskz_sll_epi64(__mmask8 __U, __m128i __A, __m128i __B) {
6289 // CHECK-LABEL: @test_mm_maskz_sll_epi64
6290 // CHECK: @llvm.x86.sse2.psll.q
6291 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6292 return _mm_maskz_sll_epi64(__U, __A, __B);
6295 __m256i test_mm256_mask_sll_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {
6296 // CHECK-LABEL: @test_mm256_mask_sll_epi64
6297 // CHECK: @llvm.x86.avx2.psll.q
6298 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6299 return _mm256_mask_sll_epi64(__W, __U, __A, __B);
6302 __m256i test_mm256_maskz_sll_epi64(__mmask8 __U, __m256i __A, __m128i __B) {
6303 // CHECK-LABEL: @test_mm256_maskz_sll_epi64
6304 // CHECK: @llvm.x86.avx2.psll.q
6305 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6306 return _mm256_maskz_sll_epi64(__U, __A, __B);
6309 __m128i test_mm_mask_slli_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
6310 // CHECK-LABEL: @test_mm_mask_slli_epi64
6311 // CHECK: @llvm.x86.sse2.pslli.q
6312 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6313 return _mm_mask_slli_epi64(__W, __U, __A, 5);
6316 __m128i test_mm_maskz_slli_epi64(__mmask8 __U, __m128i __A) {
6317 // CHECK-LABEL: @test_mm_maskz_slli_epi64
6318 // CHECK: @llvm.x86.sse2.pslli.q
6319 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6320 return _mm_maskz_slli_epi64(__U, __A, 5);
6323 __m256i test_mm256_mask_slli_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
6324 // CHECK-LABEL: @test_mm256_mask_slli_epi64
6325 // CHECK: @llvm.x86.avx2.pslli.q
6326 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6327 return _mm256_mask_slli_epi64(__W, __U, __A, 5);
6330 __m256i test_mm256_maskz_slli_epi64(__mmask8 __U, __m256i __A) {
6331 // CHECK-LABEL: @test_mm256_maskz_slli_epi64
6332 // CHECK: @llvm.x86.avx2.pslli.q
6333 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6334 return _mm256_maskz_slli_epi64(__U, __A, 5);
6337 __m128i test_mm_mask_srav_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
6338 // CHECK-LABEL: @test_mm_mask_srav_epi32
6339 // CHECK: @llvm.x86.avx2.psrav.d
6340 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6341 return _mm_mask_srav_epi32(__W, __U, __X, __Y);
6344 __m128i test_mm_maskz_srav_epi32(__mmask8 __U, __m128i __X, __m128i __Y) {
6345 // CHECK-LABEL: @test_mm_maskz_srav_epi32
6346 // CHECK: @llvm.x86.avx2.psrav.d
6347 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6348 return _mm_maskz_srav_epi32(__U, __X, __Y);
6351 __m256i test_mm256_mask_srav_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y) {
6352 // CHECK-LABEL: @test_mm256_mask_srav_epi32
6353 // CHECK: @llvm.x86.avx2.psrav.d.256
6354 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6355 return _mm256_mask_srav_epi32(__W, __U, __X, __Y);
6358 __m256i test_mm256_maskz_srav_epi32(__mmask8 __U, __m256i __X, __m256i __Y) {
6359 // CHECK-LABEL: @test_mm256_maskz_srav_epi32
6360 // CHECK: @llvm.x86.avx2.psrav.d.256
6361 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6362 return _mm256_maskz_srav_epi32(__U, __X, __Y);
6365 __m128i test_mm_srav_epi64(__m128i __X, __m128i __Y) {
6366 // CHECK-LABEL: @test_mm_srav_epi64
6367 // CHECK: @llvm.x86.avx512.psrav.q.128
6368 return _mm_srav_epi64(__X, __Y);
6371 __m128i test_mm_mask_srav_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
6372 // CHECK-LABEL: @test_mm_mask_srav_epi64
6373 // CHECK: @llvm.x86.avx512.psrav.q.128
6374 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6375 return _mm_mask_srav_epi64(__W, __U, __X, __Y);
6378 __m128i test_mm_maskz_srav_epi64(__mmask8 __U, __m128i __X, __m128i __Y) {
6379 // CHECK-LABEL: @test_mm_maskz_srav_epi64
6380 // CHECK: @llvm.x86.avx512.psrav.q.128
6381 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6382 return _mm_maskz_srav_epi64(__U, __X, __Y);
6385 __m256i test_mm256_srav_epi64(__m256i __X, __m256i __Y) {
6386 // CHECK-LABEL: @test_mm256_srav_epi64
6387 // CHECK: @llvm.x86.avx512.psrav.q.256
6388 return _mm256_srav_epi64(__X, __Y);
6391 __m256i test_mm256_mask_srav_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y) {
6392 // CHECK-LABEL: @test_mm256_mask_srav_epi64
6393 // CHECK: @llvm.x86.avx512.psrav.q.256
6394 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6395 return _mm256_mask_srav_epi64(__W, __U, __X, __Y);
6398 __m256i test_mm256_maskz_srav_epi64(__mmask8 __U, __m256i __X, __m256i __Y) {
6399 // CHECK-LABEL: @test_mm256_maskz_srav_epi64
6400 // CHECK: @llvm.x86.avx512.psrav.q.256
6401 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6402 return _mm256_maskz_srav_epi64(__U, __X, __Y);
6405 void test_mm_mask_store_epi32(void *__P, __mmask8 __U, __m128i __A) {
6406 // CHECK-LABEL: @test_mm_mask_store_epi32
6407 // CHECK: @llvm.masked.store.v4i32.p0v4i32(<4 x i32> %{{.*}}, <4 x i32>* %{{.}}, i32 16, <4 x i1> %{{.*}})
6408 return _mm_mask_store_epi32(__P, __U, __A);
6411 void test_mm256_mask_store_epi32(void *__P, __mmask8 __U, __m256i __A) {
6412 // CHECK-LABEL: @test_mm256_mask_store_epi32
6413 // CHECK: @llvm.masked.store.v8i32.p0v8i32(<8 x i32> %{{.*}}, <8 x i32>* %{{.}}, i32 32, <8 x i1> %{{.*}})
6414 return _mm256_mask_store_epi32(__P, __U, __A);
6417 __m128i test_mm_mask_mov_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
6418 // CHECK-LABEL: @test_mm_mask_mov_epi32
6419 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6420 return _mm_mask_mov_epi32(__W, __U, __A);
6423 __m128i test_mm_maskz_mov_epi32(__mmask8 __U, __m128i __A) {
6424 // CHECK-LABEL: @test_mm_maskz_mov_epi32
6425 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6426 return _mm_maskz_mov_epi32(__U, __A);
6429 __m256i test_mm256_mask_mov_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
6430 // CHECK-LABEL: @test_mm256_mask_mov_epi32
6431 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6432 return _mm256_mask_mov_epi32(__W, __U, __A);
6435 __m256i test_mm256_maskz_mov_epi32(__mmask8 __U, __m256i __A) {
6436 // CHECK-LABEL: @test_mm256_maskz_mov_epi32
6437 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6438 return _mm256_maskz_mov_epi32(__U, __A);
6441 __m128i test_mm_mask_mov_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
6442 // CHECK-LABEL: @test_mm_mask_mov_epi64
6443 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6444 return _mm_mask_mov_epi64(__W, __U, __A);
6447 __m128i test_mm_maskz_mov_epi64(__mmask8 __U, __m128i __A) {
6448 // CHECK-LABEL: @test_mm_maskz_mov_epi64
6449 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6450 return _mm_maskz_mov_epi64(__U, __A);
6453 __m256i test_mm256_mask_mov_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
6454 // CHECK-LABEL: @test_mm256_mask_mov_epi64
6455 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6456 return _mm256_mask_mov_epi64(__W, __U, __A);
6459 __m256i test_mm256_maskz_mov_epi64(__mmask8 __U, __m256i __A) {
6460 // CHECK-LABEL: @test_mm256_maskz_mov_epi64
6461 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6462 return _mm256_maskz_mov_epi64(__U, __A);
6465 __m128i test_mm_mask_load_epi32(__m128i __W, __mmask8 __U, void const *__P) {
6466 // CHECK-LABEL: @test_mm_mask_load_epi32
6467 // CHECK: @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %{{.*}}, i32 16, <4 x i1> %{{.*}}, <4 x i32> %{{.*}})
6468 return _mm_mask_load_epi32(__W, __U, __P);
6471 __m128i test_mm_maskz_load_epi32(__mmask8 __U, void const *__P) {
6472 // CHECK-LABEL: @test_mm_maskz_load_epi32
6473 // CHECK: @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %{{.*}}, i32 16, <4 x i1> %{{.*}}, <4 x i32> %{{.*}})
6474 return _mm_maskz_load_epi32(__U, __P);
6477 __m256i test_mm256_mask_load_epi32(__m256i __W, __mmask8 __U, void const *__P) {
6478 // CHECK-LABEL: @test_mm256_mask_load_epi32
6479 // CHECK: @llvm.masked.load.v8i32.p0v8i32(<8 x i32>* %{{.*}}, i32 32, <8 x i1> %{{.*}}, <8 x i32> %{{.*}})
6480 return _mm256_mask_load_epi32(__W, __U, __P);
6483 __m256i test_mm256_maskz_load_epi32(__mmask8 __U, void const *__P) {
6484 // CHECK-LABEL: @test_mm256_maskz_load_epi32
6485 // CHECK: @llvm.masked.load.v8i32.p0v8i32(<8 x i32>* %{{.*}}, i32 32, <8 x i1> %{{.*}}, <8 x i32> %{{.*}})
6486 return _mm256_maskz_load_epi32(__U, __P);
6489 __m128i test_mm_mask_load_epi64(__m128i __W, __mmask8 __U, void const *__P) {
6490 // CHECK-LABEL: @test_mm_mask_load_epi64
6491 // CHECK: @llvm.masked.load.v2i64.p0v2i64(<2 x i64>* %{{.*}}, i32 16, <2 x i1> %{{.*}}, <2 x i64> %{{.*}})
6492 return _mm_mask_load_epi64(__W, __U, __P);
6495 __m128i test_mm_maskz_load_epi64(__mmask8 __U, void const *__P) {
6496 // CHECK-LABEL: @test_mm_maskz_load_epi64
6497 // CHECK: @llvm.masked.load.v2i64.p0v2i64(<2 x i64>* %{{.*}}, i32 16, <2 x i1> %{{.*}}, <2 x i64> %{{.*}})
6498 return _mm_maskz_load_epi64(__U, __P);
6501 __m256i test_mm256_mask_load_epi64(__m256i __W, __mmask8 __U, void const *__P) {
6502 // CHECK-LABEL: @test_mm256_mask_load_epi64
6503 // CHECK: @llvm.masked.load.v4i64.p0v4i64(<4 x i64>* %{{.*}}, i32 32, <4 x i1> %{{.*}}, <4 x i64> %{{.*}})
6504 return _mm256_mask_load_epi64(__W, __U, __P);
6507 __m256i test_mm256_maskz_load_epi64(__mmask8 __U, void const *__P) {
6508 // CHECK-LABEL: @test_mm256_maskz_load_epi64
6509 // CHECK: @llvm.masked.load.v4i64.p0v4i64(<4 x i64>* %{{.*}}, i32 32, <4 x i1> %{{.*}}, <4 x i64> %{{.*}})
6510 return _mm256_maskz_load_epi64(__U, __P);
6513 void test_mm_mask_store_epi64(void *__P, __mmask8 __U, __m128i __A) {
6514 // CHECK-LABEL: @test_mm_mask_store_epi64
6515 // CHECK: @llvm.masked.store.v2i64.p0v2i64(<2 x i64> %{{.*}}, <2 x i64>* %{{.*}}, i32 16, <2 x i1> %{{.*}})
6516 return _mm_mask_store_epi64(__P, __U, __A);
6519 void test_mm256_mask_store_epi64(void *__P, __mmask8 __U, __m256i __A) {
6520 // CHECK-LABEL: @test_mm256_mask_store_epi64
6521 // CHECK: @llvm.masked.store.v4i64.p0v4i64(<4 x i64> %{{.*}}, <4 x i64>* %{{.*}}, i32 32, <4 x i1> %{{.*}})
6522 return _mm256_mask_store_epi64(__P, __U, __A);
6525 __m128d test_mm_mask_movedup_pd(__m128d __W, __mmask8 __U, __m128d __A) {
6526 // CHECK-LABEL: @test_mm_mask_movedup_pd
6527 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> zeroinitializer
6528 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
6529 return _mm_mask_movedup_pd(__W, __U, __A);
6532 __m128d test_mm_maskz_movedup_pd(__mmask8 __U, __m128d __A) {
6533 // CHECK-LABEL: @test_mm_maskz_movedup_pd
6534 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> zeroinitializer
6535 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
6536 return _mm_maskz_movedup_pd(__U, __A);
6539 __m256d test_mm256_mask_movedup_pd(__m256d __W, __mmask8 __U, __m256d __A) {
6540 // CHECK-LABEL: @test_mm256_mask_movedup_pd
6541 // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 0, i32 0, i32 2, i32 2>
6542 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
6543 return _mm256_mask_movedup_pd(__W, __U, __A);
6546 __m256d test_mm256_maskz_movedup_pd(__mmask8 __U, __m256d __A) {
6547 // CHECK-LABEL: @test_mm256_maskz_movedup_pd
6548 // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 0, i32 0, i32 2, i32 2>
6549 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
6550 return _mm256_maskz_movedup_pd(__U, __A);
6553 __m128i test_mm_mask_set1_epi32(__m128i __O, __mmask8 __M) {
6554 // CHECK-LABEL: @test_mm_mask_set1_epi32
6555 // CHECK: insertelement <4 x i32> undef, i32 %{{.*}}, i32 0
6556 // CHECK: insertelement <4 x i32> %{{.*}}32 1
6557 // CHECK: insertelement <4 x i32> %{{.*}}32 2
6558 // CHECK: insertelement <4 x i32> %{{.*}}32 3
6559 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
6560 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6561 return _mm_mask_set1_epi32(__O, __M, 5);
6564 __m128i test_mm_maskz_set1_epi32(__mmask8 __M) {
6565 // CHECK-LABEL: @test_mm_maskz_set1_epi32
6566 // CHECK: insertelement <4 x i32> undef, i32 %{{.*}}, i32 0
6567 // CHECK: insertelement <4 x i32> %{{.*}}32 1
6568 // CHECK: insertelement <4 x i32> %{{.*}}32 2
6569 // CHECK: insertelement <4 x i32> %{{.*}}32 3
6570 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
6571 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6572 return _mm_maskz_set1_epi32(__M, 5);
6575 __m256i test_mm256_mask_set1_epi32(__m256i __O, __mmask8 __M) {
6576 // CHECK-LABEL: @test_mm256_mask_set1_epi32
6577 // CHECK: insertelement <8 x i32> undef, i32 %{{.*}}, i32 0
6578 // CHECK: insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 1
6579 // CHECK: insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 2
6580 // CHECK: insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 3
6581 // CHECK: insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 4
6582 // CHECK: insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 5
6583 // CHECK: insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 6
6584 // CHECK: insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 7
6585 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6586 return _mm256_mask_set1_epi32(__O, __M, 5);
6589 __m256i test_mm256_maskz_set1_epi32(__mmask8 __M) {
6590 // CHECK-LABEL: @test_mm256_maskz_set1_epi32
6591 // CHECK: insertelement <8 x i32> undef, i32 %{{.*}}, i32 0
6592 // CHECK: insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 1
6593 // CHECK: insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 2
6594 // CHECK: insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 3
6595 // CHECK: insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 4
6596 // CHECK: insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 5
6597 // CHECK: insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 6
6598 // CHECK: insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 7
6599 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6600 return _mm256_maskz_set1_epi32(__M, 5);
6603 __m128i test_mm_mask_set1_epi64(__m128i __O, __mmask8 __M, long long __A) {
6604 // CHECK-LABEL: @test_mm_mask_set1_epi64
6605 // CHECK: insertelement <2 x i64> undef, i64 %{{.*}}, i32 0
6606 // CHECK: insertelement <2 x i64> %{{.*}}, i64 %{{.*}}, i32 1
6607 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
6608 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6609 return _mm_mask_set1_epi64(__O, __M, __A);
6612 __m128i test_mm_maskz_set1_epi64(__mmask8 __M, long long __A) {
6613 // CHECK-LABEL: @test_mm_maskz_set1_epi64
6614 // CHECK: insertelement <2 x i64> undef, i64 %{{.*}}, i32 0
6615 // CHECK: insertelement <2 x i64> %{{.*}}, i64 %{{.*}}, i32 1
6616 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
6617 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6618 return _mm_maskz_set1_epi64(__M, __A);
6621 __m256i test_mm256_mask_set1_epi64(__m256i __O, __mmask8 __M, long long __A) {
6622 // CHECK-LABEL: @test_mm256_mask_set1_epi64
6623 // CHECK: insertelement <4 x i64> undef, i64 %{{.*}}, i32 0
6624 // CHECK: insertelement <4 x i64> %{{.*}}, i64 %{{.*}}, i32 1
6625 // CHECK: insertelement <4 x i64> %{{.*}}, i64 %{{.*}}, i32 2
6626 // CHECK: insertelement <4 x i64> %{{.*}}, i64 %{{.*}}, i32 3
6627 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
6628 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6629 return _mm256_mask_set1_epi64(__O, __M, __A);
6632 __m256i test_mm256_maskz_set1_epi64(__mmask8 __M, long long __A) {
6633 // CHECK-LABEL: @test_mm256_maskz_set1_epi64
6634 // CHECK: insertelement <4 x i64> undef, i64 %{{.*}}, i32 0
6635 // CHECK: insertelement <4 x i64> %{{.*}}, i64 %{{.*}}, i32 1
6636 // CHECK: insertelement <4 x i64> %{{.*}}, i64 %{{.*}}, i32 2
6637 // CHECK: insertelement <4 x i64> %{{.*}}, i64 %{{.*}}, i32 3
6638 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
6639 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6640 return _mm256_maskz_set1_epi64(__M, __A);
6643 __m128d test_mm_fixupimm_pd(__m128d __A, __m128d __B, __m128i __C) {
6644 // CHECK-LABEL: @test_mm_fixupimm_pd
6645 // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.128
6646 return _mm_fixupimm_pd(__A, __B, __C, 5);
6649 __m128d test_mm_mask_fixupimm_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128i __C) {
6650 // CHECK-LABEL: @test_mm_mask_fixupimm_pd
6651 // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.128
6652 return _mm_mask_fixupimm_pd(__A, __U, __B, __C, 5);
6655 __m128d test_mm_maskz_fixupimm_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128i __C) {
6656 // CHECK-LABEL: @test_mm_maskz_fixupimm_pd
6657 // CHECK: @llvm.x86.avx512.maskz.fixupimm.pd.128
6658 return _mm_maskz_fixupimm_pd(__U, __A, __B, __C, 5);
6661 __m256d test_mm256_fixupimm_pd(__m256d __A, __m256d __B, __m256i __C) {
6662 // CHECK-LABEL: @test_mm256_fixupimm_pd
6663 // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.256
6664 return _mm256_fixupimm_pd(__A, __B, __C, 5);
6667 __m256d test_mm256_mask_fixupimm_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256i __C) {
6668 // CHECK-LABEL: @test_mm256_mask_fixupimm_pd
6669 // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.256
6670 return _mm256_mask_fixupimm_pd(__A, __U, __B, __C, 5);
6673 __m256d test_mm256_maskz_fixupimm_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256i __C) {
6674 // CHECK-LABEL: @test_mm256_maskz_fixupimm_pd
6675 // CHECK: @llvm.x86.avx512.maskz.fixupimm.pd.256
6676 return _mm256_maskz_fixupimm_pd(__U, __A, __B, __C, 5);
6679 __m128 test_mm_fixupimm_ps(__m128 __A, __m128 __B, __m128i __C) {
6680 // CHECK-LABEL: @test_mm_fixupimm_ps
6681 // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.128
6682 return _mm_fixupimm_ps(__A, __B, __C, 5);
6685 __m128 test_mm_mask_fixupimm_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128i __C) {
6686 // CHECK-LABEL: @test_mm_mask_fixupimm_ps
6687 // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.128
6688 return _mm_mask_fixupimm_ps(__A, __U, __B, __C, 5);
6691 __m128 test_mm_maskz_fixupimm_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128i __C) {
6692 // CHECK-LABEL: @test_mm_maskz_fixupimm_ps
6693 // CHECK: @llvm.x86.avx512.maskz.fixupimm.ps.128
6694 return _mm_maskz_fixupimm_ps(__U, __A, __B, __C, 5);
6697 __m256 test_mm256_fixupimm_ps(__m256 __A, __m256 __B, __m256i __C) {
6698 // CHECK-LABEL: @test_mm256_fixupimm_ps
6699 // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.256
6700 return _mm256_fixupimm_ps(__A, __B, __C, 5);
6703 __m256 test_mm256_mask_fixupimm_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256i __C) {
6704 // CHECK-LABEL: @test_mm256_mask_fixupimm_ps
6705 // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.256
6706 return _mm256_mask_fixupimm_ps(__A, __U, __B, __C, 5);
6709 __m256 test_mm256_maskz_fixupimm_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256i __C) {
6710 // CHECK-LABEL: @test_mm256_maskz_fixupimm_ps
6711 // CHECK: @llvm.x86.avx512.maskz.fixupimm.ps.256
6712 return _mm256_maskz_fixupimm_ps(__U, __A, __B, __C, 5);
6715 __m128d test_mm_mask_load_pd(__m128d __W, __mmask8 __U, void const *__P) {
6716 // CHECK-LABEL: @test_mm_mask_load_pd
6717 // CHECK: @llvm.masked.load.v2f64.p0v2f64(<2 x double>* %{{.*}}, i32 16, <2 x i1> %{{.*}}, <2 x double> %{{.*}})
6718 return _mm_mask_load_pd(__W, __U, __P);
6721 __m128d test_mm_maskz_load_pd(__mmask8 __U, void const *__P) {
6722 // CHECK-LABEL: @test_mm_maskz_load_pd
6723 // CHECK: @llvm.masked.load.v2f64.p0v2f64(<2 x double>* %{{.*}}, i32 16, <2 x i1> %{{.*}}, <2 x double> %{{.*}})
6724 return _mm_maskz_load_pd(__U, __P);
6727 __m256d test_mm256_mask_load_pd(__m256d __W, __mmask8 __U, void const *__P) {
6728 // CHECK-LABEL: @test_mm256_mask_load_pd
6729 // CHECK: @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %{{.*}}, i32 32, <4 x i1> %{{.*}}, <4 x double> %{{.*}})
6730 return _mm256_mask_load_pd(__W, __U, __P);
6733 __m256d test_mm256_maskz_load_pd(__mmask8 __U, void const *__P) {
6734 // CHECK-LABEL: @test_mm256_maskz_load_pd
6735 // CHECK: @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %{{.*}}, i32 32, <4 x i1> %{{.*}}, <4 x double> %{{.*}})
6736 return _mm256_maskz_load_pd(__U, __P);
6739 __m128 test_mm_mask_load_ps(__m128 __W, __mmask8 __U, void const *__P) {
6740 // CHECK-LABEL: @test_mm_mask_load_ps
6741 // CHECK: @llvm.masked.load.v4f32.p0v4f32(<4 x float>* %{{.*}}, i32 16, <4 x i1> %{{.*}}, <4 x float> %{{.*}})
6742 return _mm_mask_load_ps(__W, __U, __P);
6745 __m128 test_mm_maskz_load_ps(__mmask8 __U, void const *__P) {
6746 // CHECK-LABEL: @test_mm_maskz_load_ps
6747 // CHECK: @llvm.masked.load.v4f32.p0v4f32(<4 x float>* %{{.*}}, i32 16, <4 x i1> %{{.*}}, <4 x float> %{{.*}})
6748 return _mm_maskz_load_ps(__U, __P);
6751 __m256 test_mm256_mask_load_ps(__m256 __W, __mmask8 __U, void const *__P) {
6752 // CHECK-LABEL: @test_mm256_mask_load_ps
6753 // CHECK: @llvm.masked.load.v8f32.p0v8f32(<8 x float>* %{{.*}}, i32 32, <8 x i1> %{{.*}}, <8 x float> %{{.*}})
6754 return _mm256_mask_load_ps(__W, __U, __P);
6757 __m256 test_mm256_maskz_load_ps(__mmask8 __U, void const *__P) {
6758 // CHECK-LABEL: @test_mm256_maskz_load_ps
6759 // CHECK: @llvm.masked.load.v8f32.p0v8f32(<8 x float>* %{{.*}}, i32 32, <8 x i1> %{{.*}}, <8 x float> %{{.*}})
6760 return _mm256_maskz_load_ps(__U, __P);
6763 __m128i test_mm_mask_loadu_epi64(__m128i __W, __mmask8 __U, void const *__P) {
6764 // CHECK-LABEL: @test_mm_mask_loadu_epi64
6765 // CHECK: @llvm.masked.load.v2i64.p0v2i64(<2 x i64>* %{{.*}}, i32 1, <2 x i1> %{{.*}}, <2 x i64> %{{.*}})
6766 return _mm_mask_loadu_epi64(__W, __U, __P);
6769 __m128i test_mm_maskz_loadu_epi64(__mmask8 __U, void const *__P) {
6770 // CHECK-LABEL: @test_mm_maskz_loadu_epi64
6771 // CHECK: @llvm.masked.load.v2i64.p0v2i64(<2 x i64>* %{{.*}}, i32 1, <2 x i1> %{{.*}}, <2 x i64> %{{.*}})
6772 return _mm_maskz_loadu_epi64(__U, __P);
6775 __m256i test_mm256_mask_loadu_epi64(__m256i __W, __mmask8 __U, void const *__P) {
6776 // CHECK-LABEL: @test_mm256_mask_loadu_epi64
6777 // CHECK: @llvm.masked.load.v4i64.p0v4i64(<4 x i64>* %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x i64> %{{.*}})
6778 return _mm256_mask_loadu_epi64(__W, __U, __P);
6781 __m256i test_mm256_maskz_loadu_epi64(__mmask8 __U, void const *__P) {
6782 // CHECK-LABEL: @test_mm256_maskz_loadu_epi64
6783 // CHECK: @llvm.masked.load.v4i64.p0v4i64(<4 x i64>* %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x i64> %{{.*}})
6784 return _mm256_maskz_loadu_epi64(__U, __P);
6787 __m128i test_mm_mask_loadu_epi32(__m128i __W, __mmask8 __U, void const *__P) {
6788 // CHECK-LABEL: @test_mm_mask_loadu_epi32
6789 // CHECK: @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x i32> %{{.*}})
6790 return _mm_mask_loadu_epi32(__W, __U, __P);
6793 __m128i test_mm_maskz_loadu_epi32(__mmask8 __U, void const *__P) {
6794 // CHECK-LABEL: @test_mm_maskz_loadu_epi32
6795 // CHECK: @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x i32> %{{.*}})
6796 return _mm_maskz_loadu_epi32(__U, __P);
6799 __m256i test_mm256_mask_loadu_epi32(__m256i __W, __mmask8 __U, void const *__P) {
6800 // CHECK-LABEL: @test_mm256_mask_loadu_epi32
6801 // CHECK: @llvm.masked.load.v8i32.p0v8i32(<8 x i32>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i32> %{{.*}})
6802 return _mm256_mask_loadu_epi32(__W, __U, __P);
6805 __m256i test_mm256_maskz_loadu_epi32(__mmask8 __U, void const *__P) {
6806 // CHECK-LABEL: @test_mm256_maskz_loadu_epi32
6807 // CHECK: @llvm.masked.load.v8i32.p0v8i32(<8 x i32>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i32> %{{.*}})
6808 return _mm256_maskz_loadu_epi32(__U, __P);
6811 __m128d test_mm_mask_loadu_pd(__m128d __W, __mmask8 __U, void const *__P) {
6812 // CHECK-LABEL: @test_mm_mask_loadu_pd
6813 // CHECK: @llvm.masked.load.v2f64.p0v2f64(<2 x double>* %{{.*}}, i32 1, <2 x i1> %{{.*}}, <2 x double> %{{.*}})
6814 return _mm_mask_loadu_pd(__W, __U, __P);
6817 __m128d test_mm_maskz_loadu_pd(__mmask8 __U, void const *__P) {
6818 // CHECK-LABEL: @test_mm_maskz_loadu_pd
6819 // CHECK: @llvm.masked.load.v2f64.p0v2f64(<2 x double>* %{{.*}}, i32 1, <2 x i1> %{{.*}}, <2 x double> %{{.*}})
6820 return _mm_maskz_loadu_pd(__U, __P);
6823 __m256d test_mm256_mask_loadu_pd(__m256d __W, __mmask8 __U, void const *__P) {
6824 // CHECK-LABEL: @test_mm256_mask_loadu_pd
6825 // CHECK: @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x double> %{{.*}})
6826 return _mm256_mask_loadu_pd(__W, __U, __P);
6829 __m256d test_mm256_maskz_loadu_pd(__mmask8 __U, void const *__P) {
6830 // CHECK-LABEL: @test_mm256_maskz_loadu_pd
6831 // CHECK: @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x double> %{{.*}})
6832 return _mm256_maskz_loadu_pd(__U, __P);
6835 __m128 test_mm_mask_loadu_ps(__m128 __W, __mmask8 __U, void const *__P) {
6836 // CHECK-LABEL: @test_mm_mask_loadu_ps
6837 // CHECK: @llvm.masked.load.v4f32.p0v4f32(<4 x float>* %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x float> %{{.*}})
6838 return _mm_mask_loadu_ps(__W, __U, __P);
6841 __m128 test_mm_maskz_loadu_ps(__mmask8 __U, void const *__P) {
6842 // CHECK-LABEL: @test_mm_maskz_loadu_ps
6843 // CHECK: @llvm.masked.load.v4f32.p0v4f32(<4 x float>* %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x float> %{{.*}})
6844 return _mm_maskz_loadu_ps(__U, __P);
6847 __m256 test_mm256_mask_loadu_ps(__m256 __W, __mmask8 __U, void const *__P) {
6848 // CHECK-LABEL: @test_mm256_mask_loadu_ps
6849 // CHECK: @llvm.masked.load.v8f32.p0v8f32(<8 x float>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x float> %{{.*}})
6850 return _mm256_mask_loadu_ps(__W, __U, __P);
6853 __m256 test_mm256_maskz_loadu_ps(__mmask8 __U, void const *__P) {
6854 // CHECK-LABEL: @test_mm256_maskz_loadu_ps
6855 // CHECK: @llvm.masked.load.v8f32.p0v8f32(<8 x float>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x float> %{{.*}})
6856 return _mm256_maskz_loadu_ps(__U, __P);
6859 void test_mm_mask_store_pd(void *__P, __mmask8 __U, __m128d __A) {
6860 // CHECK-LABEL: @test_mm_mask_store_pd
6861 // CHECK: @llvm.masked.store.v2f64.p0v2f64(<2 x double> %{{.*}}, <2 x double>* %{{.*}}, i32 16, <2 x i1> %{{.*}})
6862 return _mm_mask_store_pd(__P, __U, __A);
6865 void test_mm256_mask_store_pd(void *__P, __mmask8 __U, __m256d __A) {
6866 // CHECK-LABEL: @test_mm256_mask_store_pd
6867 // CHECK: @llvm.masked.store.v4f64.p0v4f64(<4 x double> %{{.*}}, <4 x double>* %{{.*}}, i32 32, <4 x i1> %{{.*}})
6868 return _mm256_mask_store_pd(__P, __U, __A);
6871 void test_mm_mask_store_ps(void *__P, __mmask8 __U, __m128 __A) {
6872 // CHECK-LABEL: @test_mm_mask_store_ps
6873 // CHECK: @llvm.masked.store.v4f32.p0v4f32(<4 x float> %{{.*}}, <4 x float>* %{{.*}}, i32 16, <4 x i1> %{{.*}})
6874 return _mm_mask_store_ps(__P, __U, __A);
6877 void test_mm256_mask_store_ps(void *__P, __mmask8 __U, __m256 __A) {
6878 // CHECK-LABEL: @test_mm256_mask_store_ps
6879 // CHECK: @llvm.masked.store.v8f32.p0v8f32(<8 x float> %{{.*}}, <8 x float>* %{{.*}}, i32 32, <8 x i1> %{{.*}})
6880 return _mm256_mask_store_ps(__P, __U, __A);
6883 void test_mm_mask_storeu_epi64(void *__P, __mmask8 __U, __m128i __A) {
6884 // CHECK-LABEL: @test_mm_mask_storeu_epi64
6885 // CHECK: @llvm.masked.store.v2i64.p0v2i64(<2 x i64> %{{.*}}, <2 x i64>* %{{.*}}, i32 1, <2 x i1> %{{.*}})
6886 return _mm_mask_storeu_epi64(__P, __U, __A);
6889 void test_mm256_mask_storeu_epi64(void *__P, __mmask8 __U, __m256i __A) {
6890 // CHECK-LABEL: @test_mm256_mask_storeu_epi64
6891 // CHECK: @llvm.masked.store.v4i64.p0v4i64(<4 x i64> %{{.*}}, <4 x i64>* %{{.*}}, i32 1, <4 x i1> %{{.*}})
6892 return _mm256_mask_storeu_epi64(__P, __U, __A);
6895 void test_mm_mask_storeu_epi32(void *__P, __mmask8 __U, __m128i __A) {
6896 // CHECK-LABEL: @test_mm_mask_storeu_epi32
6897 // CHECK: @llvm.masked.store.v4i32.p0v4i32(<4 x i32> %{{.*}}, <4 x i32>* %{{.*}}, i32 1, <4 x i1> %{{.*}})
6898 return _mm_mask_storeu_epi32(__P, __U, __A);
6901 void test_mm256_mask_storeu_epi32(void *__P, __mmask8 __U, __m256i __A) {
6902 // CHECK-LABEL: @test_mm256_mask_storeu_epi32
6903 // CHECK: @llvm.masked.store.v8i32.p0v8i32(<8 x i32> %{{.*}}, <8 x i32>* %{{.*}}, i32 1, <8 x i1> %{{.*}})
6904 return _mm256_mask_storeu_epi32(__P, __U, __A);
6907 void test_mm_mask_storeu_pd(void *__P, __mmask8 __U, __m128d __A) {
6908 // CHECK-LABEL: @test_mm_mask_storeu_pd
6909 // CHECK: @llvm.masked.store.v2f64.p0v2f64(<2 x double> %{{.*}}, <2 x double>* %{{.*}}, i32 1, <2 x i1> %{{.*}})
6910 return _mm_mask_storeu_pd(__P, __U, __A);
6913 void test_mm256_mask_storeu_pd(void *__P, __mmask8 __U, __m256d __A) {
6914 // CHECK-LABEL: @test_mm256_mask_storeu_pd
6915 // CHECK: @llvm.masked.store.v4f64.p0v4f64(<4 x double> %{{.*}}, <4 x double>* %{{.*}}, i32 1, <4 x i1> %{{.*}})
6916 return _mm256_mask_storeu_pd(__P, __U, __A);
6919 void test_mm_mask_storeu_ps(void *__P, __mmask8 __U, __m128 __A) {
6920 // CHECK-LABEL: @test_mm_mask_storeu_ps
6921 // CHECK: @llvm.masked.store.v4f32.p0v4f32(<4 x float> %{{.*}}, <4 x float>* %{{.*}}, i32 1, <4 x i1> %{{.*}})
6922 return _mm_mask_storeu_ps(__P, __U, __A);
6925 void test_mm256_mask_storeu_ps(void *__P, __mmask8 __U, __m256 __A) {
6926 // CHECK-LABEL: @test_mm256_mask_storeu_ps
6927 // CHECK: @llvm.masked.store.v8f32.p0v8f32(<8 x float> %{{.*}}, <8 x float>* %{{.*}}, i32 1, <8 x i1> %{{.*}})
6928 return _mm256_mask_storeu_ps(__P, __U, __A);
6931 __m128d test_mm_mask_unpackhi_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
6932 // CHECK-LABEL: @test_mm_mask_unpackhi_pd
6933 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> <i32 1, i32 3>
6934 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
6935 return _mm_mask_unpackhi_pd(__W, __U, __A, __B);
6938 __m128d test_mm_maskz_unpackhi_pd(__mmask8 __U, __m128d __A, __m128d __B) {
6939 // CHECK-LABEL: @test_mm_maskz_unpackhi_pd
6940 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> <i32 1, i32 3>
6941 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
6942 return _mm_maskz_unpackhi_pd(__U, __A, __B);
6945 __m256d test_mm256_mask_unpackhi_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
6946 // CHECK-LABEL: @test_mm256_mask_unpackhi_pd
6947 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
6948 // CHECK: select <4 x i1> %{{.*}} <4 x double> %{{.*}}, <4 x double> %{{.*}}
6949 return _mm256_mask_unpackhi_pd(__W, __U, __A, __B);
6952 __m256d test_mm256_maskz_unpackhi_pd(__mmask8 __U, __m256d __A, __m256d __B) {
6953 // CHECK-LABEL: @test_mm256_maskz_unpackhi_pd
6954 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
6955 // CHECK: select <4 x i1> %{{.*}} <4 x double> %{{.*}}, <4 x double> %{{.*}}
6956 return _mm256_maskz_unpackhi_pd(__U, __A, __B);
6959 __m128 test_mm_mask_unpackhi_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
6960 // CHECK-LABEL: @test_mm_mask_unpackhi_ps
6961 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
6962 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}} <4 x float> %{{.*}}
6963 return _mm_mask_unpackhi_ps(__W, __U, __A, __B);
6966 __m128 test_mm_maskz_unpackhi_ps(__mmask8 __U, __m128 __A, __m128 __B) {
6967 // CHECK-LABEL: @test_mm_maskz_unpackhi_ps
6968 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
6969 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}} <4 x float> %{{.*}}
6970 return _mm_maskz_unpackhi_ps(__U, __A, __B);
6973 __m256 test_mm256_mask_unpackhi_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
6974 // CHECK-LABEL: @test_mm256_mask_unpackhi_ps
6975 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 2, i32 10, i32 3, i32 11, i32 6, i32 14, i32 7, i32 15>
6976 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
6977 return _mm256_mask_unpackhi_ps(__W, __U, __A, __B);
6980 __m256 test_mm256_maskz_unpackhi_ps(__mmask8 __U, __m256 __A, __m256 __B) {
6981 // CHECK-LABEL: @test_mm256_maskz_unpackhi_ps
6982 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 2, i32 10, i32 3, i32 11, i32 6, i32 14, i32 7, i32 15>
6983 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
6984 return _mm256_maskz_unpackhi_ps(__U, __A, __B);
6987 __m128d test_mm_mask_unpacklo_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
6988 // CHECK-LABEL: @test_mm_mask_unpacklo_pd
6989 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> <i32 0, i32 2>
6990 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
6991 return _mm_mask_unpacklo_pd(__W, __U, __A, __B);
6994 __m128d test_mm_maskz_unpacklo_pd(__mmask8 __U, __m128d __A, __m128d __B) {
6995 // CHECK-LABEL: @test_mm_maskz_unpacklo_pd
6996 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> <i32 0, i32 2>
6997 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
6998 return _mm_maskz_unpacklo_pd(__U, __A, __B);
7001 __m256d test_mm256_mask_unpacklo_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
7002 // CHECK-LABEL: @test_mm256_mask_unpacklo_pd
7003 // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
7004 // CHECK: select <4 x i1> %{{.*}} <4 x double> %{{.*}}, <4 x double> %{{.*}}
7005 return _mm256_mask_unpacklo_pd(__W, __U, __A, __B);
7008 __m256d test_mm256_maskz_unpacklo_pd(__mmask8 __U, __m256d __A, __m256d __B) {
7009 // CHECK-LABEL: @test_mm256_maskz_unpacklo_pd
7010 // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
7011 // CHECK: select <4 x i1> %{{.*}} <4 x double> %{{.*}}, <4 x double> %{{.*}}
7012 return _mm256_maskz_unpacklo_pd(__U, __A, __B);
7015 __m128 test_mm_mask_unpacklo_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
7016 // CHECK-LABEL: @test_mm_mask_unpacklo_ps
7017 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
7018 // CHECK: select <4 x i1> %{{.*}} <4 x float> %{{.*}}, <4 x float> %{{.*}}
7019 return _mm_mask_unpacklo_ps(__W, __U, __A, __B);
7022 __m128 test_mm_maskz_unpacklo_ps(__mmask8 __U, __m128 __A, __m128 __B) {
7023 // CHECK-LABEL: @test_mm_maskz_unpacklo_ps
7024 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
7025 // CHECK: select <4 x i1> %{{.*}} <4 x float> %{{.*}}, <4 x float> %{{.*}}
7026 return _mm_maskz_unpacklo_ps(__U, __A, __B);
7029 __m256 test_mm256_mask_unpacklo_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
7030 // CHECK-LABEL: @test_mm256_mask_unpacklo_ps
7031 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 4, i32 12, i32 5, i32 13>
7032 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7033 return _mm256_mask_unpacklo_ps(__W, __U, __A, __B);
7036 __m256 test_mm256_maskz_unpacklo_ps(__mmask8 __U, __m256 __A, __m256 __B) {
7037 // CHECK-LABEL: @test_mm256_maskz_unpacklo_ps
7038 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 4, i32 12, i32 5, i32 13>
7039 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7040 return _mm256_maskz_unpacklo_ps(__U, __A, __B);
7043 __m128d test_mm_rcp14_pd(__m128d __A) {
7044 // CHECK-LABEL: @test_mm_rcp14_pd
7045 // CHECK: @llvm.x86.avx512.rcp14.pd.128
7046 return _mm_rcp14_pd(__A);
7049 __m128d test_mm_mask_rcp14_pd(__m128d __W, __mmask8 __U, __m128d __A) {
7050 // CHECK-LABEL: @test_mm_mask_rcp14_pd
7051 // CHECK: @llvm.x86.avx512.rcp14.pd.128
7052 return _mm_mask_rcp14_pd(__W, __U, __A);
7055 __m128d test_mm_maskz_rcp14_pd(__mmask8 __U, __m128d __A) {
7056 // CHECK-LABEL: @test_mm_maskz_rcp14_pd
7057 // CHECK: @llvm.x86.avx512.rcp14.pd.128
7058 return _mm_maskz_rcp14_pd(__U, __A);
7061 __m256d test_mm256_rcp14_pd(__m256d __A) {
7062 // CHECK-LABEL: @test_mm256_rcp14_pd
7063 // CHECK: @llvm.x86.avx512.rcp14.pd.256
7064 return _mm256_rcp14_pd(__A);
7067 __m256d test_mm256_mask_rcp14_pd(__m256d __W, __mmask8 __U, __m256d __A) {
7068 // CHECK-LABEL: @test_mm256_mask_rcp14_pd
7069 // CHECK: @llvm.x86.avx512.rcp14.pd.256
7070 return _mm256_mask_rcp14_pd(__W, __U, __A);
7073 __m256d test_mm256_maskz_rcp14_pd(__mmask8 __U, __m256d __A) {
7074 // CHECK-LABEL: @test_mm256_maskz_rcp14_pd
7075 // CHECK: @llvm.x86.avx512.rcp14.pd.256
7076 return _mm256_maskz_rcp14_pd(__U, __A);
7079 __m128 test_mm_rcp14_ps(__m128 __A) {
7080 // CHECK-LABEL: @test_mm_rcp14_ps
7081 // CHECK: @llvm.x86.avx512.rcp14.ps.128
7082 return _mm_rcp14_ps(__A);
7085 __m128 test_mm_mask_rcp14_ps(__m128 __W, __mmask8 __U, __m128 __A) {
7086 // CHECK-LABEL: @test_mm_mask_rcp14_ps
7087 // CHECK: @llvm.x86.avx512.rcp14.ps.128
7088 return _mm_mask_rcp14_ps(__W, __U, __A);
7091 __m128 test_mm_maskz_rcp14_ps(__mmask8 __U, __m128 __A) {
7092 // CHECK-LABEL: @test_mm_maskz_rcp14_ps
7093 // CHECK: @llvm.x86.avx512.rcp14.ps.128
7094 return _mm_maskz_rcp14_ps(__U, __A);
7097 __m256 test_mm256_rcp14_ps(__m256 __A) {
7098 // CHECK-LABEL: @test_mm256_rcp14_ps
7099 // CHECK: @llvm.x86.avx512.rcp14.ps.256
7100 return _mm256_rcp14_ps(__A);
7103 __m256 test_mm256_mask_rcp14_ps(__m256 __W, __mmask8 __U, __m256 __A) {
7104 // CHECK-LABEL: @test_mm256_mask_rcp14_ps
7105 // CHECK: @llvm.x86.avx512.rcp14.ps.256
7106 return _mm256_mask_rcp14_ps(__W, __U, __A);
7109 __m256 test_mm256_maskz_rcp14_ps(__mmask8 __U, __m256 __A) {
7110 // CHECK-LABEL: @test_mm256_maskz_rcp14_ps
7111 // CHECK: @llvm.x86.avx512.rcp14.ps.256
7112 return _mm256_maskz_rcp14_ps(__U, __A);
7115 __m128d test_mm_mask_permute_pd(__m128d __W, __mmask8 __U, __m128d __X) {
7116 // CHECK-LABEL: @test_mm_mask_permute_pd
7117 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> undef, <2 x i32> <i32 1, i32 0>
7118 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
7119 return _mm_mask_permute_pd(__W, __U, __X, 1);
7122 __m128d test_mm_maskz_permute_pd(__mmask8 __U, __m128d __X) {
7123 // CHECK-LABEL: @test_mm_maskz_permute_pd
7124 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> undef, <2 x i32> <i32 1, i32 0>
7125 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
7126 return _mm_maskz_permute_pd(__U, __X, 1);
7129 __m256d test_mm256_mask_permute_pd(__m256d __W, __mmask8 __U, __m256d __X) {
7130 // CHECK-LABEL: @test_mm256_mask_permute_pd
7131 // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> undef, <4 x i32> <i32 1, i32 0, i32 3, i32 2>
7132 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
7133 return _mm256_mask_permute_pd(__W, __U, __X, 5);
7136 __m256d test_mm256_maskz_permute_pd(__mmask8 __U, __m256d __X) {
7137 // CHECK-LABEL: @test_mm256_maskz_permute_pd
7138 // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> undef, <4 x i32> <i32 1, i32 0, i32 3, i32 2>
7139 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
7140 return _mm256_maskz_permute_pd(__U, __X, 5);
7143 __m128 test_mm_mask_permute_ps(__m128 __W, __mmask8 __U, __m128 __X) {
7144 // CHECK-LABEL: @test_mm_mask_permute_ps
7145 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> undef, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
7146 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
7147 return _mm_mask_permute_ps(__W, __U, __X, 0x1b);
7150 __m128 test_mm_maskz_permute_ps(__mmask8 __U, __m128 __X) {
7151 // CHECK-LABEL: @test_mm_maskz_permute_ps
7152 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> undef, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
7153 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
7154 return _mm_maskz_permute_ps(__U, __X, 0x1b);
7157 __m256 test_mm256_mask_permute_ps(__m256 __W, __mmask8 __U, __m256 __X) {
7158 // CHECK-LABEL: @test_mm256_mask_permute_ps
7159 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> undef, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
7160 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7161 return _mm256_mask_permute_ps(__W, __U, __X, 0x1b);
7164 __m256 test_mm256_maskz_permute_ps(__mmask8 __U, __m256 __X) {
7165 // CHECK-LABEL: @test_mm256_maskz_permute_ps
7166 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> undef, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
7167 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7168 return _mm256_maskz_permute_ps(__U, __X, 0x1b);
7171 __m128d test_mm_mask_permutevar_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128i __C) {
7172 // CHECK-LABEL: @test_mm_mask_permutevar_pd
7173 // CHECK: @llvm.x86.avx.vpermilvar.pd
7174 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
7175 return _mm_mask_permutevar_pd(__W, __U, __A, __C);
7178 __m128d test_mm_maskz_permutevar_pd(__mmask8 __U, __m128d __A, __m128i __C) {
7179 // CHECK-LABEL: @test_mm_maskz_permutevar_pd
7180 // CHECK: @llvm.x86.avx.vpermilvar.pd
7181 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
7182 return _mm_maskz_permutevar_pd(__U, __A, __C);
7185 __m256d test_mm256_mask_permutevar_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256i __C) {
7186 // CHECK-LABEL: @test_mm256_mask_permutevar_pd
7187 // CHECK: @llvm.x86.avx.vpermilvar.pd.256
7188 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
7189 return _mm256_mask_permutevar_pd(__W, __U, __A, __C);
7192 __m256d test_mm256_maskz_permutevar_pd(__mmask8 __U, __m256d __A, __m256i __C) {
7193 // CHECK-LABEL: @test_mm256_maskz_permutevar_pd
7194 // CHECK: @llvm.x86.avx.vpermilvar.pd.256
7195 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
7196 return _mm256_maskz_permutevar_pd(__U, __A, __C);
7199 __m128 test_mm_mask_permutevar_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128i __C) {
7200 // CHECK-LABEL: @test_mm_mask_permutevar_ps
7201 // CHECK: @llvm.x86.avx.vpermilvar.ps
7202 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
7203 return _mm_mask_permutevar_ps(__W, __U, __A, __C);
7206 __m128 test_mm_maskz_permutevar_ps(__mmask8 __U, __m128 __A, __m128i __C) {
7207 // CHECK-LABEL: @test_mm_maskz_permutevar_ps
7208 // CHECK: @llvm.x86.avx.vpermilvar.ps
7209 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
7210 return _mm_maskz_permutevar_ps(__U, __A, __C);
7213 __m256 test_mm256_mask_permutevar_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256i __C) {
7214 // CHECK-LABEL: @test_mm256_mask_permutevar_ps
7215 // CHECK: @llvm.x86.avx.vpermilvar.ps.256
7216 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7217 return _mm256_mask_permutevar_ps(__W, __U, __A, __C);
7220 __m256 test_mm256_maskz_permutevar_ps(__mmask8 __U, __m256 __A, __m256i __C) {
7221 // CHECK-LABEL: @test_mm256_maskz_permutevar_ps
7222 // CHECK: @llvm.x86.avx.vpermilvar.ps.256
7223 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7224 return _mm256_maskz_permutevar_ps(__U, __A, __C);
7227 __mmask8 test_mm_test_epi32_mask(__m128i __A, __m128i __B) {
7228 // CHECK-LABEL: @test_mm_test_epi32_mask
7229 // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
7230 // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}}
7231 return _mm_test_epi32_mask(__A, __B);
7234 __mmask8 test_mm_mask_test_epi32_mask(__mmask8 __U, __m128i __A, __m128i __B) {
7235 // CHECK-LABEL: @test_mm_mask_test_epi32_mask
7236 // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
7237 // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}}
7238 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
7239 return _mm_mask_test_epi32_mask(__U, __A, __B);
7242 __mmask8 test_mm256_test_epi32_mask(__m256i __A, __m256i __B) {
7243 // CHECK-LABEL: @test_mm256_test_epi32_mask
7244 // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
7245 // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}}
7246 return _mm256_test_epi32_mask(__A, __B);
7249 __mmask8 test_mm256_mask_test_epi32_mask(__mmask8 __U, __m256i __A, __m256i __B) {
7250 // CHECK-LABEL: @test_mm256_mask_test_epi32_mask
7251 // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
7252 // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}}
7253 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
7254 return _mm256_mask_test_epi32_mask(__U, __A, __B);
7257 __mmask8 test_mm_test_epi64_mask(__m128i __A, __m128i __B) {
7258 // CHECK-LABEL: @test_mm_test_epi64_mask
7259 // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
7260 // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}}
7261 return _mm_test_epi64_mask(__A, __B);
7264 __mmask8 test_mm_mask_test_epi64_mask(__mmask8 __U, __m128i __A, __m128i __B) {
7265 // CHECK-LABEL: @test_mm_mask_test_epi64_mask
7266 // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
7267 // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}}
7268 // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
7269 return _mm_mask_test_epi64_mask(__U, __A, __B);
7272 __mmask8 test_mm256_test_epi64_mask(__m256i __A, __m256i __B) {
7273 // CHECK-LABEL: @test_mm256_test_epi64_mask
7274 // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
7275 // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}}
7276 return _mm256_test_epi64_mask(__A, __B);
7279 __mmask8 test_mm256_mask_test_epi64_mask(__mmask8 __U, __m256i __A, __m256i __B) {
7280 // CHECK-LABEL: @test_mm256_mask_test_epi64_mask
7281 // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
7282 // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}}
7283 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
7284 return _mm256_mask_test_epi64_mask(__U, __A, __B);
7287 __mmask8 test_mm_testn_epi32_mask(__m128i __A, __m128i __B) {
7288 // CHECK-LABEL: @test_mm_testn_epi32_mask
7289 // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
7290 // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
7291 return _mm_testn_epi32_mask(__A, __B);
7294 __mmask8 test_mm_mask_testn_epi32_mask(__mmask8 __U, __m128i __A, __m128i __B) {
7295 // CHECK-LABEL: @test_mm_mask_testn_epi32_mask
7296 // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
7297 // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
7298 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
7299 return _mm_mask_testn_epi32_mask(__U, __A, __B);
7302 __mmask8 test_mm256_testn_epi32_mask(__m256i __A, __m256i __B) {
7303 // CHECK-LABEL: @test_mm256_testn_epi32_mask
7304 // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
7305 // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}}
7306 return _mm256_testn_epi32_mask(__A, __B);
7309 __mmask8 test_mm256_mask_testn_epi32_mask(__mmask8 __U, __m256i __A, __m256i __B) {
7310 // CHECK-LABEL: @test_mm256_mask_testn_epi32_mask
7311 // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
7312 // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}}
7313 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
7314 return _mm256_mask_testn_epi32_mask(__U, __A, __B);
7317 __mmask8 test_mm_testn_epi64_mask(__m128i __A, __m128i __B) {
7318 // CHECK-LABEL: @test_mm_testn_epi64_mask
7319 // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
7320 // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
7321 return _mm_testn_epi64_mask(__A, __B);
7324 __mmask8 test_mm_mask_testn_epi64_mask(__mmask8 __U, __m128i __A, __m128i __B) {
7325 // CHECK-LABEL: @test_mm_mask_testn_epi64_mask
7326 // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
7327 // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
7328 // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
7329 return _mm_mask_testn_epi64_mask(__U, __A, __B);
7332 __mmask8 test_mm256_testn_epi64_mask(__m256i __A, __m256i __B) {
7333 // CHECK-LABEL: @test_mm256_testn_epi64_mask
7334 // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
7335 // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}}
7336 return _mm256_testn_epi64_mask(__A, __B);
7339 __mmask8 test_mm256_mask_testn_epi64_mask(__mmask8 __U, __m256i __A, __m256i __B) {
7340 // CHECK-LABEL: @test_mm256_mask_testn_epi64_mask
7341 // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
7342 // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}}
7343 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
7344 return _mm256_mask_testn_epi64_mask(__U, __A, __B);
7347 __m128i test_mm_mask_unpackhi_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
7348 // CHECK-LABEL: @test_mm_mask_unpackhi_epi32
7349 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
7350 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7351 return _mm_mask_unpackhi_epi32(__W, __U, __A, __B);
7354 __m128i test_mm_maskz_unpackhi_epi32(__mmask8 __U, __m128i __A, __m128i __B) {
7355 // CHECK-LABEL: @test_mm_maskz_unpackhi_epi32
7356 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 2, i32 6, i32 3, i32 7>
7357 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7358 return _mm_maskz_unpackhi_epi32(__U, __A, __B);
7361 __m256i test_mm256_mask_unpackhi_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
7362 // CHECK-LABEL: @test_mm256_mask_unpackhi_epi32
7363 // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 2, i32 10, i32 3, i32 11, i32 6, i32 14, i32 7, i32 15>
7364 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7365 return _mm256_mask_unpackhi_epi32(__W, __U, __A, __B);
7368 __m256i test_mm256_maskz_unpackhi_epi32(__mmask8 __U, __m256i __A, __m256i __B) {
7369 // CHECK-LABEL: @test_mm256_maskz_unpackhi_epi32
7370 // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 2, i32 10, i32 3, i32 11, i32 6, i32 14, i32 7, i32 15>
7371 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7372 return _mm256_maskz_unpackhi_epi32(__U, __A, __B);
7375 __m128i test_mm_mask_unpackhi_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
7376 // CHECK-LABEL: @test_mm_mask_unpackhi_epi64
7377 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 1, i32 3>
7378 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
7379 return _mm_mask_unpackhi_epi64(__W, __U, __A, __B);
7382 __m128i test_mm_maskz_unpackhi_epi64(__mmask8 __U, __m128i __A, __m128i __B) {
7383 // CHECK-LABEL: @test_mm_maskz_unpackhi_epi64
7384 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 1, i32 3>
7385 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
7386 return _mm_maskz_unpackhi_epi64(__U, __A, __B);
7389 __m256i test_mm256_mask_unpackhi_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
7390 // CHECK-LABEL: @test_mm256_mask_unpackhi_epi64
7391 // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
7392 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7393 return _mm256_mask_unpackhi_epi64(__W, __U, __A, __B);
7396 __m256i test_mm256_maskz_unpackhi_epi64(__mmask8 __U, __m256i __A, __m256i __B) {
7397 // CHECK-LABEL: @test_mm256_maskz_unpackhi_epi64
7398 // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
7399 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7400 return _mm256_maskz_unpackhi_epi64(__U, __A, __B);
7403 __m128i test_mm_mask_unpacklo_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
7404 // CHECK-LABEL: @test_mm_mask_unpacklo_epi32
7405 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
7406 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7407 return _mm_mask_unpacklo_epi32(__W, __U, __A, __B);
7410 __m128i test_mm_maskz_unpacklo_epi32(__mmask8 __U, __m128i __A, __m128i __B) {
7411 // CHECK-LABEL: @test_mm_maskz_unpacklo_epi32
7412 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
7413 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7414 return _mm_maskz_unpacklo_epi32(__U, __A, __B);
7417 __m256i test_mm256_mask_unpacklo_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
7418 // CHECK-LABEL: @test_mm256_mask_unpacklo_epi32
7419 // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 4, i32 12, i32 5, i32 13>
7420 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7421 return _mm256_mask_unpacklo_epi32(__W, __U, __A, __B);
7424 __m256i test_mm256_maskz_unpacklo_epi32(__mmask8 __U, __m256i __A, __m256i __B) {
7425 // CHECK-LABEL: @test_mm256_maskz_unpacklo_epi32
7426 // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 4, i32 12, i32 5, i32 13>
7427 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7428 return _mm256_maskz_unpacklo_epi32(__U, __A, __B);
7431 __m128i test_mm_mask_unpacklo_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
7432 // CHECK-LABEL: @test_mm_mask_unpacklo_epi64
7433 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 0, i32 2>
7434 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
7435 return _mm_mask_unpacklo_epi64(__W, __U, __A, __B);
7438 __m128i test_mm_maskz_unpacklo_epi64(__mmask8 __U, __m128i __A, __m128i __B) {
7439 // CHECK-LABEL: @test_mm_maskz_unpacklo_epi64
7440 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 0, i32 2>
7441 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
7442 return _mm_maskz_unpacklo_epi64(__U, __A, __B);
7445 __m256i test_mm256_mask_unpacklo_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
7446 // CHECK-LABEL: @test_mm256_mask_unpacklo_epi64
7447 // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
7448 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7449 return _mm256_mask_unpacklo_epi64(__W, __U, __A, __B);
7452 __m256i test_mm256_maskz_unpacklo_epi64(__mmask8 __U, __m256i __A, __m256i __B) {
7453 // CHECK-LABEL: @test_mm256_maskz_unpacklo_epi64
7454 // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
7455 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7456 return _mm256_maskz_unpacklo_epi64(__U, __A, __B);
7459 __m128i test_mm_mask_sra_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
7460 // CHECK-LABEL: @test_mm_mask_sra_epi32
7461 // CHECK: @llvm.x86.sse2.psra.d
7462 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7463 return _mm_mask_sra_epi32(__W, __U, __A, __B);
7466 __m128i test_mm_maskz_sra_epi32(__mmask8 __U, __m128i __A, __m128i __B) {
7467 // CHECK-LABEL: @test_mm_maskz_sra_epi32
7468 // CHECK: @llvm.x86.sse2.psra.d
7469 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7470 return _mm_maskz_sra_epi32(__U, __A, __B);
7473 __m256i test_mm256_mask_sra_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {
7474 // CHECK-LABEL: @test_mm256_mask_sra_epi32
7475 // CHECK: @llvm.x86.avx2.psra.d
7476 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7477 return _mm256_mask_sra_epi32(__W, __U, __A, __B);
7480 __m256i test_mm256_maskz_sra_epi32(__mmask8 __U, __m256i __A, __m128i __B) {
7481 // CHECK-LABEL: @test_mm256_maskz_sra_epi32
7482 // CHECK: @llvm.x86.avx2.psra.d
7483 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7484 return _mm256_maskz_sra_epi32(__U, __A, __B);
7487 __m128i test_mm_mask_srai_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
7488 // CHECK-LABEL: @test_mm_mask_srai_epi32
7489 // CHECK: @llvm.x86.sse2.psrai.d
7490 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7491 return _mm_mask_srai_epi32(__W, __U, __A, 5);
7494 __m128i test_mm_maskz_srai_epi32(__mmask8 __U, __m128i __A) {
7495 // CHECK-LABEL: @test_mm_maskz_srai_epi32
7496 // CHECK: @llvm.x86.sse2.psrai.d
7497 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7498 return _mm_maskz_srai_epi32(__U, __A, 5);
7501 __m256i test_mm256_mask_srai_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
7502 // CHECK-LABEL: @test_mm256_mask_srai_epi32
7503 // CHECK: @llvm.x86.avx2.psrai.d
7504 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7505 return _mm256_mask_srai_epi32(__W, __U, __A, 5);
7508 __m256i test_mm256_maskz_srai_epi32(__mmask8 __U, __m256i __A) {
7509 // CHECK-LABEL: @test_mm256_maskz_srai_epi32
7510 // CHECK: @llvm.x86.avx2.psrai.d
7511 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7512 return _mm256_maskz_srai_epi32(__U, __A, 5);
7515 __m128i test_mm_sra_epi64(__m128i __A, __m128i __B) {
7516 // CHECK-LABEL: @test_mm_sra_epi64
7517 // CHECK: @llvm.x86.avx512.psra.q.128
7518 return _mm_sra_epi64(__A, __B);
7521 __m128i test_mm_mask_sra_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
7522 // CHECK-LABEL: @test_mm_mask_sra_epi64
7523 // CHECK: @llvm.x86.avx512.psra.q.128
7524 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
7525 return _mm_mask_sra_epi64(__W, __U, __A, __B);
7528 __m128i test_mm_maskz_sra_epi64(__mmask8 __U, __m128i __A, __m128i __B) {
7529 // CHECK-LABEL: @test_mm_maskz_sra_epi64
7530 // CHECK: @llvm.x86.avx512.psra.q.128
7531 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
7532 return _mm_maskz_sra_epi64(__U, __A, __B);
7535 __m256i test_mm256_sra_epi64(__m256i __A, __m128i __B) {
7536 // CHECK-LABEL: @test_mm256_sra_epi64
7537 // CHECK: @llvm.x86.avx512.psra.q.256
7538 return _mm256_sra_epi64(__A, __B);
7541 __m256i test_mm256_mask_sra_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {
7542 // CHECK-LABEL: @test_mm256_mask_sra_epi64
7543 // CHECK: @llvm.x86.avx512.psra.q.256
7544 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7545 return _mm256_mask_sra_epi64(__W, __U, __A, __B);
7548 __m256i test_mm256_maskz_sra_epi64(__mmask8 __U, __m256i __A, __m128i __B) {
7549 // CHECK-LABEL: @test_mm256_maskz_sra_epi64
7550 // CHECK: @llvm.x86.avx512.psra.q.256
7551 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7552 return _mm256_maskz_sra_epi64(__U, __A, __B);
7555 __m128i test_mm_srai_epi64(__m128i __A) {
7556 // CHECK-LABEL: @test_mm_srai_epi64
7557 // CHECK: @llvm.x86.avx512.psrai.q.128
7558 return _mm_srai_epi64(__A, 5);
7561 __m128i test_mm_mask_srai_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
7562 // CHECK-LABEL: @test_mm_mask_srai_epi64
7563 // CHECK: @llvm.x86.avx512.psrai.q.128
7564 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
7565 return _mm_mask_srai_epi64(__W, __U, __A, 5);
7568 __m128i test_mm_maskz_srai_epi64(__mmask8 __U, __m128i __A) {
7569 // CHECK-LABEL: @test_mm_maskz_srai_epi64
7570 // CHECK: @llvm.x86.avx512.psrai.q.128
7571 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
7572 return _mm_maskz_srai_epi64(__U, __A, 5);
7575 __m256i test_mm256_srai_epi64(__m256i __A) {
7576 // CHECK-LABEL: @test_mm256_srai_epi64
7577 // CHECK: @llvm.x86.avx512.psrai.q.256
7578 return _mm256_srai_epi64(__A, 5);
7581 __m256i test_mm256_mask_srai_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
7582 // CHECK-LABEL: @test_mm256_mask_srai_epi64
7583 // CHECK: @llvm.x86.avx512.psrai.q.256
7584 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7585 return _mm256_mask_srai_epi64(__W, __U, __A, 5);
7588 __m256i test_mm256_maskz_srai_epi64(__mmask8 __U, __m256i __A) {
7589 // CHECK-LABEL: @test_mm256_maskz_srai_epi64
7590 // CHECK: @llvm.x86.avx512.psrai.q.256
7591 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7592 return _mm256_maskz_srai_epi64(__U, __A, 5);
7595 __m128i test_mm_ternarylogic_epi32(__m128i __A, __m128i __B, __m128i __C) {
7596 // CHECK-LABEL: @test_mm_ternarylogic_epi32
7597 // CHECK: @llvm.x86.avx512.pternlog.d.128
7598 return _mm_ternarylogic_epi32(__A, __B, __C, 4);
7601 __m128i test_mm_mask_ternarylogic_epi32(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C) {
7602 // CHECK-LABEL: @test_mm_mask_ternarylogic_epi32
7603 // CHECK: @llvm.x86.avx512.pternlog.d.128
7604 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7605 return _mm_mask_ternarylogic_epi32(__A, __U, __B, __C, 4);
7608 __m128i test_mm_maskz_ternarylogic_epi32(__mmask8 __U, __m128i __A, __m128i __B, __m128i __C) {
7609 // CHECK-LABEL: @test_mm_maskz_ternarylogic_epi32
7610 // CHECK: @llvm.x86.avx512.pternlog.d.128
7611 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> zeroinitializer
7612 return _mm_maskz_ternarylogic_epi32(__U, __A, __B, __C, 4);
7615 __m256i test_mm256_ternarylogic_epi32(__m256i __A, __m256i __B, __m256i __C) {
7616 // CHECK-LABEL: @test_mm256_ternarylogic_epi32
7617 // CHECK: @llvm.x86.avx512.pternlog.d.256
7618 return _mm256_ternarylogic_epi32(__A, __B, __C, 4);
7621 __m256i test_mm256_mask_ternarylogic_epi32(__m256i __A, __mmask8 __U, __m256i __B, __m256i __C) {
7622 // CHECK-LABEL: @test_mm256_mask_ternarylogic_epi32
7623 // CHECK: @llvm.x86.avx512.pternlog.d.256
7624 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7625 return _mm256_mask_ternarylogic_epi32(__A, __U, __B, __C, 4);
7628 __m256i test_mm256_maskz_ternarylogic_epi32(__mmask8 __U, __m256i __A, __m256i __B, __m256i __C) {
7629 // CHECK-LABEL: @test_mm256_maskz_ternarylogic_epi32
7630 // CHECK: @llvm.x86.avx512.pternlog.d.256
7631 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> zeroinitializer
7632 return _mm256_maskz_ternarylogic_epi32(__U, __A, __B, __C, 4);
7635 __m128i test_mm_ternarylogic_epi64(__m128i __A, __m128i __B, __m128i __C) {
7636 // CHECK-LABEL: @test_mm_ternarylogic_epi64
7637 // CHECK: @llvm.x86.avx512.pternlog.q.128
7638 return _mm_ternarylogic_epi64(__A, __B, __C, 4);
7641 __m128i test_mm_mask_ternarylogic_epi64(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C) {
7642 // CHECK-LABEL: @test_mm_mask_ternarylogic_epi64
7643 // CHECK: @llvm.x86.avx512.pternlog.q.128
7644 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
7645 return _mm_mask_ternarylogic_epi64(__A, __U, __B, __C, 4);
7648 __m128i test_mm_maskz_ternarylogic_epi64(__mmask8 __U, __m128i __A, __m128i __B, __m128i __C) {
7649 // CHECK-LABEL: @test_mm_maskz_ternarylogic_epi64
7650 // CHECK: @llvm.x86.avx512.pternlog.q.128
7651 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> zeroinitializer
7652 return _mm_maskz_ternarylogic_epi64(__U, __A, __B, __C, 4);
7655 __m256i test_mm256_ternarylogic_epi64(__m256i __A, __m256i __B, __m256i __C) {
7656 // CHECK-LABEL: @test_mm256_ternarylogic_epi64
7657 // CHECK: @llvm.x86.avx512.pternlog.q.256
7658 return _mm256_ternarylogic_epi64(__A, __B, __C, 4);
7661 __m256i test_mm256_mask_ternarylogic_epi64(__m256i __A, __mmask8 __U, __m256i __B, __m256i __C) {
7662 // CHECK-LABEL: @test_mm256_mask_ternarylogic_epi64
7663 // CHECK: @llvm.x86.avx512.pternlog.q.256
7664 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7665 return _mm256_mask_ternarylogic_epi64(__A, __U, __B, __C, 4);
7668 __m256i test_mm256_maskz_ternarylogic_epi64(__mmask8 __U, __m256i __A, __m256i __B, __m256i __C) {
7669 // CHECK-LABEL: @test_mm256_maskz_ternarylogic_epi64
7670 // CHECK: @llvm.x86.avx512.pternlog.q.256
7671 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> zeroinitializer
7672 return _mm256_maskz_ternarylogic_epi64(__U, __A, __B, __C, 4);
7674 __m256 test_mm256_shuffle_f32x4(__m256 __A, __m256 __B) {
7675 // CHECK-LABEL: @test_mm256_shuffle_f32x4
7676 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 12, i32 13, i32 14, i32 15>
7677 return _mm256_shuffle_f32x4(__A, __B, 3);
7680 __m256 test_mm256_mask_shuffle_f32x4(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
7681 // CHECK-LABEL: @test_mm256_mask_shuffle_f32x4
7682 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 12, i32 13, i32 14, i32 15>
7683 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7684 return _mm256_mask_shuffle_f32x4(__W, __U, __A, __B, 3);
7687 __m256 test_mm256_maskz_shuffle_f32x4(__mmask8 __U, __m256 __A, __m256 __B) {
7688 // CHECK-LABEL: @test_mm256_maskz_shuffle_f32x4
7689 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 12, i32 13, i32 14, i32 15>
7690 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7691 return _mm256_maskz_shuffle_f32x4(__U, __A, __B, 3);
7694 __m256d test_mm256_shuffle_f64x2(__m256d __A, __m256d __B) {
7695 // CHECK-LABEL: @test_mm256_shuffle_f64x2
7696 // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 2, i32 3, i32 6, i32 7>
7697 return _mm256_shuffle_f64x2(__A, __B, 3);
7700 __m256d test_mm256_mask_shuffle_f64x2(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
7701 // CHECK-LABEL: @test_mm256_mask_shuffle_f64x2
7702 // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 2, i32 3, i32 6, i32 7>
7703 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
7704 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
7705 return _mm256_mask_shuffle_f64x2(__W, __U, __A, __B, 3);
7708 __m256d test_mm256_maskz_shuffle_f64x2(__mmask8 __U, __m256d __A, __m256d __B) {
7709 // CHECK-LABEL: @test_mm256_maskz_shuffle_f64x2
7710 // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 2, i32 3, i32 6, i32 7>
7711 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
7712 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
7713 return _mm256_maskz_shuffle_f64x2(__U, __A, __B, 3);
7716 __m256i test_mm256_shuffle_i32x4(__m256i __A, __m256i __B) {
7717 // CHECK-LABEL: @test_mm256_shuffle_i32x4
7718 // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 12, i32 13, i32 14, i32 15>
7719 return _mm256_shuffle_i32x4(__A, __B, 3);
7722 __m256i test_mm256_mask_shuffle_i32x4(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
7723 // CHECK-LABEL: @test_mm256_mask_shuffle_i32x4
7724 // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 12, i32 13, i32 14, i32 15>
7725 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7726 return _mm256_mask_shuffle_i32x4(__W, __U, __A, __B, 3);
7729 __m256i test_mm256_maskz_shuffle_i32x4(__mmask8 __U, __m256i __A, __m256i __B) {
7730 // CHECK-LABEL: @test_mm256_maskz_shuffle_i32x4
7731 // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 12, i32 13, i32 14, i32 15>
7732 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7733 return _mm256_maskz_shuffle_i32x4(__U, __A, __B, 3);
7736 __m256i test_mm256_shuffle_i64x2(__m256i __A, __m256i __B) {
7737 // CHECK-LABEL: @test_mm256_shuffle_i64x2
7738 // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 2, i32 3, i32 6, i32 7>
7739 return _mm256_shuffle_i64x2(__A, __B, 3);
7742 __m256i test_mm256_mask_shuffle_i64x2(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
7743 // CHECK-LABEL: @test_mm256_mask_shuffle_i64x2
7744 // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 2, i32 3, i32 6, i32 7>
7745 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
7746 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7747 return _mm256_mask_shuffle_i64x2(__W, __U, __A, __B, 3);
7750 __m256i test_mm256_maskz_shuffle_i64x2(__mmask8 __U, __m256i __A, __m256i __B) {
7751 // CHECK-LABEL: @test_mm256_maskz_shuffle_i64x2
7752 // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 2, i32 3, i32 6, i32 7>
7753 // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
7754 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7755 return _mm256_maskz_shuffle_i64x2(__U, __A, __B, 3);
7758 __m128d test_mm_mask_shuffle_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
7759 // CHECK-LABEL: @test_mm_mask_shuffle_pd
7760 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> <i32 1, i32 3>
7761 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
7762 return _mm_mask_shuffle_pd(__W, __U, __A, __B, 3);
7765 __m128d test_mm_maskz_shuffle_pd(__mmask8 __U, __m128d __A, __m128d __B) {
7766 // CHECK-LABEL: @test_mm_maskz_shuffle_pd
7767 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> <i32 1, i32 3>
7768 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
7769 return _mm_maskz_shuffle_pd(__U, __A, __B, 3);
7772 __m256d test_mm256_mask_shuffle_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
7773 // CHECK-LABEL: @test_mm256_mask_shuffle_pd
7774 // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 1, i32 5, i32 2, i32 6>
7775 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
7776 return _mm256_mask_shuffle_pd(__W, __U, __A, __B, 3);
7779 __m256d test_mm256_maskz_shuffle_pd(__mmask8 __U, __m256d __A, __m256d __B) {
7780 // CHECK-LABEL: @test_mm256_maskz_shuffle_pd
7781 // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 1, i32 5, i32 2, i32 6>
7782 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
7783 return _mm256_maskz_shuffle_pd(__U, __A, __B, 3);
7786 __m128 test_mm_mask_shuffle_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
7787 // CHECK-LABEL: @test_mm_mask_shuffle_ps
7788 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 4, i32 4>
7789 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
7790 return _mm_mask_shuffle_ps(__W, __U, __A, __B, 4);
7793 __m128 test_mm_maskz_shuffle_ps(__mmask8 __U, __m128 __A, __m128 __B) {
7794 // CHECK-LABEL: @test_mm_maskz_shuffle_ps
7795 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 4, i32 4>
7796 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
7797 return _mm_maskz_shuffle_ps(__U, __A, __B, 4);
7800 __m256 test_mm256_mask_shuffle_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
7801 // CHECK-LABEL: @test_mm256_mask_shuffle_ps
7802 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 8, i32 8, i32 4, i32 5, i32 12, i32 12>
7803 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7804 return _mm256_mask_shuffle_ps(__W, __U, __A, __B, 4);
7807 __m256 test_mm256_maskz_shuffle_ps(__mmask8 __U, __m256 __A, __m256 __B) {
7808 // CHECK-LABEL: @test_mm256_maskz_shuffle_ps
7809 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 8, i32 8, i32 4, i32 5, i32 12, i32 12>
7810 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7811 return _mm256_maskz_shuffle_ps(__U, __A, __B, 4);
7814 __m128d test_mm_rsqrt14_pd(__m128d __A) {
7815 // CHECK-LABEL: @test_mm_rsqrt14_pd
7816 // CHECK: @llvm.x86.avx512.rsqrt14.pd.128
7817 return _mm_rsqrt14_pd(__A);
7820 __m128d test_mm_mask_rsqrt14_pd(__m128d __W, __mmask8 __U, __m128d __A) {
7821 // CHECK-LABEL: @test_mm_mask_rsqrt14_pd
7822 // CHECK: @llvm.x86.avx512.rsqrt14.pd.128
7823 return _mm_mask_rsqrt14_pd(__W, __U, __A);
7826 __m128d test_mm_maskz_rsqrt14_pd(__mmask8 __U, __m128d __A) {
7827 // CHECK-LABEL: @test_mm_maskz_rsqrt14_pd
7828 // CHECK: @llvm.x86.avx512.rsqrt14.pd.128
7829 return _mm_maskz_rsqrt14_pd(__U, __A);
7832 __m256d test_mm256_rsqrt14_pd(__m256d __A) {
7833 // CHECK-LABEL: @test_mm256_rsqrt14_pd
7834 // CHECK: @llvm.x86.avx512.rsqrt14.pd.256
7835 return _mm256_rsqrt14_pd(__A);
7838 __m256d test_mm256_mask_rsqrt14_pd(__m256d __W, __mmask8 __U, __m256d __A) {
7839 // CHECK-LABEL: @test_mm256_mask_rsqrt14_pd
7840 // CHECK: @llvm.x86.avx512.rsqrt14.pd.256
7841 return _mm256_mask_rsqrt14_pd(__W, __U, __A);
7844 __m256d test_mm256_maskz_rsqrt14_pd(__mmask8 __U, __m256d __A) {
7845 // CHECK-LABEL: @test_mm256_maskz_rsqrt14_pd
7846 // CHECK: @llvm.x86.avx512.rsqrt14.pd.256
7847 return _mm256_maskz_rsqrt14_pd(__U, __A);
7850 __m128 test_mm_rsqrt14_ps(__m128 __A) {
7851 // CHECK-LABEL: @test_mm_rsqrt14_ps
7852 // CHECK: @llvm.x86.avx512.rsqrt14.ps.128
7853 return _mm_rsqrt14_ps(__A);
7856 __m128 test_mm_mask_rsqrt14_ps(__m128 __W, __mmask8 __U, __m128 __A) {
7857 // CHECK-LABEL: @test_mm_mask_rsqrt14_ps
7858 // CHECK: @llvm.x86.avx512.rsqrt14.ps.128
7859 return _mm_mask_rsqrt14_ps(__W, __U, __A);
7862 __m128 test_mm_maskz_rsqrt14_ps(__mmask8 __U, __m128 __A) {
7863 // CHECK-LABEL: @test_mm_maskz_rsqrt14_ps
7864 // CHECK: @llvm.x86.avx512.rsqrt14.ps.128
7865 return _mm_maskz_rsqrt14_ps(__U, __A);
7868 __m256 test_mm256_rsqrt14_ps(__m256 __A) {
7869 // CHECK-LABEL: @test_mm256_rsqrt14_ps
7870 // CHECK: @llvm.x86.avx512.rsqrt14.ps.256
7871 return _mm256_rsqrt14_ps(__A);
7874 __m256 test_mm256_mask_rsqrt14_ps(__m256 __W, __mmask8 __U, __m256 __A) {
7875 // CHECK-LABEL: @test_mm256_mask_rsqrt14_ps
7876 // CHECK: @llvm.x86.avx512.rsqrt14.ps.256
7877 return _mm256_mask_rsqrt14_ps(__W, __U, __A);
7880 __m256 test_mm256_maskz_rsqrt14_ps(__mmask8 __U, __m256 __A) {
7881 // CHECK-LABEL: @test_mm256_maskz_rsqrt14_ps
7882 // CHECK: @llvm.x86.avx512.rsqrt14.ps.256
7883 return _mm256_maskz_rsqrt14_ps(__U, __A);
7886 __m256 test_mm256_broadcast_f32x4(__m128 __A) {
7887 // CHECK-LABEL: @test_mm256_broadcast_f32x4
7888 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
7889 return _mm256_broadcast_f32x4(__A);
7892 __m256 test_mm256_mask_broadcast_f32x4(__m256 __O, __mmask8 __M, __m128 __A) {
7893 // CHECK-LABEL: @test_mm256_mask_broadcast_f32x4
7894 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
7895 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7896 return _mm256_mask_broadcast_f32x4(__O, __M, __A);
7899 __m256 test_mm256_maskz_broadcast_f32x4(__mmask8 __M, __m128 __A) {
7900 // CHECK-LABEL: @test_mm256_maskz_broadcast_f32x4
7901 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
7902 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7903 return _mm256_maskz_broadcast_f32x4(__M, __A);
7906 __m256i test_mm256_broadcast_i32x4(__m128i const* __A) {
7907 // CHECK-LABEL: @test_mm256_broadcast_i32x4
7908 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
7909 return _mm256_broadcast_i32x4(_mm_loadu_si128(__A));
7912 __m256i test_mm256_mask_broadcast_i32x4(__m256i __O, __mmask8 __M, __m128i const* __A) {
7913 // CHECK-LABEL: @test_mm256_mask_broadcast_i32x4
7914 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
7915 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7916 return _mm256_mask_broadcast_i32x4(__O, __M, _mm_loadu_si128(__A));
7919 __m256i test_mm256_maskz_broadcast_i32x4(__mmask8 __M, __m128i const* __A) {
7920 // CHECK-LABEL: @test_mm256_maskz_broadcast_i32x4
7921 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
7922 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7923 return _mm256_maskz_broadcast_i32x4(__M, _mm_loadu_si128(__A));
7926 __m256d test_mm256_mask_broadcastsd_pd(__m256d __O, __mmask8 __M, __m128d __A) {
7927 // CHECK-LABEL: @test_mm256_mask_broadcastsd_pd
7928 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <4 x i32> zeroinitializer
7929 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
7930 return _mm256_mask_broadcastsd_pd(__O, __M, __A);
7933 __m256d test_mm256_maskz_broadcastsd_pd(__mmask8 __M, __m128d __A) {
7934 // CHECK-LABEL: @test_mm256_maskz_broadcastsd_pd
7935 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <4 x i32> zeroinitializer
7936 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
7937 return _mm256_maskz_broadcastsd_pd(__M, __A);
7940 __m128 test_mm_mask_broadcastss_ps(__m128 __O, __mmask8 __M, __m128 __A) {
7941 // CHECK-LABEL: @test_mm_mask_broadcastss_ps
7942 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> zeroinitializer
7943 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
7944 return _mm_mask_broadcastss_ps(__O, __M, __A);
7947 __m128 test_mm_maskz_broadcastss_ps(__mmask8 __M, __m128 __A) {
7948 // CHECK-LABEL: @test_mm_maskz_broadcastss_ps
7949 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> zeroinitializer
7950 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
7951 return _mm_maskz_broadcastss_ps(__M, __A);
7954 __m256 test_mm256_mask_broadcastss_ps(__m256 __O, __mmask8 __M, __m128 __A) {
7955 // CHECK-LABEL: @test_mm256_mask_broadcastss_ps
7956 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <8 x i32> zeroinitializer
7957 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7958 return _mm256_mask_broadcastss_ps(__O, __M, __A);
7961 __m256 test_mm256_maskz_broadcastss_ps(__mmask8 __M, __m128 __A) {
7962 // CHECK-LABEL: @test_mm256_maskz_broadcastss_ps
7963 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <8 x i32> zeroinitializer
7964 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
7965 return _mm256_maskz_broadcastss_ps(__M, __A);
7968 __m128i test_mm_mask_broadcastd_epi32(__m128i __O, __mmask8 __M, __m128i __A) {
7969 // CHECK-LABEL: @test_mm_mask_broadcastd_epi32
7970 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> zeroinitializer
7971 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7972 return _mm_mask_broadcastd_epi32(__O, __M, __A);
7975 __m128i test_mm_maskz_broadcastd_epi32(__mmask8 __M, __m128i __A) {
7976 // CHECK-LABEL: @test_mm_maskz_broadcastd_epi32
7977 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> zeroinitializer
7978 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
7979 return _mm_maskz_broadcastd_epi32(__M, __A);
7982 __m256i test_mm256_mask_broadcastd_epi32(__m256i __O, __mmask8 __M, __m128i __A) {
7983 // CHECK-LABEL: @test_mm256_mask_broadcastd_epi32
7984 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <8 x i32> zeroinitializer
7985 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7986 return _mm256_mask_broadcastd_epi32(__O, __M, __A);
7989 __m256i test_mm256_maskz_broadcastd_epi32(__mmask8 __M, __m128i __A) {
7990 // CHECK-LABEL: @test_mm256_maskz_broadcastd_epi32
7991 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <8 x i32> zeroinitializer
7992 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
7993 return _mm256_maskz_broadcastd_epi32(__M, __A);
7996 __m128i test_mm_mask_broadcastq_epi64(__m128i __O, __mmask8 __M, __m128i __A) {
7997 // CHECK-LABEL: @test_mm_mask_broadcastq_epi64
7998 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> zeroinitializer
7999 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
8000 return _mm_mask_broadcastq_epi64(__O, __M, __A);
8003 __m128i test_mm_maskz_broadcastq_epi64(__mmask8 __M, __m128i __A) {
8004 // CHECK-LABEL: @test_mm_maskz_broadcastq_epi64
8005 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> zeroinitializer
8006 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
8007 return _mm_maskz_broadcastq_epi64(__M, __A);
8010 __m256i test_mm256_mask_broadcastq_epi64(__m256i __O, __mmask8 __M, __m128i __A) {
8011 // CHECK-LABEL: @test_mm256_mask_broadcastq_epi64
8012 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <4 x i32> zeroinitializer
8013 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
8014 return _mm256_mask_broadcastq_epi64(__O, __M, __A);
8017 __m256i test_mm256_maskz_broadcastq_epi64(__mmask8 __M, __m128i __A) {
8018 // CHECK-LABEL: @test_mm256_maskz_broadcastq_epi64
8019 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <4 x i32> zeroinitializer
8020 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
8021 return _mm256_maskz_broadcastq_epi64(__M, __A);
8024 __m128i test_mm_cvtsepi32_epi8(__m128i __A) {
8025 // CHECK-LABEL: @test_mm_cvtsepi32_epi8
8026 // CHECK: @llvm.x86.avx512.mask.pmovs.db.128
8027 return _mm_cvtsepi32_epi8(__A);
8030 __m128i test_mm_mask_cvtsepi32_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
8031 // CHECK-LABEL: @test_mm_mask_cvtsepi32_epi8
8032 // CHECK: @llvm.x86.avx512.mask.pmovs.db.128
8033 return _mm_mask_cvtsepi32_epi8(__O, __M, __A);
8036 __m128i test_mm_maskz_cvtsepi32_epi8(__mmask8 __M, __m128i __A) {
8037 // CHECK-LABEL: @test_mm_maskz_cvtsepi32_epi8
8038 // CHECK: @llvm.x86.avx512.mask.pmovs.db.128
8039 return _mm_maskz_cvtsepi32_epi8(__M, __A);
8042 void test_mm_mask_cvtsepi32_storeu_epi8(void * __P, __mmask8 __M, __m128i __A) {
8043 // CHECK-LABEL: @test_mm_mask_cvtsepi32_storeu_epi8
8044 // CHECK: @llvm.x86.avx512.mask.pmovs.db.mem.128
8045 return _mm_mask_cvtsepi32_storeu_epi8(__P, __M, __A);
8048 __m128i test_mm256_cvtsepi32_epi8(__m256i __A) {
8049 // CHECK-LABEL: @test_mm256_cvtsepi32_epi8
8050 // CHECK: @llvm.x86.avx512.mask.pmovs.db.256
8051 return _mm256_cvtsepi32_epi8(__A);
8054 __m128i test_mm256_mask_cvtsepi32_epi8(__m128i __O, __mmask8 __M, __m256i __A) {
8055 // CHECK-LABEL: @test_mm256_mask_cvtsepi32_epi8
8056 // CHECK: @llvm.x86.avx512.mask.pmovs.db.256
8057 return _mm256_mask_cvtsepi32_epi8(__O, __M, __A);
8060 __m128i test_mm256_maskz_cvtsepi32_epi8(__mmask8 __M, __m256i __A) {
8061 // CHECK-LABEL: @test_mm256_maskz_cvtsepi32_epi8
8062 // CHECK: @llvm.x86.avx512.mask.pmovs.db.256
8063 return _mm256_maskz_cvtsepi32_epi8(__M, __A);
8066 void test_mm256_mask_cvtsepi32_storeu_epi8(void * __P, __mmask8 __M, __m256i __A) {
8067 // CHECK-LABEL: @test_mm256_mask_cvtsepi32_storeu_epi8
8068 // CHECK: @llvm.x86.avx512.mask.pmovs.db.mem.256
8069 return _mm256_mask_cvtsepi32_storeu_epi8(__P, __M, __A);
8072 __m128i test_mm_cvtsepi32_epi16(__m128i __A) {
8073 // CHECK-LABEL: @test_mm_cvtsepi32_epi16
8074 // CHECK: @llvm.x86.avx512.mask.pmovs.dw.128
8075 return _mm_cvtsepi32_epi16(__A);
8078 __m128i test_mm_mask_cvtsepi32_epi16(__m128i __O, __mmask8 __M, __m128i __A) {
8079 // CHECK-LABEL: @test_mm_mask_cvtsepi32_epi16
8080 // CHECK: @llvm.x86.avx512.mask.pmovs.dw.128
8081 return _mm_mask_cvtsepi32_epi16(__O, __M, __A);
8084 __m128i test_mm_maskz_cvtsepi32_epi16(__mmask8 __M, __m128i __A) {
8085 // CHECK-LABEL: @test_mm_maskz_cvtsepi32_epi16
8086 // CHECK: @llvm.x86.avx512.mask.pmovs.dw.128
8087 return _mm_maskz_cvtsepi32_epi16(__M, __A);
8090 void test_mm_mask_cvtsepi32_storeu_epi16(void * __P, __mmask8 __M, __m128i __A) {
8091 // CHECK-LABEL: @test_mm_mask_cvtsepi32_storeu_epi16
8092 // CHECK: @llvm.x86.avx512.mask.pmovs.dw.mem.128
8093 return _mm_mask_cvtsepi32_storeu_epi16(__P, __M, __A);
8096 __m128i test_mm256_cvtsepi32_epi16(__m256i __A) {
8097 // CHECK-LABEL: @test_mm256_cvtsepi32_epi16
8098 // CHECK: @llvm.x86.avx512.mask.pmovs.dw.256
8099 return _mm256_cvtsepi32_epi16(__A);
8102 __m128i test_mm256_mask_cvtsepi32_epi16(__m128i __O, __mmask8 __M, __m256i __A) {
8103 // CHECK-LABEL: @test_mm256_mask_cvtsepi32_epi16
8104 // CHECK: @llvm.x86.avx512.mask.pmovs.dw.256
8105 return _mm256_mask_cvtsepi32_epi16(__O, __M, __A);
8108 __m128i test_mm256_maskz_cvtsepi32_epi16(__mmask8 __M, __m256i __A) {
8109 // CHECK-LABEL: @test_mm256_maskz_cvtsepi32_epi16
8110 // CHECK: @llvm.x86.avx512.mask.pmovs.dw.256
8111 return _mm256_maskz_cvtsepi32_epi16(__M, __A);
8114 void test_mm256_mask_cvtsepi32_storeu_epi16(void * __P, __mmask8 __M, __m256i __A) {
8115 // CHECK-LABEL: @test_mm256_mask_cvtsepi32_storeu_epi16
8116 // CHECK: @llvm.x86.avx512.mask.pmovs.dw.mem.256
8117 return _mm256_mask_cvtsepi32_storeu_epi16(__P, __M, __A);
8120 __m128i test_mm_cvtsepi64_epi8(__m128i __A) {
8121 // CHECK-LABEL: @test_mm_cvtsepi64_epi8
8122 // CHECK: @llvm.x86.avx512.mask.pmovs.qb.128
8123 return _mm_cvtsepi64_epi8(__A);
8126 __m128i test_mm_mask_cvtsepi64_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
8127 // CHECK-LABEL: @test_mm_mask_cvtsepi64_epi8
8128 // CHECK: @llvm.x86.avx512.mask.pmovs.qb.128
8129 return _mm_mask_cvtsepi64_epi8(__O, __M, __A);
8132 __m128i test_mm_maskz_cvtsepi64_epi8(__mmask8 __M, __m128i __A) {
8133 // CHECK-LABEL: @test_mm_maskz_cvtsepi64_epi8
8134 // CHECK: @llvm.x86.avx512.mask.pmovs.qb.128
8135 return _mm_maskz_cvtsepi64_epi8(__M, __A);
8138 void test_mm_mask_cvtsepi64_storeu_epi8(void * __P, __mmask8 __M, __m128i __A) {
8139 // CHECK-LABEL: @test_mm_mask_cvtsepi64_storeu_epi8
8140 // CHECK: @llvm.x86.avx512.mask.pmovs.qb.mem.128
8141 return _mm_mask_cvtsepi64_storeu_epi8(__P, __M, __A);
8144 __m128i test_mm256_cvtsepi64_epi8(__m256i __A) {
8145 // CHECK-LABEL: @test_mm256_cvtsepi64_epi8
8146 // CHECK: @llvm.x86.avx512.mask.pmovs.qb.256
8147 return _mm256_cvtsepi64_epi8(__A);
8150 __m128i test_mm256_mask_cvtsepi64_epi8(__m128i __O, __mmask8 __M, __m256i __A) {
8151 // CHECK-LABEL: @test_mm256_mask_cvtsepi64_epi8
8152 // CHECK: @llvm.x86.avx512.mask.pmovs.qb.256
8153 return _mm256_mask_cvtsepi64_epi8(__O, __M, __A);
8156 __m128i test_mm256_maskz_cvtsepi64_epi8(__mmask8 __M, __m256i __A) {
8157 // CHECK-LABEL: @test_mm256_maskz_cvtsepi64_epi8
8158 // CHECK: @llvm.x86.avx512.mask.pmovs.qb.256
8159 return _mm256_maskz_cvtsepi64_epi8(__M, __A);
8162 void test_mm256_mask_cvtsepi64_storeu_epi8(void * __P, __mmask8 __M, __m256i __A) {
8163 // CHECK-LABEL: @test_mm256_mask_cvtsepi64_storeu_epi8
8164 // CHECK: @llvm.x86.avx512.mask.pmovs.qb.mem.256
8165 return _mm256_mask_cvtsepi64_storeu_epi8(__P, __M, __A);
8168 __m128i test_mm_cvtsepi64_epi32(__m128i __A) {
8169 // CHECK-LABEL: @test_mm_cvtsepi64_epi32
8170 // CHECK: @llvm.x86.avx512.mask.pmovs.qd.128
8171 return _mm_cvtsepi64_epi32(__A);
8174 __m128i test_mm_mask_cvtsepi64_epi32(__m128i __O, __mmask8 __M, __m128i __A) {
8175 // CHECK-LABEL: @test_mm_mask_cvtsepi64_epi32
8176 // CHECK: @llvm.x86.avx512.mask.pmovs.qd.128
8177 return _mm_mask_cvtsepi64_epi32(__O, __M, __A);
8180 __m128i test_mm_maskz_cvtsepi64_epi32(__mmask8 __M, __m128i __A) {
8181 // CHECK-LABEL: @test_mm_maskz_cvtsepi64_epi32
8182 // CHECK: @llvm.x86.avx512.mask.pmovs.qd.128
8183 return _mm_maskz_cvtsepi64_epi32(__M, __A);
8186 void test_mm_mask_cvtsepi64_storeu_epi32(void * __P, __mmask8 __M, __m128i __A) {
8187 // CHECK-LABEL: @test_mm_mask_cvtsepi64_storeu_epi32
8188 // CHECK: @llvm.x86.avx512.mask.pmovs.qd.mem.128
8189 return _mm_mask_cvtsepi64_storeu_epi32(__P, __M, __A);
8192 __m128i test_mm256_cvtsepi64_epi32(__m256i __A) {
8193 // CHECK-LABEL: @test_mm256_cvtsepi64_epi32
8194 // CHECK: @llvm.x86.avx512.mask.pmovs.qd.256
8195 return _mm256_cvtsepi64_epi32(__A);
8198 __m128i test_mm256_mask_cvtsepi64_epi32(__m128i __O, __mmask8 __M, __m256i __A) {
8199 // CHECK-LABEL: @test_mm256_mask_cvtsepi64_epi32
8200 // CHECK: @llvm.x86.avx512.mask.pmovs.qd.256
8201 return _mm256_mask_cvtsepi64_epi32(__O, __M, __A);
8204 __m128i test_mm256_maskz_cvtsepi64_epi32(__mmask8 __M, __m256i __A) {
8205 // CHECK-LABEL: @test_mm256_maskz_cvtsepi64_epi32
8206 // CHECK: @llvm.x86.avx512.mask.pmovs.qd.256
8207 return _mm256_maskz_cvtsepi64_epi32(__M, __A);
8210 void test_mm256_mask_cvtsepi64_storeu_epi32(void * __P, __mmask8 __M, __m256i __A) {
8211 // CHECK-LABEL: @test_mm256_mask_cvtsepi64_storeu_epi32
8212 // CHECK: @llvm.x86.avx512.mask.pmovs.qd.mem.256
8213 return _mm256_mask_cvtsepi64_storeu_epi32(__P, __M, __A);
8216 __m128i test_mm_cvtsepi64_epi16(__m128i __A) {
8217 // CHECK-LABEL: @test_mm_cvtsepi64_epi16
8218 // CHECK: @llvm.x86.avx512.mask.pmovs.qw.128
8219 return _mm_cvtsepi64_epi16(__A);
8222 __m128i test_mm_mask_cvtsepi64_epi16(__m128i __O, __mmask8 __M, __m128i __A) {
8223 // CHECK-LABEL: @test_mm_mask_cvtsepi64_epi16
8224 // CHECK: @llvm.x86.avx512.mask.pmovs.qw.128
8225 return _mm_mask_cvtsepi64_epi16(__O, __M, __A);
8228 __m128i test_mm_maskz_cvtsepi64_epi16(__mmask8 __M, __m128i __A) {
8229 // CHECK-LABEL: @test_mm_maskz_cvtsepi64_epi16
8230 // CHECK: @llvm.x86.avx512.mask.pmovs.qw.128
8231 return _mm_maskz_cvtsepi64_epi16(__M, __A);
8234 void test_mm_mask_cvtsepi64_storeu_epi16(void * __P, __mmask8 __M, __m128i __A) {
8235 // CHECK-LABEL: @test_mm_mask_cvtsepi64_storeu_epi16
8236 // CHECK: @llvm.x86.avx512.mask.pmovs.qw.mem.128
8237 return _mm_mask_cvtsepi64_storeu_epi16(__P, __M, __A);
8240 __m128i test_mm256_cvtsepi64_epi16(__m256i __A) {
8241 // CHECK-LABEL: @test_mm256_cvtsepi64_epi16
8242 // CHECK: @llvm.x86.avx512.mask.pmovs.qw.256
8243 return _mm256_cvtsepi64_epi16(__A);
8246 __m128i test_mm256_mask_cvtsepi64_epi16(__m128i __O, __mmask8 __M, __m256i __A) {
8247 // CHECK-LABEL: @test_mm256_mask_cvtsepi64_epi16
8248 // CHECK: @llvm.x86.avx512.mask.pmovs.qw.256
8249 return _mm256_mask_cvtsepi64_epi16(__O, __M, __A);
8252 __m128i test_mm256_maskz_cvtsepi64_epi16(__mmask8 __M, __m256i __A) {
8253 // CHECK-LABEL: @test_mm256_maskz_cvtsepi64_epi16
8254 // CHECK: @llvm.x86.avx512.mask.pmovs.qw.256
8255 return _mm256_maskz_cvtsepi64_epi16(__M, __A);
8258 void test_mm256_mask_cvtsepi64_storeu_epi16(void * __P, __mmask8 __M, __m256i __A) {
8259 // CHECK-LABEL: @test_mm256_mask_cvtsepi64_storeu_epi16
8260 // CHECK: @llvm.x86.avx512.mask.pmovs.qw.mem.256
8261 return _mm256_mask_cvtsepi64_storeu_epi16(__P, __M, __A);
8264 __m128i test_mm_cvtusepi32_epi8(__m128i __A) {
8265 // CHECK-LABEL: @test_mm_cvtusepi32_epi8
8266 // CHECK: @llvm.x86.avx512.mask.pmovus.db.128
8267 return _mm_cvtusepi32_epi8(__A);
8270 __m128i test_mm_mask_cvtusepi32_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
8271 // CHECK-LABEL: @test_mm_mask_cvtusepi32_epi8
8272 // CHECK: @llvm.x86.avx512.mask.pmovus.db.128
8273 return _mm_mask_cvtusepi32_epi8(__O, __M, __A);
8276 __m128i test_mm_maskz_cvtusepi32_epi8(__mmask8 __M, __m128i __A) {
8277 // CHECK-LABEL: @test_mm_maskz_cvtusepi32_epi8
8278 // CHECK: @llvm.x86.avx512.mask.pmovus.db.128
8279 return _mm_maskz_cvtusepi32_epi8(__M, __A);
8282 void test_mm_mask_cvtusepi32_storeu_epi8(void * __P, __mmask8 __M, __m128i __A) {
8283 // CHECK-LABEL: @test_mm_mask_cvtusepi32_storeu_epi8
8284 // CHECK: @llvm.x86.avx512.mask.pmovus.db.mem.128
8285 return _mm_mask_cvtusepi32_storeu_epi8(__P, __M, __A);
8288 __m128i test_mm256_cvtusepi32_epi8(__m256i __A) {
8289 // CHECK-LABEL: @test_mm256_cvtusepi32_epi8
8290 // CHECK: @llvm.x86.avx512.mask.pmovus.db.256
8291 return _mm256_cvtusepi32_epi8(__A);
8294 __m128i test_mm256_mask_cvtusepi32_epi8(__m128i __O, __mmask8 __M, __m256i __A) {
8295 // CHECK-LABEL: @test_mm256_mask_cvtusepi32_epi8
8296 // CHECK: @llvm.x86.avx512.mask.pmovus.db.256
8297 return _mm256_mask_cvtusepi32_epi8(__O, __M, __A);
8300 __m128i test_mm256_maskz_cvtusepi32_epi8(__mmask8 __M, __m256i __A) {
8301 // CHECK-LABEL: @test_mm256_maskz_cvtusepi32_epi8
8302 // CHECK: @llvm.x86.avx512.mask.pmovus.db.256
8303 return _mm256_maskz_cvtusepi32_epi8(__M, __A);
8306 void test_mm256_mask_cvtusepi32_storeu_epi8(void * __P, __mmask8 __M, __m256i __A) {
8307 // CHECK-LABEL: @test_mm256_mask_cvtusepi32_storeu_epi8
8308 // CHECK: @llvm.x86.avx512.mask.pmovus.db.mem.256
8309 return _mm256_mask_cvtusepi32_storeu_epi8(__P, __M, __A);
8312 __m128i test_mm_cvtusepi32_epi16(__m128i __A) {
8313 // CHECK-LABEL: @test_mm_cvtusepi32_epi16
8314 // CHECK: @llvm.x86.avx512.mask.pmovus.dw.128
8315 return _mm_cvtusepi32_epi16(__A);
8318 __m128i test_mm_mask_cvtusepi32_epi16(__m128i __O, __mmask8 __M, __m128i __A) {
8319 // CHECK-LABEL: @test_mm_mask_cvtusepi32_epi16
8320 // CHECK: @llvm.x86.avx512.mask.pmovus.dw.128
8321 return _mm_mask_cvtusepi32_epi16(__O, __M, __A);
8324 __m128i test_mm_maskz_cvtusepi32_epi16(__mmask8 __M, __m128i __A) {
8325 // CHECK-LABEL: @test_mm_maskz_cvtusepi32_epi16
8326 // CHECK: @llvm.x86.avx512.mask.pmovus.dw.128
8327 return _mm_maskz_cvtusepi32_epi16(__M, __A);
8330 void test_mm_mask_cvtusepi32_storeu_epi16(void * __P, __mmask8 __M, __m128i __A) {
8331 // CHECK-LABEL: @test_mm_mask_cvtusepi32_storeu_epi16
8332 // CHECK: @llvm.x86.avx512.mask.pmovus.dw.mem.128
8333 return _mm_mask_cvtusepi32_storeu_epi16(__P, __M, __A);
8336 __m128i test_mm256_cvtusepi32_epi16(__m256i __A) {
8337 // CHECK-LABEL: @test_mm256_cvtusepi32_epi16
8338 // CHECK: @llvm.x86.avx512.mask.pmovus.dw.256
8339 return _mm256_cvtusepi32_epi16(__A);
8342 __m128i test_mm256_mask_cvtusepi32_epi16(__m128i __O, __mmask8 __M, __m256i __A) {
8343 // CHECK-LABEL: @test_mm256_mask_cvtusepi32_epi16
8344 // CHECK: @llvm.x86.avx512.mask.pmovus.dw.256
8345 return _mm256_mask_cvtusepi32_epi16(__O, __M, __A);
8348 __m128i test_mm256_maskz_cvtusepi32_epi16(__mmask8 __M, __m256i __A) {
8349 // CHECK-LABEL: @test_mm256_maskz_cvtusepi32_epi16
8350 // CHECK: @llvm.x86.avx512.mask.pmovus.dw.256
8351 return _mm256_maskz_cvtusepi32_epi16(__M, __A);
8354 void test_mm256_mask_cvtusepi32_storeu_epi16(void * __P, __mmask8 __M, __m256i __A) {
8355 // CHECK-LABEL: @test_mm256_mask_cvtusepi32_storeu_epi16
8356 // CHECK: @llvm.x86.avx512.mask.pmovus.dw.mem.256
8357 return _mm256_mask_cvtusepi32_storeu_epi16(__P, __M, __A);
8360 __m128i test_mm_cvtusepi64_epi8(__m128i __A) {
8361 // CHECK-LABEL: @test_mm_cvtusepi64_epi8
8362 // CHECK: @llvm.x86.avx512.mask.pmovus.qb.128
8363 return _mm_cvtusepi64_epi8(__A);
8366 __m128i test_mm_mask_cvtusepi64_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
8367 // CHECK-LABEL: @test_mm_mask_cvtusepi64_epi8
8368 // CHECK: @llvm.x86.avx512.mask.pmovus.qb.128
8369 return _mm_mask_cvtusepi64_epi8(__O, __M, __A);
8372 __m128i test_mm_maskz_cvtusepi64_epi8(__mmask8 __M, __m128i __A) {
8373 // CHECK-LABEL: @test_mm_maskz_cvtusepi64_epi8
8374 // CHECK: @llvm.x86.avx512.mask.pmovus.qb.128
8375 return _mm_maskz_cvtusepi64_epi8(__M, __A);
8378 void test_mm_mask_cvtusepi64_storeu_epi8(void * __P, __mmask8 __M, __m128i __A) {
8379 // CHECK-LABEL: @test_mm_mask_cvtusepi64_storeu_epi8
8380 // CHECK: @llvm.x86.avx512.mask.pmovus.qb.mem.128
8381 return _mm_mask_cvtusepi64_storeu_epi8(__P, __M, __A);
8384 __m128i test_mm256_cvtusepi64_epi8(__m256i __A) {
8385 // CHECK-LABEL: @test_mm256_cvtusepi64_epi8
8386 // CHECK: @llvm.x86.avx512.mask.pmovus.qb.256
8387 return _mm256_cvtusepi64_epi8(__A);
8390 __m128i test_mm256_mask_cvtusepi64_epi8(__m128i __O, __mmask8 __M, __m256i __A) {
8391 // CHECK-LABEL: @test_mm256_mask_cvtusepi64_epi8
8392 // CHECK: @llvm.x86.avx512.mask.pmovus.qb.256
8393 return _mm256_mask_cvtusepi64_epi8(__O, __M, __A);
8396 __m128i test_mm256_maskz_cvtusepi64_epi8(__mmask8 __M, __m256i __A) {
8397 // CHECK-LABEL: @test_mm256_maskz_cvtusepi64_epi8
8398 // CHECK: @llvm.x86.avx512.mask.pmovus.qb.256
8399 return _mm256_maskz_cvtusepi64_epi8(__M, __A);
8402 void test_mm256_mask_cvtusepi64_storeu_epi8(void * __P, __mmask8 __M, __m256i __A) {
8403 // CHECK-LABEL: @test_mm256_mask_cvtusepi64_storeu_epi8
8404 // CHECK: @llvm.x86.avx512.mask.pmovus.qb.mem.256
8405 return _mm256_mask_cvtusepi64_storeu_epi8(__P, __M, __A);
8408 __m128i test_mm_cvtusepi64_epi32(__m128i __A) {
8409 // CHECK-LABEL: @test_mm_cvtusepi64_epi32
8410 // CHECK: @llvm.x86.avx512.mask.pmovus.qd.128
8411 return _mm_cvtusepi64_epi32(__A);
8414 __m128i test_mm_mask_cvtusepi64_epi32(__m128i __O, __mmask8 __M, __m128i __A) {
8415 // CHECK-LABEL: @test_mm_mask_cvtusepi64_epi32
8416 // CHECK: @llvm.x86.avx512.mask.pmovus.qd.128
8417 return _mm_mask_cvtusepi64_epi32(__O, __M, __A);
8420 __m128i test_mm_maskz_cvtusepi64_epi32(__mmask8 __M, __m128i __A) {
8421 // CHECK-LABEL: @test_mm_maskz_cvtusepi64_epi32
8422 // CHECK: @llvm.x86.avx512.mask.pmovus.qd.128
8423 return _mm_maskz_cvtusepi64_epi32(__M, __A);
8426 void test_mm_mask_cvtusepi64_storeu_epi32(void * __P, __mmask8 __M, __m128i __A) {
8427 // CHECK-LABEL: @test_mm_mask_cvtusepi64_storeu_epi32
8428 // CHECK: @llvm.x86.avx512.mask.pmovus.qd.mem.128
8429 return _mm_mask_cvtusepi64_storeu_epi32(__P, __M, __A);
8432 __m128i test_mm256_cvtusepi64_epi32(__m256i __A) {
8433 // CHECK-LABEL: @test_mm256_cvtusepi64_epi32
8434 // CHECK: @llvm.x86.avx512.mask.pmovus.qd.256
8435 return _mm256_cvtusepi64_epi32(__A);
8438 __m128i test_mm256_mask_cvtusepi64_epi32(__m128i __O, __mmask8 __M, __m256i __A) {
8439 // CHECK-LABEL: @test_mm256_mask_cvtusepi64_epi32
8440 // CHECK: @llvm.x86.avx512.mask.pmovus.qd.256
8441 return _mm256_mask_cvtusepi64_epi32(__O, __M, __A);
8444 __m128i test_mm256_maskz_cvtusepi64_epi32(__mmask8 __M, __m256i __A) {
8445 // CHECK-LABEL: @test_mm256_maskz_cvtusepi64_epi32
8446 // CHECK: @llvm.x86.avx512.mask.pmovus.qd.256
8447 return _mm256_maskz_cvtusepi64_epi32(__M, __A);
8450 void test_mm256_mask_cvtusepi64_storeu_epi32(void * __P, __mmask8 __M, __m256i __A) {
8451 // CHECK-LABEL: @test_mm256_mask_cvtusepi64_storeu_epi32
8452 // CHECK: @llvm.x86.avx512.mask.pmovus.qd.mem.256
8453 return _mm256_mask_cvtusepi64_storeu_epi32(__P, __M, __A);
8456 __m128i test_mm_cvtusepi64_epi16(__m128i __A) {
8457 // CHECK-LABEL: @test_mm_cvtusepi64_epi16
8458 // CHECK: @llvm.x86.avx512.mask.pmovus.qw.128
8459 return _mm_cvtusepi64_epi16(__A);
8462 __m128i test_mm_mask_cvtusepi64_epi16(__m128i __O, __mmask8 __M, __m128i __A) {
8463 // CHECK-LABEL: @test_mm_mask_cvtusepi64_epi16
8464 // CHECK: @llvm.x86.avx512.mask.pmovus.qw.128
8465 return _mm_mask_cvtusepi64_epi16(__O, __M, __A);
8468 __m128i test_mm_maskz_cvtusepi64_epi16(__mmask8 __M, __m128i __A) {
8469 // CHECK-LABEL: @test_mm_maskz_cvtusepi64_epi16
8470 // CHECK: @llvm.x86.avx512.mask.pmovus.qw.128
8471 return _mm_maskz_cvtusepi64_epi16(__M, __A);
8474 void test_mm_mask_cvtusepi64_storeu_epi16(void * __P, __mmask8 __M, __m128i __A) {
8475 // CHECK-LABEL: @test_mm_mask_cvtusepi64_storeu_epi16
8476 // CHECK: @llvm.x86.avx512.mask.pmovus.qw.mem.128
8477 return _mm_mask_cvtusepi64_storeu_epi16(__P, __M, __A);
8480 __m128i test_mm256_cvtusepi64_epi16(__m256i __A) {
8481 // CHECK-LABEL: @test_mm256_cvtusepi64_epi16
8482 // CHECK: @llvm.x86.avx512.mask.pmovus.qw.256
8483 return _mm256_cvtusepi64_epi16(__A);
8486 __m128i test_mm256_mask_cvtusepi64_epi16(__m128i __O, __mmask8 __M, __m256i __A) {
8487 // CHECK-LABEL: @test_mm256_mask_cvtusepi64_epi16
8488 // CHECK: @llvm.x86.avx512.mask.pmovus.qw.256
8489 return _mm256_mask_cvtusepi64_epi16(__O, __M, __A);
8492 __m128i test_mm256_maskz_cvtusepi64_epi16(__mmask8 __M, __m256i __A) {
8493 // CHECK-LABEL: @test_mm256_maskz_cvtusepi64_epi16
8494 // CHECK: @llvm.x86.avx512.mask.pmovus.qw.256
8495 return _mm256_maskz_cvtusepi64_epi16(__M, __A);
8498 void test_mm256_mask_cvtusepi64_storeu_epi16(void * __P, __mmask8 __M, __m256i __A) {
8499 // CHECK-LABEL: @test_mm256_mask_cvtusepi64_storeu_epi16
8500 // CHECK: @llvm.x86.avx512.mask.pmovus.qw.mem.256
8501 return _mm256_mask_cvtusepi64_storeu_epi16(__P, __M, __A);
8504 __m128i test_mm_cvtepi32_epi8(__m128i __A) {
8505 // CHECK-LABEL: @test_mm_cvtepi32_epi8
8506 // CHECK: trunc <4 x i32> %{{.*}} to <4 x i8>
8507 // CHECK: shufflevector <4 x i8> %{{.*}}, <4 x i8> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7>
8508 return _mm_cvtepi32_epi8(__A);
8511 __m128i test_mm_mask_cvtepi32_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
8512 // CHECK-LABEL: @test_mm_mask_cvtepi32_epi8
8513 // CHECK: @llvm.x86.avx512.mask.pmov.db.128
8514 return _mm_mask_cvtepi32_epi8(__O, __M, __A);
8517 __m128i test_mm_maskz_cvtepi32_epi8(__mmask8 __M, __m128i __A) {
8518 // CHECK-LABEL: @test_mm_maskz_cvtepi32_epi8
8519 // CHECK: @llvm.x86.avx512.mask.pmov.db.128
8520 return _mm_maskz_cvtepi32_epi8(__M, __A);
8523 void test_mm_mask_cvtepi32_storeu_epi8(void * __P, __mmask8 __M, __m128i __A) {
8524 // CHECK-LABEL: @test_mm_mask_cvtepi32_storeu_epi8
8525 // CHECK: @llvm.x86.avx512.mask.pmov.db.mem.128
8526 return _mm_mask_cvtepi32_storeu_epi8(__P, __M, __A);
8529 __m128i test_mm256_cvtepi32_epi8(__m256i __A) {
8530 // CHECK-LABEL: @test_mm256_cvtepi32_epi8
8531 // CHECK: trunc <8 x i32> %{{.*}} to <8 x i8>
8532 // CHECK: shufflevector <8 x i8> %{{.*}}, <8 x i8> %{{.*}}, <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>
8533 return _mm256_cvtepi32_epi8(__A);
8536 __m128i test_mm256_mask_cvtepi32_epi8(__m128i __O, __mmask8 __M, __m256i __A) {
8537 // CHECK-LABEL: @test_mm256_mask_cvtepi32_epi8
8538 // CHECK: @llvm.x86.avx512.mask.pmov.db.256
8539 return _mm256_mask_cvtepi32_epi8(__O, __M, __A);
8542 __m128i test_mm256_maskz_cvtepi32_epi8(__mmask8 __M, __m256i __A) {
8543 // CHECK-LABEL: @test_mm256_maskz_cvtepi32_epi8
8544 // CHECK: @llvm.x86.avx512.mask.pmov.db.256
8545 return _mm256_maskz_cvtepi32_epi8(__M, __A);
8548 void test_mm256_mask_cvtepi32_storeu_epi8(void * __P, __mmask8 __M, __m256i __A) {
8549 // CHECK-LABEL: @test_mm256_mask_cvtepi32_storeu_epi8
8550 // CHECK: @llvm.x86.avx512.mask.pmov.db.mem.256
8551 return _mm256_mask_cvtepi32_storeu_epi8(__P, __M, __A);
8554 __m128i test_mm_cvtepi32_epi16(__m128i __A) {
8555 // CHECK-LABEL: @test_mm_cvtepi32_epi16
8556 // CHECK: trunc <4 x i32> %{{.*}} to <4 x i16>
8557 // CHECK: shufflevector <4 x i16> %{{.*}}, <4 x i16> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
8558 return _mm_cvtepi32_epi16(__A);
8561 __m128i test_mm_mask_cvtepi32_epi16(__m128i __O, __mmask8 __M, __m128i __A) {
8562 // CHECK-LABEL: @test_mm_mask_cvtepi32_epi16
8563 // CHECK: @llvm.x86.avx512.mask.pmov.dw.128
8564 return _mm_mask_cvtepi32_epi16(__O, __M, __A);
8567 __m128i test_mm_maskz_cvtepi32_epi16(__mmask8 __M, __m128i __A) {
8568 // CHECK-LABEL: @test_mm_maskz_cvtepi32_epi16
8569 // CHECK: @llvm.x86.avx512.mask.pmov.dw.128
8570 return _mm_maskz_cvtepi32_epi16(__M, __A);
8573 void test_mm_mask_cvtepi32_storeu_epi16(void * __P, __mmask8 __M, __m128i __A) {
8574 // CHECK-LABEL: @test_mm_mask_cvtepi32_storeu_epi16
8575 // CHECK: @llvm.x86.avx512.mask.pmov.dw.mem.128
8576 return _mm_mask_cvtepi32_storeu_epi16(__P, __M, __A);
8579 __m128i test_mm256_cvtepi32_epi16(__m256i __A) {
8580 // CHECK-LABEL: @test_mm256_cvtepi32_epi16
8581 // CHECK: trunc <8 x i32> %{{.*}} to <8 x i16>
8582 return _mm256_cvtepi32_epi16(__A);
8585 __m128i test_mm256_mask_cvtepi32_epi16(__m128i __O, __mmask8 __M, __m256i __A) {
8586 // CHECK-LABEL: @test_mm256_mask_cvtepi32_epi16
8587 // CHECK: @llvm.x86.avx512.mask.pmov.dw.256
8588 return _mm256_mask_cvtepi32_epi16(__O, __M, __A);
8591 __m128i test_mm256_maskz_cvtepi32_epi16(__mmask8 __M, __m256i __A) {
8592 // CHECK-LABEL: @test_mm256_maskz_cvtepi32_epi16
8593 // CHECK: @llvm.x86.avx512.mask.pmov.dw.256
8594 return _mm256_maskz_cvtepi32_epi16(__M, __A);
8597 void test_mm256_mask_cvtepi32_storeu_epi16(void * __P, __mmask8 __M, __m256i __A) {
8598 // CHECK-LABEL: @test_mm256_mask_cvtepi32_storeu_epi16
8599 // CHECK: @llvm.x86.avx512.mask.pmov.dw.mem.256
8600 return _mm256_mask_cvtepi32_storeu_epi16(__P, __M, __A);
8603 __m128i test_mm_cvtepi64_epi8(__m128i __A) {
8604 // CHECK-LABEL: @test_mm_cvtepi64_epi8
8605 // CHECK: trunc <2 x i64> %{{.*}} to <2 x i8>
8606 // CHECK: shufflevector <2 x i8> %{{.*}}, <2 x i8> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3>
8607 return _mm_cvtepi64_epi8(__A);
8610 __m128i test_mm_mask_cvtepi64_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
8611 // CHECK-LABEL: @test_mm_mask_cvtepi64_epi8
8612 // CHECK: @llvm.x86.avx512.mask.pmov.qb.128
8613 return _mm_mask_cvtepi64_epi8(__O, __M, __A);
8616 __m128i test_mm_maskz_cvtepi64_epi8(__mmask8 __M, __m128i __A) {
8617 // CHECK-LABEL: @test_mm_maskz_cvtepi64_epi8
8618 // CHECK: @llvm.x86.avx512.mask.pmov.qb.128
8619 return _mm_maskz_cvtepi64_epi8(__M, __A);
8622 void test_mm_mask_cvtepi64_storeu_epi8(void * __P, __mmask8 __M, __m128i __A) {
8623 // CHECK-LABEL: @test_mm_mask_cvtepi64_storeu_epi8
8624 // CHECK: @llvm.x86.avx512.mask.pmov.qb.mem.128
8625 return _mm_mask_cvtepi64_storeu_epi8(__P, __M, __A);
8628 __m128i test_mm256_cvtepi64_epi8(__m256i __A) {
8629 // CHECK-LABEL: @test_mm256_cvtepi64_epi8
8630 // CHECK: trunc <4 x i64> %{{.*}} to <4 x i8>
8631 // CHECK: shufflevector <4 x i8> %{{.*}}, <4 x i8> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7>
8632 return _mm256_cvtepi64_epi8(__A);
8635 __m128i test_mm256_mask_cvtepi64_epi8(__m128i __O, __mmask8 __M, __m256i __A) {
8636 // CHECK-LABEL: @test_mm256_mask_cvtepi64_epi8
8637 // CHECK: @llvm.x86.avx512.mask.pmov.qb.256
8638 return _mm256_mask_cvtepi64_epi8(__O, __M, __A);
8641 __m128i test_mm256_maskz_cvtepi64_epi8(__mmask8 __M, __m256i __A) {
8642 // CHECK-LABEL: @test_mm256_maskz_cvtepi64_epi8
8643 // CHECK: @llvm.x86.avx512.mask.pmov.qb.256
8644 return _mm256_maskz_cvtepi64_epi8(__M, __A);
8647 void test_mm256_mask_cvtepi64_storeu_epi8(void * __P, __mmask8 __M, __m256i __A) {
8648 // CHECK-LABEL: @test_mm256_mask_cvtepi64_storeu_epi8
8649 // CHECK: @llvm.x86.avx512.mask.pmov.qb.mem.256
8650 return _mm256_mask_cvtepi64_storeu_epi8(__P, __M, __A);
8653 __m128i test_mm_cvtepi64_epi32(__m128i __A) {
8654 // CHECK-LABEL: @test_mm_cvtepi64_epi32
8655 // CHECK: trunc <2 x i64> %{{.*}} to <2 x i32>
8656 // CHECK: shufflevector <2 x i32> %{{.*}}, <2 x i32> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
8657 return _mm_cvtepi64_epi32(__A);
8660 __m128i test_mm_mask_cvtepi64_epi32(__m128i __O, __mmask8 __M, __m128i __A) {
8661 // CHECK-LABEL: @test_mm_mask_cvtepi64_epi32
8662 // CHECK: @llvm.x86.avx512.mask.pmov.qd.128
8663 return _mm_mask_cvtepi64_epi32(__O, __M, __A);
8666 __m128i test_mm_maskz_cvtepi64_epi32(__mmask8 __M, __m128i __A) {
8667 // CHECK-LABEL: @test_mm_maskz_cvtepi64_epi32
8668 // CHECK: @llvm.x86.avx512.mask.pmov.qd.128
8669 return _mm_maskz_cvtepi64_epi32(__M, __A);
8672 void test_mm_mask_cvtepi64_storeu_epi32(void * __P, __mmask8 __M, __m128i __A) {
8673 // CHECK-LABEL: @test_mm_mask_cvtepi64_storeu_epi32
8674 // CHECK: @llvm.x86.avx512.mask.pmov.qd.mem.128
8675 return _mm_mask_cvtepi64_storeu_epi32(__P, __M, __A);
8678 __m128i test_mm256_cvtepi64_epi32(__m256i __A) {
8679 // CHECK-LABEL: @test_mm256_cvtepi64_epi32
8680 // CHECK: trunc <4 x i64> %{{.*}} to <4 x i32>
8681 return _mm256_cvtepi64_epi32(__A);
8684 __m128i test_mm256_mask_cvtepi64_epi32(__m128i __O, __mmask8 __M, __m256i __A) {
8685 // CHECK-LABEL: @test_mm256_mask_cvtepi64_epi32
8686 // CHECK: trunc <4 x i64> %{{.*}} to <4 x i32>
8687 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
8688 return _mm256_mask_cvtepi64_epi32(__O, __M, __A);
8691 __m128i test_mm256_maskz_cvtepi64_epi32(__mmask8 __M, __m256i __A) {
8692 // CHECK-LABEL: @test_mm256_maskz_cvtepi64_epi32
8693 // CHECK: trunc <4 x i64> %{{.*}} to <4 x i32>
8694 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
8695 return _mm256_maskz_cvtepi64_epi32(__M, __A);
8698 void test_mm256_mask_cvtepi64_storeu_epi32(void * __P, __mmask8 __M, __m256i __A) {
8699 // CHECK-LABEL: @test_mm256_mask_cvtepi64_storeu_epi32
8700 // CHECK: @llvm.x86.avx512.mask.pmov.qd.mem.256
8701 return _mm256_mask_cvtepi64_storeu_epi32(__P, __M, __A);
8704 __m128i test_mm_cvtepi64_epi16(__m128i __A) {
8705 // CHECK-LABEL: @test_mm_cvtepi64_epi16
8706 // CHECK: trunc <2 x i64> %{{.*}} to <2 x i16>
8707 // CHECK: shufflevector <2 x i16> %{{.*}}, <2 x i16> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 3, i32 3, i32 3, i32 3>
8708 return _mm_cvtepi64_epi16(__A);
8711 __m128i test_mm_mask_cvtepi64_epi16(__m128i __O, __mmask8 __M, __m128i __A) {
8712 // CHECK-LABEL: @test_mm_mask_cvtepi64_epi16
8713 // CHECK: @llvm.x86.avx512.mask.pmov.qw.128
8714 return _mm_mask_cvtepi64_epi16(__O, __M, __A);
8717 __m128i test_mm_maskz_cvtepi64_epi16(__mmask8 __M, __m128i __A) {
8718 // CHECK-LABEL: @test_mm_maskz_cvtepi64_epi16
8719 // CHECK: @llvm.x86.avx512.mask.pmov.qw.128
8720 return _mm_maskz_cvtepi64_epi16(__M, __A);
8723 void test_mm_mask_cvtepi64_storeu_epi16(void * __P, __mmask8 __M, __m128i __A) {
8724 // CHECK-LABEL: @test_mm_mask_cvtepi64_storeu_epi16
8725 // CHECK: @llvm.x86.avx512.mask.pmov.qw.mem.128
8726 return _mm_mask_cvtepi64_storeu_epi16(__P, __M, __A);
8729 __m128i test_mm256_cvtepi64_epi16(__m256i __A) {
8730 // CHECK-LABEL: @test_mm256_cvtepi64_epi16
8731 // CHECK: trunc <4 x i64> %{{.*}} to <4 x i16>
8732 // CHECK: shufflevector <4 x i16> %{{.*}}, <4 x i16> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
8733 return _mm256_cvtepi64_epi16(__A);
8736 __m128i test_mm256_mask_cvtepi64_epi16(__m128i __O, __mmask8 __M, __m256i __A) {
8737 // CHECK-LABEL: @test_mm256_mask_cvtepi64_epi16
8738 // CHECK: @llvm.x86.avx512.mask.pmov.qw.256
8739 return _mm256_mask_cvtepi64_epi16(__O, __M, __A);
8742 __m128i test_mm256_maskz_cvtepi64_epi16(__mmask8 __M, __m256i __A) {
8743 // CHECK-LABEL: @test_mm256_maskz_cvtepi64_epi16
8744 // CHECK: @llvm.x86.avx512.mask.pmov.qw.256
8745 return _mm256_maskz_cvtepi64_epi16(__M, __A);
8748 void test_mm256_mask_cvtepi64_storeu_epi16(void * __P, __mmask8 __M, __m256i __A) {
8749 // CHECK-LABEL: @test_mm256_mask_cvtepi64_storeu_epi16
8750 // CHECK: @llvm.x86.avx512.mask.pmov.qw.mem.256
8751 return _mm256_mask_cvtepi64_storeu_epi16(__P, __M, __A);
8754 __m128 test_mm256_extractf32x4_ps(__m256 __A) {
8755 // CHECK-LABEL: @test_mm256_extractf32x4_ps
8756 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
8757 return _mm256_extractf32x4_ps(__A, 1);
8760 __m128 test_mm256_mask_extractf32x4_ps(__m128 __W, __mmask8 __U, __m256 __A) {
8761 // CHECK-LABEL: @test_mm256_mask_extractf32x4_ps
8762 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
8763 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
8764 return _mm256_mask_extractf32x4_ps(__W, __U, __A, 1);
8767 __m128 test_mm256_maskz_extractf32x4_ps(__mmask8 __U, __m256 __A) {
8768 // CHECK-LABEL: @test_mm256_maskz_extractf32x4_ps
8769 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
8770 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
8771 return _mm256_maskz_extractf32x4_ps(__U, __A, 1);
8774 __m128i test_mm256_extracti32x4_epi32(__m256i __A) {
8775 // CHECK-LABEL: @test_mm256_extracti32x4_epi32
8776 // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
8777 return _mm256_extracti32x4_epi32(__A, 1);
8780 __m128i test_mm256_mask_extracti32x4_epi32(__m128i __W, __mmask8 __U, __m256i __A) {
8781 // CHECK-LABEL: @test_mm256_mask_extracti32x4_epi32
8782 // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
8783 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
8784 return _mm256_mask_extracti32x4_epi32(__W, __U, __A, 1);
8787 __m128i test_mm256_maskz_extracti32x4_epi32(__mmask8 __U, __m256i __A) {
8788 // CHECK-LABEL: @test_mm256_maskz_extracti32x4_epi32
8789 // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
8790 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
8791 return _mm256_maskz_extracti32x4_epi32(__U, __A, 1);
8794 __m256 test_mm256_insertf32x4(__m256 __A, __m128 __B) {
8795 // CHECK-LABEL: @test_mm256_insertf32x4
8796 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
8797 return _mm256_insertf32x4(__A, __B, 1);
8800 __m256 test_mm256_mask_insertf32x4(__m256 __W, __mmask8 __U, __m256 __A, __m128 __B) {
8801 // CHECK-LABEL: @test_mm256_mask_insertf32x4
8802 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
8803 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
8804 return _mm256_mask_insertf32x4(__W, __U, __A, __B, 1);
8807 __m256 test_mm256_maskz_insertf32x4(__mmask8 __U, __m256 __A, __m128 __B) {
8808 // CHECK-LABEL: @test_mm256_maskz_insertf32x4
8809 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
8810 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
8811 return _mm256_maskz_insertf32x4(__U, __A, __B, 1);
8814 __m256i test_mm256_inserti32x4(__m256i __A, __m128i __B) {
8815 // CHECK-LABEL: @test_mm256_inserti32x4
8816 // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
8817 return _mm256_inserti32x4(__A, __B, 1);
8820 __m256i test_mm256_mask_inserti32x4(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {
8821 // CHECK-LABEL: @test_mm256_mask_inserti32x4
8822 // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
8823 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
8824 return _mm256_mask_inserti32x4(__W, __U, __A, __B, 1);
8827 __m256i test_mm256_maskz_inserti32x4(__mmask8 __U, __m256i __A, __m128i __B) {
8828 // CHECK-LABEL: @test_mm256_maskz_inserti32x4
8829 // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
8830 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
8831 return _mm256_maskz_inserti32x4(__U, __A, __B, 1);
8834 __m128d test_mm_getmant_pd(__m128d __A) {
8835 // CHECK-LABEL: @test_mm_getmant_pd
8836 // CHECK: @llvm.x86.avx512.mask.getmant.pd.128
8837 return _mm_getmant_pd(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
8840 __m128d test_mm_mask_getmant_pd(__m128d __W, __mmask8 __U, __m128d __A) {
8841 // CHECK-LABEL: @test_mm_mask_getmant_pd
8842 // CHECK: @llvm.x86.avx512.mask.getmant.pd.128
8843 return _mm_mask_getmant_pd(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
8846 __m128d test_mm_maskz_getmant_pd(__mmask8 __U, __m128d __A) {
8847 // CHECK-LABEL: @test_mm_maskz_getmant_pd
8848 // CHECK: @llvm.x86.avx512.mask.getmant.pd.128
8849 return _mm_maskz_getmant_pd(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
8852 __m256d test_mm256_getmant_pd(__m256d __A) {
8853 // CHECK-LABEL: @test_mm256_getmant_pd
8854 // CHECK: @llvm.x86.avx512.mask.getmant.pd.256
8855 return _mm256_getmant_pd(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
8858 __m256d test_mm256_mask_getmant_pd(__m256d __W, __mmask8 __U, __m256d __A) {
8859 // CHECK-LABEL: @test_mm256_mask_getmant_pd
8860 // CHECK: @llvm.x86.avx512.mask.getmant.pd.256
8861 return _mm256_mask_getmant_pd(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
8864 __m256d test_mm256_maskz_getmant_pd(__mmask8 __U, __m256d __A) {
8865 // CHECK-LABEL: @test_mm256_maskz_getmant_pd
8866 // CHECK: @llvm.x86.avx512.mask.getmant.pd.256
8867 return _mm256_maskz_getmant_pd(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
8870 __m128 test_mm_getmant_ps(__m128 __A) {
8871 // CHECK-LABEL: @test_mm_getmant_ps
8872 // CHECK: @llvm.x86.avx512.mask.getmant.ps.128
8873 return _mm_getmant_ps(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
8876 __m128 test_mm_mask_getmant_ps(__m128 __W, __mmask8 __U, __m128 __A) {
8877 // CHECK-LABEL: @test_mm_mask_getmant_ps
8878 // CHECK: @llvm.x86.avx512.mask.getmant.ps.128
8879 return _mm_mask_getmant_ps(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
8882 __m128 test_mm_maskz_getmant_ps(__mmask8 __U, __m128 __A) {
8883 // CHECK-LABEL: @test_mm_maskz_getmant_ps
8884 // CHECK: @llvm.x86.avx512.mask.getmant.ps.128
8885 return _mm_maskz_getmant_ps(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
8888 __m256 test_mm256_getmant_ps(__m256 __A) {
8889 // CHECK-LABEL: @test_mm256_getmant_ps
8890 // CHECK: @llvm.x86.avx512.mask.getmant.ps.256
8891 return _mm256_getmant_ps(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
8894 __m256 test_mm256_mask_getmant_ps(__m256 __W, __mmask8 __U, __m256 __A) {
8895 // CHECK-LABEL: @test_mm256_mask_getmant_ps
8896 // CHECK: @llvm.x86.avx512.mask.getmant.ps.256
8897 return _mm256_mask_getmant_ps(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
8900 __m256 test_mm256_maskz_getmant_ps(__mmask8 __U, __m256 __A) {
8901 // CHECK-LABEL: @test_mm256_maskz_getmant_ps
8902 // CHECK: @llvm.x86.avx512.mask.getmant.ps.256
8903 return _mm256_maskz_getmant_ps(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
8906 __m128d test_mm_mmask_i64gather_pd(__m128d __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
8907 // CHECK-LABEL: @test_mm_mmask_i64gather_pd
8908 // CHECK: @llvm.x86.avx512.gather3div2.df
8909 return _mm_mmask_i64gather_pd(__v1_old, __mask, __index, __addr, 2);
8912 __m128i test_mm_mmask_i64gather_epi64(__m128i __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
8913 // CHECK-LABEL: @test_mm_mmask_i64gather_epi64
8914 // CHECK: @llvm.x86.avx512.gather3div2.di
8915 return _mm_mmask_i64gather_epi64(__v1_old, __mask, __index, __addr, 2);
8918 __m256d test_mm256_mmask_i64gather_pd(__m256d __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
8919 // CHECK-LABEL: @test_mm256_mmask_i64gather_pd
8920 // CHECK: @llvm.x86.avx512.gather3div4.df
8921 return _mm256_mmask_i64gather_pd(__v1_old, __mask, __index, __addr, 2);
8924 __m256i test_mm256_mmask_i64gather_epi64(__m256i __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
8925 // CHECK-LABEL: @test_mm256_mmask_i64gather_epi64
8926 // CHECK: @llvm.x86.avx512.gather3div4.di
8927 return _mm256_mmask_i64gather_epi64(__v1_old, __mask, __index, __addr, 2);
8930 __m128 test_mm_mmask_i64gather_ps(__m128 __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
8931 // CHECK-LABEL: @test_mm_mmask_i64gather_ps
8932 // CHECK: @llvm.x86.avx512.gather3div4.sf
8933 return _mm_mmask_i64gather_ps(__v1_old, __mask, __index, __addr, 2);
8936 __m128i test_mm_mmask_i64gather_epi32(__m128i __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
8937 // CHECK-LABEL: @test_mm_mmask_i64gather_epi32
8938 // CHECK: @llvm.x86.avx512.gather3div4.si
8939 return _mm_mmask_i64gather_epi32(__v1_old, __mask, __index, __addr, 2);
8942 __m128 test_mm256_mmask_i64gather_ps(__m128 __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
8943 // CHECK-LABEL: @test_mm256_mmask_i64gather_ps
8944 // CHECK: @llvm.x86.avx512.gather3div8.sf
8945 return _mm256_mmask_i64gather_ps(__v1_old, __mask, __index, __addr, 2);
8948 __m128i test_mm256_mmask_i64gather_epi32(__m128i __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
8949 // CHECK-LABEL: @test_mm256_mmask_i64gather_epi32
8950 // CHECK: @llvm.x86.avx512.gather3div8.si
8951 return _mm256_mmask_i64gather_epi32(__v1_old, __mask, __index, __addr, 2);
8954 __m128d test_mm_mask_i32gather_pd(__m128d __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
8955 // CHECK-LABEL: @test_mm_mask_i32gather_pd
8956 // CHECK: @llvm.x86.avx512.gather3siv2.df
8957 return _mm_mmask_i32gather_pd(__v1_old, __mask, __index, __addr, 2);
8960 __m128i test_mm_mask_i32gather_epi64(__m128i __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
8961 // CHECK-LABEL: @test_mm_mask_i32gather_epi64
8962 // CHECK: @llvm.x86.avx512.gather3siv2.di
8963 return _mm_mmask_i32gather_epi64(__v1_old, __mask, __index, __addr, 2);
8966 __m256d test_mm256_mask_i32gather_pd(__m256d __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
8967 // CHECK-LABEL: @test_mm256_mask_i32gather_pd
8968 // CHECK: @llvm.x86.avx512.gather3siv4.df
8969 return _mm256_mmask_i32gather_pd(__v1_old, __mask, __index, __addr, 2);
8972 __m256i test_mm256_mask_i32gather_epi64(__m256i __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
8973 // CHECK-LABEL: @test_mm256_mask_i32gather_epi64
8974 // CHECK: @llvm.x86.avx512.gather3siv4.di
8975 return _mm256_mmask_i32gather_epi64(__v1_old, __mask, __index, __addr, 2);
8978 __m128 test_mm_mask_i32gather_ps(__m128 __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
8979 // CHECK-LABEL: @test_mm_mask_i32gather_ps
8980 // CHECK: @llvm.x86.avx512.gather3siv4.sf
8981 return _mm_mmask_i32gather_ps(__v1_old, __mask, __index, __addr, 2);
8984 __m128i test_mm_mask_i32gather_epi32(__m128i __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
8985 // CHECK-LABEL: @test_mm_mask_i32gather_epi32
8986 // CHECK: @llvm.x86.avx512.gather3siv4.si
8987 return _mm_mmask_i32gather_epi32(__v1_old, __mask, __index, __addr, 2);
8990 __m256 test_mm256_mask_i32gather_ps(__m256 __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
8991 // CHECK-LABEL: @test_mm256_mask_i32gather_ps
8992 // CHECK: @llvm.x86.avx512.gather3siv8.sf
8993 return _mm256_mmask_i32gather_ps(__v1_old, __mask, __index, __addr, 2);
8996 __m256i test_mm256_mask_i32gather_epi32(__m256i __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
8997 // CHECK-LABEL: @test_mm256_mask_i32gather_epi32
8998 // CHECK: @llvm.x86.avx512.gather3siv8.si
8999 return _mm256_mmask_i32gather_epi32(__v1_old, __mask, __index, __addr, 2);
9002 __m256d test_mm256_permutex_pd(__m256d __X) {
9003 // CHECK-LABEL: @test_mm256_permutex_pd
9004 // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> undef, <4 x i32> <i32 3, i32 0, i32 0, i32 0>
9005 return _mm256_permutex_pd(__X, 3);
9008 __m256d test_mm256_mask_permutex_pd(__m256d __W, __mmask8 __U, __m256d __X) {
9009 // CHECK-LABEL: @test_mm256_mask_permutex_pd
9010 // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> undef, <4 x i32> <i32 1, i32 0, i32 0, i32 0>
9011 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
9012 return _mm256_mask_permutex_pd(__W, __U, __X, 1);
9015 __m256d test_mm256_maskz_permutex_pd(__mmask8 __U, __m256d __X) {
9016 // CHECK-LABEL: @test_mm256_maskz_permutex_pd
9017 // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> undef, <4 x i32> <i32 1, i32 0, i32 0, i32 0>
9018 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
9019 return _mm256_maskz_permutex_pd(__U, __X, 1);
9022 __m256i test_mm256_permutex_epi64(__m256i __X) {
9023 // CHECK-LABEL: @test_mm256_permutex_epi64
9024 // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> undef, <4 x i32> <i32 3, i32 0, i32 0, i32 0>
9025 return _mm256_permutex_epi64(__X, 3);
9028 __m256i test_mm256_mask_permutex_epi64(__m256i __W, __mmask8 __M, __m256i __X) {
9029 // CHECK-LABEL: @test_mm256_mask_permutex_epi64
9030 // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> undef, <4 x i32> <i32 3, i32 0, i32 0, i32 0>
9031 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
9032 return _mm256_mask_permutex_epi64(__W, __M, __X, 3);
9035 __m256i test_mm256_maskz_permutex_epi64(__mmask8 __M, __m256i __X) {
9036 // CHECK-LABEL: @test_mm256_maskz_permutex_epi64
9037 // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> undef, <4 x i32> <i32 3, i32 0, i32 0, i32 0>
9038 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
9039 return _mm256_maskz_permutex_epi64(__M, __X, 3);
9042 __m256d test_mm256_permutexvar_pd(__m256i __X, __m256d __Y) {
9043 // CHECK-LABEL: @test_mm256_permutexvar_pd
9044 // CHECK: @llvm.x86.avx512.permvar.df.256
9045 return _mm256_permutexvar_pd(__X, __Y);
9048 __m256d test_mm256_mask_permutexvar_pd(__m256d __W, __mmask8 __U, __m256i __X, __m256d __Y) {
9049 // CHECK-LABEL: @test_mm256_mask_permutexvar_pd
9050 // CHECK: @llvm.x86.avx512.permvar.df.256
9051 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
9052 return _mm256_mask_permutexvar_pd(__W, __U, __X, __Y);
9055 __m256d test_mm256_maskz_permutexvar_pd(__mmask8 __U, __m256i __X, __m256d __Y) {
9056 // CHECK-LABEL: @test_mm256_maskz_permutexvar_pd
9057 // CHECK: @llvm.x86.avx512.permvar.df.256
9058 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
9059 return _mm256_maskz_permutexvar_pd(__U, __X, __Y);
9062 __m256i test_mm256_maskz_permutexvar_epi64(__mmask8 __M, __m256i __X, __m256i __Y) {
9063 // CHECK-LABEL: @test_mm256_maskz_permutexvar_epi64
9064 // CHECK: @llvm.x86.avx512.permvar.di.256
9065 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
9066 return _mm256_maskz_permutexvar_epi64(__M, __X, __Y);
9069 __m256i test_mm256_mask_permutexvar_epi64(__m256i __W, __mmask8 __M, __m256i __X, __m256i __Y) {
9070 // CHECK-LABEL: @test_mm256_mask_permutexvar_epi64
9071 // CHECK: @llvm.x86.avx512.permvar.di.256
9072 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
9073 return _mm256_mask_permutexvar_epi64(__W, __M, __X, __Y);
9076 __m256 test_mm256_mask_permutexvar_ps(__m256 __W, __mmask8 __U, __m256i __X, __m256 __Y) {
9077 // CHECK-LABEL: @test_mm256_mask_permutexvar_ps
9078 // CHECK: @llvm.x86.avx2.permps
9079 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
9080 return _mm256_mask_permutexvar_ps(__W, __U, __X, __Y);
9083 __m256 test_mm256_maskz_permutexvar_ps(__mmask8 __U, __m256i __X, __m256 __Y) {
9084 // CHECK-LABEL: @test_mm256_maskz_permutexvar_ps
9085 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
9086 return _mm256_maskz_permutexvar_ps(__U, __X, __Y);
9089 __m256 test_mm256_permutexvar_ps(__m256i __X, __m256 __Y) {
9090 // CHECK-LABEL: @test_mm256_permutexvar_ps
9091 // CHECK: @llvm.x86.avx2.permps
9092 return _mm256_permutexvar_ps( __X, __Y);
9095 __m256i test_mm256_maskz_permutexvar_epi32(__mmask8 __M, __m256i __X, __m256i __Y) {
9096 // CHECK-LABEL: @test_mm256_maskz_permutexvar_epi32
9097 // CHECK: @llvm.x86.avx2.permd
9098 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
9099 return _mm256_maskz_permutexvar_epi32(__M, __X, __Y);
9102 __m256i test_mm256_permutexvar_epi32(__m256i __X, __m256i __Y) {
9103 // CHECK-LABEL: @test_mm256_permutexvar_epi32
9104 // CHECK: @llvm.x86.avx2.permd
9105 return _mm256_permutexvar_epi32(__X, __Y);
9108 __m256i test_mm256_mask_permutexvar_epi32(__m256i __W, __mmask8 __M, __m256i __X, __m256i __Y) {
9109 // CHECK-LABEL: @test_mm256_mask_permutexvar_epi32
9110 // CHECK: @llvm.x86.avx2.permd
9111 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
9112 return _mm256_mask_permutexvar_epi32(__W, __M, __X, __Y);
9115 __m128i test_mm_alignr_epi32(__m128i __A, __m128i __B) {
9116 // CHECK-LABEL: @test_mm_alignr_epi32
9117 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 1, i32 2, i32 3, i32 4>
9118 return _mm_alignr_epi32(__A, __B, 1);
9121 __m128i test_mm_mask_alignr_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
9122 // CHECK-LABEL: @test_mm_mask_alignr_epi32
9123 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 1, i32 2, i32 3, i32 4>
9124 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
9125 return _mm_mask_alignr_epi32(__W, __U, __A, __B, 1);
9128 __m128i test_mm_maskz_alignr_epi32(__mmask8 __U, __m128i __A, __m128i __B) {
9129 // CHECK-LABEL: @test_mm_maskz_alignr_epi32
9130 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 1, i32 2, i32 3, i32 4>
9131 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
9132 return _mm_maskz_alignr_epi32(__U, __A, __B, 1);
9135 __m256i test_mm256_alignr_epi32(__m256i __A, __m256i __B) {
9136 // CHECK-LABEL: @test_mm256_alignr_epi32
9137 // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8>
9138 return _mm256_alignr_epi32(__A, __B, 1);
9141 __m256i test_mm256_mask_alignr_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
9142 // CHECK-LABEL: @test_mm256_mask_alignr_epi32
9143 // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8>
9144 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
9145 return _mm256_mask_alignr_epi32(__W, __U, __A, __B, 1);
9148 __m256i test_mm256_maskz_alignr_epi32(__mmask8 __U, __m256i __A, __m256i __B) {
9149 // CHECK-LABEL: @test_mm256_maskz_alignr_epi32
9150 // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8>
9151 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
9152 return _mm256_maskz_alignr_epi32(__U, __A, __B, 1);
9155 __m128i test_mm_alignr_epi64(__m128i __A, __m128i __B) {
9156 // CHECK-LABEL: @test_mm_alignr_epi64
9157 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 1, i32 2>
9158 return _mm_alignr_epi64(__A, __B, 1);
9161 __m128i test_mm_mask_alignr_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
9162 // CHECK-LABEL: @test_mm_mask_alignr_epi64
9163 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 1, i32 2>
9164 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
9165 return _mm_mask_alignr_epi64(__W, __U, __A, __B, 1);
9168 __m128i test_mm_maskz_alignr_epi64(__mmask8 __U, __m128i __A, __m128i __B) {
9169 // CHECK-LABEL: @test_mm_maskz_alignr_epi64
9170 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 1, i32 2>
9171 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
9172 return _mm_maskz_alignr_epi64(__U, __A, __B, 1);
9175 __m256i test_mm256_alignr_epi64(__m256i __A, __m256i __B) {
9176 // CHECK-LABEL: @test_mm256_alignr_epi64
9177 // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 1, i32 2, i32 3, i32 4>
9178 return _mm256_alignr_epi64(__A, __B, 1);
9181 __m256i test_mm256_mask_alignr_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
9182 // CHECK-LABEL: @test_mm256_mask_alignr_epi64
9183 // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 1, i32 2, i32 3, i32 4>
9184 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
9185 return _mm256_mask_alignr_epi64(__W, __U, __A, __B, 1);
9188 __m256i test_mm256_maskz_alignr_epi64(__mmask8 __U, __m256i __A, __m256i __B) {
9189 // CHECK-LABEL: @test_mm256_maskz_alignr_epi64
9190 // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 1, i32 2, i32 3, i32 4>
9191 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
9192 return _mm256_maskz_alignr_epi64(__U, __A, __B, 1);
9195 __m128 test_mm_mask_movehdup_ps(__m128 __W, __mmask8 __U, __m128 __A) {
9196 // CHECK-LABEL: @test_mm_mask_movehdup_ps
9197 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 1, i32 1, i32 3, i32 3>
9198 // CHECK: select <4 x i1> %{{.*}} <4 x float> %{{.*}}, <4 x float> %{{.*}}
9199 return _mm_mask_movehdup_ps(__W, __U, __A);
9202 __m128 test_mm_maskz_movehdup_ps(__mmask8 __U, __m128 __A) {
9203 // CHECK-LABEL: @test_mm_maskz_movehdup_ps
9204 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 1, i32 1, i32 3, i32 3>
9205 // CHECK: select <4 x i1> %{{.*}} <4 x float> %{{.*}}, <4 x float> %{{.*}}
9206 return _mm_maskz_movehdup_ps(__U, __A);
9209 __m256 test_mm256_mask_movehdup_ps(__m256 __W, __mmask8 __U, __m256 __A) {
9210 // CHECK-LABEL: @test_mm256_mask_movehdup_ps
9211 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7>
9212 // CHECK: select <8 x i1> %{{.*}} <8 x float> %{{.*}}, <8 x float> %{{.*}}
9213 return _mm256_mask_movehdup_ps(__W, __U, __A);
9216 __m256 test_mm256_maskz_movehdup_ps(__mmask8 __U, __m256 __A) {
9217 // CHECK-LABEL: @test_mm256_maskz_movehdup_ps
9218 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7>
9219 // CHECK: select <8 x i1> %{{.*}} <8 x float> %{{.*}}, <8 x float> %{{.*}}
9220 return _mm256_maskz_movehdup_ps(__U, __A);
9223 __m128 test_mm_mask_moveldup_ps(__m128 __W, __mmask8 __U, __m128 __A) {
9224 // CHECK-LABEL: @test_mm_mask_moveldup_ps
9225 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 0, i32 0, i32 2, i32 2>
9226 // CHECK: select <4 x i1> %{{.*}} <4 x float> %{{.*}}, <4 x float> %{{.*}}
9227 return _mm_mask_moveldup_ps(__W, __U, __A);
9230 __m128 test_mm_maskz_moveldup_ps(__mmask8 __U, __m128 __A) {
9231 // CHECK-LABEL: @test_mm_maskz_moveldup_ps
9232 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 0, i32 0, i32 2, i32 2>
9233 // CHECK: select <4 x i1> %{{.*}} <4 x float> %{{.*}}, <4 x float> %{{.*}}
9234 return _mm_maskz_moveldup_ps(__U, __A);
9237 __m256 test_mm256_mask_moveldup_ps(__m256 __W, __mmask8 __U, __m256 __A) {
9238 // CHECK-LABEL: @test_mm256_mask_moveldup_ps
9239 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
9240 // CHECK: select <8 x i1> %{{.*}} <8 x float> %{{.*}}, <8 x float> %{{.*}}
9241 return _mm256_mask_moveldup_ps(__W, __U, __A);
9244 __m256 test_mm256_maskz_moveldup_ps(__mmask8 __U, __m256 __A) {
9245 // CHECK-LABEL: @test_mm256_maskz_moveldup_ps
9246 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
9247 // CHECK: select <8 x i1> %{{.*}} <8 x float> %{{.*}}, <8 x float> %{{.*}}
9248 return _mm256_maskz_moveldup_ps(__U, __A);
9251 __m128i test_mm_mask_shuffle_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
9252 // CHECK-LABEL: @test_mm_mask_shuffle_epi32
9253 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> <i32 1, i32 0, i32 0, i32 0>
9254 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
9255 return _mm_mask_shuffle_epi32(__W, __U, __A, 1);
9258 __m128i test_mm_maskz_shuffle_epi32(__mmask8 __U, __m128i __A) {
9259 // CHECK-LABEL: @test_mm_maskz_shuffle_epi32
9260 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> <i32 2, i32 0, i32 0, i32 0>
9261 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
9262 return _mm_maskz_shuffle_epi32(__U, __A, 2);
9265 __m256i test_mm256_mask_shuffle_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
9266 // CHECK-LABEL: @test_mm256_mask_shuffle_epi32
9267 // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> undef, <8 x i32> <i32 2, i32 0, i32 0, i32 0, i32 6, i32 4, i32 4, i32 4>
9268 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
9269 return _mm256_mask_shuffle_epi32(__W, __U, __A, 2);
9272 __m256i test_mm256_maskz_shuffle_epi32(__mmask8 __U, __m256i __A) {
9273 // CHECK-LABEL: @test_mm256_maskz_shuffle_epi32
9274 // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> undef, <8 x i32> <i32 2, i32 0, i32 0, i32 0, i32 6, i32 4, i32 4, i32 4>
9275 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
9276 return _mm256_maskz_shuffle_epi32(__U, __A, 2);
9279 __m128d test_mm_mask_mov_pd(__m128d __W, __mmask8 __U, __m128d __A) {
9280 // CHECK-LABEL: @test_mm_mask_mov_pd
9281 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
9282 return _mm_mask_mov_pd(__W, __U, __A);
9285 __m128d test_mm_maskz_mov_pd(__mmask8 __U, __m128d __A) {
9286 // CHECK-LABEL: @test_mm_maskz_mov_pd
9287 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
9288 return _mm_maskz_mov_pd(__U, __A);
9291 __m256d test_mm256_mask_mov_pd(__m256d __W, __mmask8 __U, __m256d __A) {
9292 // CHECK-LABEL: @test_mm256_mask_mov_pd
9293 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
9294 return _mm256_mask_mov_pd(__W, __U, __A);
9297 __m256d test_mm256_maskz_mov_pd(__mmask8 __U, __m256d __A) {
9298 // CHECK-LABEL: @test_mm256_maskz_mov_pd
9299 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
9300 return _mm256_maskz_mov_pd(__U, __A);
9303 __m128 test_mm_mask_mov_ps(__m128 __W, __mmask8 __U, __m128 __A) {
9304 // CHECK-LABEL: @test_mm_mask_mov_ps
9305 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
9306 return _mm_mask_mov_ps(__W, __U, __A);
9309 __m128 test_mm_maskz_mov_ps(__mmask8 __U, __m128 __A) {
9310 // CHECK-LABEL: @test_mm_maskz_mov_ps
9311 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
9312 return _mm_maskz_mov_ps(__U, __A);
9315 __m256 test_mm256_mask_mov_ps(__m256 __W, __mmask8 __U, __m256 __A) {
9316 // CHECK-LABEL: @test_mm256_mask_mov_ps
9317 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
9318 return _mm256_mask_mov_ps(__W, __U, __A);
9321 __m256 test_mm256_maskz_mov_ps(__mmask8 __U, __m256 __A) {
9322 // CHECK-LABEL: @test_mm256_maskz_mov_ps
9323 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
9324 return _mm256_maskz_mov_ps(__U, __A);
9327 __m128 test_mm_mask_cvtph_ps(__m128 __W, __mmask8 __U, __m128i __A) {
9328 // CHECK-LABEL: @test_mm_mask_cvtph_ps
9329 // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.128
9330 return _mm_mask_cvtph_ps(__W, __U, __A);
9333 __m128 test_mm_maskz_cvtph_ps(__mmask8 __U, __m128i __A) {
9334 // CHECK-LABEL: @test_mm_maskz_cvtph_ps
9335 // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.128
9336 return _mm_maskz_cvtph_ps(__U, __A);
9339 __m256 test_mm256_mask_cvtph_ps(__m256 __W, __mmask8 __U, __m128i __A) {
9340 // CHECK-LABEL: @test_mm256_mask_cvtph_ps
9341 // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.256
9342 return _mm256_mask_cvtph_ps(__W, __U, __A);
9345 __m256 test_mm256_maskz_cvtph_ps(__mmask8 __U, __m128i __A) {
9346 // CHECK-LABEL: @test_mm256_maskz_cvtph_ps
9347 // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.256
9348 return _mm256_maskz_cvtph_ps(__U, __A);
9351 __m128i test_mm_mask_cvtps_ph(__m128i __W, __mmask8 __U, __m128 __A) {
9352 // CHECK-LABEL: @test_mm_mask_cvtps_ph
9353 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.128
9354 return _mm_mask_cvtps_ph(__W, __U, __A);
9357 __m128i test_mm_maskz_cvtps_ph(__mmask8 __U, __m128 __A) {
9358 // CHECK-LABEL: @test_mm_maskz_cvtps_ph
9359 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.128
9360 return _mm_maskz_cvtps_ph(__U, __A);
9363 __m128i test_mm256_mask_cvtps_ph(__m128i __W, __mmask8 __U, __m256 __A) {
9364 // CHECK-LABEL: @test_mm256_mask_cvtps_ph
9365 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.256
9366 return _mm256_mask_cvtps_ph(__W, __U, __A);
9369 __m128i test_mm256_maskz_cvtps_ph(__mmask8 __U, __m256 __A) {
9370 // CHECK-LABEL: @test_mm256_maskz_cvtps_ph
9371 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.256
9372 return _mm256_maskz_cvtps_ph(__U, __A);
9375 __m128i test_mm_mask_cvt_roundps_ph(__m128i __W, __mmask8 __U, __m128 __A) {
9376 // CHECK-LABEL: @test_mm_mask_cvt_roundps_ph
9377 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.128
9378 return _mm_mask_cvt_roundps_ph(__W, __U, __A, _MM_FROUND_CUR_DIRECTION);
9381 __m128i test_mm_maskz_cvt_roundps_ph(__mmask8 __U, __m128 __A) {
9382 // CHECK-LABEL: @test_mm_maskz_cvt_roundps_ph
9383 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.128
9384 return _mm_maskz_cvt_roundps_ph(__U, __A, _MM_FROUND_CUR_DIRECTION);
9387 __m128i test_mm256_mask_cvt_roundps_ph(__m128i __W, __mmask8 __U, __m256 __A) {
9388 // CHECK-LABEL: @test_mm256_mask_cvt_roundps_ph
9389 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.256
9390 return _mm256_mask_cvt_roundps_ph(__W, __U, __A, _MM_FROUND_CUR_DIRECTION);
9393 __m128i test_mm256_maskz_cvt_roundps_ph(__mmask8 __U, __m256 __A) {
9394 // CHECK-LABEL: @test_mm256_maskz_cvt_roundps_ph
9395 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.256
9396 return _mm256_maskz_cvt_roundps_ph(__U, __A, _MM_FROUND_CUR_DIRECTION);
9399 __mmask8 test_mm_cmpeq_epi32_mask(__m128i __a, __m128i __b) {
9400 // CHECK-LABEL: @test_mm_cmpeq_epi32_mask
9401 // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
9402 return (__mmask8)_mm_cmpeq_epi32_mask(__a, __b);
9405 __mmask8 test_mm_mask_cmpeq_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
9406 // CHECK-LABEL: @test_mm_mask_cmpeq_epi32_mask
9407 // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
9408 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
9409 return (__mmask8)_mm_mask_cmpeq_epi32_mask(__u, __a, __b);
9412 __mmask8 test_mm_mask_cmpeq_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
9413 // CHECK-LABEL: @test_mm_mask_cmpeq_epi64_mask
9414 // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
9415 // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
9416 return (__mmask8)_mm_mask_cmpeq_epi64_mask(__u, __a, __b);
9419 __mmask8 test_mm_cmpeq_epi64_mask(__m128i __a, __m128i __b) {
9420 // CHECK-LABEL: @test_mm_cmpeq_epi64_mask
9421 // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
9422 return (__mmask8)_mm_cmpeq_epi64_mask(__a, __b);
9425 __mmask8 test_mm_cmpgt_epi32_mask(__m128i __a, __m128i __b) {
9426 // CHECK-LABEL: @test_mm_cmpgt_epi32_mask
9427 // CHECK: icmp sgt <4 x i32> %{{.*}}, %{{.*}}
9428 return (__mmask8)_mm_cmpgt_epi32_mask(__a, __b);
9431 __mmask8 test_mm_mask_cmpgt_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
9432 // CHECK-LABEL: @test_mm_mask_cmpgt_epi32_mask
9433 // CHECK: icmp sgt <4 x i32> %{{.*}}, %{{.*}}
9434 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
9435 return (__mmask8)_mm_mask_cmpgt_epi32_mask(__u, __a, __b);
9438 __mmask8 test_mm_mask_cmpgt_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
9439 // CHECK-LABEL: @test_mm_mask_cmpgt_epi64_mask
9440 // CHECK: icmp sgt <2 x i64> %{{.*}}, %{{.*}}
9441 // CHECK: and <2 x i1> %{{.*}}, %{{.*}}
9442 return (__mmask8)_mm_mask_cmpgt_epi64_mask(__u, __a, __b);
9445 __mmask8 test_mm_cmpgt_epi64_mask(__m128i __a, __m128i __b) {
9446 // CHECK-LABEL: @test_mm_cmpgt_epi64_mask
9447 // CHECK: icmp sgt <2 x i64> %{{.*}}, %{{.*}}
9448 return (__mmask8)_mm_cmpgt_epi64_mask(__a, __b);
9451 __mmask8 test_mm256_cmpeq_epi32_mask(__m256i __a, __m256i __b) {
9452 // CHECK-LABEL: @test_mm256_cmpeq_epi32_mask
9453 // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}}
9454 return (__mmask8)_mm256_cmpeq_epi32_mask(__a, __b);
9457 __mmask8 test_mm256_mask_cmpeq_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
9458 // CHECK-LABEL: @test_mm256_mask_cmpeq_epi32_mask
9459 // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}}
9460 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
9461 return (__mmask8)_mm256_mask_cmpeq_epi32_mask(__u, __a, __b);
9464 __mmask8 test_mm256_mask_cmpeq_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
9465 // CHECK-LABEL: @test_mm256_mask_cmpeq_epi64_mask
9466 // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}}
9467 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
9468 return (__mmask8)_mm256_mask_cmpeq_epi64_mask(__u, __a, __b);
9471 __mmask8 test_mm256_cmpeq_epi64_mask(__m256i __a, __m256i __b) {
9472 // CHECK-LABEL: @test_mm256_cmpeq_epi64_mask
9473 // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}}
9474 return (__mmask8)_mm256_cmpeq_epi64_mask(__a, __b);
9477 __mmask8 test_mm256_cmpgt_epi32_mask(__m256i __a, __m256i __b) {
9478 // CHECK-LABEL: @test_mm256_cmpgt_epi32_mask
9479 // CHECK: icmp sgt <8 x i32> %{{.*}}, %{{.*}}
9480 return (__mmask8)_mm256_cmpgt_epi32_mask(__a, __b);
9483 __mmask8 test_mm256_mask_cmpgt_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
9484 // CHECK-LABEL: @test_mm256_mask_cmpgt_epi32_mask
9485 // CHECK: icmp sgt <8 x i32> %{{.*}}, %{{.*}}
9486 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
9487 return (__mmask8)_mm256_mask_cmpgt_epi32_mask(__u, __a, __b);
9490 __mmask8 test_mm256_mask_cmpgt_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
9491 // CHECK-LABEL: @test_mm256_mask_cmpgt_epi64_mask
9492 // CHECK: icmp sgt <4 x i64> %{{.*}}, %{{.*}}
9493 // CHECK: and <4 x i1> %{{.*}}, %{{.*}}
9494 return (__mmask8)_mm256_mask_cmpgt_epi64_mask(__u, __a, __b);
9497 __mmask8 test_mm256_cmpgt_epi64_mask(__m256i __a, __m256i __b) {
9498 // CHECK-LABEL: @test_mm256_cmpgt_epi64_mask
9499 // CHECK: icmp sgt <4 x i64> %{{.*}}, %{{.*}}
9500 return (__mmask8)_mm256_cmpgt_epi64_mask(__a, __b);