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