1 // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512bw -emit-llvm -o - -Wall -Werror -Wsign-conversion | FileCheck %s
2 // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512bw -fno-signed-char -emit-llvm -o - -Wall -Werror -Wsign-conversion | FileCheck %s
3
4
5 #include <immintrin.h>
6
test_knot_mask32(__mmask32 a)7 __mmask32 test_knot_mask32(__mmask32 a) {
8 // CHECK-LABEL: @test_knot_mask32
9 // CHECK: [[IN:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
10 // CHECK: [[NOT:%.*]] = xor <32 x i1> [[IN]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
11 // CHECK: bitcast <32 x i1> [[NOT]] to i32
12 return _knot_mask32(a);
13 }
14
test_knot_mask64(__mmask64 a)15 __mmask64 test_knot_mask64(__mmask64 a) {
16 // CHECK-LABEL: @test_knot_mask64
17 // CHECK: [[IN:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
18 // CHECK: [[NOT:%.*]] = xor <64 x i1> [[IN]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
19 // CHECK: bitcast <64 x i1> [[NOT]] to i64
20 return _knot_mask64(a);
21 }
22
test_kand_mask32(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)23 __mmask32 test_kand_mask32(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
24 // CHECK-LABEL: @test_kand_mask32
25 // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
26 // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
27 // CHECK: [[RES:%.*]] = and <32 x i1> [[LHS]], [[RHS]]
28 // CHECK: bitcast <32 x i1> [[RES]] to i32
29 return _mm512_mask_cmpneq_epu16_mask(_kand_mask32(_mm512_cmpneq_epu16_mask(__A, __B),
30 _mm512_cmpneq_epu16_mask(__C, __D)),
31 __E, __F);
32 }
33
test_kand_mask64(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)34 __mmask64 test_kand_mask64(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
35 // CHECK-LABEL: @test_kand_mask64
36 // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
37 // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
38 // CHECK: [[RES:%.*]] = and <64 x i1> [[LHS]], [[RHS]]
39 // CHECK: bitcast <64 x i1> [[RES]] to i64
40 return _mm512_mask_cmpneq_epu8_mask(_kand_mask64(_mm512_cmpneq_epu8_mask(__A, __B),
41 _mm512_cmpneq_epu8_mask(__C, __D)),
42 __E, __F);
43 }
44
test_kandn_mask32(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)45 __mmask32 test_kandn_mask32(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
46 // CHECK-LABEL: @test_kandn_mask32
47 // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
48 // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
49 // CHECK: [[NOT:%.*]] = xor <32 x i1> [[LHS]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
50 // CHECK: [[RES:%.*]] = and <32 x i1> [[NOT]], [[RHS]]
51 // CHECK: bitcast <32 x i1> [[RES]] to i32
52 return _mm512_mask_cmpneq_epu16_mask(_kandn_mask32(_mm512_cmpneq_epu16_mask(__A, __B),
53 _mm512_cmpneq_epu16_mask(__C, __D)),
54 __E, __F);
55 }
56
test_kandn_mask64(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)57 __mmask64 test_kandn_mask64(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
58 // CHECK-LABEL: @test_kandn_mask64
59 // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
60 // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
61 // CHECK: [[NOT:%.*]] = xor <64 x i1> [[LHS]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
62 // CHECK: [[RES:%.*]] = and <64 x i1> [[NOT]], [[RHS]]
63 // CHECK: bitcast <64 x i1> [[RES]] to i64
64 return _mm512_mask_cmpneq_epu8_mask(_kandn_mask64(_mm512_cmpneq_epu8_mask(__A, __B),
65 _mm512_cmpneq_epu8_mask(__C, __D)),
66 __E, __F);
67 }
68
test_kor_mask32(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)69 __mmask32 test_kor_mask32(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
70 // CHECK-LABEL: @test_kor_mask32
71 // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
72 // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
73 // CHECK: [[RES:%.*]] = or <32 x i1> [[LHS]], [[RHS]]
74 // CHECK: bitcast <32 x i1> [[RES]] to i32
75 return _mm512_mask_cmpneq_epu16_mask(_kor_mask32(_mm512_cmpneq_epu16_mask(__A, __B),
76 _mm512_cmpneq_epu16_mask(__C, __D)),
77 __E, __F);
78 }
79
test_kor_mask64(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)80 __mmask64 test_kor_mask64(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
81 // CHECK-LABEL: @test_kor_mask64
82 // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
83 // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
84 // CHECK: [[RES:%.*]] = or <64 x i1> [[LHS]], [[RHS]]
85 // CHECK: bitcast <64 x i1> [[RES]] to i64
86 return _mm512_mask_cmpneq_epu8_mask(_kor_mask64(_mm512_cmpneq_epu8_mask(__A, __B),
87 _mm512_cmpneq_epu8_mask(__C, __D)),
88 __E, __F);
89 }
90
test_kxnor_mask32(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)91 __mmask32 test_kxnor_mask32(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
92 // CHECK-LABEL: @test_kxnor_mask32
93 // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
94 // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
95 // CHECK: [[NOT:%.*]] = xor <32 x i1> [[LHS]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
96 // CHECK: [[RES:%.*]] = xor <32 x i1> [[NOT]], [[RHS]]
97 // CHECK: bitcast <32 x i1> [[RES]] to i32
98 return _mm512_mask_cmpneq_epu16_mask(_kxnor_mask32(_mm512_cmpneq_epu16_mask(__A, __B),
99 _mm512_cmpneq_epu16_mask(__C, __D)),
100 __E, __F);
101 }
102
test_kxnor_mask64(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)103 __mmask64 test_kxnor_mask64(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
104 // CHECK-LABEL: @test_kxnor_mask64
105 // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
106 // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
107 // CHECK: [[NOT:%.*]] = xor <64 x i1> [[LHS]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
108 // CHECK: [[RES:%.*]] = xor <64 x i1> [[NOT]], [[RHS]]
109 // CHECK: bitcast <64 x i1> [[RES]] to i64
110 return _mm512_mask_cmpneq_epu8_mask(_kxnor_mask64(_mm512_cmpneq_epu8_mask(__A, __B),
111 _mm512_cmpneq_epu8_mask(__C, __D)),
112 __E, __F);
113 }
114
test_kxor_mask32(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)115 __mmask32 test_kxor_mask32(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
116 // CHECK-LABEL: @test_kxor_mask32
117 // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
118 // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
119 // CHECK: [[RES:%.*]] = xor <32 x i1> [[LHS]], [[RHS]]
120 // CHECK: bitcast <32 x i1> [[RES]] to i32
121 return _mm512_mask_cmpneq_epu16_mask(_kxor_mask32(_mm512_cmpneq_epu16_mask(__A, __B),
122 _mm512_cmpneq_epu16_mask(__C, __D)),
123 __E, __F);
124 }
125
test_kxor_mask64(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)126 __mmask64 test_kxor_mask64(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
127 // CHECK-LABEL: @test_kxor_mask64
128 // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
129 // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
130 // CHECK: [[RES:%.*]] = xor <64 x i1> [[LHS]], [[RHS]]
131 // CHECK: bitcast <64 x i1> [[RES]] to i64
132 return _mm512_mask_cmpneq_epu8_mask(_kxor_mask64(_mm512_cmpneq_epu8_mask(__A, __B),
133 _mm512_cmpneq_epu8_mask(__C, __D)),
134 __E, __F);
135 }
136
test_kortestz_mask32_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)137 unsigned char test_kortestz_mask32_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
138 // CHECK-LABEL: @test_kortestz_mask32_u8
139 // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
140 // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
141 // CHECK: [[OR:%.*]] = or <32 x i1> [[LHS]], [[RHS]]
142 // CHECK: [[CAST:%.*]] = bitcast <32 x i1> [[OR]] to i32
143 // CHECK: [[CMP:%.*]] = icmp eq i32 [[CAST]], 0
144 // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
145 // CHECK: trunc i32 [[ZEXT]] to i8
146 return _kortestz_mask32_u8(_mm512_cmpneq_epu16_mask(__A, __B),
147 _mm512_cmpneq_epu16_mask(__C, __D));
148 }
149
test_kortestc_mask32_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)150 unsigned char test_kortestc_mask32_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
151 // CHECK-LABEL: @test_kortestc_mask32_u8
152 // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
153 // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
154 // CHECK: [[OR:%.*]] = or <32 x i1> [[LHS]], [[RHS]]
155 // CHECK: [[CAST:%.*]] = bitcast <32 x i1> [[OR]] to i32
156 // CHECK: [[CMP:%.*]] = icmp eq i32 [[CAST]], -1
157 // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
158 // CHECK: trunc i32 [[ZEXT]] to i8
159 return _kortestc_mask32_u8(_mm512_cmpneq_epu16_mask(__A, __B),
160 _mm512_cmpneq_epu16_mask(__C, __D));
161 }
162
test_kortest_mask32_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D,unsigned char * CF)163 unsigned char test_kortest_mask32_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, unsigned char *CF) {
164 // CHECK-LABEL: @test_kortest_mask32_u8
165 // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
166 // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
167 // CHECK: [[OR:%.*]] = or <32 x i1> [[LHS]], [[RHS]]
168 // CHECK: [[CAST:%.*]] = bitcast <32 x i1> [[OR]] to i32
169 // CHECK: [[CMP:%.*]] = icmp eq i32 [[CAST]], -1
170 // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
171 // CHECK: trunc i32 [[ZEXT]] to i8
172 // CHECK: [[LHS2:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
173 // CHECK: [[RHS2:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
174 // CHECK: [[OR2:%.*]] = or <32 x i1> [[LHS2]], [[RHS2]]
175 // CHECK: [[CAST2:%.*]] = bitcast <32 x i1> [[OR2]] to i32
176 // CHECK: [[CMP2:%.*]] = icmp eq i32 [[CAST2]], 0
177 // CHECK: [[ZEXT2:%.*]] = zext i1 [[CMP2]] to i32
178 // CHECK: trunc i32 [[ZEXT2]] to i8
179 return _kortest_mask32_u8(_mm512_cmpneq_epu16_mask(__A, __B),
180 _mm512_cmpneq_epu16_mask(__C, __D), CF);
181 }
182
test_kortestz_mask64_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)183 unsigned char test_kortestz_mask64_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
184 // CHECK-LABEL: @test_kortestz_mask64_u8
185 // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
186 // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
187 // CHECK: [[OR:%.*]] = or <64 x i1> [[LHS]], [[RHS]]
188 // CHECK: [[CAST:%.*]] = bitcast <64 x i1> [[OR]] to i64
189 // CHECK: [[CMP:%.*]] = icmp eq i64 [[CAST]], 0
190 // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
191 // CHECK: trunc i32 [[ZEXT]] to i8
192 return _kortestz_mask64_u8(_mm512_cmpneq_epu8_mask(__A, __B),
193 _mm512_cmpneq_epu8_mask(__C, __D));
194 }
195
test_kortestc_mask64_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)196 unsigned char test_kortestc_mask64_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
197 // CHECK-LABEL: @test_kortestc_mask64_u8
198 // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
199 // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
200 // CHECK: [[OR:%.*]] = or <64 x i1> [[LHS]], [[RHS]]
201 // CHECK: [[CAST:%.*]] = bitcast <64 x i1> [[OR]] to i64
202 // CHECK: [[CMP:%.*]] = icmp eq i64 [[CAST]], -1
203 // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
204 // CHECK: trunc i32 [[ZEXT]] to i8
205 return _kortestc_mask64_u8(_mm512_cmpneq_epu8_mask(__A, __B),
206 _mm512_cmpneq_epu8_mask(__C, __D));
207 }
208
test_kortest_mask64_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D,unsigned char * CF)209 unsigned char test_kortest_mask64_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, unsigned char *CF) {
210 // CHECK-LABEL: @test_kortest_mask64_u8
211 // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
212 // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
213 // CHECK: [[OR:%.*]] = or <64 x i1> [[LHS]], [[RHS]]
214 // CHECK: [[CAST:%.*]] = bitcast <64 x i1> [[OR]] to i64
215 // CHECK: [[CMP:%.*]] = icmp eq i64 [[CAST]], -1
216 // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
217 // CHECK: trunc i32 [[ZEXT]] to i8
218 // CHECK: [[LHS2:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
219 // CHECK: [[RHS2:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
220 // CHECK: [[OR2:%.*]] = or <64 x i1> [[LHS2]], [[RHS2]]
221 // CHECK: [[CAST2:%.*]] = bitcast <64 x i1> [[OR2]] to i64
222 // CHECK: [[CMP2:%.*]] = icmp eq i64 [[CAST2]], 0
223 // CHECK: [[ZEXT2:%.*]] = zext i1 [[CMP2]] to i32
224 // CHECK: trunc i32 [[ZEXT2]] to i8
225 return _kortest_mask64_u8(_mm512_cmpneq_epu8_mask(__A, __B),
226 _mm512_cmpneq_epu8_mask(__C, __D), CF);
227 }
228
test_ktestz_mask32_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)229 unsigned char test_ktestz_mask32_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
230 // CHECK-LABEL: @test_ktestz_mask32_u8
231 // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
232 // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
233 // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestz.d(<32 x i1> [[LHS]], <32 x i1> [[RHS]])
234 // CHECK: trunc i32 [[RES]] to i8
235 return _ktestz_mask32_u8(_mm512_cmpneq_epu16_mask(__A, __B),
236 _mm512_cmpneq_epu16_mask(__C, __D));
237 }
238
test_ktestc_mask32_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)239 unsigned char test_ktestc_mask32_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
240 // CHECK-LABEL: @test_ktestc_mask32_u8
241 // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
242 // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
243 // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestc.d(<32 x i1> [[LHS]], <32 x i1> [[RHS]])
244 // CHECK: trunc i32 [[RES]] to i8
245 return _ktestc_mask32_u8(_mm512_cmpneq_epu16_mask(__A, __B),
246 _mm512_cmpneq_epu16_mask(__C, __D));
247 }
248
test_ktest_mask32_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D,unsigned char * CF)249 unsigned char test_ktest_mask32_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, unsigned char *CF) {
250 // CHECK-LABEL: @test_ktest_mask32_u8
251 // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
252 // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
253 // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestc.d(<32 x i1> [[LHS]], <32 x i1> [[RHS]])
254 // CHECK: trunc i32 [[RES]] to i8
255 // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
256 // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
257 // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestz.d(<32 x i1> [[LHS]], <32 x i1> [[RHS]])
258 // CHECK: trunc i32 [[RES]] to i8
259 return _ktest_mask32_u8(_mm512_cmpneq_epu16_mask(__A, __B),
260 _mm512_cmpneq_epu16_mask(__C, __D), CF);
261 }
262
test_ktestz_mask64_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)263 unsigned char test_ktestz_mask64_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
264 // CHECK-LABEL: @test_ktestz_mask64_u8
265 // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
266 // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
267 // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestz.q(<64 x i1> [[LHS]], <64 x i1> [[RHS]])
268 // CHECK: trunc i32 [[RES]] to i8
269 return _ktestz_mask64_u8(_mm512_cmpneq_epu8_mask(__A, __B),
270 _mm512_cmpneq_epu8_mask(__C, __D));
271 }
272
test_ktestc_mask64_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)273 unsigned char test_ktestc_mask64_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
274 // CHECK-LABEL: @test_ktestc_mask64_u8
275 // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
276 // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
277 // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestc.q(<64 x i1> [[LHS]], <64 x i1> [[RHS]])
278 // CHECK: trunc i32 [[RES]] to i8
279 return _ktestc_mask64_u8(_mm512_cmpneq_epu8_mask(__A, __B),
280 _mm512_cmpneq_epu8_mask(__C, __D));
281 }
282
test_ktest_mask64_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D,unsigned char * CF)283 unsigned char test_ktest_mask64_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, unsigned char *CF) {
284 // CHECK-LABEL: @test_ktest_mask64_u8
285 // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
286 // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
287 // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestc.q(<64 x i1> [[LHS]], <64 x i1> [[RHS]])
288 // CHECK: trunc i32 [[RES]] to i8
289 // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
290 // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
291 // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestz.q(<64 x i1> [[LHS]], <64 x i1> [[RHS]])
292 // CHECK: trunc i32 [[RES]] to i8
293 return _ktest_mask64_u8(_mm512_cmpneq_epu8_mask(__A, __B),
294 _mm512_cmpneq_epu8_mask(__C, __D), CF);
295 }
296
test_kadd_mask32(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)297 __mmask32 test_kadd_mask32(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
298 // CHECK-LABEL: @test_kadd_mask32
299 // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
300 // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
301 // CHECK: [[RES:%.*]] = call <32 x i1> @llvm.x86.avx512.kadd.d(<32 x i1> [[LHS]], <32 x i1> [[RHS]])
302 // CHECK: bitcast <32 x i1> [[RES]] to i32
303 return _mm512_mask_cmpneq_epu16_mask(_kadd_mask32(_mm512_cmpneq_epu16_mask(__A, __B),
304 _mm512_cmpneq_epu16_mask(__C, __D)),
305 __E, __F);
306 }
307
test_kadd_mask64(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)308 __mmask64 test_kadd_mask64(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
309 // CHECK-LABEL: @test_kadd_mask64
310 // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
311 // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
312 // CHECK: [[RES:%.*]] = call <64 x i1> @llvm.x86.avx512.kadd.q(<64 x i1> [[LHS]], <64 x i1> [[RHS]])
313 // CHECK: bitcast <64 x i1> [[RES]] to i64
314 return _mm512_mask_cmpneq_epu8_mask(_kadd_mask64(_mm512_cmpneq_epu8_mask(__A, __B),
315 _mm512_cmpneq_epu8_mask(__C, __D)),
316 __E, __F);
317 }
318
test_kshiftli_mask32(__m512i A,__m512i B,__m512i C,__m512i D)319 __mmask32 test_kshiftli_mask32(__m512i A, __m512i B, __m512i C, __m512i D) {
320 // CHECK-LABEL: @test_kshiftli_mask32
321 // CHECK: [[VAL:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
322 // CHECK: [[RES:%.*]] = shufflevector <32 x i1> zeroinitializer, <32 x i1> [[VAL]], <32 x i32> <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32>
323 // CHECK: bitcast <32 x i1> [[RES]] to i32
324 return _mm512_mask_cmpneq_epu16_mask(_kshiftli_mask32(_mm512_cmpneq_epu16_mask(A, B), 31), C, D);
325 }
326
test_kshiftri_mask32(__m512i A,__m512i B,__m512i C,__m512i D)327 __mmask32 test_kshiftri_mask32(__m512i A, __m512i B, __m512i C, __m512i D) {
328 // CHECK-LABEL: @test_kshiftri_mask32
329 // CHECK: [[VAL:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
330 // CHECK: [[RES:%.*]] = shufflevector <32 x i1> [[VAL]], <32 x i1> zeroinitializer, <32 x i32> <i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62>
331 // CHECK: bitcast <32 x i1> [[RES]] to i32
332 return _mm512_mask_cmpneq_epu16_mask(_kshiftri_mask32(_mm512_cmpneq_epu16_mask(A, B), 31), C, D);
333 }
334
test_kshiftli_mask64(__m512i A,__m512i B,__m512i C,__m512i D)335 __mmask64 test_kshiftli_mask64(__m512i A, __m512i B, __m512i C, __m512i D) {
336 // CHECK-LABEL: @test_kshiftli_mask64
337 // CHECK: [[VAL:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
338 // CHECK: [[RES:%.*]] = shufflevector <64 x i1> zeroinitializer, <64 x i1> [[VAL]], <64 x i32> <i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95>
339 // CHECK: bitcast <64 x i1> [[RES]] to i64
340 return _mm512_mask_cmpneq_epu8_mask(_kshiftli_mask64(_mm512_cmpneq_epu8_mask(A, B), 32), C, D);
341 }
342
test_kshiftri_mask64(__m512i A,__m512i B,__m512i C,__m512i D)343 __mmask64 test_kshiftri_mask64(__m512i A, __m512i B, __m512i C, __m512i D) {
344 // CHECK-LABEL: @test_kshiftri_mask64
345 // CHECK: [[VAL:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
346 // CHECK: [[RES:%.*]] = shufflevector <64 x i1> [[VAL]], <64 x i1> zeroinitializer, <64 x i32> <i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 75, i32 76, i32 77, i32 78, i32 79, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 91, i32 92, i32 93, i32 94, i32 95>
347 // CHECK: bitcast <64 x i1> [[RES]] to i64
348 return _mm512_mask_cmpneq_epu8_mask(_kshiftri_mask64(_mm512_cmpneq_epu8_mask(A, B), 32), C, D);
349 }
350
test_cvtmask32_u32(__m512i A,__m512i B)351 unsigned int test_cvtmask32_u32(__m512i A, __m512i B) {
352 // CHECK-LABEL: @test_cvtmask32_u32
353 // CHECK: bitcast <32 x i1> %{{.*}} to i32
354 // CHECK: bitcast i32 %{{.*}} to <32 x i1>
355 return _cvtmask32_u32(_mm512_cmpneq_epu16_mask(A, B));
356 }
357
test_cvtmask64_u64(__m512i A,__m512i B)358 unsigned long long test_cvtmask64_u64(__m512i A, __m512i B) {
359 // CHECK-LABEL: @test_cvtmask64_u64
360 // CHECK: bitcast <64 x i1> %{{.*}} to i64
361 // CHECK: bitcast i64 %{{.*}} to <64 x i1>
362 return _cvtmask64_u64(_mm512_cmpneq_epu8_mask(A, B));
363 }
364
test_cvtu32_mask32(__m512i A,__m512i B,unsigned int C)365 __mmask32 test_cvtu32_mask32(__m512i A, __m512i B, unsigned int C) {
366 // CHECK-LABEL: @test_cvtu32_mask32
367 // CHECK: bitcast i32 %{{.*}} to <32 x i1>
368 return _mm512_mask_cmpneq_epu16_mask(_cvtu32_mask32(C), A, B);
369 }
370
test_cvtu64_mask64(__m512i A,__m512i B,unsigned long long C)371 __mmask64 test_cvtu64_mask64(__m512i A, __m512i B, unsigned long long C) {
372 // CHECK-LABEL: @test_cvtu64_mask64
373 // CHECK: bitcast i64 %{{.*}} to <64 x i1>
374 return _mm512_mask_cmpneq_epu8_mask(_cvtu64_mask64(C), A, B);
375 }
376
test_load_mask32(__mmask32 * A,__m512i B,__m512i C)377 __mmask32 test_load_mask32(__mmask32 *A, __m512i B, __m512i C) {
378 // CHECK-LABEL: @test_load_mask32
379 // CHECK: [[LOAD:%.*]] = load i32, i32* %{{.*}}
380 // CHECK: bitcast i32 [[LOAD]] to <32 x i1>
381 return _mm512_mask_cmpneq_epu16_mask(_load_mask32(A), B, C);
382 }
383
test_load_mask64(__mmask64 * A,__m512i B,__m512i C)384 __mmask64 test_load_mask64(__mmask64 *A, __m512i B, __m512i C) {
385 // CHECK-LABEL: @test_load_mask64
386 // CHECK: [[LOAD:%.*]] = load i64, i64* %{{.*}}
387 // CHECK: bitcast i64 [[LOAD]] to <64 x i1>
388 return _mm512_mask_cmpneq_epu8_mask(_load_mask64(A), B, C);
389 }
390
test_store_mask32(__mmask32 * A,__m512i B,__m512i C)391 void test_store_mask32(__mmask32 *A, __m512i B, __m512i C) {
392 // CHECK-LABEL: @test_store_mask32
393 // CHECK: bitcast <32 x i1> %{{.*}} to i32
394 // CHECK: store i32 %{{.*}}, i32* %{{.*}}
395 _store_mask32(A, _mm512_cmpneq_epu16_mask(B, C));
396 }
397
test_store_mask64(__mmask64 * A,__m512i B,__m512i C)398 void test_store_mask64(__mmask64 *A, __m512i B, __m512i C) {
399 // CHECK-LABEL: @test_store_mask64
400 // CHECK: bitcast <64 x i1> %{{.*}} to i64
401 // CHECK: store i64 %{{.*}}, i64* %{{.*}}
402 _store_mask64(A, _mm512_cmpneq_epu8_mask(B, C));
403 }
404
test_mm512_cmpeq_epi8_mask(__m512i __a,__m512i __b)405 __mmask64 test_mm512_cmpeq_epi8_mask(__m512i __a, __m512i __b) {
406 // CHECK-LABEL: @test_mm512_cmpeq_epi8_mask
407 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
408 return (__mmask64)_mm512_cmpeq_epi8_mask(__a, __b);
409 }
410
test_mm512_mask_cmpeq_epi8_mask(__mmask64 __u,__m512i __a,__m512i __b)411 __mmask64 test_mm512_mask_cmpeq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
412 // CHECK-LABEL: @test_mm512_mask_cmpeq_epi8_mask
413 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
414 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
415 return (__mmask64)_mm512_mask_cmpeq_epi8_mask(__u, __a, __b);
416 }
417
test_mm512_cmpeq_epi16_mask(__m512i __a,__m512i __b)418 __mmask32 test_mm512_cmpeq_epi16_mask(__m512i __a, __m512i __b) {
419 // CHECK-LABEL: @test_mm512_cmpeq_epi16_mask
420 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
421 return (__mmask32)_mm512_cmpeq_epi16_mask(__a, __b);
422 }
423
test_mm512_mask_cmpeq_epi16_mask(__mmask32 __u,__m512i __a,__m512i __b)424 __mmask32 test_mm512_mask_cmpeq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
425 // CHECK-LABEL: @test_mm512_mask_cmpeq_epi16_mask
426 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
427 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
428 return (__mmask32)_mm512_mask_cmpeq_epi16_mask(__u, __a, __b);
429 }
430
test_mm512_cmpgt_epi8_mask(__m512i __a,__m512i __b)431 __mmask64 test_mm512_cmpgt_epi8_mask(__m512i __a, __m512i __b) {
432 // CHECK-LABEL: @test_mm512_cmpgt_epi8_mask
433 // CHECK: icmp sgt <64 x i8> %{{.*}}, %{{.*}}
434 return (__mmask64)_mm512_cmpgt_epi8_mask(__a, __b);
435 }
436
test_mm512_mask_cmpgt_epi8_mask(__mmask64 __u,__m512i __a,__m512i __b)437 __mmask64 test_mm512_mask_cmpgt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
438 // CHECK-LABEL: @test_mm512_mask_cmpgt_epi8_mask
439 // CHECK: icmp sgt <64 x i8> %{{.*}}, %{{.*}}
440 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
441 return (__mmask64)_mm512_mask_cmpgt_epi8_mask(__u, __a, __b);
442 }
443
test_mm512_cmpgt_epi16_mask(__m512i __a,__m512i __b)444 __mmask32 test_mm512_cmpgt_epi16_mask(__m512i __a, __m512i __b) {
445 // CHECK-LABEL: @test_mm512_cmpgt_epi16_mask
446 // CHECK: icmp sgt <32 x i16> %{{.*}}, %{{.*}}
447 return (__mmask32)_mm512_cmpgt_epi16_mask(__a, __b);
448 }
449
test_mm512_mask_cmpgt_epi16_mask(__mmask32 __u,__m512i __a,__m512i __b)450 __mmask32 test_mm512_mask_cmpgt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
451 // CHECK-LABEL: @test_mm512_mask_cmpgt_epi16_mask
452 // CHECK: icmp sgt <32 x i16> %{{.*}}, %{{.*}}
453 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
454 return (__mmask32)_mm512_mask_cmpgt_epi16_mask(__u, __a, __b);
455 }
456
test_mm512_cmpeq_epu8_mask(__m512i __a,__m512i __b)457 __mmask64 test_mm512_cmpeq_epu8_mask(__m512i __a, __m512i __b) {
458 // CHECK-LABEL: @test_mm512_cmpeq_epu8_mask
459 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
460 return (__mmask64)_mm512_cmpeq_epu8_mask(__a, __b);
461 }
462
test_mm512_mask_cmpeq_epu8_mask(__mmask64 __u,__m512i __a,__m512i __b)463 __mmask64 test_mm512_mask_cmpeq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
464 // CHECK-LABEL: @test_mm512_mask_cmpeq_epu8_mask
465 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
466 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
467 return (__mmask64)_mm512_mask_cmpeq_epu8_mask(__u, __a, __b);
468 }
469
test_mm512_cmpeq_epu16_mask(__m512i __a,__m512i __b)470 __mmask32 test_mm512_cmpeq_epu16_mask(__m512i __a, __m512i __b) {
471 // CHECK-LABEL: @test_mm512_cmpeq_epu16_mask
472 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
473 return (__mmask32)_mm512_cmpeq_epu16_mask(__a, __b);
474 }
475
test_mm512_mask_cmpeq_epu16_mask(__mmask32 __u,__m512i __a,__m512i __b)476 __mmask32 test_mm512_mask_cmpeq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
477 // CHECK-LABEL: @test_mm512_mask_cmpeq_epu16_mask
478 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
479 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
480 return (__mmask32)_mm512_mask_cmpeq_epu16_mask(__u, __a, __b);
481 }
482
test_mm512_cmpgt_epu8_mask(__m512i __a,__m512i __b)483 __mmask64 test_mm512_cmpgt_epu8_mask(__m512i __a, __m512i __b) {
484 // CHECK-LABEL: @test_mm512_cmpgt_epu8_mask
485 // CHECK: icmp ugt <64 x i8> %{{.*}}, %{{.*}}
486 return (__mmask64)_mm512_cmpgt_epu8_mask(__a, __b);
487 }
488
test_mm512_mask_cmpgt_epu8_mask(__mmask64 __u,__m512i __a,__m512i __b)489 __mmask64 test_mm512_mask_cmpgt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
490 // CHECK-LABEL: @test_mm512_mask_cmpgt_epu8_mask
491 // CHECK: icmp ugt <64 x i8> %{{.*}}, %{{.*}}
492 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
493 return (__mmask64)_mm512_mask_cmpgt_epu8_mask(__u, __a, __b);
494 }
495
test_mm512_cmpgt_epu16_mask(__m512i __a,__m512i __b)496 __mmask32 test_mm512_cmpgt_epu16_mask(__m512i __a, __m512i __b) {
497 // CHECK-LABEL: @test_mm512_cmpgt_epu16_mask
498 // CHECK: icmp ugt <32 x i16> %{{.*}}, %{{.*}}
499 return (__mmask32)_mm512_cmpgt_epu16_mask(__a, __b);
500 }
501
test_mm512_mask_cmpgt_epu16_mask(__mmask32 __u,__m512i __a,__m512i __b)502 __mmask32 test_mm512_mask_cmpgt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
503 // CHECK-LABEL: @test_mm512_mask_cmpgt_epu16_mask
504 // CHECK: icmp ugt <32 x i16> %{{.*}}, %{{.*}}
505 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
506 return (__mmask32)_mm512_mask_cmpgt_epu16_mask(__u, __a, __b);
507 }
508
test_mm512_cmpge_epi8_mask(__m512i __a,__m512i __b)509 __mmask64 test_mm512_cmpge_epi8_mask(__m512i __a, __m512i __b) {
510 // CHECK-LABEL: @test_mm512_cmpge_epi8_mask
511 // CHECK: icmp sge <64 x i8> %{{.*}}, %{{.*}}
512 return (__mmask64)_mm512_cmpge_epi8_mask(__a, __b);
513 }
514
test_mm512_mask_cmpge_epi8_mask(__mmask64 __u,__m512i __a,__m512i __b)515 __mmask64 test_mm512_mask_cmpge_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
516 // CHECK-LABEL: @test_mm512_mask_cmpge_epi8_mask
517 // CHECK: icmp sge <64 x i8> %{{.*}}, %{{.*}}
518 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
519 return (__mmask64)_mm512_mask_cmpge_epi8_mask(__u, __a, __b);
520 }
521
test_mm512_cmpge_epu8_mask(__m512i __a,__m512i __b)522 __mmask64 test_mm512_cmpge_epu8_mask(__m512i __a, __m512i __b) {
523 // CHECK-LABEL: @test_mm512_cmpge_epu8_mask
524 // CHECK: icmp uge <64 x i8> %{{.*}}, %{{.*}}
525 return (__mmask64)_mm512_cmpge_epu8_mask(__a, __b);
526 }
527
test_mm512_mask_cmpge_epu8_mask(__mmask64 __u,__m512i __a,__m512i __b)528 __mmask64 test_mm512_mask_cmpge_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
529 // CHECK-LABEL: @test_mm512_mask_cmpge_epu8_mask
530 // CHECK: icmp uge <64 x i8> %{{.*}}, %{{.*}}
531 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
532 return (__mmask64)_mm512_mask_cmpge_epu8_mask(__u, __a, __b);
533 }
534
test_mm512_cmpge_epi16_mask(__m512i __a,__m512i __b)535 __mmask32 test_mm512_cmpge_epi16_mask(__m512i __a, __m512i __b) {
536 // CHECK-LABEL: @test_mm512_cmpge_epi16_mask
537 // CHECK: icmp sge <32 x i16> %{{.*}}, %{{.*}}
538 return (__mmask32)_mm512_cmpge_epi16_mask(__a, __b);
539 }
540
test_mm512_mask_cmpge_epi16_mask(__mmask32 __u,__m512i __a,__m512i __b)541 __mmask32 test_mm512_mask_cmpge_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
542 // CHECK-LABEL: @test_mm512_mask_cmpge_epi16_mask
543 // CHECK: icmp sge <32 x i16> %{{.*}}, %{{.*}}
544 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
545 return (__mmask32)_mm512_mask_cmpge_epi16_mask(__u, __a, __b);
546 }
547
test_mm512_cmpge_epu16_mask(__m512i __a,__m512i __b)548 __mmask32 test_mm512_cmpge_epu16_mask(__m512i __a, __m512i __b) {
549 // CHECK-LABEL: @test_mm512_cmpge_epu16_mask
550 // CHECK: icmp uge <32 x i16> %{{.*}}, %{{.*}}
551 return (__mmask32)_mm512_cmpge_epu16_mask(__a, __b);
552 }
553
test_mm512_mask_cmpge_epu16_mask(__mmask32 __u,__m512i __a,__m512i __b)554 __mmask32 test_mm512_mask_cmpge_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
555 // CHECK-LABEL: @test_mm512_mask_cmpge_epu16_mask
556 // CHECK: icmp uge <32 x i16> %{{.*}}, %{{.*}}
557 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
558 return (__mmask32)_mm512_mask_cmpge_epu16_mask(__u, __a, __b);
559 }
560
test_mm512_cmple_epi8_mask(__m512i __a,__m512i __b)561 __mmask64 test_mm512_cmple_epi8_mask(__m512i __a, __m512i __b) {
562 // CHECK-LABEL: @test_mm512_cmple_epi8_mask
563 // CHECK: icmp sle <64 x i8> %{{.*}}, %{{.*}}
564 return (__mmask64)_mm512_cmple_epi8_mask(__a, __b);
565 }
566
test_mm512_mask_cmple_epi8_mask(__mmask64 __u,__m512i __a,__m512i __b)567 __mmask64 test_mm512_mask_cmple_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
568 // CHECK-LABEL: @test_mm512_mask_cmple_epi8_mask
569 // CHECK: icmp sle <64 x i8> %{{.*}}, %{{.*}}
570 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
571 return (__mmask64)_mm512_mask_cmple_epi8_mask(__u, __a, __b);
572 }
573
test_mm512_cmple_epu8_mask(__m512i __a,__m512i __b)574 __mmask64 test_mm512_cmple_epu8_mask(__m512i __a, __m512i __b) {
575 // CHECK-LABEL: @test_mm512_cmple_epu8_mask
576 // CHECK: icmp ule <64 x i8> %{{.*}}, %{{.*}}
577 return (__mmask64)_mm512_cmple_epu8_mask(__a, __b);
578 }
579
test_mm512_mask_cmple_epu8_mask(__mmask64 __u,__m512i __a,__m512i __b)580 __mmask64 test_mm512_mask_cmple_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
581 // CHECK-LABEL: @test_mm512_mask_cmple_epu8_mask
582 // CHECK: icmp ule <64 x i8> %{{.*}}, %{{.*}}
583 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
584 return (__mmask64)_mm512_mask_cmple_epu8_mask(__u, __a, __b);
585 }
586
test_mm512_cmple_epi16_mask(__m512i __a,__m512i __b)587 __mmask32 test_mm512_cmple_epi16_mask(__m512i __a, __m512i __b) {
588 // CHECK-LABEL: @test_mm512_cmple_epi16_mask
589 // CHECK: icmp sle <32 x i16> %{{.*}}, %{{.*}}
590 return (__mmask32)_mm512_cmple_epi16_mask(__a, __b);
591 }
592
test_mm512_mask_cmple_epi16_mask(__mmask32 __u,__m512i __a,__m512i __b)593 __mmask32 test_mm512_mask_cmple_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
594 // CHECK-LABEL: @test_mm512_mask_cmple_epi16_mask
595 // CHECK: icmp sle <32 x i16> %{{.*}}, %{{.*}}
596 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
597 return (__mmask32)_mm512_mask_cmple_epi16_mask(__u, __a, __b);
598 }
599
test_mm512_cmple_epu16_mask(__m512i __a,__m512i __b)600 __mmask32 test_mm512_cmple_epu16_mask(__m512i __a, __m512i __b) {
601 // CHECK-LABEL: @test_mm512_cmple_epu16_mask
602 // CHECK: icmp ule <32 x i16> %{{.*}}, %{{.*}}
603 return (__mmask32)_mm512_cmple_epu16_mask(__a, __b);
604 }
605
test_mm512_mask_cmple_epu16_mask(__mmask32 __u,__m512i __a,__m512i __b)606 __mmask32 test_mm512_mask_cmple_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
607 // CHECK-LABEL: @test_mm512_mask_cmple_epu16_mask
608 // CHECK: icmp ule <32 x i16> %{{.*}}, %{{.*}}
609 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
610 return (__mmask32)_mm512_mask_cmple_epu16_mask(__u, __a, __b);
611 }
612
test_mm512_cmplt_epi8_mask(__m512i __a,__m512i __b)613 __mmask64 test_mm512_cmplt_epi8_mask(__m512i __a, __m512i __b) {
614 // CHECK-LABEL: @test_mm512_cmplt_epi8_mask
615 // CHECK: icmp slt <64 x i8> %{{.*}}, %{{.*}}
616 return (__mmask64)_mm512_cmplt_epi8_mask(__a, __b);
617 }
618
test_mm512_mask_cmplt_epi8_mask(__mmask64 __u,__m512i __a,__m512i __b)619 __mmask64 test_mm512_mask_cmplt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
620 // CHECK-LABEL: @test_mm512_mask_cmplt_epi8_mask
621 // CHECK: icmp slt <64 x i8> %{{.*}}, %{{.*}}
622 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
623 return (__mmask64)_mm512_mask_cmplt_epi8_mask(__u, __a, __b);
624 }
625
test_mm512_cmplt_epu8_mask(__m512i __a,__m512i __b)626 __mmask64 test_mm512_cmplt_epu8_mask(__m512i __a, __m512i __b) {
627 // CHECK-LABEL: @test_mm512_cmplt_epu8_mask
628 // CHECK: icmp ult <64 x i8> %{{.*}}, %{{.*}}
629 return (__mmask64)_mm512_cmplt_epu8_mask(__a, __b);
630 }
631
test_mm512_mask_cmplt_epu8_mask(__mmask64 __u,__m512i __a,__m512i __b)632 __mmask64 test_mm512_mask_cmplt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
633 // CHECK-LABEL: @test_mm512_mask_cmplt_epu8_mask
634 // CHECK: icmp ult <64 x i8> %{{.*}}, %{{.*}}
635 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
636 return (__mmask64)_mm512_mask_cmplt_epu8_mask(__u, __a, __b);
637 }
638
test_mm512_cmplt_epi16_mask(__m512i __a,__m512i __b)639 __mmask32 test_mm512_cmplt_epi16_mask(__m512i __a, __m512i __b) {
640 // CHECK-LABEL: @test_mm512_cmplt_epi16_mask
641 // CHECK: icmp slt <32 x i16> %{{.*}}, %{{.*}}
642 return (__mmask32)_mm512_cmplt_epi16_mask(__a, __b);
643 }
644
test_mm512_mask_cmplt_epi16_mask(__mmask32 __u,__m512i __a,__m512i __b)645 __mmask32 test_mm512_mask_cmplt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
646 // CHECK-LABEL: @test_mm512_mask_cmplt_epi16_mask
647 // CHECK: icmp slt <32 x i16> %{{.*}}, %{{.*}}
648 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
649 return (__mmask32)_mm512_mask_cmplt_epi16_mask(__u, __a, __b);
650 }
651
test_mm512_cmplt_epu16_mask(__m512i __a,__m512i __b)652 __mmask32 test_mm512_cmplt_epu16_mask(__m512i __a, __m512i __b) {
653 // CHECK-LABEL: @test_mm512_cmplt_epu16_mask
654 // CHECK: icmp ult <32 x i16> %{{.*}}, %{{.*}}
655 return (__mmask32)_mm512_cmplt_epu16_mask(__a, __b);
656 }
657
test_mm512_mask_cmplt_epu16_mask(__mmask32 __u,__m512i __a,__m512i __b)658 __mmask32 test_mm512_mask_cmplt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
659 // CHECK-LABEL: @test_mm512_mask_cmplt_epu16_mask
660 // CHECK: icmp ult <32 x i16> %{{.*}}, %{{.*}}
661 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
662 return (__mmask32)_mm512_mask_cmplt_epu16_mask(__u, __a, __b);
663 }
664
test_mm512_cmpneq_epi8_mask(__m512i __a,__m512i __b)665 __mmask64 test_mm512_cmpneq_epi8_mask(__m512i __a, __m512i __b) {
666 // CHECK-LABEL: @test_mm512_cmpneq_epi8_mask
667 // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}}
668 return (__mmask64)_mm512_cmpneq_epi8_mask(__a, __b);
669 }
670
test_mm512_mask_cmpneq_epi8_mask(__mmask64 __u,__m512i __a,__m512i __b)671 __mmask64 test_mm512_mask_cmpneq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
672 // CHECK-LABEL: @test_mm512_mask_cmpneq_epi8_mask
673 // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}}
674 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
675 return (__mmask64)_mm512_mask_cmpneq_epi8_mask(__u, __a, __b);
676 }
677
test_mm512_cmpneq_epu8_mask(__m512i __a,__m512i __b)678 __mmask64 test_mm512_cmpneq_epu8_mask(__m512i __a, __m512i __b) {
679 // CHECK-LABEL: @test_mm512_cmpneq_epu8_mask
680 // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}}
681 return (__mmask64)_mm512_cmpneq_epu8_mask(__a, __b);
682 }
683
test_mm512_mask_cmpneq_epu8_mask(__mmask64 __u,__m512i __a,__m512i __b)684 __mmask64 test_mm512_mask_cmpneq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
685 // CHECK-LABEL: @test_mm512_mask_cmpneq_epu8_mask
686 // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}}
687 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
688 return (__mmask64)_mm512_mask_cmpneq_epu8_mask(__u, __a, __b);
689 }
690
test_mm512_cmpneq_epi16_mask(__m512i __a,__m512i __b)691 __mmask32 test_mm512_cmpneq_epi16_mask(__m512i __a, __m512i __b) {
692 // CHECK-LABEL: @test_mm512_cmpneq_epi16_mask
693 // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}}
694 return (__mmask32)_mm512_cmpneq_epi16_mask(__a, __b);
695 }
696
test_mm512_mask_cmpneq_epi16_mask(__mmask32 __u,__m512i __a,__m512i __b)697 __mmask32 test_mm512_mask_cmpneq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
698 // CHECK-LABEL: @test_mm512_mask_cmpneq_epi16_mask
699 // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}}
700 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
701 return (__mmask32)_mm512_mask_cmpneq_epi16_mask(__u, __a, __b);
702 }
703
test_mm512_cmpneq_epu16_mask(__m512i __a,__m512i __b)704 __mmask32 test_mm512_cmpneq_epu16_mask(__m512i __a, __m512i __b) {
705 // CHECK-LABEL: @test_mm512_cmpneq_epu16_mask
706 // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}}
707 return (__mmask32)_mm512_cmpneq_epu16_mask(__a, __b);
708 }
709
test_mm512_mask_cmpneq_epu16_mask(__mmask32 __u,__m512i __a,__m512i __b)710 __mmask32 test_mm512_mask_cmpneq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
711 // CHECK-LABEL: @test_mm512_mask_cmpneq_epu16_mask
712 // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}}
713 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
714 return (__mmask32)_mm512_mask_cmpneq_epu16_mask(__u, __a, __b);
715 }
716
test_mm512_cmp_epi8_mask(__m512i __a,__m512i __b)717 __mmask64 test_mm512_cmp_epi8_mask(__m512i __a, __m512i __b) {
718 // CHECK-LABEL: @test_mm512_cmp_epi8_mask
719 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
720 return (__mmask64)_mm512_cmp_epi8_mask(__a, __b, 0);
721 }
722
test_mm512_mask_cmp_epi8_mask(__mmask64 __u,__m512i __a,__m512i __b)723 __mmask64 test_mm512_mask_cmp_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
724 // CHECK-LABEL: @test_mm512_mask_cmp_epi8_mask
725 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
726 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
727 return (__mmask64)_mm512_mask_cmp_epi8_mask(__u, __a, __b, 0);
728 }
729
test_mm512_cmp_epu8_mask(__m512i __a,__m512i __b)730 __mmask64 test_mm512_cmp_epu8_mask(__m512i __a, __m512i __b) {
731 // CHECK-LABEL: @test_mm512_cmp_epu8_mask
732 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
733 return (__mmask64)_mm512_cmp_epu8_mask(__a, __b, 0);
734 }
735
test_mm512_mask_cmp_epu8_mask(__mmask64 __u,__m512i __a,__m512i __b)736 __mmask64 test_mm512_mask_cmp_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
737 // CHECK-LABEL: @test_mm512_mask_cmp_epu8_mask
738 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
739 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
740 return (__mmask64)_mm512_mask_cmp_epu8_mask(__u, __a, __b, 0);
741 }
742
test_mm512_cmp_epi16_mask(__m512i __a,__m512i __b)743 __mmask32 test_mm512_cmp_epi16_mask(__m512i __a, __m512i __b) {
744 // CHECK-LABEL: @test_mm512_cmp_epi16_mask
745 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
746 return (__mmask32)_mm512_cmp_epi16_mask(__a, __b, 0);
747 }
748
test_mm512_mask_cmp_epi16_mask(__mmask32 __u,__m512i __a,__m512i __b)749 __mmask32 test_mm512_mask_cmp_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
750 // CHECK-LABEL: @test_mm512_mask_cmp_epi16_mask
751 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
752 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
753 return (__mmask32)_mm512_mask_cmp_epi16_mask(__u, __a, __b, 0);
754 }
755
test_mm512_cmp_epu16_mask(__m512i __a,__m512i __b)756 __mmask32 test_mm512_cmp_epu16_mask(__m512i __a, __m512i __b) {
757 // CHECK-LABEL: @test_mm512_cmp_epu16_mask
758 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
759 return (__mmask32)_mm512_cmp_epu16_mask(__a, __b, 0);
760 }
761
test_mm512_mask_cmp_epu16_mask(__mmask32 __u,__m512i __a,__m512i __b)762 __mmask32 test_mm512_mask_cmp_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
763 // CHECK-LABEL: @test_mm512_mask_cmp_epu16_mask
764 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
765 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
766 return (__mmask32)_mm512_mask_cmp_epu16_mask(__u, __a, __b, 0);
767 }
768
test_mm512_add_epi8(__m512i __A,__m512i __B)769 __m512i test_mm512_add_epi8 (__m512i __A, __m512i __B) {
770 //CHECK-LABEL: @test_mm512_add_epi8
771 //CHECK: add <64 x i8>
772 return _mm512_add_epi8(__A,__B);
773 }
774
test_mm512_mask_add_epi8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)775 __m512i test_mm512_mask_add_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
776 //CHECK-LABEL: @test_mm512_mask_add_epi8
777 //CHECK: add <64 x i8> %{{.*}}, %{{.*}}
778 //CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
779 return _mm512_mask_add_epi8(__W, __U, __A, __B);
780 }
781
test_mm512_maskz_add_epi8(__mmask64 __U,__m512i __A,__m512i __B)782 __m512i test_mm512_maskz_add_epi8 (__mmask64 __U, __m512i __A, __m512i __B) {
783 //CHECK-LABEL: @test_mm512_maskz_add_epi8
784 //CHECK: add <64 x i8> %{{.*}}, %{{.*}}
785 //CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
786 return _mm512_maskz_add_epi8(__U, __A, __B);
787 }
788
test_mm512_sub_epi8(__m512i __A,__m512i __B)789 __m512i test_mm512_sub_epi8 (__m512i __A, __m512i __B) {
790 //CHECK-LABEL: @test_mm512_sub_epi8
791 //CHECK: sub <64 x i8>
792 return _mm512_sub_epi8(__A, __B);
793 }
794
test_mm512_mask_sub_epi8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)795 __m512i test_mm512_mask_sub_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
796 //CHECK-LABEL: @test_mm512_mask_sub_epi8
797 //CHECK: sub <64 x i8> %{{.*}}, %{{.*}}
798 //CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
799 return _mm512_mask_sub_epi8(__W, __U, __A, __B);
800 }
801
test_mm512_maskz_sub_epi8(__mmask64 __U,__m512i __A,__m512i __B)802 __m512i test_mm512_maskz_sub_epi8 (__mmask64 __U, __m512i __A, __m512i __B) {
803 //CHECK-LABEL: @test_mm512_maskz_sub_epi8
804 //CHECK: sub <64 x i8> %{{.*}}, %{{.*}}
805 //CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
806 return _mm512_maskz_sub_epi8(__U, __A, __B);
807 }
808
test_mm512_add_epi16(__m512i __A,__m512i __B)809 __m512i test_mm512_add_epi16 (__m512i __A, __m512i __B) {
810 //CHECK-LABEL: @test_mm512_add_epi16
811 //CHECK: add <32 x i16>
812 return _mm512_add_epi16(__A, __B);
813 }
814
test_mm512_mask_add_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)815 __m512i test_mm512_mask_add_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
816 //CHECK-LABEL: @test_mm512_mask_add_epi16
817 //CHECK: add <32 x i16> %{{.*}}, %{{.*}}
818 //CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
819 return _mm512_mask_add_epi16(__W, __U, __A, __B);
820 }
821
test_mm512_maskz_add_epi16(__mmask32 __U,__m512i __A,__m512i __B)822 __m512i test_mm512_maskz_add_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
823 //CHECK-LABEL: @test_mm512_maskz_add_epi16
824 //CHECK: add <32 x i16> %{{.*}}, %{{.*}}
825 //CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
826 return _mm512_maskz_add_epi16(__U, __A, __B);
827 }
828
test_mm512_sub_epi16(__m512i __A,__m512i __B)829 __m512i test_mm512_sub_epi16 (__m512i __A, __m512i __B) {
830 //CHECK-LABEL: @test_mm512_sub_epi16
831 //CHECK: sub <32 x i16>
832 return _mm512_sub_epi16(__A, __B);
833 }
834
test_mm512_mask_sub_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)835 __m512i test_mm512_mask_sub_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
836 //CHECK-LABEL: @test_mm512_mask_sub_epi16
837 //CHECK: sub <32 x i16> %{{.*}}, %{{.*}}
838 //CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
839 return _mm512_mask_sub_epi16(__W, __U, __A, __B);
840 }
841
test_mm512_maskz_sub_epi16(__mmask32 __U,__m512i __A,__m512i __B)842 __m512i test_mm512_maskz_sub_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
843 //CHECK-LABEL: @test_mm512_maskz_sub_epi16
844 //CHECK: sub <32 x i16> %{{.*}}, %{{.*}}
845 //CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
846 return _mm512_maskz_sub_epi16(__U, __A, __B);
847 }
848
test_mm512_mullo_epi16(__m512i __A,__m512i __B)849 __m512i test_mm512_mullo_epi16 (__m512i __A, __m512i __B) {
850 //CHECK-LABEL: @test_mm512_mullo_epi16
851 //CHECK: mul <32 x i16>
852 return _mm512_mullo_epi16(__A, __B);
853 }
854
test_mm512_mask_mullo_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)855 __m512i test_mm512_mask_mullo_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
856 //CHECK-LABEL: @test_mm512_mask_mullo_epi16
857 //CHECK: mul <32 x i16> %{{.*}}, %{{.*}}
858 //CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
859 return _mm512_mask_mullo_epi16(__W, __U, __A, __B);
860 }
861
test_mm512_maskz_mullo_epi16(__mmask32 __U,__m512i __A,__m512i __B)862 __m512i test_mm512_maskz_mullo_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
863 //CHECK-LABEL: @test_mm512_maskz_mullo_epi16
864 //CHECK: mul <32 x i16> %{{.*}}, %{{.*}}
865 //CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
866 return _mm512_maskz_mullo_epi16(__U, __A, __B);
867 }
868
test_mm512_mask_blend_epi8(__mmask64 __U,__m512i __A,__m512i __W)869 __m512i test_mm512_mask_blend_epi8(__mmask64 __U, __m512i __A, __m512i __W) {
870 // CHECK-LABEL: @test_mm512_mask_blend_epi8
871 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
872 return _mm512_mask_blend_epi8(__U,__A,__W);
873 }
test_mm512_mask_blend_epi16(__mmask32 __U,__m512i __A,__m512i __W)874 __m512i test_mm512_mask_blend_epi16(__mmask32 __U, __m512i __A, __m512i __W) {
875 // CHECK-LABEL: @test_mm512_mask_blend_epi16
876 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
877 return _mm512_mask_blend_epi16(__U,__A,__W);
878 }
test_mm512_abs_epi8(__m512i __A)879 __m512i test_mm512_abs_epi8(__m512i __A) {
880 // CHECK-LABEL: @test_mm512_abs_epi8
881 // CHECK: [[ABS:%.*]] = call <64 x i8> @llvm.abs.v64i8(<64 x i8> %{{.*}}, i1 false)
882 return _mm512_abs_epi8(__A);
883 }
test_mm512_mask_abs_epi8(__m512i __W,__mmask64 __U,__m512i __A)884 __m512i test_mm512_mask_abs_epi8(__m512i __W, __mmask64 __U, __m512i __A) {
885 // CHECK-LABEL: @test_mm512_mask_abs_epi8
886 // CHECK: [[ABS:%.*]] = call <64 x i8> @llvm.abs.v64i8(<64 x i8> %{{.*}}, i1 false)
887 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> [[ABS]], <64 x i8> %{{.*}}
888 return _mm512_mask_abs_epi8(__W,__U,__A);
889 }
test_mm512_maskz_abs_epi8(__mmask64 __U,__m512i __A)890 __m512i test_mm512_maskz_abs_epi8(__mmask64 __U, __m512i __A) {
891 // CHECK-LABEL: @test_mm512_maskz_abs_epi8
892 // CHECK: [[ABS:%.*]] = call <64 x i8> @llvm.abs.v64i8(<64 x i8> %{{.*}}, i1 false)
893 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> [[ABS]], <64 x i8> %{{.*}}
894 return _mm512_maskz_abs_epi8(__U,__A);
895 }
test_mm512_abs_epi16(__m512i __A)896 __m512i test_mm512_abs_epi16(__m512i __A) {
897 // CHECK-LABEL: @test_mm512_abs_epi16
898 // CHECK: [[ABS:%.*]] = call <32 x i16> @llvm.abs.v32i16(<32 x i16> %{{.*}}, i1 false)
899 return _mm512_abs_epi16(__A);
900 }
test_mm512_mask_abs_epi16(__m512i __W,__mmask32 __U,__m512i __A)901 __m512i test_mm512_mask_abs_epi16(__m512i __W, __mmask32 __U, __m512i __A) {
902 // CHECK-LABEL: @test_mm512_mask_abs_epi16
903 // CHECK: [[ABS:%.*]] = call <32 x i16> @llvm.abs.v32i16(<32 x i16> %{{.*}}, i1 false)
904 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> [[ABS]], <32 x i16> %{{.*}}
905 return _mm512_mask_abs_epi16(__W,__U,__A);
906 }
test_mm512_maskz_abs_epi16(__mmask32 __U,__m512i __A)907 __m512i test_mm512_maskz_abs_epi16(__mmask32 __U, __m512i __A) {
908 // CHECK-LABEL: @test_mm512_maskz_abs_epi16
909 // CHECK: [[ABS:%.*]] = call <32 x i16> @llvm.abs.v32i16(<32 x i16> %{{.*}}, i1 false)
910 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> [[ABS]], <32 x i16> %{{.*}}
911 return _mm512_maskz_abs_epi16(__U,__A);
912 }
test_mm512_packs_epi32(__m512i __A,__m512i __B)913 __m512i test_mm512_packs_epi32(__m512i __A, __m512i __B) {
914 // CHECK-LABEL: @test_mm512_packs_epi32
915 // CHECK: @llvm.x86.avx512.packssdw.512
916 return _mm512_packs_epi32(__A,__B);
917 }
test_mm512_maskz_packs_epi32(__mmask32 __M,__m512i __A,__m512i __B)918 __m512i test_mm512_maskz_packs_epi32(__mmask32 __M, __m512i __A, __m512i __B) {
919 // CHECK-LABEL: @test_mm512_maskz_packs_epi32
920 // CHECK: @llvm.x86.avx512.packssdw.512
921 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
922 return _mm512_maskz_packs_epi32(__M,__A,__B);
923 }
test_mm512_mask_packs_epi32(__m512i __W,__mmask32 __M,__m512i __A,__m512i __B)924 __m512i test_mm512_mask_packs_epi32(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
925 // CHECK-LABEL: @test_mm512_mask_packs_epi32
926 // CHECK: @llvm.x86.avx512.packssdw.512
927 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
928 return _mm512_mask_packs_epi32(__W,__M,__A,__B);
929 }
test_mm512_packs_epi16(__m512i __A,__m512i __B)930 __m512i test_mm512_packs_epi16(__m512i __A, __m512i __B) {
931 // CHECK-LABEL: @test_mm512_packs_epi16
932 // CHECK: @llvm.x86.avx512.packsswb.512
933 return _mm512_packs_epi16(__A,__B);
934 }
test_mm512_mask_packs_epi16(__m512i __W,__mmask64 __M,__m512i __A,__m512i __B)935 __m512i test_mm512_mask_packs_epi16(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {
936 // CHECK-LABEL: @test_mm512_mask_packs_epi16
937 // CHECK: @llvm.x86.avx512.packsswb.512
938 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
939 return _mm512_mask_packs_epi16(__W,__M,__A,__B);
940 }
test_mm512_maskz_packs_epi16(__mmask64 __M,__m512i __A,__m512i __B)941 __m512i test_mm512_maskz_packs_epi16(__mmask64 __M, __m512i __A, __m512i __B) {
942 // CHECK-LABEL: @test_mm512_maskz_packs_epi16
943 // CHECK: @llvm.x86.avx512.packsswb.512
944 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
945 return _mm512_maskz_packs_epi16(__M,__A,__B);
946 }
test_mm512_packus_epi32(__m512i __A,__m512i __B)947 __m512i test_mm512_packus_epi32(__m512i __A, __m512i __B) {
948 // CHECK-LABEL: @test_mm512_packus_epi32
949 // CHECK: @llvm.x86.avx512.packusdw.512
950 return _mm512_packus_epi32(__A,__B);
951 }
test_mm512_maskz_packus_epi32(__mmask32 __M,__m512i __A,__m512i __B)952 __m512i test_mm512_maskz_packus_epi32(__mmask32 __M, __m512i __A, __m512i __B) {
953 // CHECK-LABEL: @test_mm512_maskz_packus_epi32
954 // CHECK: @llvm.x86.avx512.packusdw.512
955 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
956 return _mm512_maskz_packus_epi32(__M,__A,__B);
957 }
test_mm512_mask_packus_epi32(__m512i __W,__mmask32 __M,__m512i __A,__m512i __B)958 __m512i test_mm512_mask_packus_epi32(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
959 // CHECK-LABEL: @test_mm512_mask_packus_epi32
960 // CHECK: @llvm.x86.avx512.packusdw.512
961 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
962 return _mm512_mask_packus_epi32(__W,__M,__A,__B);
963 }
test_mm512_packus_epi16(__m512i __A,__m512i __B)964 __m512i test_mm512_packus_epi16(__m512i __A, __m512i __B) {
965 // CHECK-LABEL: @test_mm512_packus_epi16
966 // CHECK: @llvm.x86.avx512.packuswb.512
967 return _mm512_packus_epi16(__A,__B);
968 }
test_mm512_mask_packus_epi16(__m512i __W,__mmask64 __M,__m512i __A,__m512i __B)969 __m512i test_mm512_mask_packus_epi16(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {
970 // CHECK-LABEL: @test_mm512_mask_packus_epi16
971 // CHECK: @llvm.x86.avx512.packuswb.512
972 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
973 return _mm512_mask_packus_epi16(__W,__M,__A,__B);
974 }
test_mm512_maskz_packus_epi16(__mmask64 __M,__m512i __A,__m512i __B)975 __m512i test_mm512_maskz_packus_epi16(__mmask64 __M, __m512i __A, __m512i __B) {
976 // CHECK-LABEL: @test_mm512_maskz_packus_epi16
977 // CHECK: @llvm.x86.avx512.packuswb.512
978 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
979 return _mm512_maskz_packus_epi16(__M,__A,__B);
980 }
test_mm512_adds_epi8(__m512i __A,__m512i __B)981 __m512i test_mm512_adds_epi8(__m512i __A, __m512i __B) {
982 // CHECK-LABEL: @test_mm512_adds_epi8
983 // CHECK: @llvm.sadd.sat.v64i8
984 return _mm512_adds_epi8(__A,__B);
985 }
test_mm512_mask_adds_epi8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)986 __m512i test_mm512_mask_adds_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
987 // CHECK-LABEL: @test_mm512_mask_adds_epi8
988 // CHECK: @llvm.sadd.sat.v64i8
989 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
990 return _mm512_mask_adds_epi8(__W,__U,__A,__B);
991 }
test_mm512_maskz_adds_epi8(__mmask64 __U,__m512i __A,__m512i __B)992 __m512i test_mm512_maskz_adds_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
993 // CHECK-LABEL: @test_mm512_maskz_adds_epi8
994 // CHECK: @llvm.sadd.sat.v64i8
995 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
996 return _mm512_maskz_adds_epi8(__U,__A,__B);
997 }
test_mm512_adds_epi16(__m512i __A,__m512i __B)998 __m512i test_mm512_adds_epi16(__m512i __A, __m512i __B) {
999 // CHECK-LABEL: @test_mm512_adds_epi16
1000 // CHECK: @llvm.sadd.sat.v32i16
1001 return _mm512_adds_epi16(__A,__B);
1002 }
test_mm512_mask_adds_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1003 __m512i test_mm512_mask_adds_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1004 // CHECK-LABEL: @test_mm512_mask_adds_epi16
1005 // CHECK: @llvm.sadd.sat.v32i16
1006 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1007 return _mm512_mask_adds_epi16(__W,__U,__A,__B);
1008 }
test_mm512_maskz_adds_epi16(__mmask32 __U,__m512i __A,__m512i __B)1009 __m512i test_mm512_maskz_adds_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1010 // CHECK-LABEL: @test_mm512_maskz_adds_epi16
1011 // CHECK: @llvm.sadd.sat.v32i16
1012 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1013 return _mm512_maskz_adds_epi16(__U,__A,__B);
1014 }
test_mm512_adds_epu8(__m512i __A,__m512i __B)1015 __m512i test_mm512_adds_epu8(__m512i __A, __m512i __B) {
1016 // CHECK-LABEL: @test_mm512_adds_epu8
1017 // CHECK-NOT: @llvm.x86.avx512.mask.paddus.b.512
1018 // CHECK: call <64 x i8> @llvm.uadd.sat.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})
1019 return _mm512_adds_epu8(__A,__B);
1020 }
test_mm512_mask_adds_epu8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)1021 __m512i test_mm512_mask_adds_epu8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1022 // CHECK-LABEL: @test_mm512_mask_adds_epu8
1023 // CHECK-NOT: @llvm.x86.avx512.mask.paddus.b.512
1024 // CHECK: call <64 x i8> @llvm.uadd.sat.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})
1025 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1026 return _mm512_mask_adds_epu8(__W,__U,__A,__B);
1027 }
test_mm512_maskz_adds_epu8(__mmask64 __U,__m512i __A,__m512i __B)1028 __m512i test_mm512_maskz_adds_epu8(__mmask64 __U, __m512i __A, __m512i __B) {
1029 // CHECK-LABEL: @test_mm512_maskz_adds_epu8
1030 // CHECK-NOT: @llvm.x86.avx512.mask.paddus.b.512
1031 // CHECK: call <64 x i8> @llvm.uadd.sat.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})
1032 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1033 return _mm512_maskz_adds_epu8(__U,__A,__B);
1034 }
test_mm512_adds_epu16(__m512i __A,__m512i __B)1035 __m512i test_mm512_adds_epu16(__m512i __A, __m512i __B) {
1036 // CHECK-LABEL: @test_mm512_adds_epu16
1037 // CHECK-NOT: @llvm.x86.avx512.mask.paddus.w.512
1038 // CHECK: call <32 x i16> @llvm.uadd.sat.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})
1039 return _mm512_adds_epu16(__A,__B);
1040 }
test_mm512_mask_adds_epu16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1041 __m512i test_mm512_mask_adds_epu16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1042 // CHECK-LABEL: @test_mm512_mask_adds_epu16
1043 // CHECK-NOT: @llvm.x86.avx512.mask.paddus.w.512
1044 // CHECK: call <32 x i16> @llvm.uadd.sat.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})
1045 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1046 return _mm512_mask_adds_epu16(__W,__U,__A,__B);
1047 }
test_mm512_maskz_adds_epu16(__mmask32 __U,__m512i __A,__m512i __B)1048 __m512i test_mm512_maskz_adds_epu16(__mmask32 __U, __m512i __A, __m512i __B) {
1049 // CHECK-LABEL: @test_mm512_maskz_adds_epu16
1050 // CHECK-NOT: @llvm.x86.avx512.mask.paddus.w.512
1051 // CHECK: call <32 x i16> @llvm.uadd.sat.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})
1052 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1053 return _mm512_maskz_adds_epu16(__U,__A,__B);
1054 }
test_mm512_avg_epu8(__m512i __A,__m512i __B)1055 __m512i test_mm512_avg_epu8(__m512i __A, __m512i __B) {
1056 // CHECK-LABEL: @test_mm512_avg_epu8
1057 // CHECK: @llvm.x86.avx512.pavg.b.512
1058 return _mm512_avg_epu8(__A,__B);
1059 }
test_mm512_mask_avg_epu8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)1060 __m512i test_mm512_mask_avg_epu8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1061 // CHECK-LABEL: @test_mm512_mask_avg_epu8
1062 // CHECK: @llvm.x86.avx512.pavg.b.512
1063 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1064 return _mm512_mask_avg_epu8(__W,__U,__A,__B);
1065 }
test_mm512_maskz_avg_epu8(__mmask64 __U,__m512i __A,__m512i __B)1066 __m512i test_mm512_maskz_avg_epu8(__mmask64 __U, __m512i __A, __m512i __B) {
1067 // CHECK-LABEL: @test_mm512_maskz_avg_epu8
1068 // CHECK: @llvm.x86.avx512.pavg.b.512
1069 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1070 return _mm512_maskz_avg_epu8(__U,__A,__B);
1071 }
test_mm512_avg_epu16(__m512i __A,__m512i __B)1072 __m512i test_mm512_avg_epu16(__m512i __A, __m512i __B) {
1073 // CHECK-LABEL: @test_mm512_avg_epu16
1074 // CHECK: @llvm.x86.avx512.pavg.w.512
1075 return _mm512_avg_epu16(__A,__B);
1076 }
test_mm512_mask_avg_epu16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1077 __m512i test_mm512_mask_avg_epu16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1078 // CHECK-LABEL: @test_mm512_mask_avg_epu16
1079 // CHECK: @llvm.x86.avx512.pavg.w.512
1080 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1081 return _mm512_mask_avg_epu16(__W,__U,__A,__B);
1082 }
test_mm512_maskz_avg_epu16(__mmask32 __U,__m512i __A,__m512i __B)1083 __m512i test_mm512_maskz_avg_epu16(__mmask32 __U, __m512i __A, __m512i __B) {
1084 // CHECK-LABEL: @test_mm512_maskz_avg_epu16
1085 // CHECK: @llvm.x86.avx512.pavg.w.512
1086 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1087 return _mm512_maskz_avg_epu16(__U,__A,__B);
1088 }
test_mm512_max_epi8(__m512i __A,__m512i __B)1089 __m512i test_mm512_max_epi8(__m512i __A, __m512i __B) {
1090 // CHECK-LABEL: @test_mm512_max_epi8
1091 // CHECK: [[RES:%.*]] = call <64 x i8> @llvm.smax.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})
1092 return _mm512_max_epi8(__A,__B);
1093 }
test_mm512_maskz_max_epi8(__mmask64 __M,__m512i __A,__m512i __B)1094 __m512i test_mm512_maskz_max_epi8(__mmask64 __M, __m512i __A, __m512i __B) {
1095 // CHECK-LABEL: @test_mm512_maskz_max_epi8
1096 // CHECK: [[RES:%.*]] = call <64 x i8> @llvm.smax.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})
1097 // CHECK: select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}
1098 return _mm512_maskz_max_epi8(__M,__A,__B);
1099 }
test_mm512_mask_max_epi8(__m512i __W,__mmask64 __M,__m512i __A,__m512i __B)1100 __m512i test_mm512_mask_max_epi8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {
1101 // CHECK-LABEL: @test_mm512_mask_max_epi8
1102 // CHECK: [[RES:%.*]] = call <64 x i8> @llvm.smax.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})
1103 // CHECK: select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}
1104 return _mm512_mask_max_epi8(__W,__M,__A,__B);
1105 }
test_mm512_max_epi16(__m512i __A,__m512i __B)1106 __m512i test_mm512_max_epi16(__m512i __A, __m512i __B) {
1107 // CHECK-LABEL: @test_mm512_max_epi16
1108 // CHECK: [[RES:%.*]] = call <32 x i16> @llvm.smax.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})
1109 return _mm512_max_epi16(__A,__B);
1110 }
test_mm512_maskz_max_epi16(__mmask32 __M,__m512i __A,__m512i __B)1111 __m512i test_mm512_maskz_max_epi16(__mmask32 __M, __m512i __A, __m512i __B) {
1112 // CHECK-LABEL: @test_mm512_maskz_max_epi16
1113 // CHECK: [[RES:%.*]] = call <32 x i16> @llvm.smax.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})
1114 // CHECK: select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}
1115 return _mm512_maskz_max_epi16(__M,__A,__B);
1116 }
test_mm512_mask_max_epi16(__m512i __W,__mmask32 __M,__m512i __A,__m512i __B)1117 __m512i test_mm512_mask_max_epi16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
1118 // CHECK-LABEL: @test_mm512_mask_max_epi16
1119 // CHECK: [[RES:%.*]] = call <32 x i16> @llvm.smax.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})
1120 // CHECK: select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}
1121 return _mm512_mask_max_epi16(__W,__M,__A,__B);
1122 }
test_mm512_max_epu8(__m512i __A,__m512i __B)1123 __m512i test_mm512_max_epu8(__m512i __A, __m512i __B) {
1124 // CHECK-LABEL: @test_mm512_max_epu8
1125 // CHECK: [[RES:%.*]] = call <64 x i8> @llvm.umax.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})
1126 return _mm512_max_epu8(__A,__B);
1127 }
test_mm512_maskz_max_epu8(__mmask64 __M,__m512i __A,__m512i __B)1128 __m512i test_mm512_maskz_max_epu8(__mmask64 __M, __m512i __A, __m512i __B) {
1129 // CHECK-LABEL: @test_mm512_maskz_max_epu8
1130 // CHECK: [[RES:%.*]] = call <64 x i8> @llvm.umax.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})
1131 // CHECK: select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}
1132 return _mm512_maskz_max_epu8(__M,__A,__B);
1133 }
test_mm512_mask_max_epu8(__m512i __W,__mmask64 __M,__m512i __A,__m512i __B)1134 __m512i test_mm512_mask_max_epu8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {
1135 // CHECK-LABEL: @test_mm512_mask_max_epu8
1136 // CHECK: [[RES:%.*]] = call <64 x i8> @llvm.umax.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})
1137 // CHECK: select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}
1138 return _mm512_mask_max_epu8(__W,__M,__A,__B);
1139 }
test_mm512_max_epu16(__m512i __A,__m512i __B)1140 __m512i test_mm512_max_epu16(__m512i __A, __m512i __B) {
1141 // CHECK-LABEL: @test_mm512_max_epu16
1142 // CHECK: [[RES:%.*]] = call <32 x i16> @llvm.umax.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})
1143 return _mm512_max_epu16(__A,__B);
1144 }
test_mm512_maskz_max_epu16(__mmask32 __M,__m512i __A,__m512i __B)1145 __m512i test_mm512_maskz_max_epu16(__mmask32 __M, __m512i __A, __m512i __B) {
1146 // CHECK-LABEL: @test_mm512_maskz_max_epu16
1147 // CHECK: [[RES:%.*]] = call <32 x i16> @llvm.umax.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})
1148 // CHECK: select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}
1149 return _mm512_maskz_max_epu16(__M,__A,__B);
1150 }
test_mm512_mask_max_epu16(__m512i __W,__mmask32 __M,__m512i __A,__m512i __B)1151 __m512i test_mm512_mask_max_epu16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
1152 // CHECK-LABEL: @test_mm512_mask_max_epu16
1153 // CHECK: [[RES:%.*]] = call <32 x i16> @llvm.umax.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})
1154 // CHECK: select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}
1155 return _mm512_mask_max_epu16(__W,__M,__A,__B);
1156 }
test_mm512_min_epi8(__m512i __A,__m512i __B)1157 __m512i test_mm512_min_epi8(__m512i __A, __m512i __B) {
1158 // CHECK-LABEL: @test_mm512_min_epi8
1159 // CHECK: [[RES:%.*]] = call <64 x i8> @llvm.smin.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})
1160 return _mm512_min_epi8(__A,__B);
1161 }
test_mm512_maskz_min_epi8(__mmask64 __M,__m512i __A,__m512i __B)1162 __m512i test_mm512_maskz_min_epi8(__mmask64 __M, __m512i __A, __m512i __B) {
1163 // CHECK-LABEL: @test_mm512_maskz_min_epi8
1164 // CHECK: [[RES:%.*]] = call <64 x i8> @llvm.smin.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})
1165 // CHECK: select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}
1166 return _mm512_maskz_min_epi8(__M,__A,__B);
1167 }
test_mm512_mask_min_epi8(__m512i __W,__mmask64 __M,__m512i __A,__m512i __B)1168 __m512i test_mm512_mask_min_epi8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {
1169 // CHECK-LABEL: @test_mm512_mask_min_epi8
1170 // CHECK: [[RES:%.*]] = call <64 x i8> @llvm.smin.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})
1171 // CHECK: select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}
1172 return _mm512_mask_min_epi8(__W,__M,__A,__B);
1173 }
test_mm512_min_epi16(__m512i __A,__m512i __B)1174 __m512i test_mm512_min_epi16(__m512i __A, __m512i __B) {
1175 // CHECK-LABEL: @test_mm512_min_epi16
1176 // CHECK: [[RES:%.*]] = call <32 x i16> @llvm.smin.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})
1177 return _mm512_min_epi16(__A,__B);
1178 }
test_mm512_maskz_min_epi16(__mmask32 __M,__m512i __A,__m512i __B)1179 __m512i test_mm512_maskz_min_epi16(__mmask32 __M, __m512i __A, __m512i __B) {
1180 // CHECK-LABEL: @test_mm512_maskz_min_epi16
1181 // CHECK: [[RES:%.*]] = call <32 x i16> @llvm.smin.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})
1182 // CHECK: select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}
1183 return _mm512_maskz_min_epi16(__M,__A,__B);
1184 }
test_mm512_mask_min_epi16(__m512i __W,__mmask32 __M,__m512i __A,__m512i __B)1185 __m512i test_mm512_mask_min_epi16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
1186 // CHECK-LABEL: @test_mm512_mask_min_epi16
1187 // CHECK: [[RES:%.*]] = call <32 x i16> @llvm.smin.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})
1188 // CHECK: select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}
1189 return _mm512_mask_min_epi16(__W,__M,__A,__B);
1190 }
test_mm512_min_epu8(__m512i __A,__m512i __B)1191 __m512i test_mm512_min_epu8(__m512i __A, __m512i __B) {
1192 // CHECK-LABEL: @test_mm512_min_epu8
1193 // CHECK: [[RES:%.*]] = call <64 x i8> @llvm.umin.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})
1194 return _mm512_min_epu8(__A,__B);
1195 }
test_mm512_maskz_min_epu8(__mmask64 __M,__m512i __A,__m512i __B)1196 __m512i test_mm512_maskz_min_epu8(__mmask64 __M, __m512i __A, __m512i __B) {
1197 // CHECK-LABEL: @test_mm512_maskz_min_epu8
1198 // CHECK: [[RES:%.*]] = call <64 x i8> @llvm.umin.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})
1199 // CHECK: select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}
1200 return _mm512_maskz_min_epu8(__M,__A,__B);
1201 }
test_mm512_mask_min_epu8(__m512i __W,__mmask64 __M,__m512i __A,__m512i __B)1202 __m512i test_mm512_mask_min_epu8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {
1203 // CHECK-LABEL: @test_mm512_mask_min_epu8
1204 // CHECK: [[RES:%.*]] = call <64 x i8> @llvm.umin.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})
1205 // CHECK: select <64 x i1> {{.*}}, <64 x i8> [[RES]], <64 x i8> {{.*}}
1206 return _mm512_mask_min_epu8(__W,__M,__A,__B);
1207 }
test_mm512_min_epu16(__m512i __A,__m512i __B)1208 __m512i test_mm512_min_epu16(__m512i __A, __m512i __B) {
1209 // CHECK-LABEL: @test_mm512_min_epu16
1210 // CHECK: [[RES:%.*]] = call <32 x i16> @llvm.umin.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})
1211 return _mm512_min_epu16(__A,__B);
1212 }
test_mm512_maskz_min_epu16(__mmask32 __M,__m512i __A,__m512i __B)1213 __m512i test_mm512_maskz_min_epu16(__mmask32 __M, __m512i __A, __m512i __B) {
1214 // CHECK-LABEL: @test_mm512_maskz_min_epu16
1215 // CHECK: [[RES:%.*]] = call <32 x i16> @llvm.umin.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})
1216 // CHECK: select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}
1217 return _mm512_maskz_min_epu16(__M,__A,__B);
1218 }
test_mm512_mask_min_epu16(__m512i __W,__mmask32 __M,__m512i __A,__m512i __B)1219 __m512i test_mm512_mask_min_epu16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
1220 // CHECK-LABEL: @test_mm512_mask_min_epu16
1221 // CHECK: [[RES:%.*]] = call <32 x i16> @llvm.umin.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})
1222 // CHECK: select <32 x i1> {{.*}}, <32 x i16> [[RES]], <32 x i16> {{.*}}
1223 return _mm512_mask_min_epu16(__W,__M,__A,__B);
1224 }
test_mm512_shuffle_epi8(__m512i __A,__m512i __B)1225 __m512i test_mm512_shuffle_epi8(__m512i __A, __m512i __B) {
1226 // CHECK-LABEL: @test_mm512_shuffle_epi8
1227 // CHECK: @llvm.x86.avx512.pshuf.b.512
1228 return _mm512_shuffle_epi8(__A,__B);
1229 }
test_mm512_mask_shuffle_epi8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)1230 __m512i test_mm512_mask_shuffle_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1231 // CHECK-LABEL: @test_mm512_mask_shuffle_epi8
1232 // CHECK: @llvm.x86.avx512.pshuf.b.512
1233 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1234 return _mm512_mask_shuffle_epi8(__W,__U,__A,__B);
1235 }
test_mm512_maskz_shuffle_epi8(__mmask64 __U,__m512i __A,__m512i __B)1236 __m512i test_mm512_maskz_shuffle_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
1237 // CHECK-LABEL: @test_mm512_maskz_shuffle_epi8
1238 // CHECK: @llvm.x86.avx512.pshuf.b.512
1239 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1240 return _mm512_maskz_shuffle_epi8(__U,__A,__B);
1241 }
test_mm512_subs_epi8(__m512i __A,__m512i __B)1242 __m512i test_mm512_subs_epi8(__m512i __A, __m512i __B) {
1243 // CHECK-LABEL: @test_mm512_subs_epi8
1244 // CHECK: @llvm.ssub.sat.v64i8
1245 return _mm512_subs_epi8(__A,__B);
1246 }
test_mm512_mask_subs_epi8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)1247 __m512i test_mm512_mask_subs_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1248 // CHECK-LABEL: @test_mm512_mask_subs_epi8
1249 // CHECK: @llvm.ssub.sat.v64i8
1250 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1251 return _mm512_mask_subs_epi8(__W,__U,__A,__B);
1252 }
test_mm512_maskz_subs_epi8(__mmask64 __U,__m512i __A,__m512i __B)1253 __m512i test_mm512_maskz_subs_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
1254 // CHECK-LABEL: @test_mm512_maskz_subs_epi8
1255 // CHECK: @llvm.ssub.sat.v64i8
1256 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1257 return _mm512_maskz_subs_epi8(__U,__A,__B);
1258 }
test_mm512_subs_epi16(__m512i __A,__m512i __B)1259 __m512i test_mm512_subs_epi16(__m512i __A, __m512i __B) {
1260 // CHECK-LABEL: @test_mm512_subs_epi16
1261 // CHECK: @llvm.ssub.sat.v32i16
1262 return _mm512_subs_epi16(__A,__B);
1263 }
test_mm512_mask_subs_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1264 __m512i test_mm512_mask_subs_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1265 // CHECK-LABEL: @test_mm512_mask_subs_epi16
1266 // CHECK: @llvm.ssub.sat.v32i16
1267 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1268 return _mm512_mask_subs_epi16(__W,__U,__A,__B);
1269 }
test_mm512_maskz_subs_epi16(__mmask32 __U,__m512i __A,__m512i __B)1270 __m512i test_mm512_maskz_subs_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1271 // CHECK-LABEL: @test_mm512_maskz_subs_epi16
1272 // CHECK: @llvm.ssub.sat.v32i16
1273 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1274 return _mm512_maskz_subs_epi16(__U,__A,__B);
1275 }
test_mm512_subs_epu8(__m512i __A,__m512i __B)1276 __m512i test_mm512_subs_epu8(__m512i __A, __m512i __B) {
1277 // CHECK-LABEL: @test_mm512_subs_epu8
1278 // CHECK-NOT: @llvm.x86.avx512.mask.psubus.b.512
1279 // CHECK: call <64 x i8> @llvm.usub.sat.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})
1280 return _mm512_subs_epu8(__A,__B);
1281 }
test_mm512_mask_subs_epu8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)1282 __m512i test_mm512_mask_subs_epu8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1283 // CHECK-LABEL: @test_mm512_mask_subs_epu8
1284 // CHECK-NOT: @llvm.x86.avx512.mask.psubus.b.512
1285 // CHECK: call <64 x i8> @llvm.usub.sat.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})
1286 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1287 return _mm512_mask_subs_epu8(__W,__U,__A,__B);
1288 }
test_mm512_maskz_subs_epu8(__mmask64 __U,__m512i __A,__m512i __B)1289 __m512i test_mm512_maskz_subs_epu8(__mmask64 __U, __m512i __A, __m512i __B) {
1290 // CHECK-LABEL: @test_mm512_maskz_subs_epu8
1291 // CHECK-NOT: @llvm.x86.avx512.mask.psubus.b.512
1292 // CHECK: call <64 x i8> @llvm.usub.sat.v64i8(<64 x i8> %{{.*}}, <64 x i8> %{{.*}})
1293 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1294 return _mm512_maskz_subs_epu8(__U,__A,__B);
1295 }
test_mm512_subs_epu16(__m512i __A,__m512i __B)1296 __m512i test_mm512_subs_epu16(__m512i __A, __m512i __B) {
1297 // CHECK-LABEL: @test_mm512_subs_epu16
1298 // CHECK-NOT: @llvm.x86.avx512.mask.psubus.w.512
1299 // CHECK: call <32 x i16> @llvm.usub.sat.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})
1300 return _mm512_subs_epu16(__A,__B);
1301 }
test_mm512_mask_subs_epu16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1302 __m512i test_mm512_mask_subs_epu16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1303 // CHECK-LABEL: @test_mm512_mask_subs_epu16
1304 // CHECK-NOT: @llvm.x86.avx512.mask.psubus.w.512
1305 // CHECK: call <32 x i16> @llvm.usub.sat.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})
1306 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1307 return _mm512_mask_subs_epu16(__W,__U,__A,__B);
1308 }
test_mm512_maskz_subs_epu16(__mmask32 __U,__m512i __A,__m512i __B)1309 __m512i test_mm512_maskz_subs_epu16(__mmask32 __U, __m512i __A, __m512i __B) {
1310 // CHECK-LABEL: @test_mm512_maskz_subs_epu16
1311 // CHECK-NOT: @llvm.x86.avx512.mask.psubus.w.512
1312 // CHECK: call <32 x i16> @llvm.usub.sat.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})
1313 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1314 return _mm512_maskz_subs_epu16(__U,__A,__B);
1315 }
test_mm512_mask2_permutex2var_epi16(__m512i __A,__m512i __I,__mmask32 __U,__m512i __B)1316 __m512i test_mm512_mask2_permutex2var_epi16(__m512i __A, __m512i __I, __mmask32 __U, __m512i __B) {
1317 // CHECK-LABEL: @test_mm512_mask2_permutex2var_epi16
1318 // CHECK: @llvm.x86.avx512.vpermi2var.hi.512
1319 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1320 return _mm512_mask2_permutex2var_epi16(__A,__I,__U,__B);
1321 }
test_mm512_permutex2var_epi16(__m512i __A,__m512i __I,__m512i __B)1322 __m512i test_mm512_permutex2var_epi16(__m512i __A, __m512i __I, __m512i __B) {
1323 // CHECK-LABEL: @test_mm512_permutex2var_epi16
1324 // CHECK: @llvm.x86.avx512.vpermi2var.hi.512
1325 return _mm512_permutex2var_epi16(__A,__I,__B);
1326 }
test_mm512_mask_permutex2var_epi16(__m512i __A,__mmask32 __U,__m512i __I,__m512i __B)1327 __m512i test_mm512_mask_permutex2var_epi16(__m512i __A, __mmask32 __U, __m512i __I, __m512i __B) {
1328 // CHECK-LABEL: @test_mm512_mask_permutex2var_epi16
1329 // CHECK: @llvm.x86.avx512.vpermi2var.hi.512
1330 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1331 return _mm512_mask_permutex2var_epi16(__A,__U,__I,__B);
1332 }
test_mm512_maskz_permutex2var_epi16(__mmask32 __U,__m512i __A,__m512i __I,__m512i __B)1333 __m512i test_mm512_maskz_permutex2var_epi16(__mmask32 __U, __m512i __A, __m512i __I, __m512i __B) {
1334 // CHECK-LABEL: @test_mm512_maskz_permutex2var_epi16
1335 // CHECK: @llvm.x86.avx512.vpermi2var.hi.512
1336 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1337 return _mm512_maskz_permutex2var_epi16(__U,__A,__I,__B);
1338 }
1339
test_mm512_mulhrs_epi16(__m512i __A,__m512i __B)1340 __m512i test_mm512_mulhrs_epi16(__m512i __A, __m512i __B) {
1341 // CHECK-LABEL: @test_mm512_mulhrs_epi16
1342 // CHECK: @llvm.x86.avx512.pmul.hr.sw.512
1343 return _mm512_mulhrs_epi16(__A,__B);
1344 }
test_mm512_mask_mulhrs_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1345 __m512i test_mm512_mask_mulhrs_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1346 // CHECK-LABEL: @test_mm512_mask_mulhrs_epi16
1347 // CHECK: @llvm.x86.avx512.pmul.hr.sw.512
1348 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1349 return _mm512_mask_mulhrs_epi16(__W,__U,__A,__B);
1350 }
test_mm512_maskz_mulhrs_epi16(__mmask32 __U,__m512i __A,__m512i __B)1351 __m512i test_mm512_maskz_mulhrs_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1352 // CHECK-LABEL: @test_mm512_maskz_mulhrs_epi16
1353 // CHECK: @llvm.x86.avx512.pmul.hr.sw.512
1354 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1355 return _mm512_maskz_mulhrs_epi16(__U,__A,__B);
1356 }
test_mm512_mulhi_epi16(__m512i __A,__m512i __B)1357 __m512i test_mm512_mulhi_epi16(__m512i __A, __m512i __B) {
1358 // CHECK-LABEL: @test_mm512_mulhi_epi16
1359 // CHECK: @llvm.x86.avx512.pmulh.w.512
1360 return _mm512_mulhi_epi16(__A,__B);
1361 }
test_mm512_mask_mulhi_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1362 __m512i test_mm512_mask_mulhi_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1363 // CHECK-LABEL: @test_mm512_mask_mulhi_epi16
1364 // CHECK: @llvm.x86.avx512.pmulh.w.512
1365 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1366 return _mm512_mask_mulhi_epi16(__W,__U,__A,__B);
1367 }
test_mm512_maskz_mulhi_epi16(__mmask32 __U,__m512i __A,__m512i __B)1368 __m512i test_mm512_maskz_mulhi_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1369 // CHECK-LABEL: @test_mm512_maskz_mulhi_epi16
1370 // CHECK: @llvm.x86.avx512.pmulh.w.512
1371 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1372 return _mm512_maskz_mulhi_epi16(__U,__A,__B);
1373 }
test_mm512_mulhi_epu16(__m512i __A,__m512i __B)1374 __m512i test_mm512_mulhi_epu16(__m512i __A, __m512i __B) {
1375 // CHECK-LABEL: @test_mm512_mulhi_epu16
1376 // CHECK: @llvm.x86.avx512.pmulhu.w.512
1377 return _mm512_mulhi_epu16(__A,__B);
1378 }
test_mm512_mask_mulhi_epu16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1379 __m512i test_mm512_mask_mulhi_epu16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1380 // CHECK-LABEL: @test_mm512_mask_mulhi_epu16
1381 // CHECK: @llvm.x86.avx512.pmulhu.w.512
1382 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1383 return _mm512_mask_mulhi_epu16(__W,__U,__A,__B);
1384 }
test_mm512_maskz_mulhi_epu16(__mmask32 __U,__m512i __A,__m512i __B)1385 __m512i test_mm512_maskz_mulhi_epu16(__mmask32 __U, __m512i __A, __m512i __B) {
1386 // CHECK-LABEL: @test_mm512_maskz_mulhi_epu16
1387 // CHECK: @llvm.x86.avx512.pmulhu.w.512
1388 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1389 return _mm512_maskz_mulhi_epu16(__U,__A,__B);
1390 }
1391
test_mm512_maddubs_epi16(__m512i __X,__m512i __Y)1392 __m512i test_mm512_maddubs_epi16(__m512i __X, __m512i __Y) {
1393 // CHECK-LABEL: @test_mm512_maddubs_epi16
1394 // CHECK: @llvm.x86.avx512.pmaddubs.w.512
1395 return _mm512_maddubs_epi16(__X,__Y);
1396 }
test_mm512_mask_maddubs_epi16(__m512i __W,__mmask32 __U,__m512i __X,__m512i __Y)1397 __m512i test_mm512_mask_maddubs_epi16(__m512i __W, __mmask32 __U, __m512i __X, __m512i __Y) {
1398 // CHECK-LABEL: @test_mm512_mask_maddubs_epi16
1399 // CHECK: @llvm.x86.avx512.pmaddubs.w.512
1400 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1401 return _mm512_mask_maddubs_epi16(__W,__U,__X,__Y);
1402 }
test_mm512_maskz_maddubs_epi16(__mmask32 __U,__m512i __X,__m512i __Y)1403 __m512i test_mm512_maskz_maddubs_epi16(__mmask32 __U, __m512i __X, __m512i __Y) {
1404 // CHECK-LABEL: @test_mm512_maskz_maddubs_epi16
1405 // CHECK: @llvm.x86.avx512.pmaddubs.w.512
1406 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1407 return _mm512_maskz_maddubs_epi16(__U,__X,__Y);
1408 }
test_mm512_madd_epi16(__m512i __A,__m512i __B)1409 __m512i test_mm512_madd_epi16(__m512i __A, __m512i __B) {
1410 // CHECK-LABEL: @test_mm512_madd_epi16
1411 // CHECK: @llvm.x86.avx512.pmaddw.d.512
1412 return _mm512_madd_epi16(__A,__B);
1413 }
test_mm512_mask_madd_epi16(__m512i __W,__mmask16 __U,__m512i __A,__m512i __B)1414 __m512i test_mm512_mask_madd_epi16(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
1415 // CHECK-LABEL: @test_mm512_mask_madd_epi16
1416 // CHECK: @llvm.x86.avx512.pmaddw.d.512
1417 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1418 return _mm512_mask_madd_epi16(__W,__U,__A,__B);
1419 }
test_mm512_maskz_madd_epi16(__mmask16 __U,__m512i __A,__m512i __B)1420 __m512i test_mm512_maskz_madd_epi16(__mmask16 __U, __m512i __A, __m512i __B) {
1421 // CHECK-LABEL: @test_mm512_maskz_madd_epi16
1422 // CHECK: @llvm.x86.avx512.pmaddw.d.512
1423 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
1424 return _mm512_maskz_madd_epi16(__U,__A,__B);
1425 }
1426
test_mm512_cvtsepi16_epi8(__m512i __A)1427 __m256i test_mm512_cvtsepi16_epi8(__m512i __A) {
1428 // CHECK-LABEL: @test_mm512_cvtsepi16_epi8
1429 // CHECK: @llvm.x86.avx512.mask.pmovs.wb.512
1430 return _mm512_cvtsepi16_epi8(__A);
1431 }
1432
test_mm512_mask_cvtsepi16_epi8(__m256i __O,__mmask32 __M,__m512i __A)1433 __m256i test_mm512_mask_cvtsepi16_epi8(__m256i __O, __mmask32 __M, __m512i __A) {
1434 // CHECK-LABEL: @test_mm512_mask_cvtsepi16_epi8
1435 // CHECK: @llvm.x86.avx512.mask.pmovs.wb.512
1436 return _mm512_mask_cvtsepi16_epi8(__O, __M, __A);
1437 }
1438
test_mm512_maskz_cvtsepi16_epi8(__mmask32 __M,__m512i __A)1439 __m256i test_mm512_maskz_cvtsepi16_epi8(__mmask32 __M, __m512i __A) {
1440 // CHECK-LABEL: @test_mm512_maskz_cvtsepi16_epi8
1441 // CHECK: @llvm.x86.avx512.mask.pmovs.wb.512
1442 return _mm512_maskz_cvtsepi16_epi8(__M, __A);
1443 }
1444
test_mm512_cvtusepi16_epi8(__m512i __A)1445 __m256i test_mm512_cvtusepi16_epi8(__m512i __A) {
1446 // CHECK-LABEL: @test_mm512_cvtusepi16_epi8
1447 // CHECK: @llvm.x86.avx512.mask.pmovus.wb.512
1448 return _mm512_cvtusepi16_epi8(__A);
1449 }
1450
test_mm512_mask_cvtusepi16_epi8(__m256i __O,__mmask32 __M,__m512i __A)1451 __m256i test_mm512_mask_cvtusepi16_epi8(__m256i __O, __mmask32 __M, __m512i __A) {
1452 // CHECK-LABEL: @test_mm512_mask_cvtusepi16_epi8
1453 // CHECK: @llvm.x86.avx512.mask.pmovus.wb.512
1454 return _mm512_mask_cvtusepi16_epi8(__O, __M, __A);
1455 }
1456
test_mm512_maskz_cvtusepi16_epi8(__mmask32 __M,__m512i __A)1457 __m256i test_mm512_maskz_cvtusepi16_epi8(__mmask32 __M, __m512i __A) {
1458 // CHECK-LABEL: @test_mm512_maskz_cvtusepi16_epi8
1459 // CHECK: @llvm.x86.avx512.mask.pmovus.wb.512
1460 return _mm512_maskz_cvtusepi16_epi8(__M, __A);
1461 }
1462
test_mm512_cvtepi16_epi8(__m512i __A)1463 __m256i test_mm512_cvtepi16_epi8(__m512i __A) {
1464 // CHECK-LABEL: @test_mm512_cvtepi16_epi8
1465 // CHECK: trunc <32 x i16> %{{.*}} to <32 x i8>
1466 return _mm512_cvtepi16_epi8(__A);
1467 }
1468
test_mm512_mask_cvtepi16_epi8(__m256i __O,__mmask32 __M,__m512i __A)1469 __m256i test_mm512_mask_cvtepi16_epi8(__m256i __O, __mmask32 __M, __m512i __A) {
1470 // CHECK-LABEL: @test_mm512_mask_cvtepi16_epi8
1471 // CHECK: trunc <32 x i16> %{{.*}} to <32 x i8>
1472 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1473 return _mm512_mask_cvtepi16_epi8(__O, __M, __A);
1474 }
1475
test_mm512_maskz_cvtepi16_epi8(__mmask32 __M,__m512i __A)1476 __m256i test_mm512_maskz_cvtepi16_epi8(__mmask32 __M, __m512i __A) {
1477 // CHECK-LABEL: @test_mm512_maskz_cvtepi16_epi8
1478 // CHECK: trunc <32 x i16> %{{.*}} to <32 x i8>
1479 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1480 return _mm512_maskz_cvtepi16_epi8(__M, __A);
1481 }
1482
test_mm512_unpackhi_epi8(__m512i __A,__m512i __B)1483 __m512i test_mm512_unpackhi_epi8(__m512i __A, __m512i __B) {
1484 // CHECK-LABEL: @test_mm512_unpackhi_epi8
1485 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 8, i32 72, i32 9, i32 73, i32 10, i32 74, i32 11, i32 75, i32 12, i32 76, i32 13, i32 77, i32 14, i32 78, i32 15, i32 79, i32 24, i32 88, i32 25, i32 89, i32 26, i32 90, i32 27, i32 91, i32 28, i32 92, i32 29, i32 93, i32 30, i32 94, i32 31, i32 95, i32 40, i32 104, i32 41, i32 105, i32 42, i32 106, i32 43, i32 107, i32 44, i32 108, i32 45, i32 109, i32 46, i32 110, i32 47, i32 111, i32 56, i32 120, i32 57, i32 121, i32 58, i32 122, i32 59, i32 123, i32 60, i32 124, i32 61, i32 125, i32 62, i32 126, i32 63, i32 127>
1486 return _mm512_unpackhi_epi8(__A, __B);
1487 }
1488
test_mm512_mask_unpackhi_epi8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)1489 __m512i test_mm512_mask_unpackhi_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1490 // CHECK-LABEL: @test_mm512_mask_unpackhi_epi8
1491 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 8, i32 72, i32 9, i32 73, i32 10, i32 74, i32 11, i32 75, i32 12, i32 76, i32 13, i32 77, i32 14, i32 78, i32 15, i32 79, i32 24, i32 88, i32 25, i32 89, i32 26, i32 90, i32 27, i32 91, i32 28, i32 92, i32 29, i32 93, i32 30, i32 94, i32 31, i32 95, i32 40, i32 104, i32 41, i32 105, i32 42, i32 106, i32 43, i32 107, i32 44, i32 108, i32 45, i32 109, i32 46, i32 110, i32 47, i32 111, i32 56, i32 120, i32 57, i32 121, i32 58, i32 122, i32 59, i32 123, i32 60, i32 124, i32 61, i32 125, i32 62, i32 126, i32 63, i32 127>
1492 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1493 return _mm512_mask_unpackhi_epi8(__W, __U, __A, __B);
1494 }
1495
test_mm512_maskz_unpackhi_epi8(__mmask64 __U,__m512i __A,__m512i __B)1496 __m512i test_mm512_maskz_unpackhi_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
1497 // CHECK-LABEL: @test_mm512_maskz_unpackhi_epi8
1498 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 8, i32 72, i32 9, i32 73, i32 10, i32 74, i32 11, i32 75, i32 12, i32 76, i32 13, i32 77, i32 14, i32 78, i32 15, i32 79, i32 24, i32 88, i32 25, i32 89, i32 26, i32 90, i32 27, i32 91, i32 28, i32 92, i32 29, i32 93, i32 30, i32 94, i32 31, i32 95, i32 40, i32 104, i32 41, i32 105, i32 42, i32 106, i32 43, i32 107, i32 44, i32 108, i32 45, i32 109, i32 46, i32 110, i32 47, i32 111, i32 56, i32 120, i32 57, i32 121, i32 58, i32 122, i32 59, i32 123, i32 60, i32 124, i32 61, i32 125, i32 62, i32 126, i32 63, i32 127>
1499 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1500 return _mm512_maskz_unpackhi_epi8(__U, __A, __B);
1501 }
1502
test_mm512_unpackhi_epi16(__m512i __A,__m512i __B)1503 __m512i test_mm512_unpackhi_epi16(__m512i __A, __m512i __B) {
1504 // CHECK-LABEL: @test_mm512_unpackhi_epi16
1505 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 12, i32 44, i32 13, i32 45, i32 14, i32 46, i32 15, i32 47, i32 20, i32 52, i32 21, i32 53, i32 22, i32 54, i32 23, i32 55, i32 28, i32 60, i32 29, i32 61, i32 30, i32 62, i32 31, i32 63>
1506 return _mm512_unpackhi_epi16(__A, __B);
1507 }
1508
test_mm512_mask_unpackhi_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1509 __m512i test_mm512_mask_unpackhi_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1510 // CHECK-LABEL: @test_mm512_mask_unpackhi_epi16
1511 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 12, i32 44, i32 13, i32 45, i32 14, i32 46, i32 15, i32 47, i32 20, i32 52, i32 21, i32 53, i32 22, i32 54, i32 23, i32 55, i32 28, i32 60, i32 29, i32 61, i32 30, i32 62, i32 31, i32 63>
1512 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1513 return _mm512_mask_unpackhi_epi16(__W, __U, __A, __B);
1514 }
1515
test_mm512_maskz_unpackhi_epi16(__mmask32 __U,__m512i __A,__m512i __B)1516 __m512i test_mm512_maskz_unpackhi_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1517 // CHECK-LABEL: @test_mm512_maskz_unpackhi_epi16
1518 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 12, i32 44, i32 13, i32 45, i32 14, i32 46, i32 15, i32 47, i32 20, i32 52, i32 21, i32 53, i32 22, i32 54, i32 23, i32 55, i32 28, i32 60, i32 29, i32 61, i32 30, i32 62, i32 31, i32 63>
1519 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1520 return _mm512_maskz_unpackhi_epi16(__U, __A, __B);
1521 }
1522
test_mm512_unpacklo_epi8(__m512i __A,__m512i __B)1523 __m512i test_mm512_unpacklo_epi8(__m512i __A, __m512i __B) {
1524 // CHECK-LABEL: @test_mm512_unpacklo_epi8
1525 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 0, i32 64, i32 1, i32 65, i32 2, i32 66, i32 3, i32 67, i32 4, i32 68, i32 5, i32 69, i32 6, i32 70, i32 7, i32 71, i32 16, i32 80, i32 17, i32 81, i32 18, i32 82, i32 19, i32 83, i32 20, i32 84, i32 21, i32 85, i32 22, i32 86, i32 23, i32 87, i32 32, i32 96, i32 33, i32 97, i32 34, i32 98, i32 35, i32 99, i32 36, i32 100, i32 37, i32 101, i32 38, i32 102, i32 39, i32 103, i32 48, i32 112, i32 49, i32 113, i32 50, i32 114, i32 51, i32 115, i32 52, i32 116, i32 53, i32 117, i32 54, i32 118, i32 55, i32 119>
1526 return _mm512_unpacklo_epi8(__A, __B);
1527 }
1528
test_mm512_mask_unpacklo_epi8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)1529 __m512i test_mm512_mask_unpacklo_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1530 // CHECK-LABEL: @test_mm512_mask_unpacklo_epi8
1531 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 0, i32 64, i32 1, i32 65, i32 2, i32 66, i32 3, i32 67, i32 4, i32 68, i32 5, i32 69, i32 6, i32 70, i32 7, i32 71, i32 16, i32 80, i32 17, i32 81, i32 18, i32 82, i32 19, i32 83, i32 20, i32 84, i32 21, i32 85, i32 22, i32 86, i32 23, i32 87, i32 32, i32 96, i32 33, i32 97, i32 34, i32 98, i32 35, i32 99, i32 36, i32 100, i32 37, i32 101, i32 38, i32 102, i32 39, i32 103, i32 48, i32 112, i32 49, i32 113, i32 50, i32 114, i32 51, i32 115, i32 52, i32 116, i32 53, i32 117, i32 54, i32 118, i32 55, i32 119>
1532 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1533 return _mm512_mask_unpacklo_epi8(__W, __U, __A, __B);
1534 }
1535
test_mm512_maskz_unpacklo_epi8(__mmask64 __U,__m512i __A,__m512i __B)1536 __m512i test_mm512_maskz_unpacklo_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
1537 // CHECK-LABEL: @test_mm512_maskz_unpacklo_epi8
1538 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 0, i32 64, i32 1, i32 65, i32 2, i32 66, i32 3, i32 67, i32 4, i32 68, i32 5, i32 69, i32 6, i32 70, i32 7, i32 71, i32 16, i32 80, i32 17, i32 81, i32 18, i32 82, i32 19, i32 83, i32 20, i32 84, i32 21, i32 85, i32 22, i32 86, i32 23, i32 87, i32 32, i32 96, i32 33, i32 97, i32 34, i32 98, i32 35, i32 99, i32 36, i32 100, i32 37, i32 101, i32 38, i32 102, i32 39, i32 103, i32 48, i32 112, i32 49, i32 113, i32 50, i32 114, i32 51, i32 115, i32 52, i32 116, i32 53, i32 117, i32 54, i32 118, i32 55, i32 119>
1539 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1540 return _mm512_maskz_unpacklo_epi8(__U, __A, __B);
1541 }
1542
test_mm512_unpacklo_epi16(__m512i __A,__m512i __B)1543 __m512i test_mm512_unpacklo_epi16(__m512i __A, __m512i __B) {
1544 // CHECK-LABEL: @test_mm512_unpacklo_epi16
1545 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 8, i32 40, i32 9, i32 41, i32 10, i32 42, i32 11, i32 43, i32 16, i32 48, i32 17, i32 49, i32 18, i32 50, i32 19, i32 51, i32 24, i32 56, i32 25, i32 57, i32 26, i32 58, i32 27, i32 59>
1546 return _mm512_unpacklo_epi16(__A, __B);
1547 }
1548
test_mm512_mask_unpacklo_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1549 __m512i test_mm512_mask_unpacklo_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1550 // CHECK-LABEL: @test_mm512_mask_unpacklo_epi16
1551 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 8, i32 40, i32 9, i32 41, i32 10, i32 42, i32 11, i32 43, i32 16, i32 48, i32 17, i32 49, i32 18, i32 50, i32 19, i32 51, i32 24, i32 56, i32 25, i32 57, i32 26, i32 58, i32 27, i32 59>
1552 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1553 return _mm512_mask_unpacklo_epi16(__W, __U, __A, __B);
1554 }
1555
test_mm512_maskz_unpacklo_epi16(__mmask32 __U,__m512i __A,__m512i __B)1556 __m512i test_mm512_maskz_unpacklo_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1557 // CHECK-LABEL: @test_mm512_maskz_unpacklo_epi16
1558 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 8, i32 40, i32 9, i32 41, i32 10, i32 42, i32 11, i32 43, i32 16, i32 48, i32 17, i32 49, i32 18, i32 50, i32 19, i32 51, i32 24, i32 56, i32 25, i32 57, i32 26, i32 58, i32 27, i32 59>
1559 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1560 return _mm512_maskz_unpacklo_epi16(__U, __A, __B);
1561 }
1562
test_mm512_cvtepi8_epi16(__m256i __A)1563 __m512i test_mm512_cvtepi8_epi16(__m256i __A) {
1564 // CHECK-LABEL: @test_mm512_cvtepi8_epi16
1565 // CHECK: sext <32 x i8> %{{.*}} to <32 x i16>
1566 return _mm512_cvtepi8_epi16(__A);
1567 }
1568
test_mm512_mask_cvtepi8_epi16(__m512i __W,__mmask32 __U,__m256i __A)1569 __m512i test_mm512_mask_cvtepi8_epi16(__m512i __W, __mmask32 __U, __m256i __A) {
1570 // CHECK-LABEL: @test_mm512_mask_cvtepi8_epi16
1571 // CHECK: sext <32 x i8> %{{.*}} to <32 x i16>
1572 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1573 return _mm512_mask_cvtepi8_epi16(__W, __U, __A);
1574 }
1575
test_mm512_maskz_cvtepi8_epi16(__mmask32 __U,__m256i __A)1576 __m512i test_mm512_maskz_cvtepi8_epi16(__mmask32 __U, __m256i __A) {
1577 // CHECK-LABEL: @test_mm512_maskz_cvtepi8_epi16
1578 // CHECK: sext <32 x i8> %{{.*}} to <32 x i16>
1579 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1580 return _mm512_maskz_cvtepi8_epi16(__U, __A);
1581 }
1582
test_mm512_cvtepu8_epi16(__m256i __A)1583 __m512i test_mm512_cvtepu8_epi16(__m256i __A) {
1584 // CHECK-LABEL: @test_mm512_cvtepu8_epi16
1585 // CHECK: zext <32 x i8> %{{.*}} to <32 x i16>
1586 return _mm512_cvtepu8_epi16(__A);
1587 }
1588
test_mm512_mask_cvtepu8_epi16(__m512i __W,__mmask32 __U,__m256i __A)1589 __m512i test_mm512_mask_cvtepu8_epi16(__m512i __W, __mmask32 __U, __m256i __A) {
1590 // CHECK-LABEL: @test_mm512_mask_cvtepu8_epi16
1591 // CHECK: zext <32 x i8> %{{.*}} to <32 x i16>
1592 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1593 return _mm512_mask_cvtepu8_epi16(__W, __U, __A);
1594 }
1595
test_mm512_maskz_cvtepu8_epi16(__mmask32 __U,__m256i __A)1596 __m512i test_mm512_maskz_cvtepu8_epi16(__mmask32 __U, __m256i __A) {
1597 // CHECK-LABEL: @test_mm512_maskz_cvtepu8_epi16
1598 // CHECK: zext <32 x i8> %{{.*}} to <32 x i16>
1599 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1600 return _mm512_maskz_cvtepu8_epi16(__U, __A);
1601 }
1602
test_mm512_shufflehi_epi16(__m512i __A)1603 __m512i test_mm512_shufflehi_epi16(__m512i __A) {
1604 // CHECK-LABEL: @test_mm512_shufflehi_epi16
1605 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> poison, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 5, i32 4, i32 4, i32 8, i32 9, i32 10, i32 11, i32 13, i32 13, i32 12, i32 12, i32 16, i32 17, i32 18, i32 19, i32 21, i32 21, i32 20, i32 20, i32 24, i32 25, i32 26, i32 27, i32 29, i32 29, i32 28, i32 28>
1606 return _mm512_shufflehi_epi16(__A, 5);
1607 }
1608
test_mm512_mask_shufflehi_epi16(__m512i __W,__mmask32 __U,__m512i __A)1609 __m512i test_mm512_mask_shufflehi_epi16(__m512i __W, __mmask32 __U, __m512i __A) {
1610 // CHECK-LABEL: @test_mm512_mask_shufflehi_epi16
1611 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> poison, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 5, i32 4, i32 4, i32 8, i32 9, i32 10, i32 11, i32 13, i32 13, i32 12, i32 12, i32 16, i32 17, i32 18, i32 19, i32 21, i32 21, i32 20, i32 20, i32 24, i32 25, i32 26, i32 27, i32 29, i32 29, i32 28, i32 28>
1612 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1613 return _mm512_mask_shufflehi_epi16(__W, __U, __A, 5);
1614 }
1615
test_mm512_maskz_shufflehi_epi16(__mmask32 __U,__m512i __A)1616 __m512i test_mm512_maskz_shufflehi_epi16(__mmask32 __U, __m512i __A) {
1617 // CHECK-LABEL: @test_mm512_maskz_shufflehi_epi16
1618 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> poison, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 5, i32 4, i32 4, i32 8, i32 9, i32 10, i32 11, i32 13, i32 13, i32 12, i32 12, i32 16, i32 17, i32 18, i32 19, i32 21, i32 21, i32 20, i32 20, i32 24, i32 25, i32 26, i32 27, i32 29, i32 29, i32 28, i32 28>
1619 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1620 return _mm512_maskz_shufflehi_epi16(__U, __A, 5);
1621 }
1622
test_mm512_shufflelo_epi16(__m512i __A)1623 __m512i test_mm512_shufflelo_epi16(__m512i __A) {
1624 // CHECK-LABEL: @test_mm512_shufflelo_epi16
1625 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> poison, <32 x i32> <i32 1, i32 1, i32 0, i32 0, i32 4, i32 5, i32 6, i32 7, i32 9, i32 9, i32 8, i32 8, i32 12, i32 13, i32 14, i32 15, i32 17, i32 17, i32 16, i32 16, i32 20, i32 21, i32 22, i32 23, i32 25, i32 25, i32 24, i32 24, i32 28, i32 29, i32 30, i32 31>
1626 return _mm512_shufflelo_epi16(__A, 5);
1627 }
1628
test_mm512_mask_shufflelo_epi16(__m512i __W,__mmask32 __U,__m512i __A)1629 __m512i test_mm512_mask_shufflelo_epi16(__m512i __W, __mmask32 __U, __m512i __A) {
1630 // CHECK-LABEL: @test_mm512_mask_shufflelo_epi16
1631 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> poison, <32 x i32> <i32 1, i32 1, i32 0, i32 0, i32 4, i32 5, i32 6, i32 7, i32 9, i32 9, i32 8, i32 8, i32 12, i32 13, i32 14, i32 15, i32 17, i32 17, i32 16, i32 16, i32 20, i32 21, i32 22, i32 23, i32 25, i32 25, i32 24, i32 24, i32 28, i32 29, i32 30, i32 31>
1632 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1633 return _mm512_mask_shufflelo_epi16(__W, __U, __A, 5);
1634 }
1635
test_mm512_maskz_shufflelo_epi16(__mmask32 __U,__m512i __A)1636 __m512i test_mm512_maskz_shufflelo_epi16(__mmask32 __U, __m512i __A) {
1637 // CHECK-LABEL: @test_mm512_maskz_shufflelo_epi16
1638 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> poison, <32 x i32> <i32 1, i32 1, i32 0, i32 0, i32 4, i32 5, i32 6, i32 7, i32 9, i32 9, i32 8, i32 8, i32 12, i32 13, i32 14, i32 15, i32 17, i32 17, i32 16, i32 16, i32 20, i32 21, i32 22, i32 23, i32 25, i32 25, i32 24, i32 24, i32 28, i32 29, i32 30, i32 31>
1639 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1640 return _mm512_maskz_shufflelo_epi16(__U, __A, 5);
1641 }
1642
test_mm512_sllv_epi16(__m512i __A,__m512i __B)1643 __m512i test_mm512_sllv_epi16(__m512i __A, __m512i __B) {
1644 // CHECK-LABEL: @test_mm512_sllv_epi16
1645 // CHECK: @llvm.x86.avx512.psllv.w.512(
1646 return _mm512_sllv_epi16(__A, __B);
1647 }
1648
test_mm512_mask_sllv_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1649 __m512i test_mm512_mask_sllv_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1650 // CHECK-LABEL: @test_mm512_mask_sllv_epi16
1651 // CHECK: @llvm.x86.avx512.psllv.w.512(
1652 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1653 return _mm512_mask_sllv_epi16(__W, __U, __A, __B);
1654 }
1655
test_mm512_maskz_sllv_epi16(__mmask32 __U,__m512i __A,__m512i __B)1656 __m512i test_mm512_maskz_sllv_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1657 // CHECK-LABEL: @test_mm512_maskz_sllv_epi16
1658 // CHECK: @llvm.x86.avx512.psllv.w.512(
1659 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1660 return _mm512_maskz_sllv_epi16(__U, __A, __B);
1661 }
1662
test_mm512_sll_epi16(__m512i __A,__m128i __B)1663 __m512i test_mm512_sll_epi16(__m512i __A, __m128i __B) {
1664 // CHECK-LABEL: @test_mm512_sll_epi16
1665 // CHECK: @llvm.x86.avx512.psll.w.512
1666 return _mm512_sll_epi16(__A, __B);
1667 }
1668
test_mm512_mask_sll_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m128i __B)1669 __m512i test_mm512_mask_sll_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B) {
1670 // CHECK-LABEL: @test_mm512_mask_sll_epi16
1671 // CHECK: @llvm.x86.avx512.psll.w.512
1672 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1673 return _mm512_mask_sll_epi16(__W, __U, __A, __B);
1674 }
1675
test_mm512_maskz_sll_epi16(__mmask32 __U,__m512i __A,__m128i __B)1676 __m512i test_mm512_maskz_sll_epi16(__mmask32 __U, __m512i __A, __m128i __B) {
1677 // CHECK-LABEL: @test_mm512_maskz_sll_epi16
1678 // CHECK: @llvm.x86.avx512.psll.w.512
1679 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1680 return _mm512_maskz_sll_epi16(__U, __A, __B);
1681 }
1682
test_mm512_slli_epi16(__m512i __A)1683 __m512i test_mm512_slli_epi16(__m512i __A) {
1684 // CHECK-LABEL: @test_mm512_slli_epi16
1685 // CHECK: @llvm.x86.avx512.pslli.w.512
1686 return _mm512_slli_epi16(__A, 5);
1687 }
1688
test_mm512_slli_epi16_2(__m512i __A,unsigned int __B)1689 __m512i test_mm512_slli_epi16_2(__m512i __A, unsigned int __B) {
1690 // CHECK-LABEL: @test_mm512_slli_epi16_2
1691 // CHECK: @llvm.x86.avx512.pslli.w.512
1692 return _mm512_slli_epi16(__A, __B);
1693 }
1694
test_mm512_mask_slli_epi16(__m512i __W,__mmask32 __U,__m512i __A)1695 __m512i test_mm512_mask_slli_epi16(__m512i __W, __mmask32 __U, __m512i __A) {
1696 // CHECK-LABEL: @test_mm512_mask_slli_epi16
1697 // CHECK: @llvm.x86.avx512.pslli.w.512
1698 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1699 return _mm512_mask_slli_epi16(__W, __U, __A, 5);
1700 }
1701
test_mm512_mask_slli_epi16_2(__m512i __W,__mmask32 __U,__m512i __A,unsigned int __B)1702 __m512i test_mm512_mask_slli_epi16_2(__m512i __W, __mmask32 __U, __m512i __A, unsigned int __B) {
1703 // CHECK-LABEL: @test_mm512_mask_slli_epi16_2
1704 // CHECK: @llvm.x86.avx512.pslli.w.512
1705 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1706 return _mm512_mask_slli_epi16(__W, __U, __A, __B);
1707 }
1708
test_mm512_maskz_slli_epi16(__mmask32 __U,__m512i __A)1709 __m512i test_mm512_maskz_slli_epi16(__mmask32 __U, __m512i __A) {
1710 // CHECK-LABEL: @test_mm512_maskz_slli_epi16
1711 // CHECK: @llvm.x86.avx512.pslli.w.512
1712 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1713 return _mm512_maskz_slli_epi16(__U, __A, 5);
1714 }
1715
test_mm512_maskz_slli_epi16_2(__mmask32 __U,__m512i __A,unsigned int __B)1716 __m512i test_mm512_maskz_slli_epi16_2(__mmask32 __U, __m512i __A, unsigned int __B) {
1717 // CHECK-LABEL: @test_mm512_maskz_slli_epi16_2
1718 // CHECK: @llvm.x86.avx512.pslli.w.512
1719 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1720 return _mm512_maskz_slli_epi16(__U, __A, __B);
1721 }
1722
test_mm512_bslli_epi128(__m512i __A)1723 __m512i test_mm512_bslli_epi128(__m512i __A) {
1724 // CHECK-LABEL: @test_mm512_bslli_epi128
1725 // CHECK: shufflevector <64 x i8> zeroinitializer, <64 x i8> %{{.*}}, <64 x i32> <i32 11, i32 12, i32 13, i32 14, i32 15, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 27, i32 28, i32 29, i32 30, i32 31, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 43, i32 44, i32 45, i32 46, i32 47, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 59, i32 60, i32 61, i32 62, i32 63, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122>
1726 return _mm512_bslli_epi128(__A, 5);
1727 }
1728
test_mm512_srlv_epi16(__m512i __A,__m512i __B)1729 __m512i test_mm512_srlv_epi16(__m512i __A, __m512i __B) {
1730 // CHECK-LABEL: @test_mm512_srlv_epi16
1731 // CHECK: @llvm.x86.avx512.psrlv.w.512(
1732 return _mm512_srlv_epi16(__A, __B);
1733 }
1734
test_mm512_mask_srlv_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1735 __m512i test_mm512_mask_srlv_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1736 // CHECK-LABEL: @test_mm512_mask_srlv_epi16
1737 // CHECK: @llvm.x86.avx512.psrlv.w.512(
1738 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1739 return _mm512_mask_srlv_epi16(__W, __U, __A, __B);
1740 }
1741
test_mm512_maskz_srlv_epi16(__mmask32 __U,__m512i __A,__m512i __B)1742 __m512i test_mm512_maskz_srlv_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1743 // CHECK-LABEL: @test_mm512_maskz_srlv_epi16
1744 // CHECK: @llvm.x86.avx512.psrlv.w.512(
1745 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1746 return _mm512_maskz_srlv_epi16(__U, __A, __B);
1747 }
1748
test_mm512_srav_epi16(__m512i __A,__m512i __B)1749 __m512i test_mm512_srav_epi16(__m512i __A, __m512i __B) {
1750 // CHECK-LABEL: @test_mm512_srav_epi16
1751 // CHECK: @llvm.x86.avx512.psrav.w.512(
1752 return _mm512_srav_epi16(__A, __B);
1753 }
1754
test_mm512_mask_srav_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)1755 __m512i test_mm512_mask_srav_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1756 // CHECK-LABEL: @test_mm512_mask_srav_epi16
1757 // CHECK: @llvm.x86.avx512.psrav.w.512(
1758 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1759 return _mm512_mask_srav_epi16(__W, __U, __A, __B);
1760 }
1761
test_mm512_maskz_srav_epi16(__mmask32 __U,__m512i __A,__m512i __B)1762 __m512i test_mm512_maskz_srav_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1763 // CHECK-LABEL: @test_mm512_maskz_srav_epi16
1764 // CHECK: @llvm.x86.avx512.psrav.w.512(
1765 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1766 return _mm512_maskz_srav_epi16(__U, __A, __B);
1767 }
1768
test_mm512_sra_epi16(__m512i __A,__m128i __B)1769 __m512i test_mm512_sra_epi16(__m512i __A, __m128i __B) {
1770 // CHECK-LABEL: @test_mm512_sra_epi16
1771 // CHECK: @llvm.x86.avx512.psra.w.512
1772 return _mm512_sra_epi16(__A, __B);
1773 }
1774
test_mm512_mask_sra_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m128i __B)1775 __m512i test_mm512_mask_sra_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B) {
1776 // CHECK-LABEL: @test_mm512_mask_sra_epi16
1777 // CHECK: @llvm.x86.avx512.psra.w.512
1778 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1779 return _mm512_mask_sra_epi16(__W, __U, __A, __B);
1780 }
1781
test_mm512_maskz_sra_epi16(__mmask32 __U,__m512i __A,__m128i __B)1782 __m512i test_mm512_maskz_sra_epi16(__mmask32 __U, __m512i __A, __m128i __B) {
1783 // CHECK-LABEL: @test_mm512_maskz_sra_epi16
1784 // CHECK: @llvm.x86.avx512.psra.w.512
1785 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1786 return _mm512_maskz_sra_epi16(__U, __A, __B);
1787 }
1788
test_mm512_srai_epi16(__m512i __A)1789 __m512i test_mm512_srai_epi16(__m512i __A) {
1790 // CHECK-LABEL: @test_mm512_srai_epi16
1791 // CHECK: @llvm.x86.avx512.psrai.w.512
1792 return _mm512_srai_epi16(__A, 5);
1793 }
1794
test_mm512_srai_epi16_2(__m512i __A,unsigned int __B)1795 __m512i test_mm512_srai_epi16_2(__m512i __A, unsigned int __B) {
1796 // CHECK-LABEL: @test_mm512_srai_epi16_2
1797 // CHECK: @llvm.x86.avx512.psrai.w.512
1798 return _mm512_srai_epi16(__A, __B);
1799 }
1800
test_mm512_mask_srai_epi16(__m512i __W,__mmask32 __U,__m512i __A)1801 __m512i test_mm512_mask_srai_epi16(__m512i __W, __mmask32 __U, __m512i __A) {
1802 // CHECK-LABEL: @test_mm512_mask_srai_epi16
1803 // CHECK: @llvm.x86.avx512.psrai.w.512
1804 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1805 return _mm512_mask_srai_epi16(__W, __U, __A, 5);
1806 }
1807
test_mm512_mask_srai_epi16_2(__m512i __W,__mmask32 __U,__m512i __A,unsigned int __B)1808 __m512i test_mm512_mask_srai_epi16_2(__m512i __W, __mmask32 __U, __m512i __A, unsigned int __B) {
1809 // CHECK-LABEL: @test_mm512_mask_srai_epi16_2
1810 // CHECK: @llvm.x86.avx512.psrai.w.512
1811 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1812 return _mm512_mask_srai_epi16(__W, __U, __A, __B);
1813 }
1814
test_mm512_maskz_srai_epi16(__mmask32 __U,__m512i __A)1815 __m512i test_mm512_maskz_srai_epi16(__mmask32 __U, __m512i __A) {
1816 // CHECK-LABEL: @test_mm512_maskz_srai_epi16
1817 // CHECK: @llvm.x86.avx512.psrai.w.512
1818 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1819 return _mm512_maskz_srai_epi16(__U, __A, 5);
1820 }
1821
test_mm512_maskz_srai_epi16_2(__mmask32 __U,__m512i __A,unsigned int __B)1822 __m512i test_mm512_maskz_srai_epi16_2(__mmask32 __U, __m512i __A, unsigned int __B) {
1823 // CHECK-LABEL: @test_mm512_maskz_srai_epi16_2
1824 // CHECK: @llvm.x86.avx512.psrai.w.512
1825 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1826 return _mm512_maskz_srai_epi16(__U, __A, __B);
1827 }
1828
test_mm512_srl_epi16(__m512i __A,__m128i __B)1829 __m512i test_mm512_srl_epi16(__m512i __A, __m128i __B) {
1830 // CHECK-LABEL: @test_mm512_srl_epi16
1831 // CHECK: @llvm.x86.avx512.psrl.w.512
1832 return _mm512_srl_epi16(__A, __B);
1833 }
1834
test_mm512_mask_srl_epi16(__m512i __W,__mmask32 __U,__m512i __A,__m128i __B)1835 __m512i test_mm512_mask_srl_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B) {
1836 // CHECK-LABEL: @test_mm512_mask_srl_epi16
1837 // CHECK: @llvm.x86.avx512.psrl.w.512
1838 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1839 return _mm512_mask_srl_epi16(__W, __U, __A, __B);
1840 }
1841
test_mm512_maskz_srl_epi16(__mmask32 __U,__m512i __A,__m128i __B)1842 __m512i test_mm512_maskz_srl_epi16(__mmask32 __U, __m512i __A, __m128i __B) {
1843 // CHECK-LABEL: @test_mm512_maskz_srl_epi16
1844 // CHECK: @llvm.x86.avx512.psrl.w.512
1845 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1846 return _mm512_maskz_srl_epi16(__U, __A, __B);
1847 }
1848
test_mm512_srli_epi16(__m512i __A)1849 __m512i test_mm512_srli_epi16(__m512i __A) {
1850 // CHECK-LABEL: @test_mm512_srli_epi16
1851 // CHECK: @llvm.x86.avx512.psrli.w.512
1852 return _mm512_srli_epi16(__A, 5);
1853 }
1854
test_mm512_srli_epi16_2(__m512i __A,unsigned int __B)1855 __m512i test_mm512_srli_epi16_2(__m512i __A, unsigned int __B) {
1856 // CHECK-LABEL: @test_mm512_srli_epi16_2
1857 // CHECK: @llvm.x86.avx512.psrli.w.512
1858 return _mm512_srli_epi16(__A, __B);
1859 }
1860
test_mm512_mask_srli_epi16(__m512i __W,__mmask32 __U,__m512i __A)1861 __m512i test_mm512_mask_srli_epi16(__m512i __W, __mmask32 __U, __m512i __A) {
1862 // CHECK-LABEL: @test_mm512_mask_srli_epi16
1863 // CHECK: @llvm.x86.avx512.psrli.w.512
1864 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1865 return _mm512_mask_srli_epi16(__W, __U, __A, 5);
1866 }
1867
test_mm512_mask_srli_epi16_2(__m512i __W,__mmask32 __U,__m512i __A,unsigned int __B)1868 __m512i test_mm512_mask_srli_epi16_2(__m512i __W, __mmask32 __U, __m512i __A, unsigned int __B) {
1869 // CHECK-LABEL: @test_mm512_mask_srli_epi16_2
1870 // CHECK: @llvm.x86.avx512.psrli.w.512
1871 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1872 return _mm512_mask_srli_epi16(__W, __U, __A, __B);
1873 }
1874
test_mm512_maskz_srli_epi16(__mmask32 __U,__m512i __A)1875 __m512i test_mm512_maskz_srli_epi16(__mmask32 __U, __m512i __A) {
1876 // CHECK-LABEL: @test_mm512_maskz_srli_epi16
1877 // CHECK: @llvm.x86.avx512.psrli.w.512
1878 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1879 return _mm512_maskz_srli_epi16(__U, __A, 5);
1880 }
1881
test_mm512_maskz_srli_epi16_2(__mmask32 __U,__m512i __A,int __B)1882 __m512i test_mm512_maskz_srli_epi16_2(__mmask32 __U, __m512i __A, int __B) {
1883 // CHECK-LABEL: @test_mm512_maskz_srli_epi16_2
1884 // CHECK: @llvm.x86.avx512.psrli.w.512
1885 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1886 return _mm512_maskz_srli_epi16(__U, __A, __B);
1887 }
1888
test_mm512_bsrli_epi128(__m512i __A)1889 __m512i test_mm512_bsrli_epi128(__m512i __A) {
1890 // CHECK-LABEL: @test_mm512_bsrli_epi128
1891 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> zeroinitializer, <64 x i32> <i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 64, i32 65, i32 66, i32 67, i32 68, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 80, i32 81, i32 82, i32 83, i32 84, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 96, i32 97, i32 98, i32 99, i32 100, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 112, i32 113, i32 114, i32 115, i32 116>
1892 return _mm512_bsrli_epi128(__A, 5);
1893 }
test_mm512_mask_mov_epi16(__m512i __W,__mmask32 __U,__m512i __A)1894 __m512i test_mm512_mask_mov_epi16(__m512i __W, __mmask32 __U, __m512i __A) {
1895 // CHECK-LABEL: @test_mm512_mask_mov_epi16
1896 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1897 return _mm512_mask_mov_epi16(__W, __U, __A);
1898 }
1899
test_mm512_maskz_mov_epi16(__mmask32 __U,__m512i __A)1900 __m512i test_mm512_maskz_mov_epi16(__mmask32 __U, __m512i __A) {
1901 // CHECK-LABEL: @test_mm512_maskz_mov_epi16
1902 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
1903 return _mm512_maskz_mov_epi16(__U, __A);
1904 }
1905
test_mm512_mask_mov_epi8(__m512i __W,__mmask64 __U,__m512i __A)1906 __m512i test_mm512_mask_mov_epi8(__m512i __W, __mmask64 __U, __m512i __A) {
1907 // CHECK-LABEL: @test_mm512_mask_mov_epi8
1908 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1909 return _mm512_mask_mov_epi8(__W, __U, __A);
1910 }
1911
test_mm512_maskz_mov_epi8(__mmask64 __U,__m512i __A)1912 __m512i test_mm512_maskz_mov_epi8(__mmask64 __U, __m512i __A) {
1913 // CHECK-LABEL: @test_mm512_maskz_mov_epi8
1914 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1915 return _mm512_maskz_mov_epi8(__U, __A);
1916 }
1917
test_mm512_mask_set1_epi8(__m512i __O,__mmask64 __M,char __A)1918 __m512i test_mm512_mask_set1_epi8(__m512i __O, __mmask64 __M, char __A) {
1919 // CHECK-LABEL: @test_mm512_mask_set1_epi8
1920 // CHECK: insertelement <64 x i8> undef, i8 %{{.*}}, i32 0
1921 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 1
1922 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 2
1923 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 3
1924 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 4
1925 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 5
1926 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 6
1927 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 7
1928 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 8
1929 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 9
1930 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 10
1931 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 11
1932 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 12
1933 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 13
1934 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 14
1935 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 15
1936 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 16
1937 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 17
1938 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 18
1939 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 19
1940 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 20
1941 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 21
1942 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 22
1943 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 23
1944 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 24
1945 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 25
1946 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 26
1947 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 27
1948 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 28
1949 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 29
1950 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 30
1951 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 31
1952 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 34
1953 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 35
1954 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 36
1955 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 37
1956 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 38
1957 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 39
1958 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 40
1959 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 41
1960 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 42
1961 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 43
1962 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 44
1963 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 45
1964 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 46
1965 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 47
1966 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 48
1967 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 49
1968 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 50
1969 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 51
1970 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 52
1971 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 53
1972 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 54
1973 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 55
1974 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 56
1975 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 57
1976 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 58
1977 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 59
1978 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 60
1979 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 61
1980 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 62
1981 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 63
1982 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
1983 return _mm512_mask_set1_epi8(__O, __M, __A);
1984 }
1985
test_mm512_maskz_set1_epi8(__mmask64 __M,char __A)1986 __m512i test_mm512_maskz_set1_epi8(__mmask64 __M, char __A) {
1987 // CHECK-LABEL: @test_mm512_maskz_set1_epi8
1988 // CHECK: insertelement <64 x i8> undef, i8 %{{.*}}, i32 0
1989 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 1
1990 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 2
1991 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 3
1992 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 4
1993 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 5
1994 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 6
1995 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 7
1996 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 8
1997 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 9
1998 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 10
1999 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 11
2000 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 12
2001 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 13
2002 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 14
2003 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 15
2004 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 16
2005 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 17
2006 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 18
2007 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 19
2008 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 20
2009 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 21
2010 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 22
2011 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 23
2012 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 24
2013 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 25
2014 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 26
2015 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 27
2016 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 28
2017 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 29
2018 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 30
2019 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 31
2020 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 32
2021 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 33
2022 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 34
2023 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 35
2024 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 36
2025 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 37
2026 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 38
2027 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 39
2028 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 40
2029 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 41
2030 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 42
2031 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 43
2032 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 44
2033 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 45
2034 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 46
2035 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 47
2036 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 48
2037 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 49
2038 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 50
2039 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 51
2040 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 52
2041 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 53
2042 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 54
2043 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 55
2044 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 56
2045 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 57
2046 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 58
2047 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 59
2048 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 60
2049 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 61
2050 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 62
2051 // CHECK: insertelement <64 x i8> %{{.*}}, i8 %{{.*}}, i32 63
2052 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
2053 return _mm512_maskz_set1_epi8(__M, __A);
2054 }
2055
test_mm512_kunpackd(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)2056 __mmask64 test_mm512_kunpackd(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
2057 // CHECK-LABEL: @test_mm512_kunpackd
2058 // CHECK: [[LHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
2059 // CHECK: [[RHS:%.*]] = bitcast i64 %{{.*}} to <64 x i1>
2060 // CHECK: [[LHS2:%.*]] = shufflevector <64 x i1> [[LHS]], <64 x i1> [[LHS]], <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>
2061 // CHECK: [[RHS2:%.*]] = shufflevector <64 x i1> [[RHS]], <64 x i1> [[RHS]], <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>
2062 // CHECK: [[CONCAT:%.*]] = shufflevector <32 x i1> [[RHS2]], <32 x i1> [[LHS2]], <64 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63>
2063 // CHECK: bitcast <64 x i1> [[CONCAT]] to i64
2064 return _mm512_mask_cmpneq_epu8_mask(_mm512_kunpackd(_mm512_cmpneq_epu8_mask(__B, __A),_mm512_cmpneq_epu8_mask(__C, __D)), __E, __F);
2065 }
2066
test_mm512_kunpackw(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)2067 __mmask32 test_mm512_kunpackw(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
2068 // CHECK-LABEL: @test_mm512_kunpackw
2069 // CHECK: [[LHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
2070 // CHECK: [[RHS:%.*]] = bitcast i32 %{{.*}} to <32 x i1>
2071 // CHECK: [[LHS2:%.*]] = shufflevector <32 x i1> [[LHS]], <32 x i1> [[LHS]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
2072 // CHECK: [[RHS2:%.*]] = shufflevector <32 x i1> [[RHS]], <32 x i1> [[RHS]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
2073 // CHECK: [[CONCAT:%.*]] = shufflevector <16 x i1> [[RHS2]], <16 x i1> [[LHS2]], <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>
2074 return _mm512_mask_cmpneq_epu16_mask(_mm512_kunpackw(_mm512_cmpneq_epu16_mask(__B, __A),_mm512_cmpneq_epu16_mask(__C, __D)), __E, __F);
2075 }
2076
test_mm512_loadu_epi16(void * __P)2077 __m512i test_mm512_loadu_epi16 (void *__P)
2078 {
2079 // CHECK-LABEL: @test_mm512_loadu_epi16
2080 // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 1{{$}}
2081 return _mm512_loadu_epi16 (__P);
2082 }
2083
test_mm512_mask_loadu_epi16(__m512i __W,__mmask32 __U,void const * __P)2084 __m512i test_mm512_mask_loadu_epi16(__m512i __W, __mmask32 __U, void const *__P) {
2085 // CHECK-LABEL: @test_mm512_mask_loadu_epi16
2086 // CHECK: @llvm.masked.load.v32i16.p0v32i16(<32 x i16>* %{{.*}}, i32 1, <32 x i1> %{{.*}}, <32 x i16> %{{.*}})
2087 return _mm512_mask_loadu_epi16(__W, __U, __P);
2088 }
2089
test_mm512_maskz_loadu_epi16(__mmask32 __U,void const * __P)2090 __m512i test_mm512_maskz_loadu_epi16(__mmask32 __U, void const *__P) {
2091 // CHECK-LABEL: @test_mm512_maskz_loadu_epi16
2092 // CHECK: @llvm.masked.load.v32i16.p0v32i16(<32 x i16>* %{{.*}}, i32 1, <32 x i1> %{{.*}}, <32 x i16> %{{.*}})
2093 return _mm512_maskz_loadu_epi16(__U, __P);
2094 }
2095
test_mm512_loadu_epi8(void * __P)2096 __m512i test_mm512_loadu_epi8 (void *__P)
2097 {
2098 // CHECK-LABEL: @test_mm512_loadu_epi8
2099 // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 1{{$}}
2100 return _mm512_loadu_epi8 (__P);
2101 }
2102
test_mm512_mask_loadu_epi8(__m512i __W,__mmask64 __U,void const * __P)2103 __m512i test_mm512_mask_loadu_epi8(__m512i __W, __mmask64 __U, void const *__P) {
2104 // CHECK-LABEL: @test_mm512_mask_loadu_epi8
2105 // CHECK: @llvm.masked.load.v64i8.p0v64i8(<64 x i8>* %{{.*}}, i32 1, <64 x i1> %{{.*}}, <64 x i8> %{{.*}})
2106 return _mm512_mask_loadu_epi8(__W, __U, __P);
2107 }
2108
test_mm512_maskz_loadu_epi8(__mmask64 __U,void const * __P)2109 __m512i test_mm512_maskz_loadu_epi8(__mmask64 __U, void const *__P) {
2110 // CHECK-LABEL: @test_mm512_maskz_loadu_epi8
2111 // CHECK: @llvm.masked.load.v64i8.p0v64i8(<64 x i8>* %{{.*}}, i32 1, <64 x i1> %{{.*}}, <64 x i8> %{{.*}})
2112 return _mm512_maskz_loadu_epi8(__U, __P);
2113 }
2114
test_mm512_storeu_epi16(void * __P,__m512i __A)2115 void test_mm512_storeu_epi16(void *__P, __m512i __A) {
2116 // CHECK-LABEL: @test_mm512_storeu_epi16
2117 // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 1{{$}}
2118 return _mm512_storeu_epi16(__P, __A);
2119 }
2120
test_mm512_mask_storeu_epi16(void * __P,__mmask32 __U,__m512i __A)2121 void test_mm512_mask_storeu_epi16(void *__P, __mmask32 __U, __m512i __A) {
2122 // CHECK-LABEL: @test_mm512_mask_storeu_epi16
2123 // CHECK: @llvm.masked.store.v32i16.p0v32i16(<32 x i16> %{{.*}}, <32 x i16>* %{{.*}}, i32 1, <32 x i1> %{{.*}})
2124 return _mm512_mask_storeu_epi16(__P, __U, __A);
2125 }
2126
test_mm512_test_epi8_mask(__m512i __A,__m512i __B)2127 __mmask64 test_mm512_test_epi8_mask(__m512i __A, __m512i __B) {
2128 // CHECK-LABEL: @test_mm512_test_epi8_mask
2129 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2130 // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}}
2131 return _mm512_test_epi8_mask(__A, __B);
2132 }
2133
test_mm512_storeu_epi8(void * __P,__m512i __A)2134 void test_mm512_storeu_epi8(void *__P, __m512i __A) {
2135 // CHECK-LABEL: @test_mm512_storeu_epi8
2136 // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 1{{$}}
2137 return _mm512_storeu_epi8(__P, __A);
2138 }
2139
test_mm512_mask_storeu_epi8(void * __P,__mmask64 __U,__m512i __A)2140 void test_mm512_mask_storeu_epi8(void *__P, __mmask64 __U, __m512i __A) {
2141 // CHECK-LABEL: @test_mm512_mask_storeu_epi8
2142 // CHECK: @llvm.masked.store.v64i8.p0v64i8(<64 x i8> %{{.*}}, <64 x i8>* %{{.*}}, i32 1, <64 x i1> %{{.*}})
2143 return _mm512_mask_storeu_epi8(__P, __U, __A);
2144 }
test_mm512_mask_test_epi8_mask(__mmask64 __U,__m512i __A,__m512i __B)2145 __mmask64 test_mm512_mask_test_epi8_mask(__mmask64 __U, __m512i __A, __m512i __B) {
2146 // CHECK-LABEL: @test_mm512_mask_test_epi8_mask
2147 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2148 // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}}
2149 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
2150 return _mm512_mask_test_epi8_mask(__U, __A, __B);
2151 }
2152
test_mm512_test_epi16_mask(__m512i __A,__m512i __B)2153 __mmask32 test_mm512_test_epi16_mask(__m512i __A, __m512i __B) {
2154 // CHECK-LABEL: @test_mm512_test_epi16_mask
2155 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2156 // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}}
2157 return _mm512_test_epi16_mask(__A, __B);
2158 }
2159
test_mm512_mask_test_epi16_mask(__mmask32 __U,__m512i __A,__m512i __B)2160 __mmask32 test_mm512_mask_test_epi16_mask(__mmask32 __U, __m512i __A, __m512i __B) {
2161 // CHECK-LABEL: @test_mm512_mask_test_epi16_mask
2162 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2163 // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}}
2164 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
2165 return _mm512_mask_test_epi16_mask(__U, __A, __B);
2166 }
2167
test_mm512_testn_epi8_mask(__m512i __A,__m512i __B)2168 __mmask64 test_mm512_testn_epi8_mask(__m512i __A, __m512i __B) {
2169 // CHECK-LABEL: @test_mm512_testn_epi8_mask
2170 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2171 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
2172 return _mm512_testn_epi8_mask(__A, __B);
2173 }
2174
test_mm512_mask_testn_epi8_mask(__mmask64 __U,__m512i __A,__m512i __B)2175 __mmask64 test_mm512_mask_testn_epi8_mask(__mmask64 __U, __m512i __A, __m512i __B) {
2176 // CHECK-LABEL: @test_mm512_mask_testn_epi8_mask
2177 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2178 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
2179 // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
2180 return _mm512_mask_testn_epi8_mask(__U, __A, __B);
2181 }
2182
test_mm512_testn_epi16_mask(__m512i __A,__m512i __B)2183 __mmask32 test_mm512_testn_epi16_mask(__m512i __A, __m512i __B) {
2184 // CHECK-LABEL: @test_mm512_testn_epi16_mask
2185 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2186 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
2187 return _mm512_testn_epi16_mask(__A, __B);
2188 }
2189
test_mm512_mask_testn_epi16_mask(__mmask32 __U,__m512i __A,__m512i __B)2190 __mmask32 test_mm512_mask_testn_epi16_mask(__mmask32 __U, __m512i __A, __m512i __B) {
2191 // CHECK-LABEL: @test_mm512_mask_testn_epi16_mask
2192 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2193 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
2194 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
2195 return _mm512_mask_testn_epi16_mask(__U, __A, __B);
2196 }
2197
test_mm512_movepi8_mask(__m512i __A)2198 __mmask64 test_mm512_movepi8_mask(__m512i __A) {
2199 // CHECK-LABEL: @test_mm512_movepi8_mask
2200 // CHECK: [[CMP:%.*]] = icmp slt <64 x i8> %{{.*}}, zeroinitializer
2201 // CHECK: bitcast <64 x i1> [[CMP]] to i64
2202 return _mm512_movepi8_mask(__A);
2203 }
2204
test_mm512_movm_epi8(__mmask64 __A)2205 __m512i test_mm512_movm_epi8(__mmask64 __A) {
2206 // CHECK-LABEL: @test_mm512_movm_epi8
2207 // CHECK: %{{.*}} = bitcast i64 %{{.*}} to <64 x i1>
2208 // CHECK: %vpmovm2.i = sext <64 x i1> %{{.*}} to <64 x i8>
2209 return _mm512_movm_epi8(__A);
2210 }
2211
test_mm512_movm_epi16(__mmask32 __A)2212 __m512i test_mm512_movm_epi16(__mmask32 __A) {
2213 // CHECK-LABEL: @test_mm512_movm_epi16
2214 // CHECK: %{{.*}} = bitcast i32 %{{.*}} to <32 x i1>
2215 // CHECK: %vpmovm2.i = sext <32 x i1> %{{.*}} to <32 x i16>
2216 return _mm512_movm_epi16(__A);
2217 }
2218
test_mm512_broadcastb_epi8(__m128i __A)2219 __m512i test_mm512_broadcastb_epi8(__m128i __A) {
2220 // CHECK-LABEL: @test_mm512_broadcastb_epi8
2221 // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <64 x i32> zeroinitializer
2222 return _mm512_broadcastb_epi8(__A);
2223 }
2224
test_mm512_mask_broadcastb_epi8(__m512i __O,__mmask64 __M,__m128i __A)2225 __m512i test_mm512_mask_broadcastb_epi8(__m512i __O, __mmask64 __M, __m128i __A) {
2226 // CHECK-LABEL: @test_mm512_mask_broadcastb_epi8
2227 // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <64 x i32> zeroinitializer
2228 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
2229 return _mm512_mask_broadcastb_epi8(__O, __M, __A);
2230 }
2231
test_mm512_maskz_broadcastb_epi8(__mmask64 __M,__m128i __A)2232 __m512i test_mm512_maskz_broadcastb_epi8(__mmask64 __M, __m128i __A) {
2233 // CHECK-LABEL: @test_mm512_maskz_broadcastb_epi8
2234 // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <64 x i32> zeroinitializer
2235 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
2236 return _mm512_maskz_broadcastb_epi8(__M, __A);
2237 }
2238
test_mm512_broadcastw_epi16(__m128i __A)2239 __m512i test_mm512_broadcastw_epi16(__m128i __A) {
2240 // CHECK-LABEL: @test_mm512_broadcastw_epi16
2241 // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <32 x i32> zeroinitializer
2242 return _mm512_broadcastw_epi16(__A);
2243 }
2244
test_mm512_mask_broadcastw_epi16(__m512i __O,__mmask32 __M,__m128i __A)2245 __m512i test_mm512_mask_broadcastw_epi16(__m512i __O, __mmask32 __M, __m128i __A) {
2246 // CHECK-LABEL: @test_mm512_mask_broadcastw_epi16
2247 // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <32 x i32> zeroinitializer
2248 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
2249 return _mm512_mask_broadcastw_epi16(__O, __M, __A);
2250 }
2251
test_mm512_maskz_broadcastw_epi16(__mmask32 __M,__m128i __A)2252 __m512i test_mm512_maskz_broadcastw_epi16(__mmask32 __M, __m128i __A) {
2253 // CHECK-LABEL: @test_mm512_maskz_broadcastw_epi16
2254 // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <32 x i32> zeroinitializer
2255 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
2256 return _mm512_maskz_broadcastw_epi16(__M, __A);
2257 }
2258
test_mm512_mask_set1_epi16(__m512i __O,__mmask32 __M,short __A)2259 __m512i test_mm512_mask_set1_epi16(__m512i __O, __mmask32 __M, short __A) {
2260 // CHECK-LABEL: @test_mm512_mask_set1_epi16
2261 // CHECK: insertelement <32 x i16> undef, i16 %{{.*}}, i32 0
2262 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 1
2263 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 2
2264 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 3
2265 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 4
2266 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 5
2267 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 6
2268 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 7
2269 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 8
2270 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 9
2271 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 10
2272 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 11
2273 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 12
2274 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 13
2275 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 14
2276 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 15
2277 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 16
2278 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 17
2279 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 18
2280 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 19
2281 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 20
2282 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 21
2283 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 22
2284 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 23
2285 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 24
2286 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 25
2287 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 26
2288 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 27
2289 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 28
2290 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 29
2291 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 30
2292 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 31
2293 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
2294 return _mm512_mask_set1_epi16(__O, __M, __A);
2295 }
2296
test_mm512_maskz_set1_epi16(__mmask32 __M,short __A)2297 __m512i test_mm512_maskz_set1_epi16(__mmask32 __M, short __A) {
2298 // CHECK-LABEL: @test_mm512_maskz_set1_epi16
2299 // CHECK: insertelement <32 x i16> undef, i16 %{{.*}}, i32 0
2300 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 1
2301 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 2
2302 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 3
2303 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 4
2304 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 5
2305 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 6
2306 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 7
2307 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 8
2308 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 9
2309 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 10
2310 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 11
2311 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 12
2312 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 13
2313 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 14
2314 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 15
2315 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 16
2316 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 17
2317 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 18
2318 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 19
2319 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 20
2320 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 21
2321 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 22
2322 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 23
2323 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 24
2324 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 25
2325 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 26
2326 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 27
2327 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 28
2328 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 29
2329 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 30
2330 // CHECK: insertelement <32 x i16> %{{.*}}, i16 %{{.*}}, i32 31
2331 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
2332 return _mm512_maskz_set1_epi16(__M, __A);
2333 }
test_mm512_permutexvar_epi16(__m512i __A,__m512i __B)2334 __m512i test_mm512_permutexvar_epi16(__m512i __A, __m512i __B) {
2335 // CHECK-LABEL: @test_mm512_permutexvar_epi16
2336 // CHECK: @llvm.x86.avx512.permvar.hi.512
2337 return _mm512_permutexvar_epi16(__A, __B);
2338 }
2339
test_mm512_maskz_permutexvar_epi16(__mmask32 __M,__m512i __A,__m512i __B)2340 __m512i test_mm512_maskz_permutexvar_epi16(__mmask32 __M, __m512i __A, __m512i __B) {
2341 // CHECK-LABEL: @test_mm512_maskz_permutexvar_epi16
2342 // CHECK: @llvm.x86.avx512.permvar.hi.512
2343 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
2344 return _mm512_maskz_permutexvar_epi16(__M, __A, __B);
2345 }
2346
test_mm512_mask_permutexvar_epi16(__m512i __W,__mmask32 __M,__m512i __A,__m512i __B)2347 __m512i test_mm512_mask_permutexvar_epi16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
2348 // CHECK-LABEL: @test_mm512_mask_permutexvar_epi16
2349 // CHECK: @llvm.x86.avx512.permvar.hi.512
2350 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
2351 return _mm512_mask_permutexvar_epi16(__W, __M, __A, __B);
2352 }
test_mm512_alignr_epi8(__m512i __A,__m512i __B)2353 __m512i test_mm512_alignr_epi8(__m512i __A,__m512i __B){
2354 // CHECK-LABEL: @test_mm512_alignr_epi8
2355 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 64, i32 65, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 80, i32 81, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 96, i32 97, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 112, i32 113>
2356 return _mm512_alignr_epi8(__A, __B, 2);
2357 }
2358
test_mm512_mask_alignr_epi8(__m512i __W,__mmask64 __U,__m512i __A,__m512i __B)2359 __m512i test_mm512_mask_alignr_epi8(__m512i __W, __mmask64 __U, __m512i __A,__m512i __B){
2360 // CHECK-LABEL: @test_mm512_mask_alignr_epi8
2361 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 64, i32 65, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 80, i32 81, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 96, i32 97, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 112, i32 113>
2362 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
2363 return _mm512_mask_alignr_epi8(__W, __U, __A, __B, 2);
2364 }
2365
test_mm512_maskz_alignr_epi8(__mmask64 __U,__m512i __A,__m512i __B)2366 __m512i test_mm512_maskz_alignr_epi8(__mmask64 __U, __m512i __A,__m512i __B){
2367 // CHECK-LABEL: @test_mm512_maskz_alignr_epi8
2368 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 64, i32 65, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 80, i32 81, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 96, i32 97, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 112, i32 113>
2369 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
2370 return _mm512_maskz_alignr_epi8(__U, __A, __B, 2);
2371 }
2372
2373
2374
test_mm512_mm_dbsad_epu8(__m512i __A,__m512i __B)2375 __m512i test_mm512_mm_dbsad_epu8(__m512i __A, __m512i __B) {
2376 // CHECK-LABEL: @test_mm512_mm_dbsad_epu8
2377 // CHECK: @llvm.x86.avx512.dbpsadbw.512
2378 return _mm512_dbsad_epu8(__A, __B, 170);
2379 }
2380
test_mm512_mm_mask_dbsad_epu8(__m512i __W,__mmask32 __U,__m512i __A,__m512i __B)2381 __m512i test_mm512_mm_mask_dbsad_epu8(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
2382 // CHECK-LABEL: @test_mm512_mm_mask_dbsad_epu8
2383 // CHECK: @llvm.x86.avx512.dbpsadbw.512
2384 //CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
2385 return _mm512_mask_dbsad_epu8(__W, __U, __A, __B, 170);
2386 }
2387
test_mm512_mm_maskz_dbsad_epu8(__mmask32 __U,__m512i __A,__m512i __B)2388 __m512i test_mm512_mm_maskz_dbsad_epu8(__mmask32 __U, __m512i __A, __m512i __B) {
2389 // CHECK-LABEL: @test_mm512_mm_maskz_dbsad_epu8
2390 // CHECK: @llvm.x86.avx512.dbpsadbw.512
2391 //CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
2392 return _mm512_maskz_dbsad_epu8(__U, __A, __B, 170);
2393 }
2394
test_mm512_sad_epu8(__m512i __A,__m512i __B)2395 __m512i test_mm512_sad_epu8(__m512i __A, __m512i __B) {
2396 // CHECK-LABEL: @test_mm512_sad_epu8
2397 // CHECK: @llvm.x86.avx512.psad.bw.512
2398 return _mm512_sad_epu8(__A, __B);
2399 }
2400
test_mm512_movepi16_mask(__m512i __A)2401 __mmask32 test_mm512_movepi16_mask(__m512i __A) {
2402 // CHECK-LABEL: @test_mm512_movepi16_mask
2403 // CHECK: [[CMP:%.*]] = icmp slt <32 x i16> %{{.*}}, zeroinitializer
2404 // CHECK: bitcast <32 x i1> [[CMP]] to i32
2405 return _mm512_movepi16_mask(__A);
2406 }
2407
test_mm512_mask_cvtepi16_storeu_epi8(void * __P,__mmask32 __M,__m512i __A)2408 void test_mm512_mask_cvtepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
2409 {
2410 // CHECK-LABEL: @test_mm512_mask_cvtepi16_storeu_epi8
2411 // CHECK: @llvm.x86.avx512.mask.pmov.wb.mem.512
2412 _mm512_mask_cvtepi16_storeu_epi8 ( __P, __M, __A);
2413 }
2414
test_mm512_mask_cvtsepi16_storeu_epi8(void * __P,__mmask32 __M,__m512i __A)2415 void test_mm512_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
2416 {
2417 // CHECK-LABEL: @test_mm512_mask_cvtsepi16_storeu_epi8
2418 // CHECK: @llvm.x86.avx512.mask.pmovs.wb.mem.512
2419 _mm512_mask_cvtsepi16_storeu_epi8 ( __P, __M, __A);
2420 }
2421
test_mm512_mask_cvtusepi16_storeu_epi8(void * __P,__mmask32 __M,__m512i __A)2422 void test_mm512_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
2423 {
2424 // CHECK-LABEL: @test_mm512_mask_cvtusepi16_storeu_epi8
2425 // CHECK: @llvm.x86.avx512.mask.pmovus.wb.mem.512
2426 _mm512_mask_cvtusepi16_storeu_epi8 ( __P, __M, __A);
2427 }
2428