1 // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512dq -emit-llvm -o - -Wall -Werror | FileCheck %s
2
3
4 #include <immintrin.h>
5
test_knot_mask8(__mmask8 a)6 __mmask8 test_knot_mask8(__mmask8 a) {
7 // CHECK-LABEL: @test_knot_mask8
8 // CHECK: [[IN:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
9 // CHECK: [[NOT:%.*]] = xor <8 x i1> [[IN]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
10 // CHECK: bitcast <8 x i1> [[NOT]] to i8
11 return _knot_mask8(a);
12 }
13
test_kand_mask8(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)14 __mmask8 test_kand_mask8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
15 // CHECK-LABEL: @test_kand_mask8
16 // CHECK: [[LHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
17 // CHECK: [[RHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
18 // CHECK: [[RES:%.*]] = and <8 x i1> [[LHS]], [[RHS]]
19 // CHECK: bitcast <8 x i1> [[RES]] to i8
20 return _mm512_mask_cmpneq_epu64_mask(_kand_mask8(_mm512_cmpneq_epu64_mask(__A, __B),
21 _mm512_cmpneq_epu64_mask(__C, __D)),
22 __E, __F);
23 }
24
test_kandn_mask8(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)25 __mmask8 test_kandn_mask8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
26 // CHECK-LABEL: @test_kandn_mask8
27 // CHECK: [[LHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
28 // CHECK: [[RHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
29 // CHECK: [[NOT:%.*]] = xor <8 x i1> [[LHS]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
30 // CHECK: [[RES:%.*]] = and <8 x i1> [[NOT]], [[RHS]]
31 // CHECK: bitcast <8 x i1> [[RES]] to i8
32 return _mm512_mask_cmpneq_epu64_mask(_kandn_mask8(_mm512_cmpneq_epu64_mask(__A, __B),
33 _mm512_cmpneq_epu64_mask(__C, __D)),
34 __E, __F);
35 }
36
test_kor_mask8(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)37 __mmask8 test_kor_mask8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
38 // CHECK-LABEL: @test_kor_mask8
39 // CHECK: [[LHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
40 // CHECK: [[RHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
41 // CHECK: [[RES:%.*]] = or <8 x i1> [[LHS]], [[RHS]]
42 // CHECK: bitcast <8 x i1> [[RES]] to i8
43 return _mm512_mask_cmpneq_epu64_mask(_kor_mask8(_mm512_cmpneq_epu64_mask(__A, __B),
44 _mm512_cmpneq_epu64_mask(__C, __D)),
45 __E, __F);
46 }
47
test_kxnor_mask8(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)48 __mmask8 test_kxnor_mask8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
49 // CHECK-LABEL: @test_kxnor_mask8
50 // CHECK: [[LHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
51 // CHECK: [[RHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
52 // CHECK: [[NOT:%.*]] = xor <8 x i1> [[LHS]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
53 // CHECK: [[RES:%.*]] = xor <8 x i1> [[NOT]], [[RHS]]
54 // CHECK: bitcast <8 x i1> [[RES]] to i8
55 return _mm512_mask_cmpneq_epu64_mask(_kxnor_mask8(_mm512_cmpneq_epu64_mask(__A, __B),
56 _mm512_cmpneq_epu64_mask(__C, __D)),
57 __E, __F);
58 }
59
test_kxor_mask8(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)60 __mmask8 test_kxor_mask8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
61 // CHECK-LABEL: @test_kxor_mask8
62 // CHECK: [[LHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
63 // CHECK: [[RHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
64 // CHECK: [[RES:%.*]] = xor <8 x i1> [[LHS]], [[RHS]]
65 // CHECK: bitcast <8 x i1> [[RES]] to i8
66 return _mm512_mask_cmpneq_epu64_mask(_kxor_mask8(_mm512_cmpneq_epu64_mask(__A, __B),
67 _mm512_cmpneq_epu64_mask(__C, __D)),
68 __E, __F);
69 }
70
test_kortestz_mask8_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)71 unsigned char test_kortestz_mask8_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
72 // CHECK-LABEL: @test_kortestz_mask8_u8
73 // CHECK: [[LHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
74 // CHECK: [[RHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
75 // CHECK: [[OR:%.*]] = or <8 x i1> [[LHS]], [[RHS]]
76 // CHECK: [[CAST:%.*]] = bitcast <8 x i1> [[OR]] to i8
77 // CHECK: [[CMP:%.*]] = icmp eq i8 [[CAST]], 0
78 // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
79 // CHECK: trunc i32 [[ZEXT]] to i8
80 return _kortestz_mask8_u8(_mm512_cmpneq_epu64_mask(__A, __B),
81 _mm512_cmpneq_epu64_mask(__C, __D));
82 }
83
test_kortestc_mask8_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)84 unsigned char test_kortestc_mask8_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
85 // CHECK-LABEL: @test_kortestc_mask8_u8
86 // CHECK: [[LHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
87 // CHECK: [[RHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
88 // CHECK: [[OR:%.*]] = or <8 x i1> [[LHS]], [[RHS]]
89 // CHECK: [[CAST:%.*]] = bitcast <8 x i1> [[OR]] to i8
90 // CHECK: [[CMP:%.*]] = icmp eq i8 [[CAST]], -1
91 // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
92 // CHECK: trunc i32 [[ZEXT]] to i8
93 return _kortestc_mask8_u8(_mm512_cmpneq_epu64_mask(__A, __B),
94 _mm512_cmpneq_epu64_mask(__C, __D));
95 }
96
test_kortest_mask8_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D,unsigned char * CF)97 unsigned char test_kortest_mask8_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, unsigned char *CF) {
98 // CHECK-LABEL: @test_kortest_mask8_u8
99 // CHECK: [[LHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
100 // CHECK: [[RHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
101 // CHECK: [[OR:%.*]] = or <8 x i1> [[LHS]], [[RHS]]
102 // CHECK: [[CAST:%.*]] = bitcast <8 x i1> [[OR]] to i8
103 // CHECK: [[CMP:%.*]] = icmp eq i8 [[CAST]], -1
104 // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
105 // CHECK: trunc i32 [[ZEXT]] to i8
106 // CHECK: [[LHS2:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
107 // CHECK: [[RHS2:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
108 // CHECK: [[OR2:%.*]] = or <8 x i1> [[LHS2]], [[RHS2]]
109 // CHECK: [[CAST2:%.*]] = bitcast <8 x i1> [[OR2]] to i8
110 // CHECK: [[CMP2:%.*]] = icmp eq i8 [[CAST2]], 0
111 // CHECK: [[ZEXT2:%.*]] = zext i1 [[CMP2]] to i32
112 // CHECK: trunc i32 [[ZEXT2]] to i8
113 return _kortest_mask8_u8(_mm512_cmpneq_epu64_mask(__A, __B),
114 _mm512_cmpneq_epu64_mask(__C, __D), CF);
115 }
116
test_ktestz_mask8_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)117 unsigned char test_ktestz_mask8_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
118 // CHECK-LABEL: @test_ktestz_mask8_u8
119 // CHECK: [[LHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
120 // CHECK: [[RHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
121 // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestz.b(<8 x i1> [[LHS]], <8 x i1> [[RHS]])
122 // CHECK: trunc i32 [[RES]] to i8
123 return _ktestz_mask8_u8(_mm512_cmpneq_epu64_mask(__A, __B),
124 _mm512_cmpneq_epu64_mask(__C, __D));
125 }
126
test_ktestc_mask8_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)127 unsigned char test_ktestc_mask8_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
128 // CHECK-LABEL: @test_ktestc_mask8_u8
129 // CHECK: [[LHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
130 // CHECK: [[RHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
131 // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestc.b(<8 x i1> [[LHS]], <8 x i1> [[RHS]])
132 // CHECK: trunc i32 [[RES]] to i8
133 return _ktestc_mask8_u8(_mm512_cmpneq_epu64_mask(__A, __B),
134 _mm512_cmpneq_epu64_mask(__C, __D));
135 }
136
test_ktest_mask8_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D,unsigned char * CF)137 unsigned char test_ktest_mask8_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, unsigned char *CF) {
138 // CHECK-LABEL: @test_ktest_mask8_u8
139 // CHECK: [[LHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
140 // CHECK: [[RHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
141 // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestc.b(<8 x i1> [[LHS]], <8 x i1> [[RHS]])
142 // CHECK: trunc i32 [[RES]] to i8
143 // CHECK: [[LHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
144 // CHECK: [[RHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
145 // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestz.b(<8 x i1> [[LHS]], <8 x i1> [[RHS]])
146 // CHECK: trunc i32 [[RES]] to i8
147 return _ktest_mask8_u8(_mm512_cmpneq_epu64_mask(__A, __B),
148 _mm512_cmpneq_epu64_mask(__C, __D), CF);
149 }
150
test_ktestz_mask16_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)151 unsigned char test_ktestz_mask16_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
152 // CHECK-LABEL: @test_ktestz_mask16_u8
153 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
154 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
155 // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestz.w(<16 x i1> [[LHS]], <16 x i1> [[RHS]])
156 // CHECK: trunc i32 [[RES]] to i8
157 return _ktestz_mask16_u8(_mm512_cmpneq_epu32_mask(__A, __B),
158 _mm512_cmpneq_epu32_mask(__C, __D));
159 }
160
test_ktestc_mask16_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)161 unsigned char test_ktestc_mask16_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
162 // CHECK-LABEL: @test_ktestc_mask16_u8
163 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
164 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
165 // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestc.w(<16 x i1> [[LHS]], <16 x i1> [[RHS]])
166 // CHECK: trunc i32 [[RES]] to i8
167 return _ktestc_mask16_u8(_mm512_cmpneq_epu32_mask(__A, __B),
168 _mm512_cmpneq_epu32_mask(__C, __D));
169 }
170
test_ktest_mask16_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D,unsigned char * CF)171 unsigned char test_ktest_mask16_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, unsigned char *CF) {
172 // CHECK-LABEL: @test_ktest_mask16_u8
173 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
174 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
175 // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestc.w(<16 x i1> [[LHS]], <16 x i1> [[RHS]])
176 // CHECK: trunc i32 [[RES]] to i8
177 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
178 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
179 // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestz.w(<16 x i1> [[LHS]], <16 x i1> [[RHS]])
180 // CHECK: trunc i32 [[RES]] to i8
181 return _ktest_mask16_u8(_mm512_cmpneq_epu32_mask(__A, __B),
182 _mm512_cmpneq_epu32_mask(__C, __D), CF);
183 }
184
test_kadd_mask8(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)185 __mmask8 test_kadd_mask8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
186 // CHECK-LABEL: @test_kadd_mask8
187 // CHECK: [[LHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
188 // CHECK: [[RHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
189 // CHECK: [[RES:%.*]] = call <8 x i1> @llvm.x86.avx512.kadd.b(<8 x i1> [[LHS]], <8 x i1> [[RHS]])
190 // CHECK: bitcast <8 x i1> [[RES]] to i8
191 return _mm512_mask_cmpneq_epu64_mask(_kadd_mask8(_mm512_cmpneq_epu64_mask(__A, __B),
192 _mm512_cmpneq_epu64_mask(__C, __D)),
193 __E, __F);
194 }
195
test_kadd_mask16(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)196 __mmask16 test_kadd_mask16(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
197 // CHECK-LABEL: @test_kadd_mask16
198 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
199 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
200 // CHECK: [[RES:%.*]] = call <16 x i1> @llvm.x86.avx512.kadd.w(<16 x i1> [[LHS]], <16 x i1> [[RHS]])
201 // CHECK: bitcast <16 x i1> [[RES]] to i16
202 return _mm512_mask_cmpneq_epu32_mask(_kadd_mask16(_mm512_cmpneq_epu32_mask(__A, __B),
203 _mm512_cmpneq_epu32_mask(__C, __D)),
204 __E, __F);
205 }
206
test_kshiftli_mask8(__m512i A,__m512i B,__m512i C,__m512i D)207 __mmask8 test_kshiftli_mask8(__m512i A, __m512i B, __m512i C, __m512i D) {
208 // CHECK-LABEL: @test_kshiftli_mask8
209 // CHECK: [[VAL:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
210 // CHECK: [[RES:%.*]] = shufflevector <8 x i1> zeroinitializer, <8 x i1> [[VAL]], <8 x i32> <i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13>
211 // CHECK: bitcast <8 x i1> [[RES]] to i8
212 return _mm512_mask_cmpneq_epu64_mask(_kshiftli_mask8(_mm512_cmpneq_epu64_mask(A, B), 2), C, D);
213 }
214
test_kshiftri_mask8(__m512i A,__m512i B,__m512i C,__m512i D)215 __mmask8 test_kshiftri_mask8(__m512i A, __m512i B, __m512i C, __m512i D) {
216 // CHECK-LABEL: @test_kshiftri_mask8
217 // CHECK: [[VAL:%.*]] = bitcast i8 %{{.*}} to <8 x i1>
218 // CHECK: [[RES:%.*]] = shufflevector <8 x i1> [[VAL]], <8 x i1> zeroinitializer, <8 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9>
219 // CHECK: bitcast <8 x i1> [[RES]] to i8
220 return _mm512_mask_cmpneq_epu64_mask(_kshiftri_mask8(_mm512_cmpneq_epu64_mask(A, B), 2), C, D);
221 }
222
test_cvtmask8_u32(__m512i A,__m512i B)223 unsigned int test_cvtmask8_u32(__m512i A, __m512i B) {
224 // CHECK-LABEL: @test_cvtmask8_u32
225 // CHECK: bitcast <8 x i1> %{{.*}} to i8
226 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
227 // CHECK: zext i8 %{{.*}} to i32
228 return _cvtmask8_u32(_mm512_cmpneq_epu64_mask(A, B));
229 }
230
test_cvtu32_mask8(__m512i A,__m512i B,unsigned int C)231 __mmask8 test_cvtu32_mask8(__m512i A, __m512i B, unsigned int C) {
232 // CHECK-LABEL: @test_cvtu32_mask8
233 // CHECK: trunc i32 %{{.*}} to i8
234 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
235 return _mm512_mask_cmpneq_epu64_mask(_cvtu32_mask8(C), A, B);
236 }
237
test_load_mask8(__mmask8 * A,__m512i B,__m512i C)238 __mmask8 test_load_mask8(__mmask8 *A, __m512i B, __m512i C) {
239 // CHECK-LABEL: @test_load_mask8
240 // CHECK: [[LOAD:%.*]] = load i8, i8* %{{.*}}
241 // CHECK: bitcast i8 [[LOAD]] to <8 x i1>
242 return _mm512_mask_cmpneq_epu64_mask(_load_mask8(A), B, C);
243 }
244
test_store_mask8(__mmask8 * A,__m512i B,__m512i C)245 void test_store_mask8(__mmask8 *A, __m512i B, __m512i C) {
246 // CHECK-LABEL: @test_store_mask8
247 // CHECK: bitcast <8 x i1> %{{.*}} to i8
248 // CHECK: store i8 %{{.*}}, i8* %{{.*}}
249 _store_mask8(A, _mm512_cmpneq_epu64_mask(B, C));
250 }
251
test_mm512_mullo_epi64(__m512i __A,__m512i __B)252 __m512i test_mm512_mullo_epi64 (__m512i __A, __m512i __B) {
253 // CHECK-LABEL: @test_mm512_mullo_epi64
254 // CHECK: mul <8 x i64>
255 return (__m512i) _mm512_mullo_epi64(__A, __B);
256 }
257
test_mm512_mask_mullo_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m512i __B)258 __m512i test_mm512_mask_mullo_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
259 // CHECK-LABEL: @test_mm512_mask_mullo_epi64
260 // CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
261 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
262 return (__m512i) _mm512_mask_mullo_epi64(__W, __U, __A, __B);
263 }
264
test_mm512_maskz_mullo_epi64(__mmask8 __U,__m512i __A,__m512i __B)265 __m512i test_mm512_maskz_mullo_epi64 (__mmask8 __U, __m512i __A, __m512i __B) {
266 // CHECK-LABEL: @test_mm512_maskz_mullo_epi64
267 // CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
268 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
269 return (__m512i) _mm512_maskz_mullo_epi64(__U, __A, __B);
270 }
271
test_mm512_xor_pd(__m512d __A,__m512d __B)272 __m512d test_mm512_xor_pd (__m512d __A, __m512d __B) {
273 // CHECK-LABEL: @test_mm512_xor_pd
274 // CHECK: xor <8 x i64>
275 return (__m512d) _mm512_xor_pd(__A, __B);
276 }
277
test_mm512_mask_xor_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)278 __m512d test_mm512_mask_xor_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
279 // CHECK-LABEL: @test_mm512_mask_xor_pd
280 // CHECK: xor <8 x i64>
281 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
282 // CHECK: select <8 x i1> %[[MASK]], <8 x double> %{{.*}}, <8 x double> %{{.*}}
283 return (__m512d) _mm512_mask_xor_pd(__W, __U, __A, __B);
284 }
285
test_mm512_maskz_xor_pd(__mmask8 __U,__m512d __A,__m512d __B)286 __m512d test_mm512_maskz_xor_pd (__mmask8 __U, __m512d __A, __m512d __B) {
287 // CHECK-LABEL: @test_mm512_maskz_xor_pd
288 // CHECK: xor <8 x i64>
289 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
290 // CHECK: select <8 x i1> %[[MASK]], <8 x double> %{{.*}}, <8 x double> %{{.*}}
291 return (__m512d) _mm512_maskz_xor_pd(__U, __A, __B);
292 }
293
test_mm512_xor_ps(__m512 __A,__m512 __B)294 __m512 test_mm512_xor_ps (__m512 __A, __m512 __B) {
295 // CHECK-LABEL: @test_mm512_xor_ps
296 // CHECK: xor <16 x i32>
297 return (__m512) _mm512_xor_ps(__A, __B);
298 }
299
test_mm512_mask_xor_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)300 __m512 test_mm512_mask_xor_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
301 // CHECK-LABEL: @test_mm512_mask_xor_ps
302 // CHECK: xor <16 x i32>
303 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
304 // CHECK: select <16 x i1> %[[MASK]], <16 x float> %{{.*}}, <16 x float> %{{.*}}
305 return (__m512) _mm512_mask_xor_ps(__W, __U, __A, __B);
306 }
307
test_mm512_maskz_xor_ps(__mmask16 __U,__m512 __A,__m512 __B)308 __m512 test_mm512_maskz_xor_ps (__mmask16 __U, __m512 __A, __m512 __B) {
309 // CHECK-LABEL: @test_mm512_maskz_xor_ps
310 // CHECK: xor <16 x i32>
311 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
312 // CHECK: select <16 x i1> %[[MASK]], <16 x float> %{{.*}}, <16 x float> %{{.*}}
313 return (__m512) _mm512_maskz_xor_ps(__U, __A, __B);
314 }
315
test_mm512_or_pd(__m512d __A,__m512d __B)316 __m512d test_mm512_or_pd (__m512d __A, __m512d __B) {
317 // CHECK-LABEL: @test_mm512_or_pd
318 // CHECK: or <8 x i64>
319 return (__m512d) _mm512_or_pd(__A, __B);
320 }
321
test_mm512_mask_or_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)322 __m512d test_mm512_mask_or_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
323 // CHECK-LABEL: @test_mm512_mask_or_pd
324 // CHECK: or <8 x i64>
325 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
326 // CHECK: select <8 x i1> %[[MASK]], <8 x double> %{{.*}}, <8 x double> %{{.*}}
327 return (__m512d) _mm512_mask_or_pd(__W, __U, __A, __B);
328 }
329
test_mm512_maskz_or_pd(__mmask8 __U,__m512d __A,__m512d __B)330 __m512d test_mm512_maskz_or_pd (__mmask8 __U, __m512d __A, __m512d __B) {
331 // CHECK-LABEL: @test_mm512_maskz_or_pd
332 // CHECK: or <8 x i64>
333 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
334 // CHECK: select <8 x i1> %[[MASK]], <8 x double> %{{.*}}, <8 x double> %{{.*}}
335 return (__m512d) _mm512_maskz_or_pd(__U, __A, __B);
336 }
337
test_mm512_or_ps(__m512 __A,__m512 __B)338 __m512 test_mm512_or_ps (__m512 __A, __m512 __B) {
339 // CHECK-LABEL: @test_mm512_or_ps
340 // CHECK: or <16 x i32>
341 return (__m512) _mm512_or_ps(__A, __B);
342 }
343
test_mm512_mask_or_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)344 __m512 test_mm512_mask_or_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
345 // CHECK-LABEL: @test_mm512_mask_or_ps
346 // CHECK: or <16 x i32>
347 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
348 // CHECK: select <16 x i1> %[[MASK]], <16 x float> %{{.*}}, <16 x float> %{{.*}}
349 return (__m512) _mm512_mask_or_ps(__W, __U, __A, __B);
350 }
351
test_mm512_maskz_or_ps(__mmask16 __U,__m512 __A,__m512 __B)352 __m512 test_mm512_maskz_or_ps (__mmask16 __U, __m512 __A, __m512 __B) {
353 // CHECK-LABEL: @test_mm512_maskz_or_ps
354 // CHECK: or <16 x i32>
355 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
356 // CHECK: select <16 x i1> %[[MASK]], <16 x float> %{{.*}}, <16 x float> %{{.*}}
357 return (__m512) _mm512_maskz_or_ps(__U, __A, __B);
358 }
359
test_mm512_and_pd(__m512d __A,__m512d __B)360 __m512d test_mm512_and_pd (__m512d __A, __m512d __B) {
361 // CHECK-LABEL: @test_mm512_and_pd
362 // CHECK: and <8 x i64>
363 return (__m512d) _mm512_and_pd(__A, __B);
364 }
365
test_mm512_mask_and_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)366 __m512d test_mm512_mask_and_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
367 // CHECK-LABEL: @test_mm512_mask_and_pd
368 // CHECK: and <8 x i64>
369 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
370 // CHECK: select <8 x i1> %[[MASK]], <8 x double> %{{.*}}, <8 x double> %{{.*}}
371 return (__m512d) _mm512_mask_and_pd(__W, __U, __A, __B);
372 }
373
test_mm512_maskz_and_pd(__mmask8 __U,__m512d __A,__m512d __B)374 __m512d test_mm512_maskz_and_pd (__mmask8 __U, __m512d __A, __m512d __B) {
375 // CHECK-LABEL: @test_mm512_maskz_and_pd
376 // CHECK: and <8 x i64>
377 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
378 // CHECK: select <8 x i1> %[[MASK]], <8 x double> %{{.*}}, <8 x double> %{{.*}}
379 return (__m512d) _mm512_maskz_and_pd(__U, __A, __B);
380 }
381
test_mm512_and_ps(__m512 __A,__m512 __B)382 __m512 test_mm512_and_ps (__m512 __A, __m512 __B) {
383 // CHECK-LABEL: @test_mm512_and_ps
384 // CHECK: and <16 x i32>
385 return (__m512) _mm512_and_ps(__A, __B);
386 }
387
test_mm512_mask_and_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)388 __m512 test_mm512_mask_and_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
389 // CHECK-LABEL: @test_mm512_mask_and_ps
390 // CHECK: and <16 x i32>
391 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
392 // CHECK: select <16 x i1> %[[MASK]], <16 x float> %{{.*}}, <16 x float> %{{.*}}
393 return (__m512) _mm512_mask_and_ps(__W, __U, __A, __B);
394 }
395
test_mm512_maskz_and_ps(__mmask16 __U,__m512 __A,__m512 __B)396 __m512 test_mm512_maskz_and_ps (__mmask16 __U, __m512 __A, __m512 __B) {
397 // CHECK-LABEL: @test_mm512_maskz_and_ps
398 // CHECK: and <16 x i32>
399 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
400 // CHECK: select <16 x i1> %[[MASK]], <16 x float> %{{.*}}, <16 x float> %{{.*}}
401 return (__m512) _mm512_maskz_and_ps(__U, __A, __B);
402 }
403
test_mm512_andnot_pd(__m512d __A,__m512d __B)404 __m512d test_mm512_andnot_pd (__m512d __A, __m512d __B) {
405 // CHECK-LABEL: @test_mm512_andnot_pd
406 // CHECK: xor <8 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
407 // CHECK: and <8 x i64>
408 return (__m512d) _mm512_andnot_pd(__A, __B);
409 }
410
test_mm512_mask_andnot_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)411 __m512d test_mm512_mask_andnot_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
412 // CHECK-LABEL: @test_mm512_mask_andnot_pd
413 // CHECK: xor <8 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
414 // CHECK: and <8 x i64> %{{.*}}, %{{.*}}
415 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
416 return (__m512d) _mm512_mask_andnot_pd(__W, __U, __A, __B);
417 }
418
test_mm512_maskz_andnot_pd(__mmask8 __U,__m512d __A,__m512d __B)419 __m512d test_mm512_maskz_andnot_pd (__mmask8 __U, __m512d __A, __m512d __B) {
420 // CHECK-LABEL: @test_mm512_maskz_andnot_pd
421 // CHECK: xor <8 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
422 // CHECK: and <8 x i64> %{{.*}}, %{{.*}}
423 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
424 return (__m512d) _mm512_maskz_andnot_pd(__U, __A, __B);
425 }
426
test_mm512_andnot_ps(__m512 __A,__m512 __B)427 __m512 test_mm512_andnot_ps (__m512 __A, __m512 __B) {
428 // CHECK-LABEL: @test_mm512_andnot_ps
429 // CHECK: xor <16 x i32> %{{.*}}, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
430 // CHECK: and <16 x i32>
431 return (__m512) _mm512_andnot_ps(__A, __B);
432 }
433
test_mm512_mask_andnot_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)434 __m512 test_mm512_mask_andnot_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
435 // CHECK-LABEL: @test_mm512_mask_andnot_ps
436 // CHECK: xor <16 x i32> %{{.*}}, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
437 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
438 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
439 return (__m512) _mm512_mask_andnot_ps(__W, __U, __A, __B);
440 }
441
test_mm512_maskz_andnot_ps(__mmask16 __U,__m512 __A,__m512 __B)442 __m512 test_mm512_maskz_andnot_ps (__mmask16 __U, __m512 __A, __m512 __B) {
443 // CHECK-LABEL: @test_mm512_maskz_andnot_ps
444 // CHECK: xor <16 x i32> %{{.*}}, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
445 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
446 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
447 return (__m512) _mm512_maskz_andnot_ps(__U, __A, __B);
448 }
449
test_mm512_cvtpd_epi64(__m512d __A)450 __m512i test_mm512_cvtpd_epi64(__m512d __A) {
451 // CHECK-LABEL: @test_mm512_cvtpd_epi64
452 // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.512
453 return _mm512_cvtpd_epi64(__A);
454 }
455
test_mm512_mask_cvtpd_epi64(__m512i __W,__mmask8 __U,__m512d __A)456 __m512i test_mm512_mask_cvtpd_epi64(__m512i __W, __mmask8 __U, __m512d __A) {
457 // CHECK-LABEL: @test_mm512_mask_cvtpd_epi64
458 // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.512
459 return _mm512_mask_cvtpd_epi64(__W, __U, __A);
460 }
461
test_mm512_maskz_cvtpd_epi64(__mmask8 __U,__m512d __A)462 __m512i test_mm512_maskz_cvtpd_epi64(__mmask8 __U, __m512d __A) {
463 // CHECK-LABEL: @test_mm512_maskz_cvtpd_epi64
464 // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.512
465 return _mm512_maskz_cvtpd_epi64(__U, __A);
466 }
467
test_mm512_cvt_roundpd_epi64(__m512d __A)468 __m512i test_mm512_cvt_roundpd_epi64(__m512d __A) {
469 // CHECK-LABEL: @test_mm512_cvt_roundpd_epi64
470 // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.512
471 return _mm512_cvt_roundpd_epi64(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
472 }
473
test_mm512_mask_cvt_roundpd_epi64(__m512i __W,__mmask8 __U,__m512d __A)474 __m512i test_mm512_mask_cvt_roundpd_epi64(__m512i __W, __mmask8 __U, __m512d __A) {
475 // CHECK-LABEL: @test_mm512_mask_cvt_roundpd_epi64
476 // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.512
477 return _mm512_mask_cvt_roundpd_epi64(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
478 }
479
test_mm512_maskz_cvt_roundpd_epi64(__mmask8 __U,__m512d __A)480 __m512i test_mm512_maskz_cvt_roundpd_epi64(__mmask8 __U, __m512d __A) {
481 // CHECK-LABEL: @test_mm512_maskz_cvt_roundpd_epi64
482 // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.512
483 return _mm512_maskz_cvt_roundpd_epi64(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
484 }
485
test_mm512_cvtpd_epu64(__m512d __A)486 __m512i test_mm512_cvtpd_epu64(__m512d __A) {
487 // CHECK-LABEL: @test_mm512_cvtpd_epu64
488 // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.512
489 return _mm512_cvtpd_epu64(__A);
490 }
491
test_mm512_mask_cvtpd_epu64(__m512i __W,__mmask8 __U,__m512d __A)492 __m512i test_mm512_mask_cvtpd_epu64(__m512i __W, __mmask8 __U, __m512d __A) {
493 // CHECK-LABEL: @test_mm512_mask_cvtpd_epu64
494 // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.512
495 return _mm512_mask_cvtpd_epu64(__W, __U, __A);
496 }
497
test_mm512_maskz_cvtpd_epu64(__mmask8 __U,__m512d __A)498 __m512i test_mm512_maskz_cvtpd_epu64(__mmask8 __U, __m512d __A) {
499 // CHECK-LABEL: @test_mm512_maskz_cvtpd_epu64
500 // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.512
501 return _mm512_maskz_cvtpd_epu64(__U, __A);
502 }
503
test_mm512_cvt_roundpd_epu64(__m512d __A)504 __m512i test_mm512_cvt_roundpd_epu64(__m512d __A) {
505 // CHECK-LABEL: @test_mm512_cvt_roundpd_epu64
506 // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.512
507 return _mm512_cvt_roundpd_epu64(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
508 }
509
test_mm512_mask_cvt_roundpd_epu64(__m512i __W,__mmask8 __U,__m512d __A)510 __m512i test_mm512_mask_cvt_roundpd_epu64(__m512i __W, __mmask8 __U, __m512d __A) {
511 // CHECK-LABEL: @test_mm512_mask_cvt_roundpd_epu64
512 // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.512
513 return _mm512_mask_cvt_roundpd_epu64(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
514 }
515
test_mm512_maskz_cvt_roundpd_epu64(__mmask8 __U,__m512d __A)516 __m512i test_mm512_maskz_cvt_roundpd_epu64(__mmask8 __U, __m512d __A) {
517 // CHECK-LABEL: @test_mm512_maskz_cvt_roundpd_epu64
518 // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.512
519 return _mm512_maskz_cvt_roundpd_epu64(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
520 }
521
test_mm512_cvtps_epi64(__m256 __A)522 __m512i test_mm512_cvtps_epi64(__m256 __A) {
523 // CHECK-LABEL: @test_mm512_cvtps_epi64
524 // CHECK: @llvm.x86.avx512.mask.cvtps2qq.512
525 return _mm512_cvtps_epi64(__A);
526 }
527
test_mm512_mask_cvtps_epi64(__m512i __W,__mmask8 __U,__m256 __A)528 __m512i test_mm512_mask_cvtps_epi64(__m512i __W, __mmask8 __U, __m256 __A) {
529 // CHECK-LABEL: @test_mm512_mask_cvtps_epi64
530 // CHECK: @llvm.x86.avx512.mask.cvtps2qq.512
531 return _mm512_mask_cvtps_epi64(__W, __U, __A);
532 }
533
test_mm512_maskz_cvtps_epi64(__mmask8 __U,__m256 __A)534 __m512i test_mm512_maskz_cvtps_epi64(__mmask8 __U, __m256 __A) {
535 // CHECK-LABEL: @test_mm512_maskz_cvtps_epi64
536 // CHECK: @llvm.x86.avx512.mask.cvtps2qq.512
537 return _mm512_maskz_cvtps_epi64(__U, __A);
538 }
539
test_mm512_cvt_roundps_epi64(__m256 __A)540 __m512i test_mm512_cvt_roundps_epi64(__m256 __A) {
541 // CHECK-LABEL: @test_mm512_cvt_roundps_epi64
542 // CHECK: @llvm.x86.avx512.mask.cvtps2qq.512
543 return _mm512_cvt_roundps_epi64(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
544 }
545
test_mm512_mask_cvt_roundps_epi64(__m512i __W,__mmask8 __U,__m256 __A)546 __m512i test_mm512_mask_cvt_roundps_epi64(__m512i __W, __mmask8 __U, __m256 __A) {
547 // CHECK-LABEL: @test_mm512_mask_cvt_roundps_epi64
548 // CHECK: @llvm.x86.avx512.mask.cvtps2qq.512
549 return _mm512_mask_cvt_roundps_epi64(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
550 }
551
test_mm512_maskz_cvt_roundps_epi64(__mmask8 __U,__m256 __A)552 __m512i test_mm512_maskz_cvt_roundps_epi64(__mmask8 __U, __m256 __A) {
553 // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_epi64
554 // CHECK: @llvm.x86.avx512.mask.cvtps2qq.512
555 return _mm512_maskz_cvt_roundps_epi64(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
556 }
557
test_mm512_cvtps_epu64(__m256 __A)558 __m512i test_mm512_cvtps_epu64(__m256 __A) {
559 // CHECK-LABEL: @test_mm512_cvtps_epu64
560 // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.512
561 return _mm512_cvtps_epu64(__A);
562 }
563
test_mm512_mask_cvtps_epu64(__m512i __W,__mmask8 __U,__m256 __A)564 __m512i test_mm512_mask_cvtps_epu64(__m512i __W, __mmask8 __U, __m256 __A) {
565 // CHECK-LABEL: @test_mm512_mask_cvtps_epu64
566 // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.512
567 return _mm512_mask_cvtps_epu64(__W, __U, __A);
568 }
569
test_mm512_maskz_cvtps_epu64(__mmask8 __U,__m256 __A)570 __m512i test_mm512_maskz_cvtps_epu64(__mmask8 __U, __m256 __A) {
571 // CHECK-LABEL: @test_mm512_maskz_cvtps_epu64
572 // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.512
573 return _mm512_maskz_cvtps_epu64(__U, __A);
574 }
575
test_mm512_cvt_roundps_epu64(__m256 __A)576 __m512i test_mm512_cvt_roundps_epu64(__m256 __A) {
577 // CHECK-LABEL: @test_mm512_cvt_roundps_epu64
578 // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.512
579 return _mm512_cvt_roundps_epu64(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
580 }
581
test_mm512_mask_cvt_roundps_epu64(__m512i __W,__mmask8 __U,__m256 __A)582 __m512i test_mm512_mask_cvt_roundps_epu64(__m512i __W, __mmask8 __U, __m256 __A) {
583 // CHECK-LABEL: @test_mm512_mask_cvt_roundps_epu64
584 // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.512
585 return _mm512_mask_cvt_roundps_epu64(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
586 }
587
test_mm512_maskz_cvt_roundps_epu64(__mmask8 __U,__m256 __A)588 __m512i test_mm512_maskz_cvt_roundps_epu64(__mmask8 __U, __m256 __A) {
589 // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_epu64
590 // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.512
591 return _mm512_maskz_cvt_roundps_epu64(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
592 }
593
test_mm512_cvtepi64_pd(__m512i __A)594 __m512d test_mm512_cvtepi64_pd(__m512i __A) {
595 // CHECK-LABEL: @test_mm512_cvtepi64_pd
596 // CHECK: sitofp <8 x i64> %{{.*}} to <8 x double>
597 return _mm512_cvtepi64_pd(__A);
598 }
599
test_mm512_mask_cvtepi64_pd(__m512d __W,__mmask8 __U,__m512i __A)600 __m512d test_mm512_mask_cvtepi64_pd(__m512d __W, __mmask8 __U, __m512i __A) {
601 // CHECK-LABEL: @test_mm512_mask_cvtepi64_pd
602 // CHECK: sitofp <8 x i64> %{{.*}} to <8 x double>
603 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
604 return _mm512_mask_cvtepi64_pd(__W, __U, __A);
605 }
606
test_mm512_maskz_cvtepi64_pd(__mmask8 __U,__m512i __A)607 __m512d test_mm512_maskz_cvtepi64_pd(__mmask8 __U, __m512i __A) {
608 // CHECK-LABEL: @test_mm512_maskz_cvtepi64_pd
609 // CHECK: sitofp <8 x i64> %{{.*}} to <8 x double>
610 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
611 return _mm512_maskz_cvtepi64_pd(__U, __A);
612 }
613
test_mm512_cvt_roundepi64_pd(__m512i __A)614 __m512d test_mm512_cvt_roundepi64_pd(__m512i __A) {
615 // CHECK-LABEL: @test_mm512_cvt_roundepi64_pd
616 // CHECK: @llvm.x86.avx512.sitofp.round.v8f64.v8i64
617 return _mm512_cvt_roundepi64_pd(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
618 }
619
test_mm512_mask_cvt_roundepi64_pd(__m512d __W,__mmask8 __U,__m512i __A)620 __m512d test_mm512_mask_cvt_roundepi64_pd(__m512d __W, __mmask8 __U, __m512i __A) {
621 // CHECK-LABEL: @test_mm512_mask_cvt_roundepi64_pd
622 // CHECK: @llvm.x86.avx512.sitofp.round.v8f64.v8i64
623 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
624 return _mm512_mask_cvt_roundepi64_pd(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
625 }
626
test_mm512_maskz_cvt_roundepi64_pd(__mmask8 __U,__m512i __A)627 __m512d test_mm512_maskz_cvt_roundepi64_pd(__mmask8 __U, __m512i __A) {
628 // CHECK-LABEL: @test_mm512_maskz_cvt_roundepi64_pd
629 // CHECK: @llvm.x86.avx512.sitofp.round.v8f64.v8i64
630 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
631 return _mm512_maskz_cvt_roundepi64_pd(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
632 }
633
test_mm512_cvtepi64_ps(__m512i __A)634 __m256 test_mm512_cvtepi64_ps(__m512i __A) {
635 // CHECK-LABEL: @test_mm512_cvtepi64_ps
636 // CHECK: sitofp <8 x i64> %{{.*}} to <8 x float>
637 return _mm512_cvtepi64_ps(__A);
638 }
639
test_mm512_mask_cvtepi64_ps(__m256 __W,__mmask8 __U,__m512i __A)640 __m256 test_mm512_mask_cvtepi64_ps(__m256 __W, __mmask8 __U, __m512i __A) {
641 // CHECK-LABEL: @test_mm512_mask_cvtepi64_ps
642 // CHECK: sitofp <8 x i64> %{{.*}} to <8 x float>
643 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
644 return _mm512_mask_cvtepi64_ps(__W, __U, __A);
645 }
646
test_mm512_maskz_cvtepi64_ps(__mmask8 __U,__m512i __A)647 __m256 test_mm512_maskz_cvtepi64_ps(__mmask8 __U, __m512i __A) {
648 // CHECK-LABEL: @test_mm512_maskz_cvtepi64_ps
649 // CHECK: sitofp <8 x i64> %{{.*}} to <8 x float>
650 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
651 return _mm512_maskz_cvtepi64_ps(__U, __A);
652 }
653
test_mm512_cvt_roundepi64_ps(__m512i __A)654 __m256 test_mm512_cvt_roundepi64_ps(__m512i __A) {
655 // CHECK-LABEL: @test_mm512_cvt_roundepi64_ps
656 // CHECK: @llvm.x86.avx512.sitofp.round.v8f32.v8i64
657 return _mm512_cvt_roundepi64_ps(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
658 }
659
test_mm512_mask_cvt_roundepi64_ps(__m256 __W,__mmask8 __U,__m512i __A)660 __m256 test_mm512_mask_cvt_roundepi64_ps(__m256 __W, __mmask8 __U, __m512i __A) {
661 // CHECK-LABEL: @test_mm512_mask_cvt_roundepi64_ps
662 // CHECK: @llvm.x86.avx512.sitofp.round.v8f32.v8i64
663 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
664 return _mm512_mask_cvt_roundepi64_ps(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
665 }
666
test_mm512_maskz_cvt_roundepi64_ps(__mmask8 __U,__m512i __A)667 __m256 test_mm512_maskz_cvt_roundepi64_ps(__mmask8 __U, __m512i __A) {
668 // CHECK-LABEL: @test_mm512_maskz_cvt_roundepi64_ps
669 // CHECK: @llvm.x86.avx512.sitofp.round.v8f32.v8i64
670 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
671 return _mm512_maskz_cvt_roundepi64_ps(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
672 }
673
test_mm512_cvttpd_epi64(__m512d __A)674 __m512i test_mm512_cvttpd_epi64(__m512d __A) {
675 // CHECK-LABEL: @test_mm512_cvttpd_epi64
676 // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512
677 return _mm512_cvttpd_epi64(__A);
678 }
679
test_mm512_mask_cvttpd_epi64(__m512i __W,__mmask8 __U,__m512d __A)680 __m512i test_mm512_mask_cvttpd_epi64(__m512i __W, __mmask8 __U, __m512d __A) {
681 // CHECK-LABEL: @test_mm512_mask_cvttpd_epi64
682 // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512
683 return _mm512_mask_cvttpd_epi64(__W, __U, __A);
684 }
685
test_mm512_maskz_cvttpd_epi64(__mmask8 __U,__m512d __A)686 __m512i test_mm512_maskz_cvttpd_epi64(__mmask8 __U, __m512d __A) {
687 // CHECK-LABEL: @test_mm512_maskz_cvttpd_epi64
688 // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512
689 return _mm512_maskz_cvttpd_epi64(__U, __A);
690 }
691
test_mm512_cvtt_roundpd_epi64(__m512d __A)692 __m512i test_mm512_cvtt_roundpd_epi64(__m512d __A) {
693 // CHECK-LABEL: @test_mm512_cvtt_roundpd_epi64
694 // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512
695 return _mm512_cvtt_roundpd_epi64(__A, _MM_FROUND_NO_EXC);
696 }
697
test_mm512_mask_cvtt_roundpd_epi64(__m512i __W,__mmask8 __U,__m512d __A)698 __m512i test_mm512_mask_cvtt_roundpd_epi64(__m512i __W, __mmask8 __U, __m512d __A) {
699 // CHECK-LABEL: @test_mm512_mask_cvtt_roundpd_epi64
700 // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512
701 return _mm512_mask_cvtt_roundpd_epi64(__W, __U, __A, _MM_FROUND_NO_EXC);
702 }
703
test_mm512_maskz_cvtt_roundpd_epi64(__mmask8 __U,__m512d __A)704 __m512i test_mm512_maskz_cvtt_roundpd_epi64(__mmask8 __U, __m512d __A) {
705 // CHECK-LABEL: @test_mm512_maskz_cvtt_roundpd_epi64
706 // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512
707 return _mm512_maskz_cvtt_roundpd_epi64(__U, __A, _MM_FROUND_NO_EXC);
708 }
709
test_mm512_cvttpd_epu64(__m512d __A)710 __m512i test_mm512_cvttpd_epu64(__m512d __A) {
711 // CHECK-LABEL: @test_mm512_cvttpd_epu64
712 // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512
713 return _mm512_cvttpd_epu64(__A);
714 }
715
test_mm512_mask_cvttpd_epu64(__m512i __W,__mmask8 __U,__m512d __A)716 __m512i test_mm512_mask_cvttpd_epu64(__m512i __W, __mmask8 __U, __m512d __A) {
717 // CHECK-LABEL: @test_mm512_mask_cvttpd_epu64
718 // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512
719 return _mm512_mask_cvttpd_epu64(__W, __U, __A);
720 }
721
test_mm512_maskz_cvttpd_epu64(__mmask8 __U,__m512d __A)722 __m512i test_mm512_maskz_cvttpd_epu64(__mmask8 __U, __m512d __A) {
723 // CHECK-LABEL: @test_mm512_maskz_cvttpd_epu64
724 // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512
725 return _mm512_maskz_cvttpd_epu64(__U, __A);
726 }
727
test_mm512_cvtt_roundpd_epu64(__m512d __A)728 __m512i test_mm512_cvtt_roundpd_epu64(__m512d __A) {
729 // CHECK-LABEL: @test_mm512_cvtt_roundpd_epu64
730 // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512
731 return _mm512_cvtt_roundpd_epu64(__A, _MM_FROUND_NO_EXC);
732 }
733
test_mm512_mask_cvtt_roundpd_epu64(__m512i __W,__mmask8 __U,__m512d __A)734 __m512i test_mm512_mask_cvtt_roundpd_epu64(__m512i __W, __mmask8 __U, __m512d __A) {
735 // CHECK-LABEL: @test_mm512_mask_cvtt_roundpd_epu64
736 // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512
737 return _mm512_mask_cvtt_roundpd_epu64(__W, __U, __A, _MM_FROUND_NO_EXC);
738 }
739
test_mm512_maskz_cvtt_roundpd_epu64(__mmask8 __U,__m512d __A)740 __m512i test_mm512_maskz_cvtt_roundpd_epu64(__mmask8 __U, __m512d __A) {
741 // CHECK-LABEL: @test_mm512_maskz_cvtt_roundpd_epu64
742 // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512
743 return _mm512_maskz_cvtt_roundpd_epu64(__U, __A, _MM_FROUND_NO_EXC);
744 }
745
test_mm512_cvttps_epi64(__m256 __A)746 __m512i test_mm512_cvttps_epi64(__m256 __A) {
747 // CHECK-LABEL: @test_mm512_cvttps_epi64
748 // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512
749 return _mm512_cvttps_epi64(__A);
750 }
751
test_mm512_mask_cvttps_epi64(__m512i __W,__mmask8 __U,__m256 __A)752 __m512i test_mm512_mask_cvttps_epi64(__m512i __W, __mmask8 __U, __m256 __A) {
753 // CHECK-LABEL: @test_mm512_mask_cvttps_epi64
754 // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512
755 return _mm512_mask_cvttps_epi64(__W, __U, __A);
756 }
757
test_mm512_maskz_cvttps_epi64(__mmask8 __U,__m256 __A)758 __m512i test_mm512_maskz_cvttps_epi64(__mmask8 __U, __m256 __A) {
759 // CHECK-LABEL: @test_mm512_maskz_cvttps_epi64
760 // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512
761 return _mm512_maskz_cvttps_epi64(__U, __A);
762 }
763
test_mm512_cvtt_roundps_epi64(__m256 __A)764 __m512i test_mm512_cvtt_roundps_epi64(__m256 __A) {
765 // CHECK-LABEL: @test_mm512_cvtt_roundps_epi64
766 // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512
767 return _mm512_cvtt_roundps_epi64(__A, _MM_FROUND_NO_EXC);
768 }
769
test_mm512_mask_cvtt_roundps_epi64(__m512i __W,__mmask8 __U,__m256 __A)770 __m512i test_mm512_mask_cvtt_roundps_epi64(__m512i __W, __mmask8 __U, __m256 __A) {
771 // CHECK-LABEL: @test_mm512_mask_cvtt_roundps_epi64
772 // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512
773 return _mm512_mask_cvtt_roundps_epi64(__W, __U, __A, _MM_FROUND_NO_EXC);
774 }
775
test_mm512_maskz_cvtt_roundps_epi64(__mmask8 __U,__m256 __A)776 __m512i test_mm512_maskz_cvtt_roundps_epi64(__mmask8 __U, __m256 __A) {
777 // CHECK-LABEL: @test_mm512_maskz_cvtt_roundps_epi64
778 // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512
779 return _mm512_maskz_cvtt_roundps_epi64(__U, __A, _MM_FROUND_NO_EXC);
780 }
781
test_mm512_cvttps_epu64(__m256 __A)782 __m512i test_mm512_cvttps_epu64(__m256 __A) {
783 // CHECK-LABEL: @test_mm512_cvttps_epu64
784 // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512
785 return _mm512_cvttps_epu64(__A);
786 }
787
test_mm512_mask_cvttps_epu64(__m512i __W,__mmask8 __U,__m256 __A)788 __m512i test_mm512_mask_cvttps_epu64(__m512i __W, __mmask8 __U, __m256 __A) {
789 // CHECK-LABEL: @test_mm512_mask_cvttps_epu64
790 // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512
791 return _mm512_mask_cvttps_epu64(__W, __U, __A);
792 }
793
test_mm512_maskz_cvttps_epu64(__mmask8 __U,__m256 __A)794 __m512i test_mm512_maskz_cvttps_epu64(__mmask8 __U, __m256 __A) {
795 // CHECK-LABEL: @test_mm512_maskz_cvttps_epu64
796 // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512
797 return _mm512_maskz_cvttps_epu64(__U, __A);
798 }
799
test_mm512_cvtt_roundps_epu64(__m256 __A)800 __m512i test_mm512_cvtt_roundps_epu64(__m256 __A) {
801 // CHECK-LABEL: @test_mm512_cvtt_roundps_epu64
802 // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512
803 return _mm512_cvtt_roundps_epu64(__A, _MM_FROUND_NO_EXC);
804 }
805
test_mm512_mask_cvtt_roundps_epu64(__m512i __W,__mmask8 __U,__m256 __A)806 __m512i test_mm512_mask_cvtt_roundps_epu64(__m512i __W, __mmask8 __U, __m256 __A) {
807 // CHECK-LABEL: @test_mm512_mask_cvtt_roundps_epu64
808 // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512
809 return _mm512_mask_cvtt_roundps_epu64(__W, __U, __A, _MM_FROUND_NO_EXC);
810 }
811
test_mm512_maskz_cvtt_roundps_epu64(__mmask8 __U,__m256 __A)812 __m512i test_mm512_maskz_cvtt_roundps_epu64(__mmask8 __U, __m256 __A) {
813 // CHECK-LABEL: @test_mm512_maskz_cvtt_roundps_epu64
814 // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512
815 return _mm512_maskz_cvtt_roundps_epu64(__U, __A, _MM_FROUND_NO_EXC);
816 }
817
test_mm512_cvtepu64_pd(__m512i __A)818 __m512d test_mm512_cvtepu64_pd(__m512i __A) {
819 // CHECK-LABEL: @test_mm512_cvtepu64_pd
820 // CHECK: uitofp <8 x i64> %{{.*}} to <8 x double>
821 return _mm512_cvtepu64_pd(__A);
822 }
823
test_mm512_mask_cvtepu64_pd(__m512d __W,__mmask8 __U,__m512i __A)824 __m512d test_mm512_mask_cvtepu64_pd(__m512d __W, __mmask8 __U, __m512i __A) {
825 // CHECK-LABEL: @test_mm512_mask_cvtepu64_pd
826 // CHECK: uitofp <8 x i64> %{{.*}} to <8 x double>
827 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
828 return _mm512_mask_cvtepu64_pd(__W, __U, __A);
829 }
830
test_mm512_maskz_cvtepu64_pd(__mmask8 __U,__m512i __A)831 __m512d test_mm512_maskz_cvtepu64_pd(__mmask8 __U, __m512i __A) {
832 // CHECK-LABEL: @test_mm512_maskz_cvtepu64_pd
833 // CHECK: uitofp <8 x i64> %{{.*}} to <8 x double>
834 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
835 return _mm512_maskz_cvtepu64_pd(__U, __A);
836 }
837
test_mm512_cvt_roundepu64_pd(__m512i __A)838 __m512d test_mm512_cvt_roundepu64_pd(__m512i __A) {
839 // CHECK-LABEL: @test_mm512_cvt_roundepu64_pd
840 // CHECK: @llvm.x86.avx512.uitofp.round.v8f64.v8i64
841 return _mm512_cvt_roundepu64_pd(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
842 }
843
test_mm512_mask_cvt_roundepu64_pd(__m512d __W,__mmask8 __U,__m512i __A)844 __m512d test_mm512_mask_cvt_roundepu64_pd(__m512d __W, __mmask8 __U, __m512i __A) {
845 // CHECK-LABEL: @test_mm512_mask_cvt_roundepu64_pd
846 // CHECK: @llvm.x86.avx512.uitofp.round.v8f64.v8i64
847 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
848 return _mm512_mask_cvt_roundepu64_pd(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
849 }
850
test_mm512_maskz_cvt_roundepu64_pd(__mmask8 __U,__m512i __A)851 __m512d test_mm512_maskz_cvt_roundepu64_pd(__mmask8 __U, __m512i __A) {
852 // CHECK-LABEL: @test_mm512_maskz_cvt_roundepu64_pd
853 // CHECK: @llvm.x86.avx512.uitofp.round.v8f64.v8i64
854 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
855 return _mm512_maskz_cvt_roundepu64_pd(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
856 }
857
test_mm512_cvtepu64_ps(__m512i __A)858 __m256 test_mm512_cvtepu64_ps(__m512i __A) {
859 // CHECK-LABEL: @test_mm512_cvtepu64_ps
860 // CHECK: uitofp <8 x i64> %{{.*}} to <8 x float>
861 return _mm512_cvtepu64_ps(__A);
862 }
863
test_mm512_mask_cvtepu64_ps(__m256 __W,__mmask8 __U,__m512i __A)864 __m256 test_mm512_mask_cvtepu64_ps(__m256 __W, __mmask8 __U, __m512i __A) {
865 // CHECK-LABEL: @test_mm512_mask_cvtepu64_ps
866 // CHECK: uitofp <8 x i64> %{{.*}} to <8 x float>
867 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
868 return _mm512_mask_cvtepu64_ps(__W, __U, __A);
869 }
870
test_mm512_maskz_cvtepu64_ps(__mmask8 __U,__m512i __A)871 __m256 test_mm512_maskz_cvtepu64_ps(__mmask8 __U, __m512i __A) {
872 // CHECK-LABEL: @test_mm512_maskz_cvtepu64_ps
873 // CHECK: uitofp <8 x i64> %{{.*}} to <8 x float>
874 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
875 return _mm512_maskz_cvtepu64_ps(__U, __A);
876 }
877
test_mm512_cvt_roundepu64_ps(__m512i __A)878 __m256 test_mm512_cvt_roundepu64_ps(__m512i __A) {
879 // CHECK-LABEL: @test_mm512_cvt_roundepu64_ps
880 // CHECK: @llvm.x86.avx512.uitofp.round.v8f32.v8i64
881 return _mm512_cvt_roundepu64_ps(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
882 }
883
test_mm512_mask_cvt_roundepu64_ps(__m256 __W,__mmask8 __U,__m512i __A)884 __m256 test_mm512_mask_cvt_roundepu64_ps(__m256 __W, __mmask8 __U, __m512i __A) {
885 // CHECK-LABEL: @test_mm512_mask_cvt_roundepu64_ps
886 // CHECK: @llvm.x86.avx512.uitofp.round.v8f32.v8i64
887 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
888 return _mm512_mask_cvt_roundepu64_ps(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
889 }
890
test_mm512_maskz_cvt_roundepu64_ps(__mmask8 __U,__m512i __A)891 __m256 test_mm512_maskz_cvt_roundepu64_ps(__mmask8 __U, __m512i __A) {
892 // CHECK-LABEL: @test_mm512_maskz_cvt_roundepu64_ps
893 // CHECK: @llvm.x86.avx512.uitofp.round.v8f32.v8i64
894 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
895 return _mm512_maskz_cvt_roundepu64_ps(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
896 }
897
test_mm512_range_pd(__m512d __A,__m512d __B)898 __m512d test_mm512_range_pd(__m512d __A, __m512d __B) {
899 // CHECK-LABEL: @test_mm512_range_pd
900 // CHECK: @llvm.x86.avx512.mask.range.pd.512
901 return _mm512_range_pd(__A, __B, 4);
902 }
903
test_mm512_mask_range_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)904 __m512d test_mm512_mask_range_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
905 // CHECK-LABEL: @test_mm512_mask_range_pd
906 // CHECK: @llvm.x86.avx512.mask.range.pd.512
907 return _mm512_mask_range_pd(__W, __U, __A, __B, 4);
908 }
909
test_mm512_maskz_range_pd(__mmask8 __U,__m512d __A,__m512d __B)910 __m512d test_mm512_maskz_range_pd(__mmask8 __U, __m512d __A, __m512d __B) {
911 // CHECK-LABEL: @test_mm512_maskz_range_pd
912 // CHECK: @llvm.x86.avx512.mask.range.pd.512
913 return _mm512_maskz_range_pd(__U, __A, __B, 4);
914 }
915
test_mm512_range_round_pd(__m512d __A,__m512d __B)916 __m512d test_mm512_range_round_pd(__m512d __A, __m512d __B) {
917 // CHECK-LABEL: @test_mm512_range_round_pd
918 // CHECK: @llvm.x86.avx512.mask.range.pd.512
919 return _mm512_range_round_pd(__A, __B, 4, 8);
920 }
921
test_mm512_mask_range_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)922 __m512d test_mm512_mask_range_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
923 // CHECK-LABEL: @test_mm512_mask_range_round_pd
924 // CHECK: @llvm.x86.avx512.mask.range.pd.512
925 return _mm512_mask_range_round_pd(__W, __U, __A, __B, 4, 8);
926 }
927
test_mm512_maskz_range_round_pd(__mmask8 __U,__m512d __A,__m512d __B)928 __m512d test_mm512_maskz_range_round_pd(__mmask8 __U, __m512d __A, __m512d __B) {
929 // CHECK-LABEL: @test_mm512_maskz_range_round_pd
930 // CHECK: @llvm.x86.avx512.mask.range.pd.512
931 return _mm512_maskz_range_round_pd(__U, __A, __B, 4, 8);
932 }
933
test_mm512_range_round_sd(__m128d __A,__m128d __B)934 __m128d test_mm512_range_round_sd(__m128d __A, __m128d __B) {
935 // CHECK-LABEL: @test_mm512_range_round_sd
936 // CHECK: @llvm.x86.avx512.mask.range.sd
937 return _mm_range_round_sd(__A, __B, 4, 8);
938 }
939
test_mm512_mask_range_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)940 __m128d test_mm512_mask_range_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
941 // CHECK-LABEL: test_mm512_mask_range_round_sd
942 // CHECK: @llvm.x86.avx512.mask.range.sd
943 return _mm_mask_range_round_sd(__W, __U, __A, __B, 4, 8);
944 }
945
test_mm512_maskz_range_round_sd(__mmask8 __U,__m128d __A,__m128d __B)946 __m128d test_mm512_maskz_range_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
947 // CHECK-LABEL: @test_mm512_maskz_range_round_sd
948 // CHECK: @llvm.x86.avx512.mask.range.sd
949 return _mm_maskz_range_round_sd(__U, __A, __B, 4, 8);
950 }
951
test_mm512_range_round_ss(__m128 __A,__m128 __B)952 __m128 test_mm512_range_round_ss(__m128 __A, __m128 __B) {
953 // CHECK-LABEL: @test_mm512_range_round_ss
954 // CHECK: @llvm.x86.avx512.mask.range.ss
955 return _mm_range_round_ss(__A, __B, 4, 8);
956 }
957
test_mm512_mask_range_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)958 __m128 test_mm512_mask_range_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
959 // CHECK-LABEL: @test_mm512_mask_range_round_ss
960 // CHECK: @llvm.x86.avx512.mask.range.ss
961 return _mm_mask_range_round_ss(__W, __U, __A, __B, 4, 8);
962 }
963
test_mm512_maskz_range_round_ss(__mmask8 __U,__m128 __A,__m128 __B)964 __m128 test_mm512_maskz_range_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
965 // CHECK-LABEL: @test_mm512_maskz_range_round_ss
966 // CHECK: @llvm.x86.avx512.mask.range.ss
967 return _mm_maskz_range_round_ss(__U, __A, __B, 4, 8);
968 }
969
test_mm_range_sd(__m128d __A,__m128d __B)970 __m128d test_mm_range_sd(__m128d __A, __m128d __B) {
971 // CHECK-LABEL: @test_mm_range_sd
972 // CHECK: @llvm.x86.avx512.mask.range.sd
973 return _mm_range_sd(__A, __B, 4);
974 }
975
test_mm_mask_range_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)976 __m128d test_mm_mask_range_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
977 // CHECK-LABEL: test_mm_mask_range_sd
978 // CHECK: @llvm.x86.avx512.mask.range.sd
979 return _mm_mask_range_sd(__W, __U, __A, __B, 4);
980 }
981
test_mm_maskz_range_sd(__mmask8 __U,__m128d __A,__m128d __B)982 __m128d test_mm_maskz_range_sd(__mmask8 __U, __m128d __A, __m128d __B) {
983 // CHECK-LABEL: @test_mm_maskz_range_sd
984 // CHECK: @llvm.x86.avx512.mask.range.sd
985 return _mm_maskz_range_sd(__U, __A, __B, 4);
986 }
987
test_mm_range_ss(__m128 __A,__m128 __B)988 __m128 test_mm_range_ss(__m128 __A, __m128 __B) {
989 // CHECK-LABEL: @test_mm_range_ss
990 // CHECK: @llvm.x86.avx512.mask.range.ss
991 return _mm_range_ss(__A, __B, 4);
992 }
993
test_mm_mask_range_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)994 __m128 test_mm_mask_range_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
995 // CHECK-LABEL: @test_mm_mask_range_ss
996 // CHECK: @llvm.x86.avx512.mask.range.ss
997 return _mm_mask_range_ss(__W, __U, __A, __B, 4);
998 }
999
test_mm_maskz_range_ss(__mmask8 __U,__m128 __A,__m128 __B)1000 __m128 test_mm_maskz_range_ss(__mmask8 __U, __m128 __A, __m128 __B) {
1001 // CHECK-LABEL: @test_mm_maskz_range_ss
1002 // CHECK: @llvm.x86.avx512.mask.range.ss
1003 return _mm_maskz_range_ss(__U, __A, __B, 4);
1004 }
1005
test_mm512_range_ps(__m512 __A,__m512 __B)1006 __m512 test_mm512_range_ps(__m512 __A, __m512 __B) {
1007 // CHECK-LABEL: @test_mm512_range_ps
1008 // CHECK: @llvm.x86.avx512.mask.range.ps.512
1009 return _mm512_range_ps(__A, __B, 4);
1010 }
1011
test_mm512_mask_range_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)1012 __m512 test_mm512_mask_range_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1013 // CHECK-LABEL: @test_mm512_mask_range_ps
1014 // CHECK: @llvm.x86.avx512.mask.range.ps.512
1015 return _mm512_mask_range_ps(__W, __U, __A, __B, 4);
1016 }
1017
test_mm512_maskz_range_ps(__mmask16 __U,__m512 __A,__m512 __B)1018 __m512 test_mm512_maskz_range_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1019 // CHECK-LABEL: @test_mm512_maskz_range_ps
1020 // CHECK: @llvm.x86.avx512.mask.range.ps.512
1021 return _mm512_maskz_range_ps(__U, __A, __B, 4);
1022 }
1023
test_mm512_range_round_ps(__m512 __A,__m512 __B)1024 __m512 test_mm512_range_round_ps(__m512 __A, __m512 __B) {
1025 // CHECK-LABEL: @test_mm512_range_round_ps
1026 // CHECK: @llvm.x86.avx512.mask.range.ps.512
1027 return _mm512_range_round_ps(__A, __B, 4, 8);
1028 }
1029
test_mm512_mask_range_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)1030 __m512 test_mm512_mask_range_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1031 // CHECK-LABEL: @test_mm512_mask_range_round_ps
1032 // CHECK: @llvm.x86.avx512.mask.range.ps.512
1033 return _mm512_mask_range_round_ps(__W, __U, __A, __B, 4, 8);
1034 }
1035
test_mm512_maskz_range_round_ps(__mmask16 __U,__m512 __A,__m512 __B)1036 __m512 test_mm512_maskz_range_round_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1037 // CHECK-LABEL: @test_mm512_maskz_range_round_ps
1038 // CHECK: @llvm.x86.avx512.mask.range.ps.512
1039 return _mm512_maskz_range_round_ps(__U, __A, __B, 4, 8);
1040 }
1041
test_mm512_reduce_pd(__m512d __A)1042 __m512d test_mm512_reduce_pd(__m512d __A) {
1043 // CHECK-LABEL: @test_mm512_reduce_pd
1044 // CHECK: @llvm.x86.avx512.mask.reduce.pd.512
1045 return _mm512_reduce_pd(__A, 4);
1046 }
1047
test_mm512_mask_reduce_pd(__m512d __W,__mmask8 __U,__m512d __A)1048 __m512d test_mm512_mask_reduce_pd(__m512d __W, __mmask8 __U, __m512d __A) {
1049 // CHECK-LABEL: @test_mm512_mask_reduce_pd
1050 // CHECK: @llvm.x86.avx512.mask.reduce.pd.512
1051 return _mm512_mask_reduce_pd(__W, __U, __A, 4);
1052 }
1053
test_mm512_maskz_reduce_pd(__mmask8 __U,__m512d __A)1054 __m512d test_mm512_maskz_reduce_pd(__mmask8 __U, __m512d __A) {
1055 // CHECK-LABEL: @test_mm512_maskz_reduce_pd
1056 // CHECK: @llvm.x86.avx512.mask.reduce.pd.512
1057 return _mm512_maskz_reduce_pd(__U, __A, 4);
1058 }
1059
test_mm512_reduce_ps(__m512 __A)1060 __m512 test_mm512_reduce_ps(__m512 __A) {
1061 // CHECK-LABEL: @test_mm512_reduce_ps
1062 // CHECK: @llvm.x86.avx512.mask.reduce.ps.512
1063 return _mm512_reduce_ps(__A, 4);
1064 }
1065
test_mm512_mask_reduce_ps(__m512 __W,__mmask16 __U,__m512 __A)1066 __m512 test_mm512_mask_reduce_ps(__m512 __W, __mmask16 __U, __m512 __A) {
1067 // CHECK-LABEL: @test_mm512_mask_reduce_ps
1068 // CHECK: @llvm.x86.avx512.mask.reduce.ps.512
1069 return _mm512_mask_reduce_ps(__W, __U, __A, 4);
1070 }
1071
test_mm512_maskz_reduce_ps(__mmask16 __U,__m512 __A)1072 __m512 test_mm512_maskz_reduce_ps(__mmask16 __U, __m512 __A) {
1073 // CHECK-LABEL: @test_mm512_maskz_reduce_ps
1074 // CHECK: @llvm.x86.avx512.mask.reduce.ps.512
1075 return _mm512_maskz_reduce_ps(__U, __A, 4);
1076 }
1077
test_mm512_reduce_round_pd(__m512d __A)1078 __m512d test_mm512_reduce_round_pd(__m512d __A) {
1079 // CHECK-LABEL: @test_mm512_reduce_round_pd
1080 // CHECK: @llvm.x86.avx512.mask.reduce.pd.512
1081 return _mm512_reduce_round_pd(__A, 4, 8);
1082 }
1083
test_mm512_mask_reduce_round_pd(__m512d __W,__mmask8 __U,__m512d __A)1084 __m512d test_mm512_mask_reduce_round_pd(__m512d __W, __mmask8 __U, __m512d __A) {
1085 // CHECK-LABEL: @test_mm512_mask_reduce_round_pd
1086 // CHECK: @llvm.x86.avx512.mask.reduce.pd.512
1087 return _mm512_mask_reduce_round_pd(__W, __U, __A, 4, 8);
1088 }
1089
test_mm512_maskz_reduce_round_pd(__mmask8 __U,__m512d __A)1090 __m512d test_mm512_maskz_reduce_round_pd(__mmask8 __U, __m512d __A) {
1091 // CHECK-LABEL: @test_mm512_maskz_reduce_round_pd
1092 // CHECK: @llvm.x86.avx512.mask.reduce.pd.512
1093 return _mm512_maskz_reduce_round_pd(__U, __A, 4, 8);
1094 }
1095
test_mm512_reduce_round_ps(__m512 __A)1096 __m512 test_mm512_reduce_round_ps(__m512 __A) {
1097 // CHECK-LABEL: @test_mm512_reduce_round_ps
1098 // CHECK: @llvm.x86.avx512.mask.reduce.ps.512
1099 return _mm512_reduce_round_ps(__A, 4, 8);
1100 }
1101
test_mm512_mask_reduce_round_ps(__m512 __W,__mmask16 __U,__m512 __A)1102 __m512 test_mm512_mask_reduce_round_ps(__m512 __W, __mmask16 __U, __m512 __A) {
1103 // CHECK-LABEL: @test_mm512_mask_reduce_round_ps
1104 // CHECK: @llvm.x86.avx512.mask.reduce.ps.512
1105 return _mm512_mask_reduce_round_ps(__W, __U, __A, 4, 8);
1106 }
1107
test_mm512_maskz_reduce_round_ps(__mmask16 __U,__m512 __A)1108 __m512 test_mm512_maskz_reduce_round_ps(__mmask16 __U, __m512 __A) {
1109 // CHECK-LABEL: @test_mm512_maskz_reduce_round_ps
1110 // CHECK: @llvm.x86.avx512.mask.reduce.ps.512
1111 return _mm512_maskz_reduce_round_ps(__U, __A, 4, 8);
1112 }
1113
test_mm_reduce_ss(__m128 __A,__m128 __B)1114 __m128 test_mm_reduce_ss(__m128 __A, __m128 __B) {
1115 // CHECK-LABEL: @test_mm_reduce_ss
1116 // CHECK: @llvm.x86.avx512.mask.reduce.ss
1117 return _mm_reduce_ss(__A, __B, 4);
1118 }
1119
test_mm_mask_reduce_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)1120 __m128 test_mm_mask_reduce_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
1121 // CHECK-LABEL: @test_mm_mask_reduce_ss
1122 // CHECK: @llvm.x86.avx512.mask.reduce.ss
1123 return _mm_mask_reduce_ss(__W, __U, __A, __B, 4);
1124 }
1125
test_mm_maskz_reduce_ss(__mmask8 __U,__m128 __A,__m128 __B)1126 __m128 test_mm_maskz_reduce_ss(__mmask8 __U, __m128 __A, __m128 __B) {
1127 // CHECK-LABEL: @test_mm_maskz_reduce_ss
1128 // CHECK: @llvm.x86.avx512.mask.reduce.ss
1129 return _mm_maskz_reduce_ss(__U, __A, __B, 4);
1130 }
1131
test_mm_reduce_round_ss(__m128 __A,__m128 __B)1132 __m128 test_mm_reduce_round_ss(__m128 __A, __m128 __B) {
1133 // CHECK-LABEL: @test_mm_reduce_round_ss
1134 // CHECK: @llvm.x86.avx512.mask.reduce.ss
1135 return _mm_reduce_round_ss(__A, __B, 4, 8);
1136 }
1137
test_mm_mask_reduce_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)1138 __m128 test_mm_mask_reduce_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
1139 // CHECK-LABEL: @test_mm_mask_reduce_round_ss
1140 // CHECK: @llvm.x86.avx512.mask.reduce.ss
1141 return _mm_mask_reduce_round_ss(__W, __U, __A, __B, 4, 8);
1142 }
1143
test_mm_maskz_reduce_round_ss(__mmask8 __U,__m128 __A,__m128 __B)1144 __m128 test_mm_maskz_reduce_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
1145 // CHECK-LABEL: @test_mm_maskz_reduce_round_ss
1146 // CHECK: @llvm.x86.avx512.mask.reduce.ss
1147 return _mm_maskz_reduce_round_ss(__U, __A, __B, 4, 8);
1148 }
1149
test_mm_reduce_sd(__m128d __A,__m128d __B)1150 __m128d test_mm_reduce_sd(__m128d __A, __m128d __B) {
1151 // CHECK-LABEL: @test_mm_reduce_sd
1152 // CHECK: @llvm.x86.avx512.mask.reduce.sd
1153 return _mm_reduce_sd(__A, __B, 4);
1154 }
1155
test_mm_mask_reduce_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)1156 __m128d test_mm_mask_reduce_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
1157 // CHECK-LABEL: @test_mm_mask_reduce_sd
1158 // CHECK: @llvm.x86.avx512.mask.reduce.sd
1159 return _mm_mask_reduce_sd(__W, __U, __A, __B, 4);
1160 }
1161
test_mm_maskz_reduce_sd(__mmask8 __U,__m128d __A,__m128d __B)1162 __m128d test_mm_maskz_reduce_sd(__mmask8 __U, __m128d __A, __m128d __B) {
1163 // CHECK-LABEL: @test_mm_maskz_reduce_sd
1164 // CHECK: @llvm.x86.avx512.mask.reduce.sd
1165 return _mm_maskz_reduce_sd(__U, __A, __B, 4);
1166 }
1167
test_mm_reduce_round_sd(__m128d __A,__m128d __B)1168 __m128d test_mm_reduce_round_sd(__m128d __A, __m128d __B) {
1169 // CHECK-LABEL: @test_mm_reduce_round_sd
1170 // CHECK: @llvm.x86.avx512.mask.reduce.sd
1171 return _mm_reduce_round_sd(__A, __B, 4, 8);
1172 }
1173
test_mm_mask_reduce_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)1174 __m128d test_mm_mask_reduce_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
1175 // CHECK-LABEL: @test_mm_mask_reduce_round_sd
1176 // CHECK: @llvm.x86.avx512.mask.reduce.sd
1177 return _mm_mask_reduce_round_sd(__W, __U, __A, __B, 4, 8);
1178 }
1179
test_mm_maskz_reduce_round_sd(__mmask8 __U,__m128d __A,__m128d __B)1180 __m128d test_mm_maskz_reduce_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
1181 // CHECK-LABEL: @test_mm_maskz_reduce_round_sd
1182 // CHECK: @llvm.x86.avx512.mask.reduce.sd
1183 return _mm_maskz_reduce_round_sd(__U, __A, __B, 4, 8);
1184 }
1185
test_mm512_movepi32_mask(__m512i __A)1186 __mmask16 test_mm512_movepi32_mask(__m512i __A) {
1187 // CHECK-LABEL: @test_mm512_movepi32_mask
1188 // CHECK: [[CMP:%.*]] = icmp slt <16 x i32> %{{.*}}, zeroinitializer
1189 // CHECK: bitcast <16 x i1> [[CMP]] to i16
1190 return _mm512_movepi32_mask(__A);
1191 }
1192
test_mm512_movm_epi32(__mmask16 __A)1193 __m512i test_mm512_movm_epi32(__mmask16 __A) {
1194 // CHECK-LABEL: @test_mm512_movm_epi32
1195 // CHECK: %{{.*}} = bitcast i16 %{{.*}} to <16 x i1>
1196 // CHECK: %vpmovm2.i = sext <16 x i1> %{{.*}} to <16 x i32>
1197 return _mm512_movm_epi32(__A);
1198 }
1199
test_mm512_movm_epi64(__mmask8 __A)1200 __m512i test_mm512_movm_epi64(__mmask8 __A) {
1201 // CHECK-LABEL: @test_mm512_movm_epi64
1202 // CHECK: %{{.*}} = bitcast i8 %{{.*}} to <8 x i1>
1203 // CHECK: %vpmovm2.i = sext <8 x i1> %{{.*}} to <8 x i64>
1204 return _mm512_movm_epi64(__A);
1205 }
1206
test_mm512_movepi64_mask(__m512i __A)1207 __mmask8 test_mm512_movepi64_mask(__m512i __A) {
1208 // CHECK-LABEL: @test_mm512_movepi64_mask
1209 // CHECK: [[CMP:%.*]] = icmp slt <8 x i64> %{{.*}}, zeroinitializer
1210 // CHECK: bitcast <8 x i1> [[CMP]] to i8
1211 return _mm512_movepi64_mask(__A);
1212 }
1213
test_mm512_broadcast_f32x2(__m128 __A)1214 __m512 test_mm512_broadcast_f32x2(__m128 __A) {
1215 // CHECK-LABEL: @test_mm512_broadcast_f32x2
1216 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
1217 return _mm512_broadcast_f32x2(__A);
1218 }
1219
test_mm512_mask_broadcast_f32x2(__m512 __O,__mmask16 __M,__m128 __A)1220 __m512 test_mm512_mask_broadcast_f32x2(__m512 __O, __mmask16 __M, __m128 __A) {
1221 // CHECK-LABEL: @test_mm512_mask_broadcast_f32x2
1222 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
1223 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1224 return _mm512_mask_broadcast_f32x2(__O, __M, __A);
1225 }
1226
test_mm512_maskz_broadcast_f32x2(__mmask16 __M,__m128 __A)1227 __m512 test_mm512_maskz_broadcast_f32x2(__mmask16 __M, __m128 __A) {
1228 // CHECK-LABEL: @test_mm512_maskz_broadcast_f32x2
1229 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
1230 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1231 return _mm512_maskz_broadcast_f32x2(__M, __A);
1232 }
1233
test_mm512_broadcast_f32x8(float const * __A)1234 __m512 test_mm512_broadcast_f32x8(float const* __A) {
1235 // CHECK-LABEL: @test_mm512_broadcast_f32x8
1236 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
1237 return _mm512_broadcast_f32x8(_mm256_loadu_ps(__A));
1238 }
1239
test_mm512_mask_broadcast_f32x8(__m512 __O,__mmask16 __M,float const * __A)1240 __m512 test_mm512_mask_broadcast_f32x8(__m512 __O, __mmask16 __M, float const* __A) {
1241 // CHECK-LABEL: @test_mm512_mask_broadcast_f32x8
1242 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
1243 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1244 return _mm512_mask_broadcast_f32x8(__O, __M, _mm256_loadu_ps(__A));
1245 }
1246
test_mm512_maskz_broadcast_f32x8(__mmask16 __M,float const * __A)1247 __m512 test_mm512_maskz_broadcast_f32x8(__mmask16 __M, float const* __A) {
1248 // CHECK-LABEL: @test_mm512_maskz_broadcast_f32x8
1249 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
1250 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1251 return _mm512_maskz_broadcast_f32x8(__M, _mm256_loadu_ps(__A));
1252 }
1253
test_mm512_broadcast_f64x2(double const * __A)1254 __m512d test_mm512_broadcast_f64x2(double const* __A) {
1255 // CHECK-LABEL: @test_mm512_broadcast_f64x2
1256 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
1257 return _mm512_broadcast_f64x2(_mm_loadu_pd(__A));
1258 }
1259
test_mm512_mask_broadcast_f64x2(__m512d __O,__mmask8 __M,double const * __A)1260 __m512d test_mm512_mask_broadcast_f64x2(__m512d __O, __mmask8 __M, double const* __A) {
1261 // CHECK-LABEL: @test_mm512_mask_broadcast_f64x2
1262 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
1263 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1264 return _mm512_mask_broadcast_f64x2(__O, __M, _mm_loadu_pd(__A));
1265 }
1266
test_mm512_maskz_broadcast_f64x2(__mmask8 __M,double const * __A)1267 __m512d test_mm512_maskz_broadcast_f64x2(__mmask8 __M, double const* __A) {
1268 // CHECK-LABEL: @test_mm512_maskz_broadcast_f64x2
1269 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
1270 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1271 return _mm512_maskz_broadcast_f64x2(__M, _mm_loadu_pd(__A));
1272 }
1273
test_mm512_broadcast_i32x2(__m128i __A)1274 __m512i test_mm512_broadcast_i32x2(__m128i __A) {
1275 // CHECK-LABEL: @test_mm512_broadcast_i32x2
1276 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
1277 return _mm512_broadcast_i32x2(__A);
1278 }
1279
test_mm512_mask_broadcast_i32x2(__m512i __O,__mmask16 __M,__m128i __A)1280 __m512i test_mm512_mask_broadcast_i32x2(__m512i __O, __mmask16 __M, __m128i __A) {
1281 // CHECK-LABEL: @test_mm512_mask_broadcast_i32x2
1282 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
1283 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1284 return _mm512_mask_broadcast_i32x2(__O, __M, __A);
1285 }
1286
test_mm512_maskz_broadcast_i32x2(__mmask16 __M,__m128i __A)1287 __m512i test_mm512_maskz_broadcast_i32x2(__mmask16 __M, __m128i __A) {
1288 // CHECK-LABEL: @test_mm512_maskz_broadcast_i32x2
1289 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
1290 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1291 return _mm512_maskz_broadcast_i32x2(__M, __A);
1292 }
1293
test_mm512_broadcast_i32x8(__m256i const * __A)1294 __m512i test_mm512_broadcast_i32x8(__m256i const* __A) {
1295 // CHECK-LABEL: @test_mm512_broadcast_i32x8
1296 // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
1297 return _mm512_broadcast_i32x8(_mm256_loadu_si256(__A));
1298 }
1299
test_mm512_mask_broadcast_i32x8(__m512i __O,__mmask16 __M,__m256i const * __A)1300 __m512i test_mm512_mask_broadcast_i32x8(__m512i __O, __mmask16 __M, __m256i const* __A) {
1301 // CHECK-LABEL: @test_mm512_mask_broadcast_i32x8
1302 // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
1303 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1304 return _mm512_mask_broadcast_i32x8(__O, __M, _mm256_loadu_si256(__A));
1305 }
1306
test_mm512_maskz_broadcast_i32x8(__mmask16 __M,__m256i const * __A)1307 __m512i test_mm512_maskz_broadcast_i32x8(__mmask16 __M, __m256i const* __A) {
1308 // CHECK-LABEL: @test_mm512_maskz_broadcast_i32x8
1309 // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
1310 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1311 return _mm512_maskz_broadcast_i32x8(__M, _mm256_loadu_si256(__A));
1312 }
1313
test_mm512_broadcast_i64x2(__m128i const * __A)1314 __m512i test_mm512_broadcast_i64x2(__m128i const* __A) {
1315 // CHECK-LABEL: @test_mm512_broadcast_i64x2
1316 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
1317 return _mm512_broadcast_i64x2(_mm_loadu_si128(__A));
1318 }
1319
test_mm512_mask_broadcast_i64x2(__m512i __O,__mmask8 __M,__m128i const * __A)1320 __m512i test_mm512_mask_broadcast_i64x2(__m512i __O, __mmask8 __M, __m128i const* __A) {
1321 // CHECK-LABEL: @test_mm512_mask_broadcast_i64x2
1322 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
1323 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
1324 return _mm512_mask_broadcast_i64x2(__O, __M, _mm_loadu_si128(__A));
1325 }
1326
test_mm512_maskz_broadcast_i64x2(__mmask8 __M,__m128i const * __A)1327 __m512i test_mm512_maskz_broadcast_i64x2(__mmask8 __M, __m128i const* __A) {
1328 // CHECK-LABEL: @test_mm512_maskz_broadcast_i64x2
1329 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
1330 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
1331 return _mm512_maskz_broadcast_i64x2(__M, _mm_loadu_si128(__A));
1332 }
1333
test_mm512_extractf32x8_ps(__m512 __A)1334 __m256 test_mm512_extractf32x8_ps(__m512 __A) {
1335 // CHECK-LABEL: @test_mm512_extractf32x8_ps
1336 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> poison, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
1337 return _mm512_extractf32x8_ps(__A, 1);
1338 }
1339
test_mm512_mask_extractf32x8_ps(__m256 __W,__mmask8 __U,__m512 __A)1340 __m256 test_mm512_mask_extractf32x8_ps(__m256 __W, __mmask8 __U, __m512 __A) {
1341 // CHECK-LABEL: @test_mm512_mask_extractf32x8_ps
1342 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> poison, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
1343 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
1344 return _mm512_mask_extractf32x8_ps(__W, __U, __A, 1);
1345 }
1346
test_mm512_maskz_extractf32x8_ps(__mmask8 __U,__m512 __A)1347 __m256 test_mm512_maskz_extractf32x8_ps(__mmask8 __U, __m512 __A) {
1348 // CHECK-LABEL: @test_mm512_maskz_extractf32x8_ps
1349 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> poison, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
1350 // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
1351 return _mm512_maskz_extractf32x8_ps(__U, __A, 1);
1352 }
1353
test_mm512_extractf64x2_pd(__m512d __A)1354 __m128d test_mm512_extractf64x2_pd(__m512d __A) {
1355 // CHECK-LABEL: @test_mm512_extractf64x2_pd
1356 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> poison, <2 x i32> <i32 6, i32 7>
1357 return _mm512_extractf64x2_pd(__A, 3);
1358 }
1359
test_mm512_mask_extractf64x2_pd(__m128d __W,__mmask8 __U,__m512d __A)1360 __m128d test_mm512_mask_extractf64x2_pd(__m128d __W, __mmask8 __U, __m512d __A) {
1361 // CHECK-LABEL: @test_mm512_mask_extractf64x2_pd
1362 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> poison, <2 x i32> <i32 6, i32 7>
1363 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
1364 return _mm512_mask_extractf64x2_pd(__W, __U, __A, 3);
1365 }
1366
test_mm512_maskz_extractf64x2_pd(__mmask8 __U,__m512d __A)1367 __m128d test_mm512_maskz_extractf64x2_pd(__mmask8 __U, __m512d __A) {
1368 // CHECK-LABEL: @test_mm512_maskz_extractf64x2_pd
1369 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> poison, <2 x i32> <i32 6, i32 7>
1370 // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
1371 return _mm512_maskz_extractf64x2_pd(__U, __A, 3);
1372 }
1373
test_mm512_extracti32x8_epi32(__m512i __A)1374 __m256i test_mm512_extracti32x8_epi32(__m512i __A) {
1375 // CHECK-LABEL: @test_mm512_extracti32x8_epi32
1376 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> poison, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
1377 return _mm512_extracti32x8_epi32(__A, 1);
1378 }
1379
test_mm512_mask_extracti32x8_epi32(__m256i __W,__mmask8 __U,__m512i __A)1380 __m256i test_mm512_mask_extracti32x8_epi32(__m256i __W, __mmask8 __U, __m512i __A) {
1381 // CHECK-LABEL: @test_mm512_mask_extracti32x8_epi32
1382 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> poison, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
1383 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
1384 return _mm512_mask_extracti32x8_epi32(__W, __U, __A, 1);
1385 }
1386
test_mm512_maskz_extracti32x8_epi32(__mmask8 __U,__m512i __A)1387 __m256i test_mm512_maskz_extracti32x8_epi32(__mmask8 __U, __m512i __A) {
1388 // CHECK-LABEL: @test_mm512_maskz_extracti32x8_epi32
1389 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> poison, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
1390 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
1391 return _mm512_maskz_extracti32x8_epi32(__U, __A, 1);
1392 }
1393
test_mm512_extracti64x2_epi64(__m512i __A)1394 __m128i test_mm512_extracti64x2_epi64(__m512i __A) {
1395 // CHECK-LABEL: @test_mm512_extracti64x2_epi64
1396 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> poison, <2 x i32> <i32 6, i32 7>
1397 return _mm512_extracti64x2_epi64(__A, 3);
1398 }
1399
test_mm512_mask_extracti64x2_epi64(__m128i __W,__mmask8 __U,__m512i __A)1400 __m128i test_mm512_mask_extracti64x2_epi64(__m128i __W, __mmask8 __U, __m512i __A) {
1401 // CHECK-LABEL: @test_mm512_mask_extracti64x2_epi64
1402 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> poison, <2 x i32> <i32 6, i32 7>
1403 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
1404 return _mm512_mask_extracti64x2_epi64(__W, __U, __A, 3);
1405 }
1406
test_mm512_maskz_extracti64x2_epi64(__mmask8 __U,__m512i __A)1407 __m128i test_mm512_maskz_extracti64x2_epi64(__mmask8 __U, __m512i __A) {
1408 // CHECK-LABEL: @test_mm512_maskz_extracti64x2_epi64
1409 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> poison, <2 x i32> <i32 6, i32 7>
1410 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
1411 return _mm512_maskz_extracti64x2_epi64(__U, __A, 3);
1412 }
1413
test_mm512_insertf32x8(__m512 __A,__m256 __B)1414 __m512 test_mm512_insertf32x8(__m512 __A, __m256 __B) {
1415 // CHECK-LABEL: @test_mm512_insertf32x8
1416 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23>
1417 return _mm512_insertf32x8(__A, __B, 1);
1418 }
1419
test_mm512_mask_insertf32x8(__m512 __W,__mmask16 __U,__m512 __A,__m256 __B)1420 __m512 test_mm512_mask_insertf32x8(__m512 __W, __mmask16 __U, __m512 __A, __m256 __B) {
1421 // CHECK-LABEL: @test_mm512_mask_insertf32x8
1422 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23>
1423 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1424 return _mm512_mask_insertf32x8(__W, __U, __A, __B, 1);
1425 }
1426
test_mm512_maskz_insertf32x8(__mmask16 __U,__m512 __A,__m256 __B)1427 __m512 test_mm512_maskz_insertf32x8(__mmask16 __U, __m512 __A, __m256 __B) {
1428 // CHECK-LABEL: @test_mm512_maskz_insertf32x8
1429 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23>
1430 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1431 return _mm512_maskz_insertf32x8(__U, __A, __B, 1);
1432 }
1433
test_mm512_insertf64x2(__m512d __A,__m128d __B)1434 __m512d test_mm512_insertf64x2(__m512d __A, __m128d __B) {
1435 // CHECK-LABEL: @test_mm512_insertf64x2
1436 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 8, i32 9>
1437 return _mm512_insertf64x2(__A, __B, 3);
1438 }
1439
test_mm512_mask_insertf64x2(__m512d __W,__mmask8 __U,__m512d __A,__m128d __B)1440 __m512d test_mm512_mask_insertf64x2(__m512d __W, __mmask8 __U, __m512d __A, __m128d __B) {
1441 // CHECK-LABEL: @test_mm512_mask_insertf64x2
1442 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 8, i32 9>
1443 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1444 return _mm512_mask_insertf64x2(__W, __U, __A, __B, 3);
1445 }
1446
test_mm512_maskz_insertf64x2(__mmask8 __U,__m512d __A,__m128d __B)1447 __m512d test_mm512_maskz_insertf64x2(__mmask8 __U, __m512d __A, __m128d __B) {
1448 // CHECK-LABEL: @test_mm512_maskz_insertf64x2
1449 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 8, i32 9>
1450 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1451 return _mm512_maskz_insertf64x2(__U, __A, __B, 3);
1452 }
1453
test_mm512_inserti32x8(__m512i __A,__m256i __B)1454 __m512i test_mm512_inserti32x8(__m512i __A, __m256i __B) {
1455 // CHECK-LABEL: @test_mm512_inserti32x8
1456 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23>
1457 return _mm512_inserti32x8(__A, __B, 1);
1458 }
1459
test_mm512_mask_inserti32x8(__m512i __W,__mmask16 __U,__m512i __A,__m256i __B)1460 __m512i test_mm512_mask_inserti32x8(__m512i __W, __mmask16 __U, __m512i __A, __m256i __B) {
1461 // CHECK-LABEL: @test_mm512_mask_inserti32x8
1462 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23>
1463 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1464 return _mm512_mask_inserti32x8(__W, __U, __A, __B, 1);
1465 }
1466
test_mm512_maskz_inserti32x8(__mmask16 __U,__m512i __A,__m256i __B)1467 __m512i test_mm512_maskz_inserti32x8(__mmask16 __U, __m512i __A, __m256i __B) {
1468 // CHECK-LABEL: @test_mm512_maskz_inserti32x8
1469 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23>
1470 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1471 return _mm512_maskz_inserti32x8(__U, __A, __B, 1);
1472 }
1473
test_mm512_inserti64x2(__m512i __A,__m128i __B)1474 __m512i test_mm512_inserti64x2(__m512i __A, __m128i __B) {
1475 // CHECK-LABEL: @test_mm512_inserti64x2
1476 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 8, i32 9, i32 4, i32 5, i32 6, i32 7>
1477 return _mm512_inserti64x2(__A, __B, 1);
1478 }
1479
test_mm512_mask_inserti64x2(__m512i __W,__mmask8 __U,__m512i __A,__m128i __B)1480 __m512i test_mm512_mask_inserti64x2(__m512i __W, __mmask8 __U, __m512i __A, __m128i __B) {
1481 // CHECK-LABEL: @test_mm512_mask_inserti64x2
1482 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 8, i32 9, i32 4, i32 5, i32 6, i32 7>
1483 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
1484 return _mm512_mask_inserti64x2(__W, __U, __A, __B, 1);
1485 }
1486
test_mm512_maskz_inserti64x2(__mmask8 __U,__m512i __A,__m128i __B)1487 __m512i test_mm512_maskz_inserti64x2(__mmask8 __U, __m512i __A, __m128i __B) {
1488 // CHECK-LABEL: @test_mm512_maskz_inserti64x2
1489 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 8, i32 9, i32 4, i32 5, i32 6, i32 7>
1490 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
1491 return _mm512_maskz_inserti64x2(__U, __A, __B, 1);
1492 }
test_mm512_mask_fpclass_pd_mask(__mmask8 __U,__m512d __A)1493 __mmask8 test_mm512_mask_fpclass_pd_mask(__mmask8 __U, __m512d __A) {
1494 // CHECK-LABEL: @test_mm512_mask_fpclass_pd_mask
1495 // CHECK: @llvm.x86.avx512.fpclass.pd.512
1496 return _mm512_mask_fpclass_pd_mask(__U, __A, 4);
1497 }
1498
test_mm512_fpclass_pd_mask(__m512d __A)1499 __mmask8 test_mm512_fpclass_pd_mask(__m512d __A) {
1500 // CHECK-LABEL: @test_mm512_fpclass_pd_mask
1501 // CHECK: @llvm.x86.avx512.fpclass.pd.512
1502 return _mm512_fpclass_pd_mask(__A, 4);
1503 }
1504
test_mm512_mask_fpclass_ps_mask(__mmask16 __U,__m512 __A)1505 __mmask16 test_mm512_mask_fpclass_ps_mask(__mmask16 __U, __m512 __A) {
1506 // CHECK-LABEL: @test_mm512_mask_fpclass_ps_mask
1507 // CHECK: @llvm.x86.avx512.fpclass.ps.512
1508 return _mm512_mask_fpclass_ps_mask(__U, __A, 4);
1509 }
1510
test_mm512_fpclass_ps_mask(__m512 __A)1511 __mmask16 test_mm512_fpclass_ps_mask(__m512 __A) {
1512 // CHECK-LABEL: @test_mm512_fpclass_ps_mask
1513 // CHECK: @llvm.x86.avx512.fpclass.ps.512
1514 return _mm512_fpclass_ps_mask(__A, 4);
1515 }
1516
test_mm_fpclass_sd_mask(__m128d __A)1517 __mmask8 test_mm_fpclass_sd_mask(__m128d __A) {
1518 // CHECK-LABEL: @test_mm_fpclass_sd_mask
1519 // CHECK: @llvm.x86.avx512.mask.fpclass.sd
1520 return _mm_fpclass_sd_mask (__A, 2);
1521 }
1522
test_mm_mask_fpclass_sd_mask(__mmask8 __U,__m128d __A)1523 __mmask8 test_mm_mask_fpclass_sd_mask(__mmask8 __U, __m128d __A) {
1524 // CHECK-LABEL: @test_mm_mask_fpclass_sd_mask
1525 // CHECK: @llvm.x86.avx512.mask.fpclass.sd
1526 return _mm_mask_fpclass_sd_mask (__U, __A, 2);
1527 }
1528
test_mm_fpclass_ss_mask(__m128 __A)1529 __mmask8 test_mm_fpclass_ss_mask(__m128 __A) {
1530 // CHECK-LABEL: @test_mm_fpclass_ss_mask
1531 // CHECK: @llvm.x86.avx512.mask.fpclass.ss
1532 return _mm_fpclass_ss_mask ( __A, 2);
1533 }
1534
test_mm_mask_fpclass_ss_mask(__mmask8 __U,__m128 __A)1535 __mmask8 test_mm_mask_fpclass_ss_mask(__mmask8 __U, __m128 __A) {
1536 // CHECK-LABEL: @test_mm_mask_fpclass_ss_mask
1537 // CHECK: @llvm.x86.avx512.mask.fpclass.ss
1538 return _mm_mask_fpclass_ss_mask (__U, __A, 2);
1539 }
1540
1541