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