1 // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -fexperimental-new-pass-manager -triple=x86_64-apple-darwin -target-feature +avx512bw -target-feature +avx512vl -emit-llvm -o - -Wall -Werror -Wsign-conversion | FileCheck %s
2 // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -fexperimental-new-pass-manager -triple=x86_64-apple-darwin -target-feature +avx512bw -target-feature +avx512vl -fno-signed-char -emit-llvm -o - -Wall -Werror -Wsign-conversion | FileCheck %s
3 
4 #include <immintrin.h>
5 
test_mm256_cmpeq_epi8_mask(__m256i __a,__m256i __b)6 __mmask32 test_mm256_cmpeq_epi8_mask(__m256i __a, __m256i __b) {
7   // CHECK-LABEL: @test_mm256_cmpeq_epi8_mask
8   // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}
9   return (__mmask32)_mm256_cmpeq_epi8_mask(__a, __b);
10 }
11 
test_mm256_mask_cmpeq_epi8_mask(__mmask32 __u,__m256i __a,__m256i __b)12 __mmask32 test_mm256_mask_cmpeq_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
13   // CHECK-LABEL: @test_mm256_mask_cmpeq_epi8_mask
14   // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}
15   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
16   return (__mmask32)_mm256_mask_cmpeq_epi8_mask(__u, __a, __b);
17 }
18 
test_mm_cmpeq_epi8_mask(__m128i __a,__m128i __b)19 __mmask16 test_mm_cmpeq_epi8_mask(__m128i __a, __m128i __b) {
20   // CHECK-LABEL: @test_mm_cmpeq_epi8_mask
21   // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
22   return (__mmask16)_mm_cmpeq_epi8_mask(__a, __b);
23 }
24 
test_mm_mask_cmpeq_epi8_mask(__mmask16 __u,__m128i __a,__m128i __b)25 __mmask16 test_mm_mask_cmpeq_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
26   // CHECK-LABEL: @test_mm_mask_cmpeq_epi8_mask
27   // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
28   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
29   return (__mmask16)_mm_mask_cmpeq_epi8_mask(__u, __a, __b);
30 }
31 
test_mm256_cmpeq_epi16_mask(__m256i __a,__m256i __b)32 __mmask16 test_mm256_cmpeq_epi16_mask(__m256i __a, __m256i __b) {
33   // CHECK-LABEL: @test_mm256_cmpeq_epi16_mask
34   // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}
35   return (__mmask16)_mm256_cmpeq_epi16_mask(__a, __b);
36 }
37 
test_mm256_mask_cmpeq_epi16_mask(__mmask16 __u,__m256i __a,__m256i __b)38 __mmask16 test_mm256_mask_cmpeq_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
39   // CHECK-LABEL: @test_mm256_mask_cmpeq_epi16_mask
40   // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}
41   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
42   return (__mmask16)_mm256_mask_cmpeq_epi16_mask(__u, __a, __b);
43 }
44 
test_mm_cmpeq_epi16_mask(__m128i __a,__m128i __b)45 __mmask8 test_mm_cmpeq_epi16_mask(__m128i __a, __m128i __b) {
46   // CHECK-LABEL: @test_mm_cmpeq_epi16_mask
47   // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
48   return (__mmask8)_mm_cmpeq_epi16_mask(__a, __b);
49 }
50 
test_mm_mask_cmpeq_epi16_mask(__mmask8 __u,__m128i __a,__m128i __b)51 __mmask8 test_mm_mask_cmpeq_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
52   // CHECK-LABEL: @test_mm_mask_cmpeq_epi16_mask
53   // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
54   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
55   return (__mmask8)_mm_mask_cmpeq_epi16_mask(__u, __a, __b);
56 }
57 
test_mm256_cmpgt_epi8_mask(__m256i __a,__m256i __b)58 __mmask32 test_mm256_cmpgt_epi8_mask(__m256i __a, __m256i __b) {
59   // CHECK-LABEL: @test_mm256_cmpgt_epi8_mask
60   // CHECK: icmp sgt <32 x i8> %{{.*}}, %{{.*}}
61   return (__mmask32)_mm256_cmpgt_epi8_mask(__a, __b);
62 }
63 
test_mm256_mask_cmpgt_epi8_mask(__mmask32 __u,__m256i __a,__m256i __b)64 __mmask32 test_mm256_mask_cmpgt_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
65   // CHECK-LABEL: @test_mm256_mask_cmpgt_epi8_mask
66   // CHECK: icmp sgt <32 x i8> %{{.*}}, %{{.*}}
67   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
68   return (__mmask32)_mm256_mask_cmpgt_epi8_mask(__u, __a, __b);
69 }
70 
test_mm_cmpgt_epi8_mask(__m128i __a,__m128i __b)71 __mmask16 test_mm_cmpgt_epi8_mask(__m128i __a, __m128i __b) {
72   // CHECK-LABEL: @test_mm_cmpgt_epi8_mask
73   // CHECK: icmp sgt <16 x i8> %{{.*}}, %{{.*}}
74   return (__mmask16)_mm_cmpgt_epi8_mask(__a, __b);
75 }
76 
test_mm_mask_cmpgt_epi8_mask(__mmask16 __u,__m128i __a,__m128i __b)77 __mmask16 test_mm_mask_cmpgt_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
78   // CHECK-LABEL: @test_mm_mask_cmpgt_epi8_mask
79   // CHECK: icmp sgt <16 x i8> %{{.*}}, %{{.*}}
80   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
81   return (__mmask16)_mm_mask_cmpgt_epi8_mask(__u, __a, __b);
82 }
83 
test_mm256_cmpgt_epi16_mask(__m256i __a,__m256i __b)84 __mmask16 test_mm256_cmpgt_epi16_mask(__m256i __a, __m256i __b) {
85   // CHECK-LABEL: @test_mm256_cmpgt_epi16_mask
86   // CHECK: icmp sgt <16 x i16> %{{.*}}, %{{.*}}
87   return (__mmask16)_mm256_cmpgt_epi16_mask(__a, __b);
88 }
89 
test_mm256_mask_cmpgt_epi16_mask(__mmask16 __u,__m256i __a,__m256i __b)90 __mmask16 test_mm256_mask_cmpgt_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
91   // CHECK-LABEL: @test_mm256_mask_cmpgt_epi16_mask
92   // CHECK: icmp sgt <16 x i16> %{{.*}}, %{{.*}}
93   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
94   return (__mmask16)_mm256_mask_cmpgt_epi16_mask(__u, __a, __b);
95 }
96 
test_mm_cmpgt_epi16_mask(__m128i __a,__m128i __b)97 __mmask8 test_mm_cmpgt_epi16_mask(__m128i __a, __m128i __b) {
98   // CHECK-LABEL: @test_mm_cmpgt_epi16_mask
99   // CHECK: icmp sgt <8 x i16> %{{.*}}, %{{.*}}
100   return (__mmask8)_mm_cmpgt_epi16_mask(__a, __b);
101 }
102 
test_mm_mask_cmpgt_epi16_mask(__mmask8 __u,__m128i __a,__m128i __b)103 __mmask8 test_mm_mask_cmpgt_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
104   // CHECK-LABEL: @test_mm_mask_cmpgt_epi16_mask
105   // CHECK: icmp sgt <8 x i16> %{{.*}}, %{{.*}}
106   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
107   return (__mmask8)_mm_mask_cmpgt_epi16_mask(__u, __a, __b);
108 }
109 
test_mm_cmpeq_epu8_mask(__m128i __a,__m128i __b)110 __mmask16 test_mm_cmpeq_epu8_mask(__m128i __a, __m128i __b) {
111   // CHECK-LABEL: @test_mm_cmpeq_epu8_mask
112   // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
113   return (__mmask16)_mm_cmpeq_epu8_mask(__a, __b);
114 }
115 
test_mm_mask_cmpeq_epu8_mask(__mmask16 __u,__m128i __a,__m128i __b)116 __mmask16 test_mm_mask_cmpeq_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
117   // CHECK-LABEL: @test_mm_mask_cmpeq_epu8_mask
118   // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
119   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
120   return (__mmask16)_mm_mask_cmpeq_epu8_mask(__u, __a, __b);
121 }
122 
test_mm_cmpeq_epu16_mask(__m128i __a,__m128i __b)123 __mmask8 test_mm_cmpeq_epu16_mask(__m128i __a, __m128i __b) {
124   // CHECK-LABEL: @test_mm_cmpeq_epu16_mask
125   // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
126   return (__mmask8)_mm_cmpeq_epu16_mask(__a, __b);
127 }
128 
test_mm_mask_cmpeq_epu16_mask(__mmask8 __u,__m128i __a,__m128i __b)129 __mmask8 test_mm_mask_cmpeq_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
130   // CHECK-LABEL: @test_mm_mask_cmpeq_epu16_mask
131   // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
132   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
133   return (__mmask8)_mm_mask_cmpeq_epu16_mask(__u, __a, __b);
134 }
135 
test_mm256_cmpeq_epu8_mask(__m256i __a,__m256i __b)136 __mmask32 test_mm256_cmpeq_epu8_mask(__m256i __a, __m256i __b) {
137   // CHECK-LABEL: @test_mm256_cmpeq_epu8_mask
138   // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}
139   return (__mmask32)_mm256_cmpeq_epu8_mask(__a, __b);
140 }
141 
test_mm256_mask_cmpeq_epu8_mask(__mmask32 __u,__m256i __a,__m256i __b)142 __mmask32 test_mm256_mask_cmpeq_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
143   // CHECK-LABEL: @test_mm256_mask_cmpeq_epu8_mask
144   // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}
145   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
146   return (__mmask32)_mm256_mask_cmpeq_epu8_mask(__u, __a, __b);
147 }
148 
test_mm256_cmpeq_epu16_mask(__m256i __a,__m256i __b)149 __mmask16 test_mm256_cmpeq_epu16_mask(__m256i __a, __m256i __b) {
150   // CHECK-LABEL: @test_mm256_cmpeq_epu16_mask
151   // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}
152   return (__mmask16)_mm256_cmpeq_epu16_mask(__a, __b);
153 }
154 
test_mm256_mask_cmpeq_epu16_mask(__mmask16 __u,__m256i __a,__m256i __b)155 __mmask16 test_mm256_mask_cmpeq_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
156   // CHECK-LABEL: @test_mm256_mask_cmpeq_epu16_mask
157   // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}
158   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
159   return (__mmask16)_mm256_mask_cmpeq_epu16_mask(__u, __a, __b);
160 }
161 
test_mm_cmpgt_epu8_mask(__m128i __a,__m128i __b)162 __mmask16 test_mm_cmpgt_epu8_mask(__m128i __a, __m128i __b) {
163   // CHECK-LABEL: @test_mm_cmpgt_epu8_mask
164   // CHECK: icmp ugt <16 x i8> %{{.*}}, %{{.*}}
165   return (__mmask16)_mm_cmpgt_epu8_mask(__a, __b);
166 }
167 
test_mm_mask_cmpgt_epu8_mask(__mmask16 __u,__m128i __a,__m128i __b)168 __mmask16 test_mm_mask_cmpgt_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
169   // CHECK-LABEL: @test_mm_mask_cmpgt_epu8_mask
170   // CHECK: icmp ugt <16 x i8> %{{.*}}, %{{.*}}
171   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
172   return (__mmask16)_mm_mask_cmpgt_epu8_mask(__u, __a, __b);
173 }
174 
test_mm_cmpgt_epu16_mask(__m128i __a,__m128i __b)175 __mmask8 test_mm_cmpgt_epu16_mask(__m128i __a, __m128i __b) {
176   // CHECK-LABEL: @test_mm_cmpgt_epu16_mask
177   // CHECK: icmp ugt <8 x i16> %{{.*}}, %{{.*}}
178   return (__mmask8)_mm_cmpgt_epu16_mask(__a, __b);
179 }
180 
test_mm_mask_cmpgt_epu16_mask(__mmask8 __u,__m128i __a,__m128i __b)181 __mmask8 test_mm_mask_cmpgt_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
182   // CHECK-LABEL: @test_mm_mask_cmpgt_epu16_mask
183   // CHECK: icmp ugt <8 x i16> %{{.*}}, %{{.*}}
184   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
185   return (__mmask8)_mm_mask_cmpgt_epu16_mask(__u, __a, __b);
186 }
187 
test_mm256_cmpgt_epu8_mask(__m256i __a,__m256i __b)188 __mmask32 test_mm256_cmpgt_epu8_mask(__m256i __a, __m256i __b) {
189   // CHECK-LABEL: @test_mm256_cmpgt_epu8_mask
190   // CHECK: icmp ugt <32 x i8> %{{.*}}, %{{.*}}
191   return (__mmask32)_mm256_cmpgt_epu8_mask(__a, __b);
192 }
193 
test_mm256_mask_cmpgt_epu8_mask(__mmask32 __u,__m256i __a,__m256i __b)194 __mmask32 test_mm256_mask_cmpgt_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
195   // CHECK-LABEL: @test_mm256_mask_cmpgt_epu8_mask
196   // CHECK: icmp ugt <32 x i8> %{{.*}}, %{{.*}}
197   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
198   return (__mmask32)_mm256_mask_cmpgt_epu8_mask(__u, __a, __b);
199 }
200 
test_mm256_cmpgt_epu16_mask(__m256i __a,__m256i __b)201 __mmask16 test_mm256_cmpgt_epu16_mask(__m256i __a, __m256i __b) {
202   // CHECK-LABEL: @test_mm256_cmpgt_epu16_mask
203   // CHECK: icmp ugt <16 x i16> %{{.*}}, %{{.*}}
204   return (__mmask16)_mm256_cmpgt_epu16_mask(__a, __b);
205 }
206 
test_mm256_mask_cmpgt_epu16_mask(__mmask16 __u,__m256i __a,__m256i __b)207 __mmask16 test_mm256_mask_cmpgt_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
208   // CHECK-LABEL: @test_mm256_mask_cmpgt_epu16_mask
209   // CHECK: icmp ugt <16 x i16> %{{.*}}, %{{.*}}
210   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
211   return (__mmask16)_mm256_mask_cmpgt_epu16_mask(__u, __a, __b);
212 }
213 
test_mm_cmpge_epi8_mask(__m128i __a,__m128i __b)214 __mmask16 test_mm_cmpge_epi8_mask(__m128i __a, __m128i __b) {
215   // CHECK-LABEL: @test_mm_cmpge_epi8_mask
216   // CHECK: icmp sge <16 x i8> %{{.*}}, %{{.*}}
217   return (__mmask16)_mm_cmpge_epi8_mask(__a, __b);
218 }
219 
test_mm_mask_cmpge_epi8_mask(__mmask16 __u,__m128i __a,__m128i __b)220 __mmask16 test_mm_mask_cmpge_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
221   // CHECK-LABEL: @test_mm_mask_cmpge_epi8_mask
222   // CHECK: icmp sge <16 x i8> %{{.*}}, %{{.*}}
223   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
224   return (__mmask16)_mm_mask_cmpge_epi8_mask(__u, __a, __b);
225 }
226 
test_mm_cmpge_epu8_mask(__m128i __a,__m128i __b)227 __mmask16 test_mm_cmpge_epu8_mask(__m128i __a, __m128i __b) {
228   // CHECK-LABEL: @test_mm_cmpge_epu8_mask
229   // CHECK: icmp uge <16 x i8> %{{.*}}, %{{.*}}
230   return (__mmask16)_mm_cmpge_epu8_mask(__a, __b);
231 }
232 
test_mm_mask_cmpge_epu8_mask(__mmask16 __u,__m128i __a,__m128i __b)233 __mmask16 test_mm_mask_cmpge_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
234   // CHECK-LABEL: @test_mm_mask_cmpge_epu8_mask
235   // CHECK: icmp uge <16 x i8> %{{.*}}, %{{.*}}
236   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
237   return (__mmask16)_mm_mask_cmpge_epu8_mask(__u, __a, __b);
238 }
239 
test_mm_cmpge_epi16_mask(__m128i __a,__m128i __b)240 __mmask8 test_mm_cmpge_epi16_mask(__m128i __a, __m128i __b) {
241   // CHECK-LABEL: @test_mm_cmpge_epi16_mask
242   // CHECK: icmp sge <8 x i16> %{{.*}}, %{{.*}}
243   return (__mmask8)_mm_cmpge_epi16_mask(__a, __b);
244 }
245 
test_mm_mask_cmpge_epi16_mask(__mmask8 __u,__m128i __a,__m128i __b)246 __mmask8 test_mm_mask_cmpge_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
247   // CHECK-LABEL: @test_mm_mask_cmpge_epi16_mask
248   // CHECK: icmp sge <8 x i16> %{{.*}}, %{{.*}}
249   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
250   return (__mmask8)_mm_mask_cmpge_epi16_mask(__u, __a, __b);
251 }
252 
test_mm_cmpge_epu16_mask(__m128i __a,__m128i __b)253 __mmask8 test_mm_cmpge_epu16_mask(__m128i __a, __m128i __b) {
254   // CHECK-LABEL: @test_mm_cmpge_epu16_mask
255   // CHECK: icmp uge <8 x i16> %{{.*}}, %{{.*}}
256   return (__mmask8)_mm_cmpge_epu16_mask(__a, __b);
257 }
258 
test_mm_mask_cmpge_epu16_mask(__mmask8 __u,__m128i __a,__m128i __b)259 __mmask8 test_mm_mask_cmpge_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
260   // CHECK-LABEL: @test_mm_mask_cmpge_epu16_mask
261   // CHECK: icmp uge <8 x i16> %{{.*}}, %{{.*}}
262   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
263   return (__mmask8)_mm_mask_cmpge_epu16_mask(__u, __a, __b);
264 }
265 
test_mm256_cmpge_epi8_mask(__m256i __a,__m256i __b)266 __mmask32 test_mm256_cmpge_epi8_mask(__m256i __a, __m256i __b) {
267   // CHECK-LABEL: @test_mm256_cmpge_epi8_mask
268   // CHECK: icmp sge <32 x i8> %{{.*}}, %{{.*}}
269   return (__mmask32)_mm256_cmpge_epi8_mask(__a, __b);
270 }
271 
test_mm256_mask_cmpge_epi8_mask(__mmask32 __u,__m256i __a,__m256i __b)272 __mmask32 test_mm256_mask_cmpge_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
273   // CHECK-LABEL: @test_mm256_mask_cmpge_epi8_mask
274   // CHECK: icmp sge <32 x i8> %{{.*}}, %{{.*}}
275   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
276   return (__mmask32)_mm256_mask_cmpge_epi8_mask(__u, __a, __b);
277 }
278 
test_mm256_cmpge_epu8_mask(__m256i __a,__m256i __b)279 __mmask32 test_mm256_cmpge_epu8_mask(__m256i __a, __m256i __b) {
280   // CHECK-LABEL: @test_mm256_cmpge_epu8_mask
281   // CHECK: icmp uge <32 x i8> %{{.*}}, %{{.*}}
282   return (__mmask32)_mm256_cmpge_epu8_mask(__a, __b);
283 }
284 
test_mm256_mask_cmpge_epu8_mask(__mmask32 __u,__m256i __a,__m256i __b)285 __mmask32 test_mm256_mask_cmpge_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
286   // CHECK-LABEL: @test_mm256_mask_cmpge_epu8_mask
287   // CHECK: icmp uge <32 x i8> %{{.*}}, %{{.*}}
288   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
289   return (__mmask32)_mm256_mask_cmpge_epu8_mask(__u, __a, __b);
290 }
291 
test_mm256_cmpge_epi16_mask(__m256i __a,__m256i __b)292 __mmask16 test_mm256_cmpge_epi16_mask(__m256i __a, __m256i __b) {
293   // CHECK-LABEL: @test_mm256_cmpge_epi16_mask
294   // CHECK: icmp sge <16 x i16> %{{.*}}, %{{.*}}
295   return (__mmask16)_mm256_cmpge_epi16_mask(__a, __b);
296 }
297 
test_mm256_mask_cmpge_epi16_mask(__mmask16 __u,__m256i __a,__m256i __b)298 __mmask16 test_mm256_mask_cmpge_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
299   // CHECK-LABEL: @test_mm256_mask_cmpge_epi16_mask
300   // CHECK: icmp sge <16 x i16> %{{.*}}, %{{.*}}
301   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
302   return (__mmask16)_mm256_mask_cmpge_epi16_mask(__u, __a, __b);
303 }
304 
test_mm256_cmpge_epu16_mask(__m256i __a,__m256i __b)305 __mmask16 test_mm256_cmpge_epu16_mask(__m256i __a, __m256i __b) {
306   // CHECK-LABEL: @test_mm256_cmpge_epu16_mask
307   // CHECK: icmp uge <16 x i16> %{{.*}}, %{{.*}}
308   return (__mmask16)_mm256_cmpge_epu16_mask(__a, __b);
309 }
310 
test_mm256_mask_cmpge_epu16_mask(__mmask16 __u,__m256i __a,__m256i __b)311 __mmask16 test_mm256_mask_cmpge_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
312   // CHECK-LABEL: @test_mm256_mask_cmpge_epu16_mask
313   // CHECK: icmp uge <16 x i16> %{{.*}}, %{{.*}}
314   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
315   return (__mmask16)_mm256_mask_cmpge_epu16_mask(__u, __a, __b);
316 }
317 
test_mm_cmple_epi8_mask(__m128i __a,__m128i __b)318 __mmask16 test_mm_cmple_epi8_mask(__m128i __a, __m128i __b) {
319   // CHECK-LABEL: @test_mm_cmple_epi8_mask
320   // CHECK: icmp sle <16 x i8> %{{.*}}, %{{.*}}
321   return (__mmask16)_mm_cmple_epi8_mask(__a, __b);
322 }
323 
test_mm_mask_cmple_epi8_mask(__mmask16 __u,__m128i __a,__m128i __b)324 __mmask16 test_mm_mask_cmple_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
325   // CHECK-LABEL: @test_mm_mask_cmple_epi8_mask
326   // CHECK: icmp sle <16 x i8> %{{.*}}, %{{.*}}
327   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
328   return (__mmask16)_mm_mask_cmple_epi8_mask(__u, __a, __b);
329 }
330 
test_mm_cmple_epu8_mask(__m128i __a,__m128i __b)331 __mmask16 test_mm_cmple_epu8_mask(__m128i __a, __m128i __b) {
332   // CHECK-LABEL: @test_mm_cmple_epu8_mask
333   // CHECK: icmp ule <16 x i8> %{{.*}}, %{{.*}}
334   return (__mmask16)_mm_cmple_epu8_mask(__a, __b);
335 }
336 
test_mm_mask_cmple_epu8_mask(__mmask16 __u,__m128i __a,__m128i __b)337 __mmask16 test_mm_mask_cmple_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
338   // CHECK-LABEL: @test_mm_mask_cmple_epu8_mask
339   // CHECK: icmp ule <16 x i8> %{{.*}}, %{{.*}}
340   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
341   return (__mmask16)_mm_mask_cmple_epu8_mask(__u, __a, __b);
342 }
343 
test_mm_cmple_epi16_mask(__m128i __a,__m128i __b)344 __mmask8 test_mm_cmple_epi16_mask(__m128i __a, __m128i __b) {
345   // CHECK-LABEL: @test_mm_cmple_epi16_mask
346   // CHECK: icmp sle <8 x i16> %{{.*}}, %{{.*}}
347   return (__mmask8)_mm_cmple_epi16_mask(__a, __b);
348 }
349 
test_mm_mask_cmple_epi16_mask(__mmask8 __u,__m128i __a,__m128i __b)350 __mmask8 test_mm_mask_cmple_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
351   // CHECK-LABEL: @test_mm_mask_cmple_epi16_mask
352   // CHECK: icmp sle <8 x i16> %{{.*}}, %{{.*}}
353   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
354   return (__mmask8)_mm_mask_cmple_epi16_mask(__u, __a, __b);
355 }
356 
test_mm_cmple_epu16_mask(__m128i __a,__m128i __b)357 __mmask8 test_mm_cmple_epu16_mask(__m128i __a, __m128i __b) {
358   // CHECK-LABEL: @test_mm_cmple_epu16_mask
359   // CHECK: icmp ule <8 x i16> %{{.*}}, %{{.*}}
360   return (__mmask8)_mm_cmple_epu16_mask(__a, __b);
361 }
362 
test_mm_mask_cmple_epu16_mask(__mmask8 __u,__m128i __a,__m128i __b)363 __mmask8 test_mm_mask_cmple_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
364   // CHECK-LABEL: @test_mm_mask_cmple_epu16_mask
365   // CHECK: icmp ule <8 x i16> %{{.*}}, %{{.*}}
366   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
367   return (__mmask8)_mm_mask_cmple_epu16_mask(__u, __a, __b);
368 }
369 
test_mm256_cmple_epi8_mask(__m256i __a,__m256i __b)370 __mmask32 test_mm256_cmple_epi8_mask(__m256i __a, __m256i __b) {
371   // CHECK-LABEL: @test_mm256_cmple_epi8_mask
372   // CHECK: icmp sle <32 x i8> %{{.*}}, %{{.*}}
373   return (__mmask32)_mm256_cmple_epi8_mask(__a, __b);
374 }
375 
test_mm256_mask_cmple_epi8_mask(__mmask32 __u,__m256i __a,__m256i __b)376 __mmask32 test_mm256_mask_cmple_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
377   // CHECK-LABEL: @test_mm256_mask_cmple_epi8_mask
378   // CHECK: icmp sle <32 x i8> %{{.*}}, %{{.*}}
379   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
380   return (__mmask32)_mm256_mask_cmple_epi8_mask(__u, __a, __b);
381 }
382 
test_mm256_cmple_epu8_mask(__m256i __a,__m256i __b)383 __mmask32 test_mm256_cmple_epu8_mask(__m256i __a, __m256i __b) {
384   // CHECK-LABEL: @test_mm256_cmple_epu8_mask
385   // CHECK: icmp ule <32 x i8> %{{.*}}, %{{.*}}
386   return (__mmask32)_mm256_cmple_epu8_mask(__a, __b);
387 }
388 
test_mm256_mask_cmple_epu8_mask(__mmask32 __u,__m256i __a,__m256i __b)389 __mmask32 test_mm256_mask_cmple_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
390   // CHECK-LABEL: @test_mm256_mask_cmple_epu8_mask
391   // CHECK: icmp ule <32 x i8> %{{.*}}, %{{.*}}
392   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
393   return (__mmask32)_mm256_mask_cmple_epu8_mask(__u, __a, __b);
394 }
395 
test_mm256_cmple_epi16_mask(__m256i __a,__m256i __b)396 __mmask16 test_mm256_cmple_epi16_mask(__m256i __a, __m256i __b) {
397   // CHECK-LABEL: @test_mm256_cmple_epi16_mask
398   // CHECK: icmp sle <16 x i16> %{{.*}}, %{{.*}}
399   return (__mmask16)_mm256_cmple_epi16_mask(__a, __b);
400 }
401 
test_mm256_mask_cmple_epi16_mask(__mmask16 __u,__m256i __a,__m256i __b)402 __mmask16 test_mm256_mask_cmple_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
403   // CHECK-LABEL: @test_mm256_mask_cmple_epi16_mask
404   // CHECK: icmp sle <16 x i16> %{{.*}}, %{{.*}}
405   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
406   return (__mmask16)_mm256_mask_cmple_epi16_mask(__u, __a, __b);
407 }
408 
test_mm256_cmple_epu16_mask(__m256i __a,__m256i __b)409 __mmask16 test_mm256_cmple_epu16_mask(__m256i __a, __m256i __b) {
410   // CHECK-LABEL: @test_mm256_cmple_epu16_mask
411   // CHECK: icmp ule <16 x i16> %{{.*}}, %{{.*}}
412   return (__mmask16)_mm256_cmple_epu16_mask(__a, __b);
413 }
414 
test_mm256_mask_cmple_epu16_mask(__mmask16 __u,__m256i __a,__m256i __b)415 __mmask16 test_mm256_mask_cmple_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
416   // CHECK-LABEL: @test_mm256_mask_cmple_epu16_mask
417   // CHECK: icmp ule <16 x i16> %{{.*}}, %{{.*}}
418   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
419   return (__mmask16)_mm256_mask_cmple_epu16_mask(__u, __a, __b);
420 }
421 
test_mm_cmplt_epi8_mask(__m128i __a,__m128i __b)422 __mmask16 test_mm_cmplt_epi8_mask(__m128i __a, __m128i __b) {
423   // CHECK-LABEL: @test_mm_cmplt_epi8_mask
424   // CHECK: icmp slt <16 x i8> %{{.*}}, %{{.*}}
425   return (__mmask16)_mm_cmplt_epi8_mask(__a, __b);
426 }
427 
test_mm_mask_cmplt_epi8_mask(__mmask16 __u,__m128i __a,__m128i __b)428 __mmask16 test_mm_mask_cmplt_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
429   // CHECK-LABEL: @test_mm_mask_cmplt_epi8_mask
430   // CHECK: icmp slt <16 x i8> %{{.*}}, %{{.*}}
431   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
432   return (__mmask16)_mm_mask_cmplt_epi8_mask(__u, __a, __b);
433 }
434 
test_mm_cmplt_epu8_mask(__m128i __a,__m128i __b)435 __mmask16 test_mm_cmplt_epu8_mask(__m128i __a, __m128i __b) {
436   // CHECK-LABEL: @test_mm_cmplt_epu8_mask
437   // CHECK: icmp ult <16 x i8> %{{.*}}, %{{.*}}
438   return (__mmask16)_mm_cmplt_epu8_mask(__a, __b);
439 }
440 
test_mm_mask_cmplt_epu8_mask(__mmask16 __u,__m128i __a,__m128i __b)441 __mmask16 test_mm_mask_cmplt_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
442   // CHECK-LABEL: @test_mm_mask_cmplt_epu8_mask
443   // CHECK: icmp ult <16 x i8> %{{.*}}, %{{.*}}
444   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
445   return (__mmask16)_mm_mask_cmplt_epu8_mask(__u, __a, __b);
446 }
447 
test_mm_cmplt_epi16_mask(__m128i __a,__m128i __b)448 __mmask8 test_mm_cmplt_epi16_mask(__m128i __a, __m128i __b) {
449   // CHECK-LABEL: @test_mm_cmplt_epi16_mask
450   // CHECK: icmp slt <8 x i16> %{{.*}}, %{{.*}}
451   return (__mmask8)_mm_cmplt_epi16_mask(__a, __b);
452 }
453 
test_mm_mask_cmplt_epi16_mask(__mmask8 __u,__m128i __a,__m128i __b)454 __mmask8 test_mm_mask_cmplt_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
455   // CHECK-LABEL: @test_mm_mask_cmplt_epi16_mask
456   // CHECK: icmp slt <8 x i16> %{{.*}}, %{{.*}}
457   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
458   return (__mmask8)_mm_mask_cmplt_epi16_mask(__u, __a, __b);
459 }
460 
test_mm_cmplt_epu16_mask(__m128i __a,__m128i __b)461 __mmask8 test_mm_cmplt_epu16_mask(__m128i __a, __m128i __b) {
462   // CHECK-LABEL: @test_mm_cmplt_epu16_mask
463   // CHECK: icmp ult <8 x i16> %{{.*}}, %{{.*}}
464   return (__mmask8)_mm_cmplt_epu16_mask(__a, __b);
465 }
466 
test_mm_mask_cmplt_epu16_mask(__mmask8 __u,__m128i __a,__m128i __b)467 __mmask8 test_mm_mask_cmplt_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
468   // CHECK-LABEL: @test_mm_mask_cmplt_epu16_mask
469   // CHECK: icmp ult <8 x i16> %{{.*}}, %{{.*}}
470   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
471   return (__mmask8)_mm_mask_cmplt_epu16_mask(__u, __a, __b);
472 }
473 
test_mm256_cmplt_epi8_mask(__m256i __a,__m256i __b)474 __mmask32 test_mm256_cmplt_epi8_mask(__m256i __a, __m256i __b) {
475   // CHECK-LABEL: @test_mm256_cmplt_epi8_mask
476   // CHECK: icmp slt <32 x i8> %{{.*}}, %{{.*}}
477   return (__mmask32)_mm256_cmplt_epi8_mask(__a, __b);
478 }
479 
test_mm256_mask_cmplt_epi8_mask(__mmask32 __u,__m256i __a,__m256i __b)480 __mmask32 test_mm256_mask_cmplt_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
481   // CHECK-LABEL: @test_mm256_mask_cmplt_epi8_mask
482   // CHECK: icmp slt <32 x i8> %{{.*}}, %{{.*}}
483   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
484   return (__mmask32)_mm256_mask_cmplt_epi8_mask(__u, __a, __b);
485 }
486 
test_mm256_cmplt_epu8_mask(__m256i __a,__m256i __b)487 __mmask32 test_mm256_cmplt_epu8_mask(__m256i __a, __m256i __b) {
488   // CHECK-LABEL: @test_mm256_cmplt_epu8_mask
489   // CHECK: icmp ult <32 x i8> %{{.*}}, %{{.*}}
490   return (__mmask32)_mm256_cmplt_epu8_mask(__a, __b);
491 }
492 
test_mm256_mask_cmplt_epu8_mask(__mmask32 __u,__m256i __a,__m256i __b)493 __mmask32 test_mm256_mask_cmplt_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
494   // CHECK-LABEL: @test_mm256_mask_cmplt_epu8_mask
495   // CHECK: icmp ult <32 x i8> %{{.*}}, %{{.*}}
496   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
497   return (__mmask32)_mm256_mask_cmplt_epu8_mask(__u, __a, __b);
498 }
499 
test_mm256_cmplt_epi16_mask(__m256i __a,__m256i __b)500 __mmask16 test_mm256_cmplt_epi16_mask(__m256i __a, __m256i __b) {
501   // CHECK-LABEL: @test_mm256_cmplt_epi16_mask
502   // CHECK: icmp slt <16 x i16> %{{.*}}, %{{.*}}
503   return (__mmask16)_mm256_cmplt_epi16_mask(__a, __b);
504 }
505 
test_mm256_mask_cmplt_epi16_mask(__mmask16 __u,__m256i __a,__m256i __b)506 __mmask16 test_mm256_mask_cmplt_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
507   // CHECK-LABEL: @test_mm256_mask_cmplt_epi16_mask
508   // CHECK: icmp slt <16 x i16> %{{.*}}, %{{.*}}
509   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
510   return (__mmask16)_mm256_mask_cmplt_epi16_mask(__u, __a, __b);
511 }
512 
test_mm256_cmplt_epu16_mask(__m256i __a,__m256i __b)513 __mmask16 test_mm256_cmplt_epu16_mask(__m256i __a, __m256i __b) {
514   // CHECK-LABEL: @test_mm256_cmplt_epu16_mask
515   // CHECK: icmp ult <16 x i16> %{{.*}}, %{{.*}}
516   return (__mmask16)_mm256_cmplt_epu16_mask(__a, __b);
517 }
518 
test_mm256_mask_cmplt_epu16_mask(__mmask16 __u,__m256i __a,__m256i __b)519 __mmask16 test_mm256_mask_cmplt_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
520   // CHECK-LABEL: @test_mm256_mask_cmplt_epu16_mask
521   // CHECK: icmp ult <16 x i16> %{{.*}}, %{{.*}}
522   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
523   return (__mmask16)_mm256_mask_cmplt_epu16_mask(__u, __a, __b);
524 }
525 
test_mm_cmpneq_epi8_mask(__m128i __a,__m128i __b)526 __mmask16 test_mm_cmpneq_epi8_mask(__m128i __a, __m128i __b) {
527   // CHECK-LABEL: @test_mm_cmpneq_epi8_mask
528   // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}}
529   return (__mmask16)_mm_cmpneq_epi8_mask(__a, __b);
530 }
531 
test_mm_mask_cmpneq_epi8_mask(__mmask16 __u,__m128i __a,__m128i __b)532 __mmask16 test_mm_mask_cmpneq_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
533   // CHECK-LABEL: @test_mm_mask_cmpneq_epi8_mask
534   // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}}
535   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
536   return (__mmask16)_mm_mask_cmpneq_epi8_mask(__u, __a, __b);
537 }
538 
test_mm_cmpneq_epu8_mask(__m128i __a,__m128i __b)539 __mmask16 test_mm_cmpneq_epu8_mask(__m128i __a, __m128i __b) {
540   // CHECK-LABEL: @test_mm_cmpneq_epu8_mask
541   // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}}
542   return (__mmask16)_mm_cmpneq_epu8_mask(__a, __b);
543 }
544 
test_mm_mask_cmpneq_epu8_mask(__mmask16 __u,__m128i __a,__m128i __b)545 __mmask16 test_mm_mask_cmpneq_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
546   // CHECK-LABEL: @test_mm_mask_cmpneq_epu8_mask
547   // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}}
548   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
549   return (__mmask16)_mm_mask_cmpneq_epu8_mask(__u, __a, __b);
550 }
551 
test_mm_cmpneq_epi16_mask(__m128i __a,__m128i __b)552 __mmask8 test_mm_cmpneq_epi16_mask(__m128i __a, __m128i __b) {
553   // CHECK-LABEL: @test_mm_cmpneq_epi16_mask
554   // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}}
555   return (__mmask8)_mm_cmpneq_epi16_mask(__a, __b);
556 }
557 
test_mm_mask_cmpneq_epi16_mask(__mmask8 __u,__m128i __a,__m128i __b)558 __mmask8 test_mm_mask_cmpneq_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
559   // CHECK-LABEL: @test_mm_mask_cmpneq_epi16_mask
560   // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}}
561   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
562   return (__mmask8)_mm_mask_cmpneq_epi16_mask(__u, __a, __b);
563 }
564 
test_mm_cmpneq_epu16_mask(__m128i __a,__m128i __b)565 __mmask8 test_mm_cmpneq_epu16_mask(__m128i __a, __m128i __b) {
566   // CHECK-LABEL: @test_mm_cmpneq_epu16_mask
567   // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}}
568   return (__mmask8)_mm_cmpneq_epu16_mask(__a, __b);
569 }
570 
test_mm_mask_cmpneq_epu16_mask(__mmask8 __u,__m128i __a,__m128i __b)571 __mmask8 test_mm_mask_cmpneq_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
572   // CHECK-LABEL: @test_mm_mask_cmpneq_epu16_mask
573   // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}}
574   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
575   return (__mmask8)_mm_mask_cmpneq_epu16_mask(__u, __a, __b);
576 }
577 
test_mm256_cmpneq_epi8_mask(__m256i __a,__m256i __b)578 __mmask32 test_mm256_cmpneq_epi8_mask(__m256i __a, __m256i __b) {
579   // CHECK-LABEL: @test_mm256_cmpneq_epi8_mask
580   // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}}
581   return (__mmask32)_mm256_cmpneq_epi8_mask(__a, __b);
582 }
583 
test_mm256_mask_cmpneq_epi8_mask(__mmask32 __u,__m256i __a,__m256i __b)584 __mmask32 test_mm256_mask_cmpneq_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
585   // CHECK-LABEL: @test_mm256_mask_cmpneq_epi8_mask
586   // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}}
587   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
588   return (__mmask32)_mm256_mask_cmpneq_epi8_mask(__u, __a, __b);
589 }
590 
test_mm256_cmpneq_epu8_mask(__m256i __a,__m256i __b)591 __mmask32 test_mm256_cmpneq_epu8_mask(__m256i __a, __m256i __b) {
592   // CHECK-LABEL: @test_mm256_cmpneq_epu8_mask
593   // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}}
594   return (__mmask32)_mm256_cmpneq_epu8_mask(__a, __b);
595 }
596 
test_mm256_mask_cmpneq_epu8_mask(__mmask32 __u,__m256i __a,__m256i __b)597 __mmask32 test_mm256_mask_cmpneq_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
598   // CHECK-LABEL: @test_mm256_mask_cmpneq_epu8_mask
599   // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}}
600   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
601   return (__mmask32)_mm256_mask_cmpneq_epu8_mask(__u, __a, __b);
602 }
603 
test_mm256_cmpneq_epi16_mask(__m256i __a,__m256i __b)604 __mmask16 test_mm256_cmpneq_epi16_mask(__m256i __a, __m256i __b) {
605   // CHECK-LABEL: @test_mm256_cmpneq_epi16_mask
606   // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}}
607   return (__mmask16)_mm256_cmpneq_epi16_mask(__a, __b);
608 }
609 
test_mm256_mask_cmpneq_epi16_mask(__mmask16 __u,__m256i __a,__m256i __b)610 __mmask16 test_mm256_mask_cmpneq_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
611   // CHECK-LABEL: @test_mm256_mask_cmpneq_epi16_mask
612   // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}}
613   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
614   return (__mmask16)_mm256_mask_cmpneq_epi16_mask(__u, __a, __b);
615 }
616 
test_mm256_cmpneq_epu16_mask(__m256i __a,__m256i __b)617 __mmask16 test_mm256_cmpneq_epu16_mask(__m256i __a, __m256i __b) {
618   // CHECK-LABEL: @test_mm256_cmpneq_epu16_mask
619   // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}}
620   return (__mmask16)_mm256_cmpneq_epu16_mask(__a, __b);
621 }
622 
test_mm256_mask_cmpneq_epu16_mask(__mmask16 __u,__m256i __a,__m256i __b)623 __mmask16 test_mm256_mask_cmpneq_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
624   // CHECK-LABEL: @test_mm256_mask_cmpneq_epu16_mask
625   // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}}
626   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
627   return (__mmask16)_mm256_mask_cmpneq_epu16_mask(__u, __a, __b);
628 }
629 
test_mm_cmp_epi8_mask(__m128i __a,__m128i __b)630 __mmask16 test_mm_cmp_epi8_mask(__m128i __a, __m128i __b) {
631   // CHECK-LABEL: @test_mm_cmp_epi8_mask
632   // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
633   return (__mmask16)_mm_cmp_epi8_mask(__a, __b, 0);
634 }
635 
test_mm_mask_cmp_epi8_mask(__mmask16 __u,__m128i __a,__m128i __b)636 __mmask16 test_mm_mask_cmp_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
637   // CHECK-LABEL: @test_mm_mask_cmp_epi8_mask
638   // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
639   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
640   return (__mmask16)_mm_mask_cmp_epi8_mask(__u, __a, __b, 0);
641 }
642 
test_mm_cmp_epu8_mask(__m128i __a,__m128i __b)643 __mmask16 test_mm_cmp_epu8_mask(__m128i __a, __m128i __b) {
644   // CHECK-LABEL: @test_mm_cmp_epu8_mask
645   // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
646   return (__mmask16)_mm_cmp_epu8_mask(__a, __b, 0);
647 }
648 
test_mm_mask_cmp_epu8_mask(__mmask16 __u,__m128i __a,__m128i __b)649 __mmask16 test_mm_mask_cmp_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
650   // CHECK-LABEL: @test_mm_mask_cmp_epu8_mask
651   // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
652   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
653   return (__mmask16)_mm_mask_cmp_epu8_mask(__u, __a, __b, 0);
654 }
655 
test_mm_cmp_epi16_mask(__m128i __a,__m128i __b)656 __mmask8 test_mm_cmp_epi16_mask(__m128i __a, __m128i __b) {
657   // CHECK-LABEL: @test_mm_cmp_epi16_mask
658   // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
659   return (__mmask8)_mm_cmp_epi16_mask(__a, __b, 0);
660 }
661 
test_mm_mask_cmp_epi16_mask(__mmask8 __u,__m128i __a,__m128i __b)662 __mmask8 test_mm_mask_cmp_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
663   // CHECK-LABEL: @test_mm_mask_cmp_epi16_mask
664   // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
665   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
666   return (__mmask8)_mm_mask_cmp_epi16_mask(__u, __a, __b, 0);
667 }
668 
test_mm_cmp_epu16_mask(__m128i __a,__m128i __b)669 __mmask8 test_mm_cmp_epu16_mask(__m128i __a, __m128i __b) {
670   // CHECK-LABEL: @test_mm_cmp_epu16_mask
671   // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
672   return (__mmask8)_mm_cmp_epu16_mask(__a, __b, 0);
673 }
674 
test_mm_mask_cmp_epu16_mask(__mmask8 __u,__m128i __a,__m128i __b)675 __mmask8 test_mm_mask_cmp_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
676   // CHECK-LABEL: @test_mm_mask_cmp_epu16_mask
677   // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
678   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
679   return (__mmask8)_mm_mask_cmp_epu16_mask(__u, __a, __b, 0);
680 }
681 
test_mm256_cmp_epi8_mask(__m256i __a,__m256i __b)682 __mmask32 test_mm256_cmp_epi8_mask(__m256i __a, __m256i __b) {
683   // CHECK-LABEL: @test_mm256_cmp_epi8_mask
684   // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}
685   return (__mmask32)_mm256_cmp_epi8_mask(__a, __b, 0);
686 }
687 
test_mm256_mask_cmp_epi8_mask(__mmask32 __u,__m256i __a,__m256i __b)688 __mmask32 test_mm256_mask_cmp_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
689   // CHECK-LABEL: @test_mm256_mask_cmp_epi8_mask
690   // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}
691   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
692   return (__mmask32)_mm256_mask_cmp_epi8_mask(__u, __a, __b, 0);
693 }
694 
test_mm256_cmp_epu8_mask(__m256i __a,__m256i __b)695 __mmask32 test_mm256_cmp_epu8_mask(__m256i __a, __m256i __b) {
696   // CHECK-LABEL: @test_mm256_cmp_epu8_mask
697   // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}
698   return (__mmask32)_mm256_cmp_epu8_mask(__a, __b, 0);
699 }
700 
test_mm256_mask_cmp_epu8_mask(__mmask32 __u,__m256i __a,__m256i __b)701 __mmask32 test_mm256_mask_cmp_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
702   // CHECK-LABEL: @test_mm256_mask_cmp_epu8_mask
703   // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}
704   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
705   return (__mmask32)_mm256_mask_cmp_epu8_mask(__u, __a, __b, 0);
706 }
707 
test_mm256_cmp_epi16_mask(__m256i __a,__m256i __b)708 __mmask16 test_mm256_cmp_epi16_mask(__m256i __a, __m256i __b) {
709   // CHECK-LABEL: @test_mm256_cmp_epi16_mask
710   // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}
711   return (__mmask16)_mm256_cmp_epi16_mask(__a, __b, 0);
712 }
713 
test_mm256_mask_cmp_epi16_mask(__mmask16 __u,__m256i __a,__m256i __b)714 __mmask16 test_mm256_mask_cmp_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
715   // CHECK-LABEL: @test_mm256_mask_cmp_epi16_mask
716   // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}
717   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
718   return (__mmask16)_mm256_mask_cmp_epi16_mask(__u, __a, __b, 0);
719 }
720 
test_mm256_cmp_epu16_mask(__m256i __a,__m256i __b)721 __mmask16 test_mm256_cmp_epu16_mask(__m256i __a, __m256i __b) {
722   // CHECK-LABEL: @test_mm256_cmp_epu16_mask
723   // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}
724   return (__mmask16)_mm256_cmp_epu16_mask(__a, __b, 0);
725 }
726 
test_mm256_mask_cmp_epu16_mask(__mmask16 __u,__m256i __a,__m256i __b)727 __mmask16 test_mm256_mask_cmp_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
728   // CHECK-LABEL: @test_mm256_mask_cmp_epu16_mask
729   // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}
730   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
731   return (__mmask16)_mm256_mask_cmp_epu16_mask(__u, __a, __b, 0);
732 }
733 
734 
test_mm256_mask_add_epi8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)735 __m256i test_mm256_mask_add_epi8 (__m256i __W, __mmask32 __U, __m256i __A, __m256i __B){
736   //CHECK-LABEL: @test_mm256_mask_add_epi8
737   //CHECK: add <32 x i8> %{{.*}}, %{{.*}}
738   //CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
739   return _mm256_mask_add_epi8(__W, __U , __A, __B);
740 }
741 
test_mm256_maskz_add_epi8(__mmask32 __U,__m256i __A,__m256i __B)742 __m256i test_mm256_maskz_add_epi8 (__mmask32 __U, __m256i __A, __m256i __B) {
743   //CHECK-LABEL: @test_mm256_maskz_add_epi8
744   //CHECK: add <32 x i8> %{{.*}}, %{{.*}}
745   //CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
746   return _mm256_maskz_add_epi8(__U , __A, __B);
747 }
test_mm256_mask_add_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)748 __m256i test_mm256_mask_add_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
749   //CHECK-LABEL: @test_mm256_mask_add_epi16
750   //CHECK: add <16 x i16> %{{.*}}, %{{.*}}
751   //CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
752   return _mm256_mask_add_epi16(__W, __U , __A, __B);
753 }
754 
test_mm256_maskz_add_epi16(__mmask16 __U,__m256i __A,__m256i __B)755 __m256i test_mm256_maskz_add_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
756   //CHECK-LABEL: @test_mm256_maskz_add_epi16
757   //CHECK: add <16 x i16> %{{.*}}, %{{.*}}
758   //CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
759   return _mm256_maskz_add_epi16(__U , __A, __B);
760 }
761 
test_mm256_mask_sub_epi8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)762 __m256i test_mm256_mask_sub_epi8 (__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
763   //CHECK-LABEL: @test_mm256_mask_sub_epi8
764   //CHECK: sub <32 x i8> %{{.*}}, %{{.*}}
765   //CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
766   return _mm256_mask_sub_epi8(__W, __U , __A, __B);
767 }
768 
test_mm256_maskz_sub_epi8(__mmask32 __U,__m256i __A,__m256i __B)769 __m256i test_mm256_maskz_sub_epi8 (__mmask32 __U, __m256i __A, __m256i __B) {
770   //CHECK-LABEL: @test_mm256_maskz_sub_epi8
771   //CHECK: sub <32 x i8> %{{.*}}, %{{.*}}
772   //CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
773   return _mm256_maskz_sub_epi8(__U , __A, __B);
774 }
775 
test_mm256_mask_sub_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)776 __m256i test_mm256_mask_sub_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
777   //CHECK-LABEL: @test_mm256_mask_sub_epi16
778   //CHECK: sub <16 x i16> %{{.*}}, %{{.*}}
779   //CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
780   return _mm256_mask_sub_epi16(__W, __U , __A, __B);
781 }
782 
test_mm256_maskz_sub_epi16(__mmask16 __U,__m256i __A,__m256i __B)783 __m256i test_mm256_maskz_sub_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
784   //CHECK-LABEL: @test_mm256_maskz_sub_epi16
785   //CHECK: sub <16 x i16> %{{.*}}, %{{.*}}
786   //CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
787   return _mm256_maskz_sub_epi16(__U , __A, __B);
788 }
789 
test_mm_mask_add_epi8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)790 __m128i test_mm_mask_add_epi8 (__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
791   //CHECK-LABEL: @test_mm_mask_add_epi8
792   //CHECK: add <16 x i8> %{{.*}}, %{{.*}}
793   //CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
794   return _mm_mask_add_epi8(__W, __U , __A, __B);
795 }
796 
test_mm_maskz_add_epi8(__mmask16 __U,__m128i __A,__m128i __B)797 __m128i test_mm_maskz_add_epi8 (__mmask16 __U, __m128i __A, __m128i __B) {
798   //CHECK-LABEL: @test_mm_maskz_add_epi8
799   //CHECK: add <16 x i8> %{{.*}}, %{{.*}}
800   //CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
801   return _mm_maskz_add_epi8(__U , __A, __B);
802 }
803 
test_mm_mask_add_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)804 __m128i test_mm_mask_add_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
805   //CHECK-LABEL: @test_mm_mask_add_epi16
806   //CHECK: add <8 x i16> %{{.*}}, %{{.*}}
807   //CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
808   return _mm_mask_add_epi16(__W, __U , __A, __B);
809 }
810 
test_mm_maskz_add_epi16(__mmask8 __U,__m128i __A,__m128i __B)811 __m128i test_mm_maskz_add_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
812   //CHECK-LABEL: @test_mm_maskz_add_epi16
813   //CHECK: add <8 x i16> %{{.*}}, %{{.*}}
814   //CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
815   return _mm_maskz_add_epi16(__U , __A, __B);
816 }
817 
test_mm_mask_sub_epi8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)818 __m128i test_mm_mask_sub_epi8 (__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
819   //CHECK-LABEL: @test_mm_mask_sub_epi8
820   //CHECK: sub <16 x i8> %{{.*}}, %{{.*}}
821   //CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
822   return _mm_mask_sub_epi8(__W, __U , __A, __B);
823 }
824 
test_mm_maskz_sub_epi8(__mmask16 __U,__m128i __A,__m128i __B)825 __m128i test_mm_maskz_sub_epi8 (__mmask16 __U, __m128i __A, __m128i __B) {
826   //CHECK-LABEL: @test_mm_maskz_sub_epi8
827   //CHECK: sub <16 x i8> %{{.*}}, %{{.*}}
828   //CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
829   return _mm_maskz_sub_epi8(__U , __A, __B);
830 }
831 
test_mm_mask_sub_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)832 __m128i test_mm_mask_sub_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
833   //CHECK-LABEL: @test_mm_mask_sub_epi16
834   //CHECK: sub <8 x i16> %{{.*}}, %{{.*}}
835   //CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
836   return _mm_mask_sub_epi16(__W, __U , __A, __B);
837 }
838 
test_mm_maskz_sub_epi16(__mmask8 __U,__m128i __A,__m128i __B)839 __m128i test_mm_maskz_sub_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
840   //CHECK-LABEL: @test_mm_maskz_sub_epi16
841   //CHECK: sub <8 x i16> %{{.*}}, %{{.*}}
842   //CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
843   return _mm_maskz_sub_epi16(__U , __A, __B);
844 }
845 
test_mm256_mask_mullo_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)846 __m256i test_mm256_mask_mullo_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
847   //CHECK-LABEL: @test_mm256_mask_mullo_epi16
848   //CHECK: mul <16 x i16> %{{.*}}, %{{.*}}
849   //CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
850   return _mm256_mask_mullo_epi16(__W, __U , __A, __B);
851 }
852 
test_mm256_maskz_mullo_epi16(__mmask16 __U,__m256i __A,__m256i __B)853 __m256i test_mm256_maskz_mullo_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
854   //CHECK-LABEL: @test_mm256_maskz_mullo_epi16
855   //CHECK: mul <16 x i16> %{{.*}}, %{{.*}}
856   //CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
857   return _mm256_maskz_mullo_epi16(__U , __A, __B);
858 }
859 
test_mm_mask_mullo_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)860 __m128i test_mm_mask_mullo_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
861   //CHECK-LABEL: @test_mm_mask_mullo_epi16
862   //CHECK: mul <8 x i16> %{{.*}}, %{{.*}}
863   //CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
864   return _mm_mask_mullo_epi16(__W, __U , __A, __B);
865 }
866 
test_mm_maskz_mullo_epi16(__mmask8 __U,__m128i __A,__m128i __B)867 __m128i test_mm_maskz_mullo_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
868   //CHECK-LABEL: @test_mm_maskz_mullo_epi16
869   //CHECK: mul <8 x i16> %{{.*}}, %{{.*}}
870   //CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
871   return _mm_maskz_mullo_epi16(__U , __A, __B);
872 }
873 
874 
test_mm_mask_blend_epi8(__mmask16 __U,__m128i __A,__m128i __W)875 __m128i test_mm_mask_blend_epi8(__mmask16 __U, __m128i __A, __m128i __W) {
876   // CHECK-LABEL: @test_mm_mask_blend_epi8
877   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
878   return _mm_mask_blend_epi8(__U,__A,__W);
879 }
test_mm256_mask_blend_epi8(__mmask32 __U,__m256i __A,__m256i __W)880 __m256i test_mm256_mask_blend_epi8(__mmask32 __U, __m256i __A, __m256i __W) {
881   // CHECK-LABEL: @test_mm256_mask_blend_epi8
882   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
883   return _mm256_mask_blend_epi8(__U,__A,__W);
884 }
885 
test_mm_mask_blend_epi16(__mmask8 __U,__m128i __A,__m128i __W)886 __m128i test_mm_mask_blend_epi16(__mmask8 __U, __m128i __A, __m128i __W) {
887   // CHECK-LABEL: @test_mm_mask_blend_epi16
888   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
889   return _mm_mask_blend_epi16(__U,__A,__W);
890 }
891 
test_mm256_mask_blend_epi16(__mmask16 __U,__m256i __A,__m256i __W)892 __m256i test_mm256_mask_blend_epi16(__mmask16 __U, __m256i __A, __m256i __W) {
893   // CHECK-LABEL: @test_mm256_mask_blend_epi16
894   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
895   return _mm256_mask_blend_epi16(__U,__A,__W);
896 }
897 
test_mm_mask_abs_epi8(__m128i __W,__mmask16 __U,__m128i __A)898 __m128i test_mm_mask_abs_epi8(__m128i __W, __mmask16 __U, __m128i __A) {
899   // CHECK-LABEL: @test_mm_mask_abs_epi8
900   // CHECK: [[ABS:%.*]] = call <16 x i8> @llvm.abs.v16i8(<16 x i8> %{{.*}}, i1 false)
901   // CHECK: [[TMP:%.*]] = bitcast <16 x i8> [[ABS]] to <2 x i64>
902   // CHECK: [[ABS:%.*]] = bitcast <2 x i64> [[TMP]] to <16 x i8>
903   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> [[ABS]], <16 x i8> %{{.*}}
904   return _mm_mask_abs_epi8(__W,__U,__A);
905 }
906 
test_mm_maskz_abs_epi8(__mmask16 __U,__m128i __A)907 __m128i test_mm_maskz_abs_epi8(__mmask16 __U, __m128i __A) {
908   // CHECK-LABEL: @test_mm_maskz_abs_epi8
909   // CHECK: [[ABS:%.*]] = call <16 x i8> @llvm.abs.v16i8(<16 x i8> %{{.*}}, i1 false)
910   // CHECK: [[TMP:%.*]] = bitcast <16 x i8> [[ABS]] to <2 x i64>
911   // CHECK: [[ABS:%.*]] = bitcast <2 x i64> [[TMP]] to <16 x i8>
912   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> [[ABS]], <16 x i8> %{{.*}}
913   return _mm_maskz_abs_epi8(__U,__A);
914 }
915 
test_mm256_mask_abs_epi8(__m256i __W,__mmask32 __U,__m256i __A)916 __m256i test_mm256_mask_abs_epi8(__m256i __W, __mmask32 __U, __m256i __A) {
917   // CHECK-LABEL: @test_mm256_mask_abs_epi8
918   // CHECK: [[ABS:%.*]] = call <32 x i8> @llvm.abs.v32i8(<32 x i8> %{{.*}}, i1 false)
919   // CHECK: [[TMP:%.*]] = bitcast <32 x i8> [[ABS]] to <4 x i64>
920   // CHECK: [[ABS:%.*]] = bitcast <4 x i64> [[TMP]] to <32 x i8>
921   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> [[ABS]], <32 x i8> %{{.*}}
922   return _mm256_mask_abs_epi8(__W,__U,__A);
923 }
924 
test_mm256_maskz_abs_epi8(__mmask32 __U,__m256i __A)925 __m256i test_mm256_maskz_abs_epi8(__mmask32 __U, __m256i __A) {
926   // CHECK-LABEL: @test_mm256_maskz_abs_epi8
927   // CHECK: [[ABS:%.*]] = call <32 x i8> @llvm.abs.v32i8(<32 x i8> %{{.*}}, i1 false)
928   // CHECK: [[TMP:%.*]] = bitcast <32 x i8> [[ABS]] to <4 x i64>
929   // CHECK: [[ABS:%.*]] = bitcast <4 x i64> [[TMP]] to <32 x i8>
930   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> [[ABS]], <32 x i8> %{{.*}}
931   return _mm256_maskz_abs_epi8(__U,__A);
932 }
933 
test_mm_mask_abs_epi16(__m128i __W,__mmask8 __U,__m128i __A)934 __m128i test_mm_mask_abs_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
935   // CHECK-LABEL: @test_mm_mask_abs_epi16
936   // CHECK: [[ABS:%.*]] = call <8 x i16> @llvm.abs.v8i16(<8 x i16> %{{.*}}, i1 false)
937   // CHECK: [[TMP:%.*]] = bitcast <8 x i16> [[ABS]] to <2 x i64>
938   // CHECK: [[ABS:%.*]] = bitcast <2 x i64> [[TMP]] to <8 x i16>
939   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> [[ABS]], <8 x i16> %{{.*}}
940   return _mm_mask_abs_epi16(__W,__U,__A);
941 }
942 
test_mm_maskz_abs_epi16(__mmask8 __U,__m128i __A)943 __m128i test_mm_maskz_abs_epi16(__mmask8 __U, __m128i __A) {
944   // CHECK-LABEL: @test_mm_maskz_abs_epi16
945   // CHECK: [[ABS:%.*]] = call <8 x i16> @llvm.abs.v8i16(<8 x i16> %{{.*}}, i1 false)
946   // CHECK: [[TMP:%.*]] = bitcast <8 x i16> [[ABS]] to <2 x i64>
947   // CHECK: [[ABS:%.*]] = bitcast <2 x i64> [[TMP]] to <8 x i16>
948   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> [[ABS]], <8 x i16> %{{.*}}
949   return _mm_maskz_abs_epi16(__U,__A);
950 }
951 
test_mm256_mask_abs_epi16(__m256i __W,__mmask16 __U,__m256i __A)952 __m256i test_mm256_mask_abs_epi16(__m256i __W, __mmask16 __U, __m256i __A) {
953   // CHECK-LABEL: @test_mm256_mask_abs_epi16
954   // CHECK: [[ABS:%.*]] = call <16 x i16> @llvm.abs.v16i16(<16 x i16> %{{.*}}, i1 false)
955   // CHECK: [[TMP:%.*]] = bitcast <16 x i16> [[ABS]] to <4 x i64>
956   // CHECK: [[ABS:%.*]] = bitcast <4 x i64> [[TMP]] to <16 x i16>
957   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> [[ABS]], <16 x i16> %{{.*}}
958   return _mm256_mask_abs_epi16(__W,__U,__A);
959 }
960 
test_mm256_maskz_abs_epi16(__mmask16 __U,__m256i __A)961 __m256i test_mm256_maskz_abs_epi16(__mmask16 __U, __m256i __A) {
962   // CHECK-LABEL: @test_mm256_maskz_abs_epi16
963   // CHECK: [[ABS:%.*]] = call <16 x i16> @llvm.abs.v16i16(<16 x i16> %{{.*}}, i1 false)
964   // CHECK: [[TMP:%.*]] = bitcast <16 x i16> [[ABS]] to <4 x i64>
965   // CHECK: [[ABS:%.*]] = bitcast <4 x i64> [[TMP]] to <16 x i16>
966   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> [[ABS]], <16 x i16> %{{.*}}
967   return _mm256_maskz_abs_epi16(__U,__A);
968 }
969 
test_mm_maskz_packs_epi32(__mmask8 __M,__m128i __A,__m128i __B)970 __m128i test_mm_maskz_packs_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
971   // CHECK-LABEL: @test_mm_maskz_packs_epi32
972   // CHECK: @llvm.x86.sse2.packssdw
973   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
974   return _mm_maskz_packs_epi32(__M,__A,__B);
975 }
test_mm_mask_packs_epi32(__m128i __W,__mmask8 __M,__m128i __A,__m128i __B)976 __m128i test_mm_mask_packs_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
977   // CHECK-LABEL: @test_mm_mask_packs_epi32
978   // CHECK: @llvm.x86.sse2.packssdw
979   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
980   return _mm_mask_packs_epi32(__W,__M,__A,__B);
981 }
test_mm256_maskz_packs_epi32(__mmask16 __M,__m256i __A,__m256i __B)982 __m256i test_mm256_maskz_packs_epi32(__mmask16 __M, __m256i __A, __m256i __B) {
983   // CHECK-LABEL: @test_mm256_maskz_packs_epi32
984   // CHECK: @llvm.x86.avx2.packssdw
985   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
986   return _mm256_maskz_packs_epi32(__M,__A,__B);
987 }
test_mm256_mask_packs_epi32(__m256i __W,__mmask16 __M,__m256i __A,__m256i __B)988 __m256i test_mm256_mask_packs_epi32(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {
989   // CHECK-LABEL: @test_mm256_mask_packs_epi32
990   // CHECK: @llvm.x86.avx2.packssdw
991   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
992   return _mm256_mask_packs_epi32(__W,__M,__A,__B);
993 }
test_mm_maskz_packs_epi16(__mmask16 __M,__m128i __A,__m128i __B)994 __m128i test_mm_maskz_packs_epi16(__mmask16 __M, __m128i __A, __m128i __B) {
995   // CHECK-LABEL: @test_mm_maskz_packs_epi16
996   // CHECK: @llvm.x86.sse2.packsswb
997   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
998   return _mm_maskz_packs_epi16(__M,__A,__B);
999 }
test_mm_mask_packs_epi16(__m128i __W,__mmask16 __M,__m128i __A,__m128i __B)1000 __m128i test_mm_mask_packs_epi16(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {
1001   // CHECK-LABEL: @test_mm_mask_packs_epi16
1002   // CHECK: @llvm.x86.sse2.packsswb
1003   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1004   return _mm_mask_packs_epi16(__W,__M,__A,__B);
1005 }
test_mm256_maskz_packs_epi16(__mmask32 __M,__m256i __A,__m256i __B)1006 __m256i test_mm256_maskz_packs_epi16(__mmask32 __M, __m256i __A, __m256i __B) {
1007   // CHECK-LABEL: @test_mm256_maskz_packs_epi16
1008   // CHECK: @llvm.x86.avx2.packsswb
1009   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1010   return _mm256_maskz_packs_epi16(__M,__A,__B);
1011 }
test_mm256_mask_packs_epi16(__m256i __W,__mmask32 __M,__m256i __A,__m256i __B)1012 __m256i test_mm256_mask_packs_epi16(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {
1013   // CHECK-LABEL: @test_mm256_mask_packs_epi16
1014   // CHECK: @llvm.x86.avx2.packsswb
1015   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1016   return _mm256_mask_packs_epi16(__W,__M,__A,__B);
1017 }
1018 
test_mm_mask_packus_epi32(__m128i __W,__mmask8 __M,__m128i __A,__m128i __B)1019 __m128i test_mm_mask_packus_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
1020   // CHECK-LABEL: @test_mm_mask_packus_epi32
1021   // CHECK: @llvm.x86.sse41.packusdw
1022   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1023   return _mm_mask_packus_epi32(__W,__M,__A,__B);
1024 }
1025 
test_mm_maskz_packus_epi32(__mmask8 __M,__m128i __A,__m128i __B)1026 __m128i test_mm_maskz_packus_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
1027   // CHECK-LABEL: @test_mm_maskz_packus_epi32
1028   // CHECK: @llvm.x86.sse41.packusdw
1029   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1030   return _mm_maskz_packus_epi32(__M,__A,__B);
1031 }
1032 
test_mm256_maskz_packus_epi32(__mmask16 __M,__m256i __A,__m256i __B)1033 __m256i test_mm256_maskz_packus_epi32(__mmask16 __M, __m256i __A, __m256i __B) {
1034   // CHECK-LABEL: @test_mm256_maskz_packus_epi32
1035   // CHECK: @llvm.x86.avx2.packusdw
1036   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1037   return _mm256_maskz_packus_epi32(__M,__A,__B);
1038 }
1039 
test_mm256_mask_packus_epi32(__m256i __W,__mmask16 __M,__m256i __A,__m256i __B)1040 __m256i test_mm256_mask_packus_epi32(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {
1041   // CHECK-LABEL: @test_mm256_mask_packus_epi32
1042   // CHECK: @llvm.x86.avx2.packusdw
1043   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1044   return _mm256_mask_packus_epi32(__W,__M,__A,__B);
1045 }
1046 
test_mm_maskz_packus_epi16(__mmask16 __M,__m128i __A,__m128i __B)1047 __m128i test_mm_maskz_packus_epi16(__mmask16 __M, __m128i __A, __m128i __B) {
1048   // CHECK-LABEL: @test_mm_maskz_packus_epi16
1049   // CHECK: @llvm.x86.sse2.packuswb
1050   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1051   return _mm_maskz_packus_epi16(__M,__A,__B);
1052 }
1053 
test_mm_mask_packus_epi16(__m128i __W,__mmask16 __M,__m128i __A,__m128i __B)1054 __m128i test_mm_mask_packus_epi16(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {
1055   // CHECK-LABEL: @test_mm_mask_packus_epi16
1056   // CHECK: @llvm.x86.sse2.packuswb
1057   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1058   return _mm_mask_packus_epi16(__W,__M,__A,__B);
1059 }
1060 
test_mm256_maskz_packus_epi16(__mmask32 __M,__m256i __A,__m256i __B)1061 __m256i test_mm256_maskz_packus_epi16(__mmask32 __M, __m256i __A, __m256i __B) {
1062   // CHECK-LABEL: @test_mm256_maskz_packus_epi16
1063   // CHECK: @llvm.x86.avx2.packuswb
1064   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1065   return _mm256_maskz_packus_epi16(__M,__A,__B);
1066 }
1067 
test_mm256_mask_packus_epi16(__m256i __W,__mmask32 __M,__m256i __A,__m256i __B)1068 __m256i test_mm256_mask_packus_epi16(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {
1069   // CHECK-LABEL: @test_mm256_mask_packus_epi16
1070   // CHECK: @llvm.x86.avx2.packuswb
1071   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1072   return _mm256_mask_packus_epi16(__W,__M,__A,__B);
1073 }
1074 
test_mm_mask_adds_epi8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)1075 __m128i test_mm_mask_adds_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1076   // CHECK-LABEL: @test_mm_mask_adds_epi8
1077   // CHECK: @llvm.sadd.sat.v16i8
1078   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1079   return _mm_mask_adds_epi8(__W,__U,__A,__B);
1080 }
test_mm_maskz_adds_epi8(__mmask16 __U,__m128i __A,__m128i __B)1081 __m128i test_mm_maskz_adds_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
1082   // CHECK-LABEL: @test_mm_maskz_adds_epi8
1083   // CHECK: @llvm.sadd.sat.v16i8
1084   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1085   return _mm_maskz_adds_epi8(__U,__A,__B);
1086 }
test_mm256_mask_adds_epi8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)1087 __m256i test_mm256_mask_adds_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1088   // CHECK-LABEL: @test_mm256_mask_adds_epi8
1089   // CHECK: @llvm.sadd.sat.v32i8
1090   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1091   return _mm256_mask_adds_epi8(__W,__U,__A,__B);
1092 }
test_mm256_maskz_adds_epi8(__mmask32 __U,__m256i __A,__m256i __B)1093 __m256i test_mm256_maskz_adds_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
1094   // CHECK-LABEL: @test_mm256_maskz_adds_epi8
1095   // CHECK: @llvm.sadd.sat.v32i8
1096   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1097   return _mm256_maskz_adds_epi8(__U,__A,__B);
1098 }
test_mm_mask_adds_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)1099 __m128i test_mm_mask_adds_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1100   // CHECK-LABEL: @test_mm_mask_adds_epi16
1101   // CHECK: @llvm.sadd.sat.v8i16
1102   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1103   return _mm_mask_adds_epi16(__W,__U,__A,__B);
1104 }
test_mm_maskz_adds_epi16(__mmask8 __U,__m128i __A,__m128i __B)1105 __m128i test_mm_maskz_adds_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
1106   // CHECK-LABEL: @test_mm_maskz_adds_epi16
1107   // CHECK: @llvm.sadd.sat.v8i16
1108   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1109   return _mm_maskz_adds_epi16(__U,__A,__B);
1110 }
test_mm256_mask_adds_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)1111 __m256i test_mm256_mask_adds_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1112   // CHECK-LABEL: @test_mm256_mask_adds_epi16
1113   // CHECK: @llvm.sadd.sat.v16i16
1114   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1115   return _mm256_mask_adds_epi16(__W,__U,__A,__B);
1116 }
test_mm256_maskz_adds_epi16(__mmask16 __U,__m256i __A,__m256i __B)1117 __m256i test_mm256_maskz_adds_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
1118   // CHECK-LABEL: @test_mm256_maskz_adds_epi16
1119   // CHECK: @llvm.sadd.sat.v16i16
1120   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1121   return _mm256_maskz_adds_epi16(__U,__A,__B);
1122 }
test_mm_mask_adds_epu8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)1123 __m128i test_mm_mask_adds_epu8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1124   // CHECK-LABEL: @test_mm_mask_adds_epu8
1125   // CHECK-NOT: @llvm.x86.sse2.paddus.b
1126   // CHECK: call <16 x i8> @llvm.uadd.sat.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1127   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1128   return _mm_mask_adds_epu8(__W,__U,__A,__B);
1129 }
test_mm_maskz_adds_epu8(__mmask16 __U,__m128i __A,__m128i __B)1130 __m128i test_mm_maskz_adds_epu8(__mmask16 __U, __m128i __A, __m128i __B) {
1131   // CHECK-LABEL: @test_mm_maskz_adds_epu8
1132   // CHECK-NOT: @llvm.x86.sse2.paddus.b
1133   // CHECK: call <16 x i8> @llvm.uadd.sat.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1134   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1135   return _mm_maskz_adds_epu8(__U,__A,__B);
1136 }
test_mm256_mask_adds_epu8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)1137 __m256i test_mm256_mask_adds_epu8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1138   // CHECK-LABEL: @test_mm256_mask_adds_epu8
1139   // CHECK-NOT: @llvm.x86.avx2.paddus.b
1140   // CHECK: call <32 x i8> @llvm.uadd.sat.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1141   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1142   return _mm256_mask_adds_epu8(__W,__U,__A,__B);
1143 }
test_mm256_maskz_adds_epu8(__mmask32 __U,__m256i __A,__m256i __B)1144 __m256i test_mm256_maskz_adds_epu8(__mmask32 __U, __m256i __A, __m256i __B) {
1145   // CHECK-LABEL: @test_mm256_maskz_adds_epu8
1146   // CHECK-NOT: @llvm.x86.avx2.paddus.b
1147   // CHECK: call <32 x i8> @llvm.uadd.sat.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1148   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1149   return _mm256_maskz_adds_epu8(__U,__A,__B);
1150 }
test_mm_mask_adds_epu16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)1151 __m128i test_mm_mask_adds_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1152   // CHECK-LABEL: @test_mm_mask_adds_epu16
1153   // CHECK-NOT: @llvm.x86.sse2.paddus.w
1154   // CHECK: call <8 x i16> @llvm.uadd.sat.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1155   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1156   return _mm_mask_adds_epu16(__W,__U,__A,__B);
1157 }
test_mm_maskz_adds_epu16(__mmask8 __U,__m128i __A,__m128i __B)1158 __m128i test_mm_maskz_adds_epu16(__mmask8 __U, __m128i __A, __m128i __B) {
1159   // CHECK-LABEL: @test_mm_maskz_adds_epu16
1160   // CHECK-NOT: @llvm.x86.sse2.paddus.w
1161   // CHECK: call <8 x i16> @llvm.uadd.sat.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1162   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1163   return _mm_maskz_adds_epu16(__U,__A,__B);
1164 }
test_mm256_mask_adds_epu16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)1165 __m256i test_mm256_mask_adds_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1166   // CHECK-LABEL: @test_mm256_mask_adds_epu16
1167   // CHECK-NOT: @llvm.x86.avx2.paddus.w
1168   // CHECK: call <16 x i16> @llvm.uadd.sat.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1169   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1170   return _mm256_mask_adds_epu16(__W,__U,__A,__B);
1171 }
test_mm256_maskz_adds_epu16(__mmask16 __U,__m256i __A,__m256i __B)1172 __m256i test_mm256_maskz_adds_epu16(__mmask16 __U, __m256i __A, __m256i __B) {
1173   // CHECK-LABEL: @test_mm256_maskz_adds_epu16
1174   // CHECK-NOT: @llvm.x86.avx2.paddus.w
1175   // CHECK: call <16 x i16> @llvm.uadd.sat.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1176   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1177   return _mm256_maskz_adds_epu16(__U,__A,__B);
1178 }
test_mm_mask_avg_epu8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)1179 __m128i test_mm_mask_avg_epu8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1180   // CHECK-LABEL: @test_mm_mask_avg_epu8
1181   // CHECK: @llvm.x86.sse2.pavg.b
1182   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1183   return _mm_mask_avg_epu8(__W,__U,__A,__B);
1184 }
test_mm_maskz_avg_epu8(__mmask16 __U,__m128i __A,__m128i __B)1185 __m128i test_mm_maskz_avg_epu8(__mmask16 __U, __m128i __A, __m128i __B) {
1186   // CHECK-LABEL: @test_mm_maskz_avg_epu8
1187   // CHECK: @llvm.x86.sse2.pavg.b
1188   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1189   return _mm_maskz_avg_epu8(__U,__A,__B);
1190 }
test_mm256_mask_avg_epu8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)1191 __m256i test_mm256_mask_avg_epu8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1192   // CHECK-LABEL: @test_mm256_mask_avg_epu8
1193   // CHECK: @llvm.x86.avx2.pavg.b
1194   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1195   return _mm256_mask_avg_epu8(__W,__U,__A,__B);
1196 }
test_mm256_maskz_avg_epu8(__mmask32 __U,__m256i __A,__m256i __B)1197 __m256i test_mm256_maskz_avg_epu8(__mmask32 __U, __m256i __A, __m256i __B) {
1198   // CHECK-LABEL: @test_mm256_maskz_avg_epu8
1199   // CHECK: @llvm.x86.avx2.pavg.b
1200   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1201   return _mm256_maskz_avg_epu8(__U,__A,__B);
1202 }
test_mm_mask_avg_epu16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)1203 __m128i test_mm_mask_avg_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1204   // CHECK-LABEL: @test_mm_mask_avg_epu16
1205   // CHECK: @llvm.x86.sse2.pavg.w
1206   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1207   return _mm_mask_avg_epu16(__W,__U,__A,__B);
1208 }
test_mm_maskz_avg_epu16(__mmask8 __U,__m128i __A,__m128i __B)1209 __m128i test_mm_maskz_avg_epu16(__mmask8 __U, __m128i __A, __m128i __B) {
1210   // CHECK-LABEL: @test_mm_maskz_avg_epu16
1211   // CHECK: @llvm.x86.sse2.pavg.w
1212   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1213   return _mm_maskz_avg_epu16(__U,__A,__B);
1214 }
test_mm256_mask_avg_epu16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)1215 __m256i test_mm256_mask_avg_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1216   // CHECK-LABEL: @test_mm256_mask_avg_epu16
1217   // CHECK: @llvm.x86.avx2.pavg.w
1218   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1219   return _mm256_mask_avg_epu16(__W,__U,__A,__B);
1220 }
test_mm256_maskz_avg_epu16(__mmask16 __U,__m256i __A,__m256i __B)1221 __m256i test_mm256_maskz_avg_epu16(__mmask16 __U, __m256i __A, __m256i __B) {
1222   // CHECK-LABEL: @test_mm256_maskz_avg_epu16
1223   // CHECK: @llvm.x86.avx2.pavg.w
1224   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1225   return _mm256_maskz_avg_epu16(__U,__A,__B);
1226 }
test_mm_maskz_max_epi8(__mmask16 __M,__m128i __A,__m128i __B)1227 __m128i test_mm_maskz_max_epi8(__mmask16 __M, __m128i __A, __m128i __B) {
1228   // CHECK-LABEL: @test_mm_maskz_max_epi8
1229   // CHECK: [[RES:%.*]] = call <16 x i8> @llvm.smax.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1230   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]
1231   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1232   // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1233   return _mm_maskz_max_epi8(__M,__A,__B);
1234 }
test_mm_mask_max_epi8(__m128i __W,__mmask16 __M,__m128i __A,__m128i __B)1235 __m128i test_mm_mask_max_epi8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {
1236   // CHECK-LABEL: @test_mm_mask_max_epi8
1237   // CHECK: [[RES:%.*]] = call <16 x i8> @llvm.smax.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1238   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]
1239   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1240   // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1241   return _mm_mask_max_epi8(__W,__M,__A,__B);
1242 }
test_mm256_maskz_max_epi8(__mmask32 __M,__m256i __A,__m256i __B)1243 __m256i test_mm256_maskz_max_epi8(__mmask32 __M, __m256i __A, __m256i __B) {
1244   // CHECK-LABEL: @test_mm256_maskz_max_epi8
1245   // CHECK: [[RES:%.*]] = call <32 x i8> @llvm.smax.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1246   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]
1247   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1248   // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1249   return _mm256_maskz_max_epi8(__M,__A,__B);
1250 }
test_mm256_mask_max_epi8(__m256i __W,__mmask32 __M,__m256i __A,__m256i __B)1251 __m256i test_mm256_mask_max_epi8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {
1252   // CHECK-LABEL: @test_mm256_mask_max_epi8
1253   // CHECK: [[RES:%.*]] = call <32 x i8> @llvm.smax.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1254   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]
1255   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1256   // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1257   return _mm256_mask_max_epi8(__W,__M,__A,__B);
1258 }
test_mm_maskz_max_epi16(__mmask8 __M,__m128i __A,__m128i __B)1259 __m128i test_mm_maskz_max_epi16(__mmask8 __M, __m128i __A, __m128i __B) {
1260   // CHECK-LABEL: @test_mm_maskz_max_epi16
1261   // CHECK: [[RES:%.*]] = call <8 x i16> @llvm.smax.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1262   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]
1263   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1264   // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1265   return _mm_maskz_max_epi16(__M,__A,__B);
1266 }
test_mm_mask_max_epi16(__m128i __W,__mmask8 __M,__m128i __A,__m128i __B)1267 __m128i test_mm_mask_max_epi16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
1268   // CHECK-LABEL: @test_mm_mask_max_epi16
1269   // CHECK: [[RES:%.*]] = call <8 x i16> @llvm.smax.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1270   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]
1271   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1272   // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1273   return _mm_mask_max_epi16(__W,__M,__A,__B);
1274 }
test_mm256_maskz_max_epi16(__mmask16 __M,__m256i __A,__m256i __B)1275 __m256i test_mm256_maskz_max_epi16(__mmask16 __M, __m256i __A, __m256i __B) {
1276   // CHECK-LABEL: @test_mm256_maskz_max_epi16
1277   // CHECK: [[RES:%.*]] = call <16 x i16> @llvm.smax.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1278   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]
1279   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1280   // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1281   return _mm256_maskz_max_epi16(__M,__A,__B);
1282 }
test_mm256_mask_max_epi16(__m256i __W,__mmask16 __M,__m256i __A,__m256i __B)1283 __m256i test_mm256_mask_max_epi16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {
1284   // CHECK-LABEL: @test_mm256_mask_max_epi16
1285   // CHECK: [[RES:%.*]] = call <16 x i16> @llvm.smax.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1286   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]
1287   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1288   // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1289   return _mm256_mask_max_epi16(__W,__M,__A,__B);
1290 }
test_mm_maskz_max_epu8(__mmask16 __M,__m128i __A,__m128i __B)1291 __m128i test_mm_maskz_max_epu8(__mmask16 __M, __m128i __A, __m128i __B) {
1292   // CHECK-LABEL: @test_mm_maskz_max_epu8
1293   // CHECK: [[RES:%.*]] = call <16 x i8> @llvm.umax.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1294   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]
1295   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1296   // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1297   return _mm_maskz_max_epu8(__M,__A,__B);
1298 }
test_mm_mask_max_epu8(__m128i __W,__mmask16 __M,__m128i __A,__m128i __B)1299 __m128i test_mm_mask_max_epu8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {
1300   // CHECK-LABEL: @test_mm_mask_max_epu8
1301   // CHECK: [[RES:%.*]] = call <16 x i8> @llvm.umax.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1302   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]
1303   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1304   // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1305   return _mm_mask_max_epu8(__W,__M,__A,__B);
1306 }
test_mm256_maskz_max_epu8(__mmask32 __M,__m256i __A,__m256i __B)1307 __m256i test_mm256_maskz_max_epu8(__mmask32 __M, __m256i __A, __m256i __B) {
1308   // CHECK-LABEL: @test_mm256_maskz_max_epu8
1309   // CHECK: [[RES:%.*]] = call <32 x i8> @llvm.umax.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1310   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]
1311   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1312   // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1313   return _mm256_maskz_max_epu8(__M,__A,__B);
1314 }
test_mm256_mask_max_epu8(__m256i __W,__mmask32 __M,__m256i __A,__m256i __B)1315 __m256i test_mm256_mask_max_epu8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {
1316   // CHECK-LABEL: @test_mm256_mask_max_epu8
1317   // CHECK: [[RES:%.*]] = call <32 x i8> @llvm.umax.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1318   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]
1319   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1320   // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1321   return _mm256_mask_max_epu8(__W,__M,__A,__B);
1322 }
test_mm_maskz_max_epu16(__mmask8 __M,__m128i __A,__m128i __B)1323 __m128i test_mm_maskz_max_epu16(__mmask8 __M, __m128i __A, __m128i __B) {
1324   // CHECK-LABEL: @test_mm_maskz_max_epu16
1325   // CHECK: [[RES:%.*]] = call <8 x i16> @llvm.umax.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1326   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]
1327   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1328   // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1329   return _mm_maskz_max_epu16(__M,__A,__B);
1330 }
test_mm_mask_max_epu16(__m128i __W,__mmask8 __M,__m128i __A,__m128i __B)1331 __m128i test_mm_mask_max_epu16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
1332   // CHECK-LABEL: @test_mm_mask_max_epu16
1333   // CHECK: [[RES:%.*]] = call <8 x i16> @llvm.umax.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1334   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]
1335   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1336   // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1337   return _mm_mask_max_epu16(__W,__M,__A,__B);
1338 }
test_mm256_maskz_max_epu16(__mmask16 __M,__m256i __A,__m256i __B)1339 __m256i test_mm256_maskz_max_epu16(__mmask16 __M, __m256i __A, __m256i __B) {
1340   // CHECK-LABEL: @test_mm256_maskz_max_epu16
1341   // CHECK: [[RES:%.*]] = call <16 x i16> @llvm.umax.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1342   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]
1343   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1344   // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1345   return _mm256_maskz_max_epu16(__M,__A,__B);
1346 }
test_mm256_mask_max_epu16(__m256i __W,__mmask16 __M,__m256i __A,__m256i __B)1347 __m256i test_mm256_mask_max_epu16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {
1348   // CHECK-LABEL: @test_mm256_mask_max_epu16
1349   // CHECK: [[RES:%.*]] = call <16 x i16> @llvm.umax.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1350   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]
1351   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1352   // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1353   return _mm256_mask_max_epu16(__W,__M,__A,__B);
1354 }
test_mm_maskz_min_epi8(__mmask16 __M,__m128i __A,__m128i __B)1355 __m128i test_mm_maskz_min_epi8(__mmask16 __M, __m128i __A, __m128i __B) {
1356   // CHECK-LABEL: @test_mm_maskz_min_epi8
1357   // CHECK: [[RES:%.*]] = call <16 x i8> @llvm.smin.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1358   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]
1359   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1360   // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1361   return _mm_maskz_min_epi8(__M,__A,__B);
1362 }
test_mm_mask_min_epi8(__m128i __W,__mmask16 __M,__m128i __A,__m128i __B)1363 __m128i test_mm_mask_min_epi8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {
1364   // CHECK-LABEL: @test_mm_mask_min_epi8
1365   // CHECK: [[RES:%.*]] = call <16 x i8> @llvm.smin.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1366   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]
1367   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1368   // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1369   return _mm_mask_min_epi8(__W,__M,__A,__B);
1370 }
test_mm256_maskz_min_epi8(__mmask32 __M,__m256i __A,__m256i __B)1371 __m256i test_mm256_maskz_min_epi8(__mmask32 __M, __m256i __A, __m256i __B) {
1372   // CHECK-LABEL: @test_mm256_maskz_min_epi8
1373   // CHECK: [[RES:%.*]] = call <32 x i8> @llvm.smin.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1374   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]
1375   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1376   // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1377   return _mm256_maskz_min_epi8(__M,__A,__B);
1378 }
test_mm256_mask_min_epi8(__m256i __W,__mmask32 __M,__m256i __A,__m256i __B)1379 __m256i test_mm256_mask_min_epi8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {
1380   // CHECK-LABEL: @test_mm256_mask_min_epi8
1381   // CHECK: [[RES:%.*]] = call <32 x i8> @llvm.smin.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1382   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]
1383   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1384   // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1385   return _mm256_mask_min_epi8(__W,__M,__A,__B);
1386 }
test_mm_maskz_min_epi16(__mmask8 __M,__m128i __A,__m128i __B)1387 __m128i test_mm_maskz_min_epi16(__mmask8 __M, __m128i __A, __m128i __B) {
1388   // CHECK-LABEL: @test_mm_maskz_min_epi16
1389   // CHECK: [[RES:%.*]] = call <8 x i16> @llvm.smin.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1390   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]
1391   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1392   // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1393   return _mm_maskz_min_epi16(__M,__A,__B);
1394 }
test_mm_mask_min_epi16(__m128i __W,__mmask8 __M,__m128i __A,__m128i __B)1395 __m128i test_mm_mask_min_epi16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
1396   // CHECK-LABEL: @test_mm_mask_min_epi16
1397   // CHECK: [[RES:%.*]] = call <8 x i16> @llvm.smin.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1398   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]
1399   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1400   // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1401   return _mm_mask_min_epi16(__W,__M,__A,__B);
1402 }
test_mm256_maskz_min_epi16(__mmask16 __M,__m256i __A,__m256i __B)1403 __m256i test_mm256_maskz_min_epi16(__mmask16 __M, __m256i __A, __m256i __B) {
1404   // CHECK-LABEL: @test_mm256_maskz_min_epi16
1405   // CHECK: [[RES:%.*]] = call <16 x i16> @llvm.smin.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1406   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]
1407   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1408   // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1409   return _mm256_maskz_min_epi16(__M,__A,__B);
1410 }
test_mm256_mask_min_epi16(__m256i __W,__mmask16 __M,__m256i __A,__m256i __B)1411 __m256i test_mm256_mask_min_epi16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {
1412   // CHECK-LABEL: @test_mm256_mask_min_epi16
1413   // CHECK: [[RES:%.*]] = call <16 x i16> @llvm.smin.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1414   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]
1415   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1416   // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1417   return _mm256_mask_min_epi16(__W,__M,__A,__B);
1418 }
test_mm_maskz_min_epu8(__mmask16 __M,__m128i __A,__m128i __B)1419 __m128i test_mm_maskz_min_epu8(__mmask16 __M, __m128i __A, __m128i __B) {
1420   // CHECK-LABEL: @test_mm_maskz_min_epu8
1421   // CHECK: [[RES:%.*]] = call <16 x i8> @llvm.umin.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1422   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]
1423   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1424   // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1425   return _mm_maskz_min_epu8(__M,__A,__B);
1426 }
test_mm_mask_min_epu8(__m128i __W,__mmask16 __M,__m128i __A,__m128i __B)1427 __m128i test_mm_mask_min_epu8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {
1428   // CHECK-LABEL: @test_mm_mask_min_epu8
1429   // CHECK: [[RES:%.*]] = call <16 x i8> @llvm.umin.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1430   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]
1431   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1432   // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1433   return _mm_mask_min_epu8(__W,__M,__A,__B);
1434 }
test_mm256_maskz_min_epu8(__mmask32 __M,__m256i __A,__m256i __B)1435 __m256i test_mm256_maskz_min_epu8(__mmask32 __M, __m256i __A, __m256i __B) {
1436   // CHECK-LABEL: @test_mm256_maskz_min_epu8
1437   // CHECK: [[RES:%.*]] = call <32 x i8> @llvm.umin.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1438   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]
1439   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1440   // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1441   return _mm256_maskz_min_epu8(__M,__A,__B);
1442 }
test_mm256_mask_min_epu8(__m256i __W,__mmask32 __M,__m256i __A,__m256i __B)1443 __m256i test_mm256_mask_min_epu8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {
1444   // CHECK-LABEL: @test_mm256_mask_min_epu8
1445   // CHECK: [[RES:%.*]] = call <32 x i8> @llvm.umin.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1446   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]
1447   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1448   // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1449   return _mm256_mask_min_epu8(__W,__M,__A,__B);
1450 }
test_mm_maskz_min_epu16(__mmask8 __M,__m128i __A,__m128i __B)1451 __m128i test_mm_maskz_min_epu16(__mmask8 __M, __m128i __A, __m128i __B) {
1452   // CHECK-LABEL: @test_mm_maskz_min_epu16
1453   // CHECK: [[RES:%.*]] = call <8 x i16> @llvm.umin.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1454   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]
1455   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1456   // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1457   return _mm_maskz_min_epu16(__M,__A,__B);
1458 }
test_mm_mask_min_epu16(__m128i __W,__mmask8 __M,__m128i __A,__m128i __B)1459 __m128i test_mm_mask_min_epu16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
1460   // CHECK-LABEL: @test_mm_mask_min_epu16
1461   // CHECK: [[RES:%.*]] = call <8 x i16> @llvm.umin.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1462   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]
1463   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1464   // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1465   return _mm_mask_min_epu16(__W,__M,__A,__B);
1466 }
test_mm256_maskz_min_epu16(__mmask16 __M,__m256i __A,__m256i __B)1467 __m256i test_mm256_maskz_min_epu16(__mmask16 __M, __m256i __A, __m256i __B) {
1468   // CHECK-LABEL: @test_mm256_maskz_min_epu16
1469   // CHECK: [[RES:%.*]] = call <16 x i16> @llvm.umin.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1470   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]
1471   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1472   // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1473   return _mm256_maskz_min_epu16(__M,__A,__B);
1474 }
test_mm256_mask_min_epu16(__m256i __W,__mmask16 __M,__m256i __A,__m256i __B)1475 __m256i test_mm256_mask_min_epu16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {
1476   // CHECK-LABEL: @test_mm256_mask_min_epu16
1477   // CHECK: [[RES:%.*]] = call <16 x i16> @llvm.umin.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1478   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]
1479   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1480   // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1481   return _mm256_mask_min_epu16(__W,__M,__A,__B);
1482 }
test_mm_mask_shuffle_epi8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)1483 __m128i test_mm_mask_shuffle_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1484   // CHECK-LABEL: @test_mm_mask_shuffle_epi8
1485   // CHECK: @llvm.x86.ssse3.pshuf.b
1486   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1487   return _mm_mask_shuffle_epi8(__W,__U,__A,__B);
1488 }
test_mm_maskz_shuffle_epi8(__mmask16 __U,__m128i __A,__m128i __B)1489 __m128i test_mm_maskz_shuffle_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
1490   // CHECK-LABEL: @test_mm_maskz_shuffle_epi8
1491   // CHECK: @llvm.x86.ssse3.pshuf.b
1492   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1493   return _mm_maskz_shuffle_epi8(__U,__A,__B);
1494 }
test_mm256_mask_shuffle_epi8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)1495 __m256i test_mm256_mask_shuffle_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1496   // CHECK-LABEL: @test_mm256_mask_shuffle_epi8
1497   // CHECK: @llvm.x86.avx2.pshuf.b
1498   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1499   return _mm256_mask_shuffle_epi8(__W,__U,__A,__B);
1500 }
test_mm256_maskz_shuffle_epi8(__mmask32 __U,__m256i __A,__m256i __B)1501 __m256i test_mm256_maskz_shuffle_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
1502   // CHECK-LABEL: @test_mm256_maskz_shuffle_epi8
1503   // CHECK: @llvm.x86.avx2.pshuf.b
1504   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1505   return _mm256_maskz_shuffle_epi8(__U,__A,__B);
1506 }
test_mm_mask_subs_epi8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)1507 __m128i test_mm_mask_subs_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1508   // CHECK-LABEL: @test_mm_mask_subs_epi8
1509   // CHECK: @llvm.ssub.sat.v16i8
1510   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1511   return _mm_mask_subs_epi8(__W,__U,__A,__B);
1512 }
test_mm_maskz_subs_epi8(__mmask16 __U,__m128i __A,__m128i __B)1513 __m128i test_mm_maskz_subs_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
1514   // CHECK-LABEL: @test_mm_maskz_subs_epi8
1515   // CHECK: @llvm.ssub.sat.v16i8
1516   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1517   return _mm_maskz_subs_epi8(__U,__A,__B);
1518 }
test_mm256_mask_subs_epi8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)1519 __m256i test_mm256_mask_subs_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1520   // CHECK-LABEL: @test_mm256_mask_subs_epi8
1521   // CHECK: @llvm.ssub.sat.v32i8
1522   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1523   return _mm256_mask_subs_epi8(__W,__U,__A,__B);
1524 }
test_mm256_maskz_subs_epi8(__mmask32 __U,__m256i __A,__m256i __B)1525 __m256i test_mm256_maskz_subs_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
1526   // CHECK-LABEL: @test_mm256_maskz_subs_epi8
1527   // CHECK: @llvm.ssub.sat.v32i8
1528   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1529   return _mm256_maskz_subs_epi8(__U,__A,__B);
1530 }
test_mm_mask_subs_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)1531 __m128i test_mm_mask_subs_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1532   // CHECK-LABEL: @test_mm_mask_subs_epi16
1533   // CHECK: @llvm.ssub.sat.v8i16
1534   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1535   return _mm_mask_subs_epi16(__W,__U,__A,__B);
1536 }
test_mm_maskz_subs_epi16(__mmask8 __U,__m128i __A,__m128i __B)1537 __m128i test_mm_maskz_subs_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
1538   // CHECK-LABEL: @test_mm_maskz_subs_epi16
1539   // CHECK: @llvm.ssub.sat.v8i16
1540   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1541   return _mm_maskz_subs_epi16(__U,__A,__B);
1542 }
test_mm256_mask_subs_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)1543 __m256i test_mm256_mask_subs_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1544   // CHECK-LABEL: @test_mm256_mask_subs_epi16
1545   // CHECK: @llvm.ssub.sat.v16i16
1546   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1547   return _mm256_mask_subs_epi16(__W,__U,__A,__B);
1548 }
test_mm256_maskz_subs_epi16(__mmask16 __U,__m256i __A,__m256i __B)1549 __m256i test_mm256_maskz_subs_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
1550   // CHECK-LABEL: @test_mm256_maskz_subs_epi16
1551   // CHECK: @llvm.ssub.sat.v16i16
1552   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1553   return _mm256_maskz_subs_epi16(__U,__A,__B);
1554 }
test_mm_mask_subs_epu8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)1555 __m128i test_mm_mask_subs_epu8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1556   // CHECK-LABEL: @test_mm_mask_subs_epu8
1557   // CHECK-NOT: @llvm.x86.sse2.psubus.b
1558   // CHECK: call <16 x i8> @llvm.usub.sat.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1559   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1560   return _mm_mask_subs_epu8(__W,__U,__A,__B);
1561 }
test_mm_maskz_subs_epu8(__mmask16 __U,__m128i __A,__m128i __B)1562 __m128i test_mm_maskz_subs_epu8(__mmask16 __U, __m128i __A, __m128i __B) {
1563   // CHECK-LABEL: @test_mm_maskz_subs_epu8
1564   // CHECK-NOT: @llvm.x86.sse2.psubus.b
1565   // CHECK: call <16 x i8> @llvm.usub.sat.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1566   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1567   return _mm_maskz_subs_epu8(__U,__A,__B);
1568 }
test_mm256_mask_subs_epu8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)1569 __m256i test_mm256_mask_subs_epu8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1570   // CHECK-LABEL: @test_mm256_mask_subs_epu8
1571   // CHECK-NOT: @llvm.x86.avx2.psubus.b
1572   // CHECK: call <32 x i8> @llvm.usub.sat.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1573   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1574   return _mm256_mask_subs_epu8(__W,__U,__A,__B);
1575 }
test_mm256_maskz_subs_epu8(__mmask32 __U,__m256i __A,__m256i __B)1576 __m256i test_mm256_maskz_subs_epu8(__mmask32 __U, __m256i __A, __m256i __B) {
1577   // CHECK-LABEL: @test_mm256_maskz_subs_epu8
1578   // CHECK-NOT: @llvm.x86.avx2.psubus.b
1579   // CHECK: call <32 x i8> @llvm.usub.sat.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1580   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1581   return _mm256_maskz_subs_epu8(__U,__A,__B);
1582 }
test_mm_mask_subs_epu16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)1583 __m128i test_mm_mask_subs_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1584   // CHECK-LABEL: @test_mm_mask_subs_epu16
1585   // CHECK-NOT: @llvm.x86.sse2.psubus.w
1586   // CHECK: call <8 x i16> @llvm.usub.sat.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1587   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1588   return _mm_mask_subs_epu16(__W,__U,__A,__B);
1589 }
test_mm_maskz_subs_epu16(__mmask8 __U,__m128i __A,__m128i __B)1590 __m128i test_mm_maskz_subs_epu16(__mmask8 __U, __m128i __A, __m128i __B) {
1591   // CHECK-LABEL: @test_mm_maskz_subs_epu16
1592   // CHECK-NOT: @llvm.x86.sse2.psubus.w
1593   // CHECK: call <8 x i16> @llvm.usub.sat.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1594   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1595   return _mm_maskz_subs_epu16(__U,__A,__B);
1596 }
test_mm256_mask_subs_epu16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)1597 __m256i test_mm256_mask_subs_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1598   // CHECK-LABEL: @test_mm256_mask_subs_epu16
1599   // CHECK-NOT: @llvm.x86.avx2.psubus.w
1600   // CHECK: call <16 x i16> @llvm.usub.sat.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1601   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1602   return _mm256_mask_subs_epu16(__W,__U,__A,__B);
1603 }
test_mm256_maskz_subs_epu16(__mmask16 __U,__m256i __A,__m256i __B)1604 __m256i test_mm256_maskz_subs_epu16(__mmask16 __U, __m256i __A, __m256i __B) {
1605   // CHECK-LABEL: @test_mm256_maskz_subs_epu16
1606   // CHECK-NOT: @llvm.x86.avx2.psubus.w
1607   // CHECK: call <16 x i16> @llvm.usub.sat.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1608   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1609   return _mm256_maskz_subs_epu16(__U,__A,__B);
1610 }
1611 
1612 
test_mm_mask2_permutex2var_epi16(__m128i __A,__m128i __I,__mmask8 __U,__m128i __B)1613 __m128i test_mm_mask2_permutex2var_epi16(__m128i __A, __m128i __I, __mmask8 __U, __m128i __B) {
1614   // CHECK-LABEL: @test_mm_mask2_permutex2var_epi16
1615   // CHECK: @llvm.x86.avx512.vpermi2var.hi.128
1616   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1617   return _mm_mask2_permutex2var_epi16(__A,__I,__U,__B);
1618 }
test_mm256_mask2_permutex2var_epi16(__m256i __A,__m256i __I,__mmask16 __U,__m256i __B)1619 __m256i test_mm256_mask2_permutex2var_epi16(__m256i __A, __m256i __I, __mmask16 __U, __m256i __B) {
1620   // CHECK-LABEL: @test_mm256_mask2_permutex2var_epi16
1621   // CHECK: @llvm.x86.avx512.vpermi2var.hi.256
1622   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1623   return _mm256_mask2_permutex2var_epi16(__A,__I,__U,__B);
1624 }
test_mm_permutex2var_epi16(__m128i __A,__m128i __I,__m128i __B)1625 __m128i test_mm_permutex2var_epi16(__m128i __A, __m128i __I, __m128i __B) {
1626   // CHECK-LABEL: @test_mm_permutex2var_epi16
1627   // CHECK: @llvm.x86.avx512.vpermi2var.hi.128
1628   return _mm_permutex2var_epi16(__A,__I,__B);
1629 }
test_mm_mask_permutex2var_epi16(__m128i __A,__mmask8 __U,__m128i __I,__m128i __B)1630 __m128i test_mm_mask_permutex2var_epi16(__m128i __A, __mmask8 __U, __m128i __I, __m128i __B) {
1631   // CHECK-LABEL: @test_mm_mask_permutex2var_epi16
1632   // CHECK: @llvm.x86.avx512.vpermi2var.hi.128
1633   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1634   return _mm_mask_permutex2var_epi16(__A,__U,__I,__B);
1635 }
test_mm_maskz_permutex2var_epi16(__mmask8 __U,__m128i __A,__m128i __I,__m128i __B)1636 __m128i test_mm_maskz_permutex2var_epi16(__mmask8 __U, __m128i __A, __m128i __I, __m128i __B) {
1637   // CHECK-LABEL: @test_mm_maskz_permutex2var_epi16
1638   // CHECK: @llvm.x86.avx512.vpermi2var.hi.128
1639   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1640   return _mm_maskz_permutex2var_epi16(__U,__A,__I,__B);
1641 }
1642 
test_mm256_permutex2var_epi16(__m256i __A,__m256i __I,__m256i __B)1643 __m256i test_mm256_permutex2var_epi16(__m256i __A, __m256i __I, __m256i __B) {
1644   // CHECK-LABEL: @test_mm256_permutex2var_epi16
1645   // CHECK: @llvm.x86.avx512.vpermi2var.hi.256
1646   return _mm256_permutex2var_epi16(__A,__I,__B);
1647 }
test_mm256_mask_permutex2var_epi16(__m256i __A,__mmask16 __U,__m256i __I,__m256i __B)1648 __m256i test_mm256_mask_permutex2var_epi16(__m256i __A, __mmask16 __U, __m256i __I, __m256i __B) {
1649   // CHECK-LABEL: @test_mm256_mask_permutex2var_epi16
1650   // CHECK: @llvm.x86.avx512.vpermi2var.hi.256
1651   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1652   return _mm256_mask_permutex2var_epi16(__A,__U,__I,__B);
1653 }
test_mm256_maskz_permutex2var_epi16(__mmask16 __U,__m256i __A,__m256i __I,__m256i __B)1654 __m256i test_mm256_maskz_permutex2var_epi16(__mmask16 __U, __m256i __A, __m256i __I, __m256i __B) {
1655   // CHECK-LABEL: @test_mm256_maskz_permutex2var_epi16
1656   // CHECK: @llvm.x86.avx512.vpermi2var.hi.256
1657   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1658   return _mm256_maskz_permutex2var_epi16(__U,__A,__I,__B);
1659 }
test_mm_mask_maddubs_epi16(__m128i __W,__mmask8 __U,__m128i __X,__m128i __Y)1660 __m128i test_mm_mask_maddubs_epi16(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
1661   // CHECK-LABEL: @test_mm_mask_maddubs_epi16
1662   // CHECK: @llvm.x86.ssse3.pmadd.ub.sw
1663   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1664   return _mm_mask_maddubs_epi16(__W, __U, __X, __Y);
1665 }
1666 
test_mm_maskz_maddubs_epi16(__mmask8 __U,__m128i __X,__m128i __Y)1667 __m128i test_mm_maskz_maddubs_epi16(__mmask8 __U, __m128i __X, __m128i __Y) {
1668   // CHECK-LABEL: @test_mm_maskz_maddubs_epi16
1669   // CHECK: @llvm.x86.ssse3.pmadd.ub.sw
1670   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1671   return _mm_maskz_maddubs_epi16(__U, __X, __Y);
1672 }
1673 
test_mm256_mask_maddubs_epi16(__m256i __W,__mmask16 __U,__m256i __X,__m256i __Y)1674 __m256i test_mm256_mask_maddubs_epi16(__m256i __W, __mmask16 __U, __m256i __X, __m256i __Y) {
1675   // CHECK-LABEL: @test_mm256_mask_maddubs_epi16
1676   // CHECK: @llvm.x86.avx2.pmadd.ub.sw
1677   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1678   return _mm256_mask_maddubs_epi16(__W, __U, __X, __Y);
1679 }
1680 
test_mm256_maskz_maddubs_epi16(__mmask16 __U,__m256i __X,__m256i __Y)1681 __m256i test_mm256_maskz_maddubs_epi16(__mmask16 __U, __m256i __X, __m256i __Y) {
1682   // CHECK-LABEL: @test_mm256_maskz_maddubs_epi16
1683   // CHECK: @llvm.x86.avx2.pmadd.ub.sw
1684   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1685   return _mm256_maskz_maddubs_epi16(__U, __X, __Y);
1686 }
1687 
test_mm_mask_madd_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)1688 __m128i test_mm_mask_madd_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1689   // CHECK-LABEL: @test_mm_mask_madd_epi16
1690   // CHECK: @llvm.x86.sse2.pmadd.wd
1691   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
1692   return _mm_mask_madd_epi16(__W, __U, __A, __B);
1693 }
1694 
test_mm_maskz_madd_epi16(__mmask8 __U,__m128i __A,__m128i __B)1695 __m128i test_mm_maskz_madd_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
1696   // CHECK-LABEL: @test_mm_maskz_madd_epi16
1697   // CHECK: @llvm.x86.sse2.pmadd.wd
1698   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
1699   return _mm_maskz_madd_epi16(__U, __A, __B);
1700 }
1701 
test_mm256_mask_madd_epi16(__m256i __W,__mmask8 __U,__m256i __A,__m256i __B)1702 __m256i test_mm256_mask_madd_epi16(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
1703   // CHECK-LABEL: @test_mm256_mask_madd_epi16
1704   // CHECK: @llvm.x86.avx2.pmadd.wd
1705   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
1706   return _mm256_mask_madd_epi16(__W, __U, __A, __B);
1707 }
1708 
test_mm256_maskz_madd_epi16(__mmask8 __U,__m256i __A,__m256i __B)1709 __m256i test_mm256_maskz_madd_epi16(__mmask8 __U, __m256i __A, __m256i __B) {
1710   // CHECK-LABEL: @test_mm256_maskz_madd_epi16
1711   // CHECK: @llvm.x86.avx2.pmadd.wd
1712   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
1713   return _mm256_maskz_madd_epi16(__U, __A, __B);
1714 }
1715 
test_mm_cvtsepi16_epi8(__m128i __A)1716 __m128i test_mm_cvtsepi16_epi8(__m128i __A) {
1717   // CHECK-LABEL: @test_mm_cvtsepi16_epi8
1718   // CHECK: @llvm.x86.avx512.mask.pmovs.wb.128
1719   return _mm_cvtsepi16_epi8(__A);
1720 }
1721 
test_mm_mask_cvtsepi16_epi8(__m128i __O,__mmask8 __M,__m128i __A)1722 __m128i test_mm_mask_cvtsepi16_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
1723   // CHECK-LABEL: @test_mm_mask_cvtsepi16_epi8
1724   // CHECK: @llvm.x86.avx512.mask.pmovs.wb.128
1725   return _mm_mask_cvtsepi16_epi8(__O, __M, __A);
1726 }
1727 
test_mm_maskz_cvtsepi16_epi8(__mmask8 __M,__m128i __A)1728 __m128i test_mm_maskz_cvtsepi16_epi8(__mmask8 __M, __m128i __A) {
1729   // CHECK-LABEL: @test_mm_maskz_cvtsepi16_epi8
1730   // CHECK: @llvm.x86.avx512.mask.pmovs.wb.128
1731   return _mm_maskz_cvtsepi16_epi8(__M, __A);
1732 }
1733 
test_mm256_cvtsepi16_epi8(__m256i __A)1734 __m128i test_mm256_cvtsepi16_epi8(__m256i __A) {
1735   // CHECK-LABEL: @test_mm256_cvtsepi16_epi8
1736   // CHECK: @llvm.x86.avx512.mask.pmovs.wb.256
1737   return _mm256_cvtsepi16_epi8(__A);
1738 }
1739 
test_mm256_mask_cvtsepi16_epi8(__m128i __O,__mmask16 __M,__m256i __A)1740 __m128i test_mm256_mask_cvtsepi16_epi8(__m128i __O, __mmask16 __M, __m256i __A) {
1741   // CHECK-LABEL: @test_mm256_mask_cvtsepi16_epi8
1742   // CHECK: @llvm.x86.avx512.mask.pmovs.wb.256
1743   return _mm256_mask_cvtsepi16_epi8(__O, __M, __A);
1744 }
1745 
test_mm256_maskz_cvtsepi16_epi8(__mmask16 __M,__m256i __A)1746 __m128i test_mm256_maskz_cvtsepi16_epi8(__mmask16 __M, __m256i __A) {
1747   // CHECK-LABEL: @test_mm256_maskz_cvtsepi16_epi8
1748   // CHECK: @llvm.x86.avx512.mask.pmovs.wb.256
1749   return _mm256_maskz_cvtsepi16_epi8(__M, __A);
1750 }
1751 
test_mm_cvtusepi16_epi8(__m128i __A)1752 __m128i test_mm_cvtusepi16_epi8(__m128i __A) {
1753   // CHECK-LABEL: @test_mm_cvtusepi16_epi8
1754   // CHECK: @llvm.x86.avx512.mask.pmovus.wb.128
1755   return _mm_cvtusepi16_epi8(__A);
1756 }
1757 
test_mm_mask_cvtusepi16_epi8(__m128i __O,__mmask8 __M,__m128i __A)1758 __m128i test_mm_mask_cvtusepi16_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
1759   // CHECK-LABEL: @test_mm_mask_cvtusepi16_epi8
1760   // CHECK: @llvm.x86.avx512.mask.pmovus.wb.128
1761   return _mm_mask_cvtusepi16_epi8(__O, __M, __A);
1762 }
1763 
test_mm_maskz_cvtusepi16_epi8(__mmask8 __M,__m128i __A)1764 __m128i test_mm_maskz_cvtusepi16_epi8(__mmask8 __M, __m128i __A) {
1765   // CHECK-LABEL: @test_mm_maskz_cvtusepi16_epi8
1766   // CHECK: @llvm.x86.avx512.mask.pmovus.wb.128
1767   return _mm_maskz_cvtusepi16_epi8(__M, __A);
1768 }
1769 
test_mm256_cvtusepi16_epi8(__m256i __A)1770 __m128i test_mm256_cvtusepi16_epi8(__m256i __A) {
1771   // CHECK-LABEL: @test_mm256_cvtusepi16_epi8
1772   // CHECK: @llvm.x86.avx512.mask.pmovus.wb.256
1773   return _mm256_cvtusepi16_epi8(__A);
1774 }
1775 
test_mm256_mask_cvtusepi16_epi8(__m128i __O,__mmask16 __M,__m256i __A)1776 __m128i test_mm256_mask_cvtusepi16_epi8(__m128i __O, __mmask16 __M, __m256i __A) {
1777   // CHECK-LABEL: @test_mm256_mask_cvtusepi16_epi8
1778   // CHECK: @llvm.x86.avx512.mask.pmovus.wb.256
1779   return _mm256_mask_cvtusepi16_epi8(__O, __M, __A);
1780 }
1781 
test_mm256_maskz_cvtusepi16_epi8(__mmask16 __M,__m256i __A)1782 __m128i test_mm256_maskz_cvtusepi16_epi8(__mmask16 __M, __m256i __A) {
1783   // CHECK-LABEL: @test_mm256_maskz_cvtusepi16_epi8
1784   // CHECK: @llvm.x86.avx512.mask.pmovus.wb.256
1785   return _mm256_maskz_cvtusepi16_epi8(__M, __A);
1786 }
1787 
test_mm_cvtepi16_epi8(__m128i __A)1788 __m128i test_mm_cvtepi16_epi8(__m128i __A) {
1789   // CHECK-LABEL: @test_mm_cvtepi16_epi8
1790   // CHECK: trunc <8 x i16> %{{.*}} to <8 x i8>
1791   // CHECK: shufflevector <8 x i8> %{{.*}}, <8 x i8> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
1792   return _mm_cvtepi16_epi8(__A);
1793 }
1794 
test_mm_mask_cvtepi16_epi8(__m128i __O,__mmask8 __M,__m128i __A)1795 __m128i test_mm_mask_cvtepi16_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
1796   // CHECK-LABEL: @test_mm_mask_cvtepi16_epi8
1797   // CHECK: @llvm.x86.avx512.mask.pmov.wb.128
1798   return _mm_mask_cvtepi16_epi8(__O, __M, __A);
1799 }
1800 
test_mm_maskz_cvtepi16_epi8(__mmask8 __M,__m128i __A)1801 __m128i test_mm_maskz_cvtepi16_epi8(__mmask8 __M, __m128i __A) {
1802   // CHECK-LABEL: @test_mm_maskz_cvtepi16_epi8
1803   // CHECK: @llvm.x86.avx512.mask.pmov.wb.128
1804   return _mm_maskz_cvtepi16_epi8(__M, __A);
1805 }
1806 
test_mm256_cvtepi16_epi8(__m256i __A)1807 __m128i test_mm256_cvtepi16_epi8(__m256i __A) {
1808   // CHECK-LABEL: @test_mm256_cvtepi16_epi8
1809   // CHECK: trunc <16 x i16> %{{.*}} to <16 x i8>
1810   return _mm256_cvtepi16_epi8(__A);
1811 }
1812 
test_mm256_mask_cvtepi16_epi8(__m128i __O,__mmask16 __M,__m256i __A)1813 __m128i test_mm256_mask_cvtepi16_epi8(__m128i __O, __mmask16 __M, __m256i __A) {
1814   // CHECK-LABEL: @test_mm256_mask_cvtepi16_epi8
1815   // CHECK: trunc <16 x i16> %{{.*}} to <16 x i8>
1816   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1817   return _mm256_mask_cvtepi16_epi8(__O, __M, __A);
1818 }
1819 
test_mm256_maskz_cvtepi16_epi8(__mmask16 __M,__m256i __A)1820 __m128i test_mm256_maskz_cvtepi16_epi8(__mmask16 __M, __m256i __A) {
1821   // CHECK-LABEL: @test_mm256_maskz_cvtepi16_epi8
1822   // CHECK: trunc <16 x i16> %{{.*}} to <16 x i8>
1823   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1824   return _mm256_maskz_cvtepi16_epi8(__M, __A);
1825 }
1826 
test_mm_mask_mulhrs_epi16(__m128i __W,__mmask8 __U,__m128i __X,__m128i __Y)1827 __m128i test_mm_mask_mulhrs_epi16(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
1828   // CHECK-LABEL: @test_mm_mask_mulhrs_epi16
1829   // CHECK: @llvm.x86.ssse3.pmul.hr.sw
1830   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1831   return _mm_mask_mulhrs_epi16(__W, __U, __X, __Y);
1832 }
1833 
test_mm_maskz_mulhrs_epi16(__mmask8 __U,__m128i __X,__m128i __Y)1834 __m128i test_mm_maskz_mulhrs_epi16(__mmask8 __U, __m128i __X, __m128i __Y) {
1835   // CHECK-LABEL: @test_mm_maskz_mulhrs_epi16
1836   // CHECK: @llvm.x86.ssse3.pmul.hr.sw
1837   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1838   return _mm_maskz_mulhrs_epi16(__U, __X, __Y);
1839 }
1840 
test_mm256_mask_mulhrs_epi16(__m256i __W,__mmask16 __U,__m256i __X,__m256i __Y)1841 __m256i test_mm256_mask_mulhrs_epi16(__m256i __W, __mmask16 __U, __m256i __X, __m256i __Y) {
1842   // CHECK-LABEL: @test_mm256_mask_mulhrs_epi16
1843   // CHECK: @llvm.x86.avx2.pmul.hr.sw
1844   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1845   return _mm256_mask_mulhrs_epi16(__W, __U, __X, __Y);
1846 }
1847 
test_mm256_maskz_mulhrs_epi16(__mmask16 __U,__m256i __X,__m256i __Y)1848 __m256i test_mm256_maskz_mulhrs_epi16(__mmask16 __U, __m256i __X, __m256i __Y) {
1849   // CHECK-LABEL: @test_mm256_maskz_mulhrs_epi16
1850   // CHECK: @llvm.x86.avx2.pmul.hr.sw
1851   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1852   return _mm256_maskz_mulhrs_epi16(__U, __X, __Y);
1853 }
1854 
test_mm_mask_mulhi_epu16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)1855 __m128i test_mm_mask_mulhi_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1856   // CHECK-LABEL: @test_mm_mask_mulhi_epu16
1857   // CHECK: @llvm.x86.sse2.pmulhu.w
1858   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1859   return _mm_mask_mulhi_epu16(__W, __U, __A, __B);
1860 }
1861 
test_mm_maskz_mulhi_epu16(__mmask8 __U,__m128i __A,__m128i __B)1862 __m128i test_mm_maskz_mulhi_epu16(__mmask8 __U, __m128i __A, __m128i __B) {
1863   // CHECK-LABEL: @test_mm_maskz_mulhi_epu16
1864   // CHECK: @llvm.x86.sse2.pmulhu.w
1865   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1866   return _mm_maskz_mulhi_epu16(__U, __A, __B);
1867 }
1868 
test_mm256_mask_mulhi_epu16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)1869 __m256i test_mm256_mask_mulhi_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1870   // CHECK-LABEL: @test_mm256_mask_mulhi_epu16
1871   // CHECK: @llvm.x86.avx2.pmulhu.w
1872   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1873   return _mm256_mask_mulhi_epu16(__W, __U, __A, __B);
1874 }
1875 
test_mm256_maskz_mulhi_epu16(__mmask16 __U,__m256i __A,__m256i __B)1876 __m256i test_mm256_maskz_mulhi_epu16(__mmask16 __U, __m256i __A, __m256i __B) {
1877   // CHECK-LABEL: @test_mm256_maskz_mulhi_epu16
1878   // CHECK: @llvm.x86.avx2.pmulhu.w
1879   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1880   return _mm256_maskz_mulhi_epu16(__U, __A, __B);
1881 }
1882 
test_mm_mask_mulhi_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)1883 __m128i test_mm_mask_mulhi_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1884   // CHECK-LABEL: @test_mm_mask_mulhi_epi16
1885   // CHECK: @llvm.x86.sse2.pmulh.w
1886   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1887   return _mm_mask_mulhi_epi16(__W, __U, __A, __B);
1888 }
1889 
test_mm_maskz_mulhi_epi16(__mmask8 __U,__m128i __A,__m128i __B)1890 __m128i test_mm_maskz_mulhi_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
1891   // CHECK-LABEL: @test_mm_maskz_mulhi_epi16
1892   // CHECK: @llvm.x86.sse2.pmulh.w
1893   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1894   return _mm_maskz_mulhi_epi16(__U, __A, __B);
1895 }
1896 
test_mm256_mask_mulhi_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)1897 __m256i test_mm256_mask_mulhi_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1898   // CHECK-LABEL: @test_mm256_mask_mulhi_epi16
1899   // CHECK: @llvm.x86.avx2.pmulh.w
1900   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1901   return _mm256_mask_mulhi_epi16(__W, __U, __A, __B);
1902 }
1903 
test_mm256_maskz_mulhi_epi16(__mmask16 __U,__m256i __A,__m256i __B)1904 __m256i test_mm256_maskz_mulhi_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
1905   // CHECK-LABEL: @test_mm256_maskz_mulhi_epi16
1906   // CHECK: @llvm.x86.avx2.pmulh.w
1907   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1908   return _mm256_maskz_mulhi_epi16(__U, __A, __B);
1909 }
1910 
test_mm_mask_unpackhi_epi8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)1911 __m128i test_mm_mask_unpackhi_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1912   // CHECK-LABEL: @test_mm_mask_unpackhi_epi8
1913   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
1914   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1915   return _mm_mask_unpackhi_epi8(__W, __U, __A, __B);
1916 }
1917 
test_mm_maskz_unpackhi_epi8(__mmask16 __U,__m128i __A,__m128i __B)1918 __m128i test_mm_maskz_unpackhi_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
1919   // CHECK-LABEL: @test_mm_maskz_unpackhi_epi8
1920   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
1921   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1922   return _mm_maskz_unpackhi_epi8(__U, __A, __B);
1923 }
1924 
test_mm256_mask_unpackhi_epi8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)1925 __m256i test_mm256_mask_unpackhi_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1926   // CHECK-LABEL: @test_mm256_mask_unpackhi_epi8
1927   // CHECK: shufflevector <32 x i8> %{{.*}}, <32 x i8> %{{.*}}, <32 x i32> <i32 8, i32 40, i32 9, i32 41, i32 10, i32 42, i32 11, i32 43, i32 12, i32 44, i32 13, i32 45, i32 14, i32 46, i32 15, i32 47, i32 24, i32 56, i32 25, i32 57, i32 26, i32 58, i32 27, i32 59, i32 28, i32 60, i32 29, i32 61, i32 30, i32 62, i32 31, i32 63>
1928   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1929   return _mm256_mask_unpackhi_epi8(__W, __U, __A, __B);
1930 }
1931 
test_mm256_maskz_unpackhi_epi8(__mmask32 __U,__m256i __A,__m256i __B)1932 __m256i test_mm256_maskz_unpackhi_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
1933   // CHECK-LABEL: @test_mm256_maskz_unpackhi_epi8
1934   // CHECK: shufflevector <32 x i8> %{{.*}}, <32 x i8> %{{.*}}, <32 x i32> <i32 8, i32 40, i32 9, i32 41, i32 10, i32 42, i32 11, i32 43, i32 12, i32 44, i32 13, i32 45, i32 14, i32 46, i32 15, i32 47, i32 24, i32 56, i32 25, i32 57, i32 26, i32 58, i32 27, i32 59, i32 28, i32 60, i32 29, i32 61, i32 30, i32 62, i32 31, i32 63>
1935   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1936   return _mm256_maskz_unpackhi_epi8(__U, __A, __B);
1937 }
1938 
test_mm_mask_unpackhi_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)1939 __m128i test_mm_mask_unpackhi_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1940   // CHECK-LABEL: @test_mm_mask_unpackhi_epi16
1941   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
1942   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1943   return _mm_mask_unpackhi_epi16(__W, __U, __A, __B);
1944 }
1945 
test_mm_maskz_unpackhi_epi16(__mmask8 __U,__m128i __A,__m128i __B)1946 __m128i test_mm_maskz_unpackhi_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
1947   // CHECK-LABEL: @test_mm_maskz_unpackhi_epi16
1948   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
1949   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1950   return _mm_maskz_unpackhi_epi16(__U, __A, __B);
1951 }
1952 
test_mm256_mask_unpackhi_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)1953 __m256i test_mm256_mask_unpackhi_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1954   // CHECK-LABEL: @test_mm256_mask_unpackhi_epi16
1955   // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> %{{.*}}, <16 x i32> <i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
1956   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1957   return _mm256_mask_unpackhi_epi16(__W, __U, __A, __B);
1958 }
1959 
test_mm256_maskz_unpackhi_epi16(__mmask16 __U,__m256i __A,__m256i __B)1960 __m256i test_mm256_maskz_unpackhi_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
1961   // CHECK-LABEL: @test_mm256_maskz_unpackhi_epi16
1962   // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> %{{.*}}, <16 x i32> <i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
1963   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1964   return _mm256_maskz_unpackhi_epi16(__U, __A, __B);
1965 }
1966 
test_mm_mask_unpacklo_epi8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)1967 __m128i test_mm_mask_unpacklo_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1968   // CHECK-LABEL: @test_mm_mask_unpacklo_epi8
1969   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>
1970   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1971   return _mm_mask_unpacklo_epi8(__W, __U, __A, __B);
1972 }
1973 
test_mm_maskz_unpacklo_epi8(__mmask16 __U,__m128i __A,__m128i __B)1974 __m128i test_mm_maskz_unpacklo_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
1975   // CHECK-LABEL: @test_mm_maskz_unpacklo_epi8
1976   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>
1977   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1978   return _mm_maskz_unpacklo_epi8(__U, __A, __B);
1979 }
1980 
test_mm256_mask_unpacklo_epi8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)1981 __m256i test_mm256_mask_unpacklo_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1982   // CHECK-LABEL: @test_mm256_mask_unpacklo_epi8
1983   // CHECK: shufflevector <32 x i8> %{{.*}}, <32 x i8> %{{.*}}, <32 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 16, i32 48, i32 17, i32 49, i32 18, i32 50, i32 19, i32 51, i32 20, i32 52, i32 21, i32 53, i32 22, i32 54, i32 23, i32 55>
1984   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1985   return _mm256_mask_unpacklo_epi8(__W, __U, __A, __B);
1986 }
1987 
test_mm256_maskz_unpacklo_epi8(__mmask32 __U,__m256i __A,__m256i __B)1988 __m256i test_mm256_maskz_unpacklo_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
1989   // CHECK-LABEL: @test_mm256_maskz_unpacklo_epi8
1990   // CHECK: shufflevector <32 x i8> %{{.*}}, <32 x i8> %{{.*}}, <32 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 16, i32 48, i32 17, i32 49, i32 18, i32 50, i32 19, i32 51, i32 20, i32 52, i32 21, i32 53, i32 22, i32 54, i32 23, i32 55>
1991   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1992   return _mm256_maskz_unpacklo_epi8(__U, __A, __B);
1993 }
1994 
test_mm_mask_unpacklo_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)1995 __m128i test_mm_mask_unpacklo_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1996   // CHECK-LABEL: @test_mm_mask_unpacklo_epi16
1997   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
1998   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1999   return _mm_mask_unpacklo_epi16(__W, __U, __A, __B);
2000 }
2001 
test_mm_maskz_unpacklo_epi16(__mmask8 __U,__m128i __A,__m128i __B)2002 __m128i test_mm_maskz_unpacklo_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2003   // CHECK-LABEL: @test_mm_maskz_unpacklo_epi16
2004   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
2005   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2006   return _mm_maskz_unpacklo_epi16(__U, __A, __B);
2007 }
2008 
test_mm256_mask_unpacklo_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)2009 __m256i test_mm256_mask_unpacklo_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
2010   // CHECK-LABEL: @test_mm256_mask_unpacklo_epi16
2011   // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27>
2012   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2013   return _mm256_mask_unpacklo_epi16(__W, __U, __A, __B);
2014 }
2015 
test_mm256_maskz_unpacklo_epi16(__mmask16 __U,__m256i __A,__m256i __B)2016 __m256i test_mm256_maskz_unpacklo_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
2017   // CHECK-LABEL: @test_mm256_maskz_unpacklo_epi16
2018   // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27>
2019   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2020   return _mm256_maskz_unpacklo_epi16(__U, __A, __B);
2021 }
2022 
test_mm_mask_cvtepi8_epi16(__m128i __W,__mmask8 __U,__m128i __A)2023 __m128i test_mm_mask_cvtepi8_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
2024   // CHECK-LABEL: @test_mm_mask_cvtepi8_epi16
2025   // CHECK: sext <8 x i8> %{{.*}} to <8 x i16>
2026   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2027   return _mm_mask_cvtepi8_epi16(__W, __U, __A);
2028 }
2029 
test_mm_maskz_cvtepi8_epi16(__mmask8 __U,__m128i __A)2030 __m128i test_mm_maskz_cvtepi8_epi16(__mmask8 __U, __m128i __A) {
2031   // CHECK-LABEL: @test_mm_maskz_cvtepi8_epi16
2032   // CHECK: sext <8 x i8> %{{.*}} to <8 x i16>
2033   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2034   return _mm_maskz_cvtepi8_epi16(__U, __A);
2035 }
2036 
test_mm256_mask_cvtepi8_epi16(__m256i __W,__mmask16 __U,__m128i __A)2037 __m256i test_mm256_mask_cvtepi8_epi16(__m256i __W, __mmask16 __U, __m128i __A) {
2038   // CHECK-LABEL: @test_mm256_mask_cvtepi8_epi16
2039   // CHECK: sext <16 x i8> %{{.*}} to <16 x i16>
2040   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2041   return _mm256_mask_cvtepi8_epi16(__W, __U, __A);
2042 }
2043 
test_mm256_maskz_cvtepi8_epi16(__mmask16 __U,__m128i __A)2044 __m256i test_mm256_maskz_cvtepi8_epi16(__mmask16 __U, __m128i __A) {
2045   // CHECK-LABEL: @test_mm256_maskz_cvtepi8_epi16
2046   // CHECK: sext <16 x i8> %{{.*}} to <16 x i16>
2047   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2048   return _mm256_maskz_cvtepi8_epi16(__U, __A);
2049 }
2050 
test_mm_mask_cvtepu8_epi16(__m128i __W,__mmask8 __U,__m128i __A)2051 __m128i test_mm_mask_cvtepu8_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
2052   // CHECK-LABEL: @test_mm_mask_cvtepu8_epi16
2053   // CHECK: zext <8 x i8> %{{.*}} to <8 x i16>
2054   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2055   return _mm_mask_cvtepu8_epi16(__W, __U, __A);
2056 }
2057 
test_mm_maskz_cvtepu8_epi16(__mmask8 __U,__m128i __A)2058 __m128i test_mm_maskz_cvtepu8_epi16(__mmask8 __U, __m128i __A) {
2059   // CHECK-LABEL: @test_mm_maskz_cvtepu8_epi16
2060   // CHECK: zext <8 x i8> %{{.*}} to <8 x i16>
2061   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2062   return _mm_maskz_cvtepu8_epi16(__U, __A);
2063 }
2064 
test_mm256_mask_cvtepu8_epi16(__m256i __W,__mmask16 __U,__m128i __A)2065 __m256i test_mm256_mask_cvtepu8_epi16(__m256i __W, __mmask16 __U, __m128i __A) {
2066   // CHECK-LABEL: @test_mm256_mask_cvtepu8_epi16
2067   // CHECK: zext <16 x i8> %{{.*}} to <16 x i16>
2068   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2069   return _mm256_mask_cvtepu8_epi16(__W, __U, __A);
2070 }
2071 
test_mm256_maskz_cvtepu8_epi16(__mmask16 __U,__m128i __A)2072 __m256i test_mm256_maskz_cvtepu8_epi16(__mmask16 __U, __m128i __A) {
2073   // CHECK-LABEL: @test_mm256_maskz_cvtepu8_epi16
2074   // CHECK: zext <16 x i8> %{{.*}} to <16 x i16>
2075   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2076   return _mm256_maskz_cvtepu8_epi16(__U, __A);
2077 }
2078 
test_mm256_sllv_epi16(__m256i __A,__m256i __B)2079 __m256i test_mm256_sllv_epi16(__m256i __A, __m256i __B) {
2080   // CHECK-LABEL: @test_mm256_sllv_epi16
2081   // CHECK: @llvm.x86.avx512.psllv.w.256(
2082   return _mm256_sllv_epi16(__A, __B);
2083 }
2084 
test_mm256_mask_sllv_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)2085 __m256i test_mm256_mask_sllv_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
2086   // CHECK-LABEL: @test_mm256_mask_sllv_epi16
2087   // CHECK: @llvm.x86.avx512.psllv.w.256(
2088   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2089   return _mm256_mask_sllv_epi16(__W, __U, __A, __B);
2090 }
2091 
test_mm256_maskz_sllv_epi16(__mmask16 __U,__m256i __A,__m256i __B)2092 __m256i test_mm256_maskz_sllv_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
2093   // CHECK-LABEL: @test_mm256_maskz_sllv_epi16
2094   // CHECK: @llvm.x86.avx512.psllv.w.256(
2095   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2096   return _mm256_maskz_sllv_epi16(__U, __A, __B);
2097 }
2098 
test_mm_sllv_epi16(__m128i __A,__m128i __B)2099 __m128i test_mm_sllv_epi16(__m128i __A, __m128i __B) {
2100   // CHECK-LABEL: @test_mm_sllv_epi16
2101   // CHECK: @llvm.x86.avx512.psllv.w.128(
2102   return _mm_sllv_epi16(__A, __B);
2103 }
2104 
test_mm_mask_sllv_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)2105 __m128i test_mm_mask_sllv_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2106   // CHECK-LABEL: @test_mm_mask_sllv_epi16
2107   // CHECK: @llvm.x86.avx512.psllv.w.128(
2108   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2109   return _mm_mask_sllv_epi16(__W, __U, __A, __B);
2110 }
2111 
test_mm_maskz_sllv_epi16(__mmask8 __U,__m128i __A,__m128i __B)2112 __m128i test_mm_maskz_sllv_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2113   // CHECK-LABEL: @test_mm_maskz_sllv_epi16
2114   // CHECK: @llvm.x86.avx512.psllv.w.128(
2115   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2116   return _mm_maskz_sllv_epi16(__U, __A, __B);
2117 }
2118 
test_mm_mask_sll_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)2119 __m128i test_mm_mask_sll_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2120   // CHECK-LABEL: @test_mm_mask_sll_epi16
2121   // CHECK: @llvm.x86.sse2.psll.w
2122   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2123   return _mm_mask_sll_epi16(__W, __U, __A, __B);
2124 }
2125 
test_mm_maskz_sll_epi16(__mmask8 __U,__m128i __A,__m128i __B)2126 __m128i test_mm_maskz_sll_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2127   // CHECK-LABEL: @test_mm_maskz_sll_epi16
2128   // CHECK: @llvm.x86.sse2.psll.w
2129   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2130   return _mm_maskz_sll_epi16(__U, __A, __B);
2131 }
2132 
test_mm256_mask_sll_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m128i __B)2133 __m256i test_mm256_mask_sll_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B) {
2134   // CHECK-LABEL: @test_mm256_mask_sll_epi16
2135   // CHECK: @llvm.x86.avx2.psll.w
2136   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2137   return _mm256_mask_sll_epi16(__W, __U, __A, __B);
2138 }
2139 
test_mm256_maskz_sll_epi16(__mmask16 __U,__m256i __A,__m128i __B)2140 __m256i test_mm256_maskz_sll_epi16(__mmask16 __U, __m256i __A, __m128i __B) {
2141   // CHECK-LABEL: @test_mm256_maskz_sll_epi16
2142   // CHECK: @llvm.x86.avx2.psll.w
2143   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2144   return _mm256_maskz_sll_epi16(__U, __A, __B);
2145 }
2146 
test_mm_mask_slli_epi16(__m128i __W,__mmask8 __U,__m128i __A)2147 __m128i test_mm_mask_slli_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
2148   // CHECK-LABEL: @test_mm_mask_slli_epi16
2149   // CHECK: @llvm.x86.sse2.pslli.w
2150   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2151   return _mm_mask_slli_epi16(__W, __U, __A, 5);
2152 }
2153 
test_mm_mask_slli_epi16_2(__m128i __W,__mmask8 __U,__m128i __A,unsigned int __B)2154 __m128i test_mm_mask_slli_epi16_2(__m128i __W, __mmask8 __U, __m128i __A, unsigned int __B) {
2155   // CHECK-LABEL: @test_mm_mask_slli_epi16_2
2156   // CHECK: @llvm.x86.sse2.pslli.w
2157   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2158   return _mm_mask_slli_epi16(__W, __U, __A, __B);
2159 }
2160 
test_mm_maskz_slli_epi16(__mmask8 __U,__m128i __A)2161 __m128i test_mm_maskz_slli_epi16(__mmask8 __U, __m128i __A) {
2162   // CHECK-LABEL: @test_mm_maskz_slli_epi16
2163   // CHECK: @llvm.x86.sse2.pslli.w
2164   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2165   return _mm_maskz_slli_epi16(__U, __A, 5);
2166 }
2167 
test_mm_maskz_slli_epi16_2(__mmask8 __U,__m128i __A,unsigned int __B)2168 __m128i test_mm_maskz_slli_epi16_2(__mmask8 __U, __m128i __A, unsigned int __B) {
2169   // CHECK-LABEL: @test_mm_maskz_slli_epi16_2
2170   // CHECK: @llvm.x86.sse2.pslli.w
2171   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2172   return _mm_maskz_slli_epi16(__U, __A, __B);
2173 }
2174 
test_mm256_mask_slli_epi16(__m256i __W,__mmask16 __U,__m256i __A)2175 __m256i test_mm256_mask_slli_epi16(__m256i __W, __mmask16 __U, __m256i __A) {
2176   // CHECK-LABEL: @test_mm256_mask_slli_epi16
2177   // CHECK: @llvm.x86.avx2.pslli.w
2178   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2179   return _mm256_mask_slli_epi16(__W, __U, __A, 5);
2180 }
2181 
test_mm256_mask_slli_epi16_2(__m256i __W,__mmask16 __U,__m256i __A,unsigned int __B)2182 __m256i test_mm256_mask_slli_epi16_2(__m256i __W, __mmask16 __U, __m256i __A, unsigned int __B) {
2183   // CHECK-LABEL: @test_mm256_mask_slli_epi16_2
2184   // CHECK: @llvm.x86.avx2.pslli.w
2185   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2186   return _mm256_mask_slli_epi16(__W, __U, __A, __B);
2187 }
2188 
test_mm256_maskz_slli_epi16(__mmask16 __U,__m256i __A)2189 __m256i test_mm256_maskz_slli_epi16(__mmask16 __U, __m256i __A) {
2190   // CHECK-LABEL: @test_mm256_maskz_slli_epi16
2191   // CHECK: @llvm.x86.avx2.pslli.w
2192   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2193   return _mm256_maskz_slli_epi16(__U, __A, 5);
2194 }
2195 
test_mm256_maskz_slli_epi16_2(__mmask16 __U,__m256i __A,unsigned int __B)2196 __m256i test_mm256_maskz_slli_epi16_2(__mmask16 __U, __m256i __A, unsigned int __B) {
2197   // CHECK-LABEL: @test_mm256_maskz_slli_epi16_2
2198   // CHECK: @llvm.x86.avx2.pslli.w
2199   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2200   return _mm256_maskz_slli_epi16(__U, __A, __B);
2201 }
2202 
test_mm256_srlv_epi16(__m256i __A,__m256i __B)2203 __m256i test_mm256_srlv_epi16(__m256i __A, __m256i __B) {
2204   // CHECK-LABEL: @test_mm256_srlv_epi16
2205   // CHECK: @llvm.x86.avx512.psrlv.w.256(
2206   return _mm256_srlv_epi16(__A, __B);
2207 }
2208 
test_mm256_mask_srlv_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)2209 __m256i test_mm256_mask_srlv_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
2210   // CHECK-LABEL: @test_mm256_mask_srlv_epi16
2211   // CHECK: @llvm.x86.avx512.psrlv.w.256(
2212   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2213   return _mm256_mask_srlv_epi16(__W, __U, __A, __B);
2214 }
2215 
test_mm256_maskz_srlv_epi16(__mmask16 __U,__m256i __A,__m256i __B)2216 __m256i test_mm256_maskz_srlv_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
2217   // CHECK-LABEL: @test_mm256_maskz_srlv_epi16
2218   // CHECK: @llvm.x86.avx512.psrlv.w.256(
2219   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2220   return _mm256_maskz_srlv_epi16(__U, __A, __B);
2221 }
2222 
test_mm_srlv_epi16(__m128i __A,__m128i __B)2223 __m128i test_mm_srlv_epi16(__m128i __A, __m128i __B) {
2224   // CHECK-LABEL: @test_mm_srlv_epi16
2225   // CHECK: @llvm.x86.avx512.psrlv.w.128(
2226   return _mm_srlv_epi16(__A, __B);
2227 }
2228 
test_mm_mask_srlv_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)2229 __m128i test_mm_mask_srlv_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2230   // CHECK-LABEL: @test_mm_mask_srlv_epi16
2231   // CHECK: @llvm.x86.avx512.psrlv.w.128(
2232   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2233   return _mm_mask_srlv_epi16(__W, __U, __A, __B);
2234 }
2235 
test_mm_maskz_srlv_epi16(__mmask8 __U,__m128i __A,__m128i __B)2236 __m128i test_mm_maskz_srlv_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2237   // CHECK-LABEL: @test_mm_maskz_srlv_epi16
2238   // CHECK: @llvm.x86.avx512.psrlv.w.128(
2239   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2240   return _mm_maskz_srlv_epi16(__U, __A, __B);
2241 }
2242 
test_mm_mask_srl_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)2243 __m128i test_mm_mask_srl_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2244   // CHECK-LABEL: @test_mm_mask_srl_epi16
2245   // CHECK: @llvm.x86.sse2.psrl.w
2246   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2247   return _mm_mask_srl_epi16(__W, __U, __A, __B);
2248 }
2249 
test_mm_maskz_srl_epi16(__mmask8 __U,__m128i __A,__m128i __B)2250 __m128i test_mm_maskz_srl_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2251   // CHECK-LABEL: @test_mm_maskz_srl_epi16
2252   // CHECK: @llvm.x86.sse2.psrl.w
2253   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2254   return _mm_maskz_srl_epi16(__U, __A, __B);
2255 }
2256 
test_mm256_mask_srl_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m128i __B)2257 __m256i test_mm256_mask_srl_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B) {
2258   // CHECK-LABEL: @test_mm256_mask_srl_epi16
2259   // CHECK: @llvm.x86.avx2.psrl.w
2260   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2261   return _mm256_mask_srl_epi16(__W, __U, __A, __B);
2262 }
2263 
test_mm256_maskz_srl_epi16(__mmask16 __U,__m256i __A,__m128i __B)2264 __m256i test_mm256_maskz_srl_epi16(__mmask16 __U, __m256i __A, __m128i __B) {
2265   // CHECK-LABEL: @test_mm256_maskz_srl_epi16
2266   // CHECK: @llvm.x86.avx2.psrl.w
2267   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2268   return _mm256_maskz_srl_epi16(__U, __A, __B);
2269 }
2270 
test_mm_mask_srli_epi16(__m128i __W,__mmask8 __U,__m128i __A)2271 __m128i test_mm_mask_srli_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
2272   // CHECK-LABEL: @test_mm_mask_srli_epi16
2273   // CHECK: @llvm.x86.sse2.psrli.w
2274   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2275   return _mm_mask_srli_epi16(__W, __U, __A, 5);
2276 }
2277 
test_mm_mask_srli_epi16_2(__m128i __W,__mmask8 __U,__m128i __A,int __B)2278 __m128i test_mm_mask_srli_epi16_2(__m128i __W, __mmask8 __U, __m128i __A, int __B) {
2279   // CHECK-LABEL: @test_mm_mask_srli_epi16_2
2280   // CHECK: @llvm.x86.sse2.psrli.w
2281   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2282   return _mm_mask_srli_epi16(__W, __U, __A, __B);
2283 }
2284 
test_mm_maskz_srli_epi16(__mmask8 __U,__m128i __A)2285 __m128i test_mm_maskz_srli_epi16(__mmask8 __U, __m128i __A) {
2286   // CHECK-LABEL: @test_mm_maskz_srli_epi16
2287   // CHECK: @llvm.x86.sse2.psrli.w
2288   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2289   return _mm_maskz_srli_epi16(__U, __A, 5);
2290 }
2291 
test_mm_maskz_srli_epi16_2(__mmask8 __U,__m128i __A,int __B)2292 __m128i test_mm_maskz_srli_epi16_2(__mmask8 __U, __m128i __A, int __B) {
2293   // CHECK-LABEL: @test_mm_maskz_srli_epi16_2
2294   // CHECK: @llvm.x86.sse2.psrli.w
2295   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2296   return _mm_maskz_srli_epi16(__U, __A, __B);
2297 }
2298 
test_mm256_mask_srli_epi16(__m256i __W,__mmask16 __U,__m256i __A)2299 __m256i test_mm256_mask_srli_epi16(__m256i __W, __mmask16 __U, __m256i __A) {
2300   // CHECK-LABEL: @test_mm256_mask_srli_epi16
2301   // CHECK: @llvm.x86.avx2.psrli.w
2302   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2303   return _mm256_mask_srli_epi16(__W, __U, __A, 5);
2304 }
2305 
test_mm256_mask_srli_epi16_2(__m256i __W,__mmask16 __U,__m256i __A,int __B)2306 __m256i test_mm256_mask_srli_epi16_2(__m256i __W, __mmask16 __U, __m256i __A, int __B) {
2307   // CHECK-LABEL: @test_mm256_mask_srli_epi16_2
2308   // CHECK: @llvm.x86.avx2.psrli.w
2309   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2310   return _mm256_mask_srli_epi16(__W, __U, __A, __B);
2311 }
2312 
test_mm256_maskz_srli_epi16(__mmask16 __U,__m256i __A)2313 __m256i test_mm256_maskz_srli_epi16(__mmask16 __U, __m256i __A) {
2314   // CHECK-LABEL: @test_mm256_maskz_srli_epi16
2315   // CHECK: @llvm.x86.avx2.psrli.w
2316   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2317   return _mm256_maskz_srli_epi16(__U, __A, 5);
2318 }
2319 
test_mm256_maskz_srli_epi16_2(__mmask16 __U,__m256i __A,int __B)2320 __m256i test_mm256_maskz_srli_epi16_2(__mmask16 __U, __m256i __A, int __B) {
2321   // CHECK-LABEL: @test_mm256_maskz_srli_epi16_2
2322   // CHECK: @llvm.x86.avx2.psrli.w
2323   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2324   return _mm256_maskz_srli_epi16(__U, __A, __B);
2325 }
2326 
test_mm256_srav_epi16(__m256i __A,__m256i __B)2327 __m256i test_mm256_srav_epi16(__m256i __A, __m256i __B) {
2328   // CHECK-LABEL: @test_mm256_srav_epi16
2329   // CHECK: @llvm.x86.avx512.psrav.w.256(
2330   return _mm256_srav_epi16(__A, __B);
2331 }
2332 
test_mm256_mask_srav_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)2333 __m256i test_mm256_mask_srav_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
2334   // CHECK-LABEL: @test_mm256_mask_srav_epi16
2335   // CHECK: @llvm.x86.avx512.psrav.w.256(
2336   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2337   return _mm256_mask_srav_epi16(__W, __U, __A, __B);
2338 }
2339 
test_mm256_maskz_srav_epi16(__mmask16 __U,__m256i __A,__m256i __B)2340 __m256i test_mm256_maskz_srav_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
2341   // CHECK-LABEL: @test_mm256_maskz_srav_epi16
2342   // CHECK: @llvm.x86.avx512.psrav.w.256(
2343   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2344   return _mm256_maskz_srav_epi16(__U, __A, __B);
2345 }
2346 
test_mm_srav_epi16(__m128i __A,__m128i __B)2347 __m128i test_mm_srav_epi16(__m128i __A, __m128i __B) {
2348   // CHECK-LABEL: @test_mm_srav_epi16
2349   // CHECK: @llvm.x86.avx512.psrav.w.128(
2350   return _mm_srav_epi16(__A, __B);
2351 }
2352 
test_mm_mask_srav_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)2353 __m128i test_mm_mask_srav_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2354   // CHECK-LABEL: @test_mm_mask_srav_epi16
2355   // CHECK: @llvm.x86.avx512.psrav.w.128(
2356   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2357   return _mm_mask_srav_epi16(__W, __U, __A, __B);
2358 }
2359 
test_mm_maskz_srav_epi16(__mmask8 __U,__m128i __A,__m128i __B)2360 __m128i test_mm_maskz_srav_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2361   // CHECK-LABEL: @test_mm_maskz_srav_epi16
2362   // CHECK: @llvm.x86.avx512.psrav.w.128(
2363   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2364   return _mm_maskz_srav_epi16(__U, __A, __B);
2365 }
2366 
test_mm_mask_sra_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)2367 __m128i test_mm_mask_sra_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2368   // CHECK-LABEL: @test_mm_mask_sra_epi16
2369   // CHECK: @llvm.x86.sse2.psra.w
2370   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2371   return _mm_mask_sra_epi16(__W, __U, __A, __B);
2372 }
2373 
test_mm_maskz_sra_epi16(__mmask8 __U,__m128i __A,__m128i __B)2374 __m128i test_mm_maskz_sra_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2375   // CHECK-LABEL: @test_mm_maskz_sra_epi16
2376   // CHECK: @llvm.x86.sse2.psra.w
2377   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2378   return _mm_maskz_sra_epi16(__U, __A, __B);
2379 }
2380 
test_mm256_mask_sra_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m128i __B)2381 __m256i test_mm256_mask_sra_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B) {
2382   // CHECK-LABEL: @test_mm256_mask_sra_epi16
2383   // CHECK: @llvm.x86.avx2.psra.w
2384   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2385   return _mm256_mask_sra_epi16(__W, __U, __A, __B);
2386 }
2387 
test_mm256_maskz_sra_epi16(__mmask16 __U,__m256i __A,__m128i __B)2388 __m256i test_mm256_maskz_sra_epi16(__mmask16 __U, __m256i __A, __m128i __B) {
2389   // CHECK-LABEL: @test_mm256_maskz_sra_epi16
2390   // CHECK: @llvm.x86.avx2.psra.w
2391   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2392   return _mm256_maskz_sra_epi16(__U, __A, __B);
2393 }
2394 
test_mm_mask_srai_epi16(__m128i __W,__mmask8 __U,__m128i __A)2395 __m128i test_mm_mask_srai_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
2396   // CHECK-LABEL: @test_mm_mask_srai_epi16
2397   // CHECK: @llvm.x86.sse2.psrai.w
2398   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2399   return _mm_mask_srai_epi16(__W, __U, __A, 5);
2400 }
2401 
test_mm_mask_srai_epi16_2(__m128i __W,__mmask8 __U,__m128i __A,unsigned int __B)2402 __m128i test_mm_mask_srai_epi16_2(__m128i __W, __mmask8 __U, __m128i __A, unsigned int __B) {
2403   // CHECK-LABEL: @test_mm_mask_srai_epi16_2
2404   // CHECK: @llvm.x86.sse2.psrai.w
2405   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2406   return _mm_mask_srai_epi16(__W, __U, __A, __B);
2407 }
2408 
test_mm_maskz_srai_epi16(__mmask8 __U,__m128i __A)2409 __m128i test_mm_maskz_srai_epi16(__mmask8 __U, __m128i __A) {
2410   // CHECK-LABEL: @test_mm_maskz_srai_epi16
2411   // CHECK: @llvm.x86.sse2.psrai.w
2412   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2413   return _mm_maskz_srai_epi16(__U, __A, 5);
2414 }
2415 
test_mm_maskz_srai_epi16_2(__mmask8 __U,__m128i __A,unsigned int __B)2416 __m128i test_mm_maskz_srai_epi16_2(__mmask8 __U, __m128i __A, unsigned int __B) {
2417   // CHECK-LABEL: @test_mm_maskz_srai_epi16_2
2418   // CHECK: @llvm.x86.sse2.psrai.w
2419   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2420   return _mm_maskz_srai_epi16(__U, __A, __B);
2421 }
2422 
test_mm256_mask_srai_epi16(__m256i __W,__mmask16 __U,__m256i __A)2423 __m256i test_mm256_mask_srai_epi16(__m256i __W, __mmask16 __U, __m256i __A) {
2424   // CHECK-LABEL: @test_mm256_mask_srai_epi16
2425   // CHECK: @llvm.x86.avx2.psrai.w
2426   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2427   return _mm256_mask_srai_epi16(__W, __U, __A, 5);
2428 }
2429 
test_mm256_mask_srai_epi16_2(__m256i __W,__mmask16 __U,__m256i __A,unsigned int __B)2430 __m256i test_mm256_mask_srai_epi16_2(__m256i __W, __mmask16 __U, __m256i __A, unsigned int __B) {
2431   // CHECK-LABEL: @test_mm256_mask_srai_epi16_2
2432   // CHECK: @llvm.x86.avx2.psrai.w
2433   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2434   return _mm256_mask_srai_epi16(__W, __U, __A, __B);
2435 }
2436 
test_mm256_maskz_srai_epi16(__mmask16 __U,__m256i __A)2437 __m256i test_mm256_maskz_srai_epi16(__mmask16 __U, __m256i __A) {
2438   // CHECK-LABEL: @test_mm256_maskz_srai_epi16
2439   // CHECK: @llvm.x86.avx2.psrai.w
2440   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2441   return _mm256_maskz_srai_epi16(__U, __A, 5);
2442 }
2443 
test_mm256_maskz_srai_epi16_2(__mmask16 __U,__m256i __A,unsigned int __B)2444 __m256i test_mm256_maskz_srai_epi16_2(__mmask16 __U, __m256i __A, unsigned int __B) {
2445   // CHECK-LABEL: @test_mm256_maskz_srai_epi16_2
2446   // CHECK: @llvm.x86.avx2.psrai.w
2447   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2448   return _mm256_maskz_srai_epi16(__U, __A, __B);
2449 }
2450 
test_mm_mask_mov_epi16(__m128i __W,__mmask8 __U,__m128i __A)2451 __m128i test_mm_mask_mov_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
2452   // CHECK-LABEL: @test_mm_mask_mov_epi16
2453   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2454   return _mm_mask_mov_epi16(__W, __U, __A);
2455 }
2456 
test_mm_maskz_mov_epi16(__mmask8 __U,__m128i __A)2457 __m128i test_mm_maskz_mov_epi16(__mmask8 __U, __m128i __A) {
2458   // CHECK-LABEL: @test_mm_maskz_mov_epi16
2459   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2460   return _mm_maskz_mov_epi16(__U, __A);
2461 }
2462 
test_mm256_mask_mov_epi16(__m256i __W,__mmask16 __U,__m256i __A)2463 __m256i test_mm256_mask_mov_epi16(__m256i __W, __mmask16 __U, __m256i __A) {
2464   // CHECK-LABEL: @test_mm256_mask_mov_epi16
2465   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2466   return _mm256_mask_mov_epi16(__W, __U, __A);
2467 }
2468 
test_mm256_maskz_mov_epi16(__mmask16 __U,__m256i __A)2469 __m256i test_mm256_maskz_mov_epi16(__mmask16 __U, __m256i __A) {
2470   // CHECK-LABEL: @test_mm256_maskz_mov_epi16
2471   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2472   return _mm256_maskz_mov_epi16(__U, __A);
2473 }
2474 
test_mm_mask_mov_epi8(__m128i __W,__mmask16 __U,__m128i __A)2475 __m128i test_mm_mask_mov_epi8(__m128i __W, __mmask16 __U, __m128i __A) {
2476   // CHECK-LABEL: @test_mm_mask_mov_epi8
2477   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
2478   return _mm_mask_mov_epi8(__W, __U, __A);
2479 }
2480 
test_mm_maskz_mov_epi8(__mmask16 __U,__m128i __A)2481 __m128i test_mm_maskz_mov_epi8(__mmask16 __U, __m128i __A) {
2482   // CHECK-LABEL: @test_mm_maskz_mov_epi8
2483   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
2484   return _mm_maskz_mov_epi8(__U, __A);
2485 }
2486 
test_mm256_mask_mov_epi8(__m256i __W,__mmask32 __U,__m256i __A)2487 __m256i test_mm256_mask_mov_epi8(__m256i __W, __mmask32 __U, __m256i __A) {
2488   // CHECK-LABEL: @test_mm256_mask_mov_epi8
2489   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
2490   return _mm256_mask_mov_epi8(__W, __U, __A);
2491 }
2492 
test_mm256_maskz_mov_epi8(__mmask32 __U,__m256i __A)2493 __m256i test_mm256_maskz_mov_epi8(__mmask32 __U, __m256i __A) {
2494   // CHECK-LABEL: @test_mm256_maskz_mov_epi8
2495   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
2496   return _mm256_maskz_mov_epi8(__U, __A);
2497 }
2498 
test_mm_loadu_epi16(void const * __P)2499 __m128i test_mm_loadu_epi16(void const *__P) {
2500   // CHECK-LABEL: @test_mm_loadu_epi16
2501   // CHECK: load <2 x i64>, <2 x i64>* %{{.*}}, align 1{{$}}
2502   return _mm_loadu_epi16(__P);
2503 }
2504 
test_mm_mask_loadu_epi16(__m128i __W,__mmask8 __U,void const * __P)2505 __m128i test_mm_mask_loadu_epi16(__m128i __W, __mmask8 __U, void const *__P) {
2506   // CHECK-LABEL: @test_mm_mask_loadu_epi16
2507   // CHECK: @llvm.masked.load.v8i16.p0v8i16(<8 x i16>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i16> %{{.*}})
2508   return _mm_mask_loadu_epi16(__W, __U, __P);
2509 }
2510 
test_mm_maskz_loadu_epi16(__mmask8 __U,void const * __P)2511 __m128i test_mm_maskz_loadu_epi16(__mmask8 __U, void const *__P) {
2512   // CHECK-LABEL: @test_mm_maskz_loadu_epi16
2513   // CHECK: @llvm.masked.load.v8i16.p0v8i16(<8 x i16>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i16> %{{.*}})
2514   return _mm_maskz_loadu_epi16(__U, __P);
2515 }
2516 
test_mm256_loadu_epi16(void const * __P)2517 __m256i test_mm256_loadu_epi16(void const *__P) {
2518   // CHECK-LABEL: @test_mm256_loadu_epi16
2519   // CHECK: load <4 x i64>, <4 x i64>* %{{.*}}, align 1{{$}}
2520   return _mm256_loadu_epi16(__P);
2521 }
2522 
test_mm256_mask_loadu_epi16(__m256i __W,__mmask16 __U,void const * __P)2523 __m256i test_mm256_mask_loadu_epi16(__m256i __W, __mmask16 __U, void const *__P) {
2524   // CHECK-LABEL: @test_mm256_mask_loadu_epi16
2525   // CHECK: @llvm.masked.load.v16i16.p0v16i16(<16 x i16>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i16> %{{.*}})
2526   return _mm256_mask_loadu_epi16(__W, __U, __P);
2527 }
2528 
test_mm256_maskz_loadu_epi16(__mmask16 __U,void const * __P)2529 __m256i test_mm256_maskz_loadu_epi16(__mmask16 __U, void const *__P) {
2530   // CHECK-LABEL: @test_mm256_maskz_loadu_epi16
2531   // CHECK: @llvm.masked.load.v16i16.p0v16i16(<16 x i16>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i16> %{{.*}})
2532   return _mm256_maskz_loadu_epi16(__U, __P);
2533 }
2534 
test_mm_loadu_epi8(void const * __P)2535 __m128i test_mm_loadu_epi8(void const *__P) {
2536   // CHECK-LABEL: @test_mm_loadu_epi8
2537   // CHECK: load <2 x i64>, <2 x i64>* %{{.*}}, align 1{{$}}
2538   return _mm_loadu_epi8(__P);
2539 }
2540 
test_mm_mask_loadu_epi8(__m128i __W,__mmask16 __U,void const * __P)2541 __m128i test_mm_mask_loadu_epi8(__m128i __W, __mmask16 __U, void const *__P) {
2542   // CHECK-LABEL: @test_mm_mask_loadu_epi8
2543   // CHECK: @llvm.masked.load.v16i8.p0v16i8(<16 x i8>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i8> %{{.*}})
2544   return _mm_mask_loadu_epi8(__W, __U, __P);
2545 }
2546 
test_mm_maskz_loadu_epi8(__mmask16 __U,void const * __P)2547 __m128i test_mm_maskz_loadu_epi8(__mmask16 __U, void const *__P) {
2548   // CHECK-LABEL: @test_mm_maskz_loadu_epi8
2549   // CHECK: @llvm.masked.load.v16i8.p0v16i8(<16 x i8>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i8> %{{.*}})
2550   return _mm_maskz_loadu_epi8(__U, __P);
2551 }
2552 
test_mm256_loadu_epi8(void const * __P)2553 __m256i test_mm256_loadu_epi8(void const *__P) {
2554   // CHECK-LABEL: @test_mm256_loadu_epi8
2555   // CHECK: load <4 x i64>, <4 x i64>* %{{.*}}, align 1{{$}}
2556   return _mm256_loadu_epi8(__P);
2557 }
2558 
test_mm256_mask_loadu_epi8(__m256i __W,__mmask32 __U,void const * __P)2559 __m256i test_mm256_mask_loadu_epi8(__m256i __W, __mmask32 __U, void const *__P) {
2560   // CHECK-LABEL: @test_mm256_mask_loadu_epi8
2561   // CHECK: @llvm.masked.load.v32i8.p0v32i8(<32 x i8>* %{{.*}}, i32 1, <32 x i1> %{{.*}}, <32 x i8> %{{.*}})
2562   return _mm256_mask_loadu_epi8(__W, __U, __P);
2563 }
2564 
test_mm256_maskz_loadu_epi8(__mmask32 __U,void const * __P)2565 __m256i test_mm256_maskz_loadu_epi8(__mmask32 __U, void const *__P) {
2566   // CHECK-LABEL: @test_mm256_maskz_loadu_epi8
2567   // CHECK: @llvm.masked.load.v32i8.p0v32i8(<32 x i8>* %{{.*}}, i32 1, <32 x i1> %{{.*}}, <32 x i8> %{{.*}})
2568   return _mm256_maskz_loadu_epi8(__U, __P);
2569 }
2570 
test_mm_storeu_epi16(void * __p,__m128i __a)2571 void test_mm_storeu_epi16(void *__p, __m128i __a) {
2572   // check-label: @test_mm_storeu_epi16
2573   // check: store <2 x i64> %{{.*}}, <2 x i64>* %{{.*}}, align 1{{$}}
2574   return _mm_storeu_epi16(__p, __a);
2575 }
2576 
test_mm_mask_storeu_epi16(void * __P,__mmask8 __U,__m128i __A)2577 void test_mm_mask_storeu_epi16(void *__P, __mmask8 __U, __m128i __A) {
2578   // CHECK-LABEL: @test_mm_mask_storeu_epi16
2579   // CHECK: @llvm.masked.store.v8i16.p0v8i16(<8 x i16> %{{.*}}, <8 x i16>* %{{.*}}, i32 1, <8 x i1> %{{.*}})
2580   return _mm_mask_storeu_epi16(__P, __U, __A);
2581 }
2582 
test_mm256_storeu_epi16(void * __P,__m256i __A)2583 void test_mm256_storeu_epi16(void *__P, __m256i __A) {
2584   // CHECK-LABEL: @test_mm256_storeu_epi16
2585   // CHECK: store <4 x i64> %{{.*}}, <4 x i64>* %{{.*}}, align 1{{$}}
2586   return _mm256_storeu_epi16(__P, __A);
2587 }
2588 
test_mm256_mask_storeu_epi16(void * __P,__mmask16 __U,__m256i __A)2589 void test_mm256_mask_storeu_epi16(void *__P, __mmask16 __U, __m256i __A) {
2590   // CHECK-LABEL: @test_mm256_mask_storeu_epi16
2591   // CHECK: @llvm.masked.store.v16i16.p0v16i16(<16 x i16> %{{.*}}, <16 x i16>* %{{.*}}, i32 1, <16 x i1> %{{.*}})
2592   return _mm256_mask_storeu_epi16(__P, __U, __A);
2593 }
2594 
test_mm_storeu_epi8(void * __p,__m128i __a)2595 void test_mm_storeu_epi8(void *__p, __m128i __a) {
2596   // check-label: @test_mm_storeu_epi8
2597   // check: store <2 x i64> %{{.*}}, <2 x i64>* %{{.*}}, align 1{{$}}
2598   return _mm_storeu_epi8(__p, __a);
2599 }
2600 
test_mm_mask_storeu_epi8(void * __P,__mmask16 __U,__m128i __A)2601 void test_mm_mask_storeu_epi8(void *__P, __mmask16 __U, __m128i __A) {
2602   // CHECK-LABEL: @test_mm_mask_storeu_epi8
2603   // CHECK: @llvm.masked.store.v16i8.p0v16i8(<16 x i8> %{{.*}}, <16 x i8>* %{{.*}}, i32 1, <16 x i1> %{{.*}})
2604   return _mm_mask_storeu_epi8(__P, __U, __A);
2605 }
2606 
test_mm256_storeu_epi8(void * __P,__m256i __A)2607 void test_mm256_storeu_epi8(void *__P, __m256i __A) {
2608   // CHECK-LABEL: @test_mm256_storeu_epi8
2609   // CHECK: store <4 x i64> %{{.*}}, <4 x i64>* %{{.*}}, align 1{{$}}
2610   return _mm256_storeu_epi8(__P, __A);
2611 }
2612 
test_mm256_mask_storeu_epi8(void * __P,__mmask32 __U,__m256i __A)2613 void test_mm256_mask_storeu_epi8(void *__P, __mmask32 __U, __m256i __A) {
2614   // CHECK-LABEL: @test_mm256_mask_storeu_epi8
2615   // CHECK: @llvm.masked.store.v32i8.p0v32i8(<32 x i8> %{{.*}}, <32 x i8>* %{{.*}}, i32 1, <32 x i1> %{{.*}})
2616   return _mm256_mask_storeu_epi8(__P, __U, __A);
2617 }
test_mm_test_epi8_mask(__m128i __A,__m128i __B)2618 __mmask16 test_mm_test_epi8_mask(__m128i __A, __m128i __B) {
2619   // CHECK-LABEL: @test_mm_test_epi8_mask
2620   // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2621   // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}}
2622   return _mm_test_epi8_mask(__A, __B);
2623 }
2624 
test_mm_mask_test_epi8_mask(__mmask16 __U,__m128i __A,__m128i __B)2625 __mmask16 test_mm_mask_test_epi8_mask(__mmask16 __U, __m128i __A, __m128i __B) {
2626   // CHECK-LABEL: @test_mm_mask_test_epi8_mask
2627   // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2628   // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}}
2629   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2630   return _mm_mask_test_epi8_mask(__U, __A, __B);
2631 }
2632 
test_mm256_test_epi8_mask(__m256i __A,__m256i __B)2633 __mmask32 test_mm256_test_epi8_mask(__m256i __A, __m256i __B) {
2634   // CHECK-LABEL: @test_mm256_test_epi8_mask
2635   // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2636   // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}}
2637   return _mm256_test_epi8_mask(__A, __B);
2638 }
2639 
test_mm256_mask_test_epi8_mask(__mmask32 __U,__m256i __A,__m256i __B)2640 __mmask32 test_mm256_mask_test_epi8_mask(__mmask32 __U, __m256i __A, __m256i __B) {
2641   // CHECK-LABEL: @test_mm256_mask_test_epi8_mask
2642   // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2643   // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}}
2644   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
2645   return _mm256_mask_test_epi8_mask(__U, __A, __B);
2646 }
2647 
test_mm_test_epi16_mask(__m128i __A,__m128i __B)2648 __mmask8 test_mm_test_epi16_mask(__m128i __A, __m128i __B) {
2649   // CHECK-LABEL: @test_mm_test_epi16_mask
2650   // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2651   // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}}
2652   return _mm_test_epi16_mask(__A, __B);
2653 }
2654 
test_mm_mask_test_epi16_mask(__mmask8 __U,__m128i __A,__m128i __B)2655 __mmask8 test_mm_mask_test_epi16_mask(__mmask8 __U, __m128i __A, __m128i __B) {
2656   // CHECK-LABEL: @test_mm_mask_test_epi16_mask
2657   // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2658   // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}}
2659   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2660   return _mm_mask_test_epi16_mask(__U, __A, __B);
2661 }
2662 
test_mm256_test_epi16_mask(__m256i __A,__m256i __B)2663 __mmask16 test_mm256_test_epi16_mask(__m256i __A, __m256i __B) {
2664   // CHECK-LABEL: @test_mm256_test_epi16_mask
2665   // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2666   // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}}
2667   return _mm256_test_epi16_mask(__A, __B);
2668 }
2669 
test_mm256_mask_test_epi16_mask(__mmask16 __U,__m256i __A,__m256i __B)2670 __mmask16 test_mm256_mask_test_epi16_mask(__mmask16 __U, __m256i __A, __m256i __B) {
2671   // CHECK-LABEL: @test_mm256_mask_test_epi16_mask
2672   // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2673   // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}}
2674   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2675   return _mm256_mask_test_epi16_mask(__U, __A, __B);
2676 }
2677 
test_mm_testn_epi8_mask(__m128i __A,__m128i __B)2678 __mmask16 test_mm_testn_epi8_mask(__m128i __A, __m128i __B) {
2679   // CHECK-LABEL: @test_mm_testn_epi8_mask
2680   // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2681   // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
2682   return _mm_testn_epi8_mask(__A, __B);
2683 }
2684 
test_mm_mask_testn_epi8_mask(__mmask16 __U,__m128i __A,__m128i __B)2685 __mmask16 test_mm_mask_testn_epi8_mask(__mmask16 __U, __m128i __A, __m128i __B) {
2686   // CHECK-LABEL: @test_mm_mask_testn_epi8_mask
2687   // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2688   // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
2689   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2690   return _mm_mask_testn_epi8_mask(__U, __A, __B);
2691 }
2692 
test_mm256_testn_epi8_mask(__m256i __A,__m256i __B)2693 __mmask32 test_mm256_testn_epi8_mask(__m256i __A, __m256i __B) {
2694   // CHECK-LABEL: @test_mm256_testn_epi8_mask
2695   // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2696   // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}
2697   return _mm256_testn_epi8_mask(__A, __B);
2698 }
2699 
test_mm256_mask_testn_epi8_mask(__mmask32 __U,__m256i __A,__m256i __B)2700 __mmask32 test_mm256_mask_testn_epi8_mask(__mmask32 __U, __m256i __A, __m256i __B) {
2701   // CHECK-LABEL: @test_mm256_mask_testn_epi8_mask
2702   // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2703   // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}
2704   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
2705   return _mm256_mask_testn_epi8_mask(__U, __A, __B);
2706 }
2707 
test_mm_testn_epi16_mask(__m128i __A,__m128i __B)2708 __mmask8 test_mm_testn_epi16_mask(__m128i __A, __m128i __B) {
2709   // CHECK-LABEL: @test_mm_testn_epi16_mask
2710   // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2711   // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
2712   return _mm_testn_epi16_mask(__A, __B);
2713 }
2714 
test_mm_mask_testn_epi16_mask(__mmask8 __U,__m128i __A,__m128i __B)2715 __mmask8 test_mm_mask_testn_epi16_mask(__mmask8 __U, __m128i __A, __m128i __B) {
2716   // CHECK-LABEL: @test_mm_mask_testn_epi16_mask
2717   // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2718   // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
2719   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2720   return _mm_mask_testn_epi16_mask(__U, __A, __B);
2721 }
2722 
test_mm256_testn_epi16_mask(__m256i __A,__m256i __B)2723 __mmask16 test_mm256_testn_epi16_mask(__m256i __A, __m256i __B) {
2724   // CHECK-LABEL: @test_mm256_testn_epi16_mask
2725   // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2726   // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}
2727   return _mm256_testn_epi16_mask(__A, __B);
2728 }
2729 
test_mm256_mask_testn_epi16_mask(__mmask16 __U,__m256i __A,__m256i __B)2730 __mmask16 test_mm256_mask_testn_epi16_mask(__mmask16 __U, __m256i __A, __m256i __B) {
2731   // CHECK-LABEL: @test_mm256_mask_testn_epi16_mask
2732   // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2733   // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}
2734   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2735   return _mm256_mask_testn_epi16_mask(__U, __A, __B);
2736 }
2737 
test_mm_movepi8_mask(__m128i __A)2738 __mmask16 test_mm_movepi8_mask(__m128i __A) {
2739   // CHECK-LABEL: @test_mm_movepi8_mask
2740   // CHECK: [[CMP:%.*]] = icmp slt <16 x i8> %{{.*}}, zeroinitializer
2741   // CHECK: bitcast <16 x i1> [[CMP]] to i16
2742   return _mm_movepi8_mask(__A);
2743 }
2744 
test_mm256_movepi8_mask(__m256i __A)2745 __mmask32 test_mm256_movepi8_mask(__m256i __A) {
2746   // CHECK-LABEL: @test_mm256_movepi8_mask
2747   // CHECK: [[CMP:%.*]] = icmp slt <32 x i8> %{{.*}}, zeroinitializer
2748   // CHECK: bitcast <32 x i1> [[CMP]] to i32
2749   return _mm256_movepi8_mask(__A);
2750 }
2751 
test_mm_movm_epi8(__mmask16 __A)2752 __m128i test_mm_movm_epi8(__mmask16 __A) {
2753   // CHECK-LABEL: @test_mm_movm_epi8
2754   // CHECK: %{{.*}} = bitcast i16 %{{.*}} to <16 x i1>
2755   // CHECK: %vpmovm2.i = sext <16 x i1> %{{.*}} to <16 x i8>
2756   return _mm_movm_epi8(__A);
2757 }
2758 
test_mm256_movm_epi8(__mmask32 __A)2759 __m256i test_mm256_movm_epi8(__mmask32 __A) {
2760   // CHECK-LABEL: @test_mm256_movm_epi8
2761   // CHECK: %{{.*}} = bitcast i32 %{{.*}} to <32 x i1>
2762   // CHECK: %vpmovm2.i = sext <32 x i1> %{{.*}} to <32 x i8>
2763   return _mm256_movm_epi8(__A);
2764 }
2765 
test_mm_movm_epi16(__mmask8 __A)2766 __m128i test_mm_movm_epi16(__mmask8 __A) {
2767   // CHECK-LABEL: @test_mm_movm_epi16
2768   // CHECK: %{{.*}} = bitcast i8 %{{.*}} to <8 x i1>
2769   // CHECK: %vpmovm2.i = sext <8 x i1> %{{.*}} to <8 x i16>
2770   return _mm_movm_epi16(__A);
2771 }
2772 
test_mm256_movm_epi16(__mmask16 __A)2773 __m256i test_mm256_movm_epi16(__mmask16 __A) {
2774   // CHECK-LABEL: @test_mm256_movm_epi16
2775   // CHECK: %{{.*}} = bitcast i16 %{{.*}} to <16 x i1>
2776   // CHECK: %vpmovm2.i = sext <16 x i1> %{{.*}} to <16 x i16>
2777   return _mm256_movm_epi16(__A);
2778 }
2779 
test_mm_mask_broadcastb_epi8(__m128i __O,__mmask16 __M,__m128i __A)2780 __m128i test_mm_mask_broadcastb_epi8(__m128i __O, __mmask16 __M, __m128i __A) {
2781   // CHECK-LABEL: @test_mm_mask_broadcastb_epi8
2782   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> zeroinitializer
2783   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
2784   return _mm_mask_broadcastb_epi8(__O, __M, __A);
2785 }
2786 
test_mm_maskz_broadcastb_epi8(__mmask16 __M,__m128i __A)2787 __m128i test_mm_maskz_broadcastb_epi8(__mmask16 __M, __m128i __A) {
2788   // CHECK-LABEL: @test_mm_maskz_broadcastb_epi8
2789   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> zeroinitializer
2790   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
2791   return _mm_maskz_broadcastb_epi8(__M, __A);
2792 }
2793 
test_mm256_mask_broadcastb_epi8(__m256i __O,__mmask32 __M,__m128i __A)2794 __m256i test_mm256_mask_broadcastb_epi8(__m256i __O, __mmask32 __M, __m128i __A) {
2795   // CHECK-LABEL: @test_mm256_mask_broadcastb_epi8
2796   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <32 x i32> zeroinitializer
2797   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
2798   return _mm256_mask_broadcastb_epi8(__O, __M, __A);
2799 }
2800 
test_mm256_maskz_broadcastb_epi8(__mmask32 __M,__m128i __A)2801 __m256i test_mm256_maskz_broadcastb_epi8(__mmask32 __M, __m128i __A) {
2802   // CHECK-LABEL: @test_mm256_maskz_broadcastb_epi8
2803   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <32 x i32> zeroinitializer
2804   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
2805   return _mm256_maskz_broadcastb_epi8(__M, __A);
2806 }
2807 
test_mm_mask_broadcastw_epi16(__m128i __O,__mmask8 __M,__m128i __A)2808 __m128i test_mm_mask_broadcastw_epi16(__m128i __O, __mmask8 __M, __m128i __A) {
2809   // CHECK-LABEL: @test_mm_mask_broadcastw_epi16
2810   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> zeroinitializer
2811   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2812   return _mm_mask_broadcastw_epi16(__O, __M, __A);
2813 }
2814 
test_mm_maskz_broadcastw_epi16(__mmask8 __M,__m128i __A)2815 __m128i test_mm_maskz_broadcastw_epi16(__mmask8 __M, __m128i __A) {
2816   // CHECK-LABEL: @test_mm_maskz_broadcastw_epi16
2817   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> zeroinitializer
2818   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2819   return _mm_maskz_broadcastw_epi16(__M, __A);
2820 }
2821 
test_mm256_mask_broadcastw_epi16(__m256i __O,__mmask16 __M,__m128i __A)2822 __m256i test_mm256_mask_broadcastw_epi16(__m256i __O, __mmask16 __M, __m128i __A) {
2823   // CHECK-LABEL: @test_mm256_mask_broadcastw_epi16
2824   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <16 x i32> zeroinitializer
2825   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2826   return _mm256_mask_broadcastw_epi16(__O, __M, __A);
2827 }
2828 
test_mm256_maskz_broadcastw_epi16(__mmask16 __M,__m128i __A)2829 __m256i test_mm256_maskz_broadcastw_epi16(__mmask16 __M, __m128i __A) {
2830   // CHECK-LABEL: @test_mm256_maskz_broadcastw_epi16
2831   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <16 x i32> zeroinitializer
2832   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2833   return _mm256_maskz_broadcastw_epi16(__M, __A);
2834 }
test_mm_mask_set1_epi8(__m128i __O,__mmask16 __M,char __A)2835 __m128i test_mm_mask_set1_epi8 (__m128i __O, __mmask16 __M, char __A){
2836   // CHECK-LABEL: @test_mm_mask_set1_epi8
2837   // CHECK: insertelement <16 x i8> undef, i8 %{{.*}}, i32 0
2838   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 1
2839   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 2
2840   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 3
2841   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 4
2842   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 5
2843   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 6
2844   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 7
2845   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 8
2846   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 9
2847   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 10
2848   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 11
2849   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 12
2850   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 13
2851   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 14
2852   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 15
2853   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
2854   return _mm_mask_set1_epi8(__O, __M, __A);
2855 }
test_mm_maskz_set1_epi8(__mmask16 __M,char __A)2856 __m128i test_mm_maskz_set1_epi8 ( __mmask16 __M, char __A){
2857   // CHECK-LABEL: @test_mm_maskz_set1_epi8
2858   // CHECK: insertelement <16 x i8> undef, i8 %{{.*}}, i32 0
2859   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 1
2860   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 2
2861   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 3
2862   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 4
2863   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 5
2864   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 6
2865   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 7
2866   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 8
2867   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 9
2868   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 10
2869   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 11
2870   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 12
2871   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 13
2872   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 14
2873   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 15
2874   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
2875   return _mm_maskz_set1_epi8( __M, __A);
2876 }
2877 
test_mm256_mask_set1_epi8(__m256i __O,__mmask32 __M,char __A)2878 __m256i test_mm256_mask_set1_epi8(__m256i __O, __mmask32 __M, char __A) {
2879   // CHECK-LABEL: @test_mm256_mask_set1_epi8
2880   // CHECK: insertelement <32 x i8> undef, i8 %{{.*}}, i32 0
2881   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 1
2882   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 2
2883   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 3
2884   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 4
2885   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 5
2886   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 6
2887   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 7
2888   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 8
2889   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 9
2890   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 10
2891   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 11
2892   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 12
2893   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 13
2894   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 14
2895   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 15
2896   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 16
2897   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 17
2898   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 18
2899   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 19
2900   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 20
2901   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 21
2902   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 22
2903   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 23
2904   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 24
2905   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 25
2906   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 26
2907   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 27
2908   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 28
2909   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 29
2910   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 30
2911   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 31
2912   // CHECK:  select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
2913   return _mm256_mask_set1_epi8(__O, __M, __A);
2914 }
2915 
test_mm256_maskz_set1_epi8(__mmask32 __M,char __A)2916 __m256i test_mm256_maskz_set1_epi8( __mmask32 __M, char __A) {
2917   // CHECK-LABEL: @test_mm256_maskz_set1_epi8
2918   // CHECK: insertelement <32 x i8> undef, i8 %{{.*}}, i32 0
2919   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 1
2920   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 2
2921   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 3
2922   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 4
2923   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 5
2924   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 6
2925   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 7
2926   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 8
2927   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 9
2928   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 10
2929   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 11
2930   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 12
2931   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 13
2932   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 14
2933   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 15
2934   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 16
2935   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 17
2936   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 18
2937   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 19
2938   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 20
2939   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 21
2940   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 22
2941   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 23
2942   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 24
2943   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 25
2944   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 26
2945   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 27
2946   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 28
2947   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 29
2948   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 30
2949   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 31
2950   // CHECK:  select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
2951   return _mm256_maskz_set1_epi8( __M, __A);
2952 }
2953 
2954 
test_mm256_mask_set1_epi16(__m256i __O,__mmask16 __M,short __A)2955 __m256i test_mm256_mask_set1_epi16(__m256i __O, __mmask16 __M, short __A) {
2956   // CHECK-LABEL: @test_mm256_mask_set1_epi16
2957   // CHECK: insertelement <16 x i16> undef, i16 %{{.*}}, i32 0
2958   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 1
2959   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 2
2960   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 3
2961   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 4
2962   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 5
2963   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 6
2964   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 7
2965   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 8
2966   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 9
2967   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 10
2968   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 11
2969   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 12
2970   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 13
2971   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 14
2972   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 15
2973   // CHECK:  select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2974   return _mm256_mask_set1_epi16(__O, __M, __A);
2975 }
2976 
test_mm256_maskz_set1_epi16(__mmask16 __M,short __A)2977 __m256i test_mm256_maskz_set1_epi16(__mmask16 __M, short __A) {
2978   // CHECK-LABEL: @test_mm256_maskz_set1_epi16
2979   // CHECK: insertelement <16 x i16> undef, i16 %{{.*}}, i32 0
2980   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 1
2981   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 2
2982   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 3
2983   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 4
2984   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 5
2985   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 6
2986   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 7
2987   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 8
2988   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 9
2989   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 10
2990   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 11
2991   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 12
2992   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 13
2993   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 14
2994   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 15
2995   // CHECK:  select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2996   return _mm256_maskz_set1_epi16(__M, __A);
2997 }
2998 
test_mm_mask_set1_epi16(__m128i __O,__mmask8 __M,short __A)2999 __m128i test_mm_mask_set1_epi16(__m128i __O, __mmask8 __M, short __A) {
3000   // CHECK-LABEL: @test_mm_mask_set1_epi16
3001   // CHECK: insertelement <8 x i16> undef, i16 %{{.*}}, i32 0
3002   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 1
3003   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 2
3004   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 3
3005   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 4
3006   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 5
3007   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 6
3008   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 7
3009   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3010   return _mm_mask_set1_epi16(__O, __M, __A);
3011 }
3012 
test_mm_maskz_set1_epi16(__mmask8 __M,short __A)3013 __m128i test_mm_maskz_set1_epi16(__mmask8 __M, short __A) {
3014   // CHECK-LABEL: @test_mm_maskz_set1_epi16
3015   // CHECK: insertelement <8 x i16> undef, i16 %{{.*}}, i32 0
3016   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 1
3017   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 2
3018   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 3
3019   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 4
3020   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 5
3021   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 6
3022   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 7
3023   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3024   return _mm_maskz_set1_epi16(__M, __A);
3025 }
test_mm_permutexvar_epi16(__m128i __A,__m128i __B)3026 __m128i test_mm_permutexvar_epi16(__m128i __A, __m128i __B) {
3027   // CHECK-LABEL: @test_mm_permutexvar_epi16
3028   // CHECK: @llvm.x86.avx512.permvar.hi.128
3029   return _mm_permutexvar_epi16(__A, __B);
3030 }
3031 
test_mm_maskz_permutexvar_epi16(__mmask8 __M,__m128i __A,__m128i __B)3032 __m128i test_mm_maskz_permutexvar_epi16(__mmask8 __M, __m128i __A, __m128i __B) {
3033   // CHECK-LABEL: @test_mm_maskz_permutexvar_epi16
3034   // CHECK: @llvm.x86.avx512.permvar.hi.128
3035   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3036   return _mm_maskz_permutexvar_epi16(__M, __A, __B);
3037 }
3038 
test_mm_mask_permutexvar_epi16(__m128i __W,__mmask8 __M,__m128i __A,__m128i __B)3039 __m128i test_mm_mask_permutexvar_epi16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3040   // CHECK-LABEL: @test_mm_mask_permutexvar_epi16
3041   // CHECK: @llvm.x86.avx512.permvar.hi.128
3042   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3043   return _mm_mask_permutexvar_epi16(__W, __M, __A, __B);
3044 }
3045 
test_mm256_permutexvar_epi16(__m256i __A,__m256i __B)3046 __m256i test_mm256_permutexvar_epi16(__m256i __A, __m256i __B) {
3047   // CHECK-LABEL: @test_mm256_permutexvar_epi16
3048   // CHECK: @llvm.x86.avx512.permvar.hi.256
3049   return _mm256_permutexvar_epi16(__A, __B);
3050 }
3051 
test_mm256_maskz_permutexvar_epi16(__mmask16 __M,__m256i __A,__m256i __B)3052 __m256i test_mm256_maskz_permutexvar_epi16(__mmask16 __M, __m256i __A, __m256i __B) {
3053   // CHECK-LABEL: @test_mm256_maskz_permutexvar_epi16
3054   // CHECK: @llvm.x86.avx512.permvar.hi.256
3055   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3056   return _mm256_maskz_permutexvar_epi16(__M, __A, __B);
3057 }
3058 
test_mm256_mask_permutexvar_epi16(__m256i __W,__mmask16 __M,__m256i __A,__m256i __B)3059 __m256i test_mm256_mask_permutexvar_epi16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {
3060   // CHECK-LABEL: @test_mm256_mask_permutexvar_epi16
3061   // CHECK: @llvm.x86.avx512.permvar.hi.256
3062   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3063   return _mm256_mask_permutexvar_epi16(__W, __M, __A, __B);
3064 }
test_mm_mask_alignr_epi8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)3065 __m128i test_mm_mask_alignr_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
3066   // CHECK-LABEL: @test_mm_mask_alignr_epi8
3067   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 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 16, i32 17>
3068   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
3069   return _mm_mask_alignr_epi8(__W, __U, __A, __B, 2);
3070 }
3071 
test_mm_maskz_alignr_epi8(__mmask16 __U,__m128i __A,__m128i __B)3072 __m128i test_mm_maskz_alignr_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
3073   // CHECK-LABEL: @test_mm_maskz_alignr_epi8
3074   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 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 16, i32 17>
3075   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
3076   return _mm_maskz_alignr_epi8(__U, __A, __B, 2);
3077 }
3078 
test_mm256_mask_alignr_epi8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)3079 __m256i test_mm256_mask_alignr_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
3080   // CHECK-LABEL: @test_mm256_mask_alignr_epi8
3081   // CHECK: shufflevector <32 x i8> %{{.*}}, <32 x i8> %{{.*}}, <32 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 32, i32 33, 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 48, i32 49>
3082   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
3083   return _mm256_mask_alignr_epi8(__W, __U, __A, __B, 2);
3084 }
3085 
test_mm256_maskz_alignr_epi8(__mmask32 __U,__m256i __A,__m256i __B)3086 __m256i test_mm256_maskz_alignr_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
3087   // CHECK-LABEL: @test_mm256_maskz_alignr_epi8
3088   // CHECK: shufflevector <32 x i8> %{{.*}}, <32 x i8> %{{.*}}, <32 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 32, i32 33, 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 48, i32 49>
3089   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
3090   return _mm256_maskz_alignr_epi8(__U, __A, __B, 2);
3091 }
3092 
test_mm_dbsad_epu8(__m128i __A,__m128i __B)3093 __m128i test_mm_dbsad_epu8(__m128i __A, __m128i __B) {
3094   // CHECK-LABEL: @test_mm_dbsad_epu8
3095   // CHECK: @llvm.x86.avx512.dbpsadbw.128
3096   return _mm_dbsad_epu8(__A, __B, 170);
3097 }
3098 
test_mm_mask_dbsad_epu8(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)3099 __m128i test_mm_mask_dbsad_epu8(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
3100   // CHECK-LABEL: @test_mm_mask_dbsad_epu8
3101   // CHECK: @llvm.x86.avx512.dbpsadbw.128
3102   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3103   return _mm_mask_dbsad_epu8(__W, __U, __A, __B, 170);
3104 }
3105 
test_mm_maskz_dbsad_epu8(__mmask8 __U,__m128i __A,__m128i __B)3106 __m128i test_mm_maskz_dbsad_epu8(__mmask8 __U, __m128i __A, __m128i __B) {
3107   // CHECK-LABEL: @test_mm_maskz_dbsad_epu8
3108   // CHECK: @llvm.x86.avx512.dbpsadbw.128
3109   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3110   return _mm_maskz_dbsad_epu8(__U, __A, __B, 170);
3111 }
3112 
test_mm256_dbsad_epu8(__m256i __A,__m256i __B)3113 __m256i test_mm256_dbsad_epu8(__m256i __A, __m256i __B) {
3114   // CHECK-LABEL: @test_mm256_dbsad_epu8
3115   // CHECK: @llvm.x86.avx512.dbpsadbw.256
3116   return _mm256_dbsad_epu8(__A, __B, 170);
3117 }
3118 
test_mm256_mask_dbsad_epu8(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)3119 __m256i test_mm256_mask_dbsad_epu8(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
3120   // CHECK-LABEL: @test_mm256_mask_dbsad_epu8
3121   // CHECK: @llvm.x86.avx512.dbpsadbw.256
3122   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3123   return _mm256_mask_dbsad_epu8(__W, __U, __A, __B, 170);
3124 }
3125 
test_mm256_maskz_dbsad_epu8(__mmask16 __U,__m256i __A,__m256i __B)3126 __m256i test_mm256_maskz_dbsad_epu8(__mmask16 __U, __m256i __A, __m256i __B) {
3127   // CHECK-LABEL: @test_mm256_maskz_dbsad_epu8
3128   // CHECK: @llvm.x86.avx512.dbpsadbw.256
3129   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3130   return _mm256_maskz_dbsad_epu8(__U, __A, __B, 170);
3131 }
test_mm_movepi16_mask(__m128i __A)3132 __mmask8 test_mm_movepi16_mask(__m128i __A) {
3133   // CHECK-LABEL: @test_mm_movepi16_mask
3134   // CHECK: [[CMP:%.*]] = icmp slt <8 x i16> %{{.*}}, zeroinitializer
3135   // CHECK: bitcast <8 x i1> [[CMP]] to i8
3136   return _mm_movepi16_mask(__A);
3137 }
3138 
test_mm256_movepi16_mask(__m256i __A)3139 __mmask16 test_mm256_movepi16_mask(__m256i __A) {
3140   // CHECK-LABEL: @test_mm256_movepi16_mask
3141   // CHECK: [[CMP:%.*]] = icmp slt <16 x i16> %{{.*}}, zeroinitializer
3142   // CHECK: bitcast <16 x i1> [[CMP]] to i16
3143   return _mm256_movepi16_mask(__A);
3144 }
3145 
test_mm_mask_shufflehi_epi16(__m128i __W,__mmask8 __U,__m128i __A)3146 __m128i test_mm_mask_shufflehi_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
3147   // CHECK-LABEL: @test_mm_mask_shufflehi_epi16
3148   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 5, i32 4, i32 4>
3149   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3150   return _mm_mask_shufflehi_epi16(__W, __U, __A, 5);
3151 }
3152 
test_mm_maskz_shufflehi_epi16(__mmask8 __U,__m128i __A)3153 __m128i test_mm_maskz_shufflehi_epi16(__mmask8 __U, __m128i __A) {
3154   // CHECK-LABEL: @test_mm_maskz_shufflehi_epi16
3155   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 5, i32 4, i32 4>
3156   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3157   return _mm_maskz_shufflehi_epi16(__U, __A, 5);
3158 }
3159 
test_mm_mask_shufflelo_epi16(__m128i __W,__mmask8 __U,__m128i __A)3160 __m128i test_mm_mask_shufflelo_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
3161   // CHECK-LABEL: @test_mm_mask_shufflelo_epi16
3162   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> poison, <8 x i32> <i32 1, i32 1, i32 0, i32 0, i32 4, i32 5, i32 6, i32 7>
3163   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3164   return _mm_mask_shufflelo_epi16(__W, __U, __A, 5);
3165 }
3166 
test_mm_maskz_shufflelo_epi16(__mmask8 __U,__m128i __A)3167 __m128i test_mm_maskz_shufflelo_epi16(__mmask8 __U, __m128i __A) {
3168   // CHECK-LABEL: @test_mm_maskz_shufflelo_epi16
3169   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> poison, <8 x i32> <i32 1, i32 1, i32 0, i32 0, i32 4, i32 5, i32 6, i32 7>
3170   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3171   return _mm_maskz_shufflelo_epi16(__U, __A, 5);
3172 }
3173 
test_mm256_mask_shufflehi_epi16(__m256i __W,__mmask16 __U,__m256i __A)3174 __m256i test_mm256_mask_shufflehi_epi16(__m256i __W, __mmask16 __U, __m256i __A) {
3175   // CHECK-LABEL: @test_mm256_mask_shufflehi_epi16
3176   // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> poison, <16 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>
3177   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3178   return _mm256_mask_shufflehi_epi16(__W, __U, __A, 5);
3179 }
3180 
test_mm256_maskz_shufflehi_epi16(__mmask16 __U,__m256i __A)3181 __m256i test_mm256_maskz_shufflehi_epi16(__mmask16 __U, __m256i __A) {
3182   // CHECK-LABEL: @test_mm256_maskz_shufflehi_epi16
3183   // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> poison, <16 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>
3184   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3185   return _mm256_maskz_shufflehi_epi16(__U, __A, 5);
3186 }
3187 
test_mm256_mask_shufflelo_epi16(__m256i __W,__mmask16 __U,__m256i __A)3188 __m256i test_mm256_mask_shufflelo_epi16(__m256i __W, __mmask16 __U, __m256i __A) {
3189   // CHECK-LABEL: @test_mm256_mask_shufflelo_epi16
3190   // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> poison, <16 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>
3191   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3192   return _mm256_mask_shufflelo_epi16(__W, __U, __A, 5);
3193 }
3194 
test_mm256_maskz_shufflelo_epi16(__mmask16 __U,__m256i __A)3195 __m256i test_mm256_maskz_shufflelo_epi16(__mmask16 __U, __m256i __A) {
3196   // CHECK-LABEL: @test_mm256_maskz_shufflelo_epi16
3197   // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> poison, <16 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>
3198   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3199   return _mm256_maskz_shufflelo_epi16(__U, __A, 5);
3200 }
3201 
test_mm_mask_cvtepi16_storeu_epi8(void * __P,__mmask8 __M,__m128i __A)3202 void test_mm_mask_cvtepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
3203 {
3204  // CHECK-LABEL:@test_mm_mask_cvtepi16_storeu_epi8
3205  // CHECK: @llvm.x86.avx512.mask.pmov.wb.mem.128
3206  _mm_mask_cvtepi16_storeu_epi8 (__P, __M, __A);
3207 }
3208 
test_mm_mask_cvtsepi16_storeu_epi8(void * __P,__mmask8 __M,__m128i __A)3209 void test_mm_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
3210 {
3211  // CHECK-LABEL:@test_mm_mask_cvtsepi16_storeu_epi8
3212  // CHECK: @llvm.x86.avx512.mask.pmovs.wb.mem.128
3213   _mm_mask_cvtsepi16_storeu_epi8 ( __P,  __M, __A);
3214 }
3215 
test_mm_mask_cvtusepi16_storeu_epi8(void * __P,__mmask8 __M,__m128i __A)3216 void test_mm_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
3217 {
3218  // CHECK-LABEL:@test_mm_mask_cvtusepi16_storeu_epi8
3219  // CHECK: @llvm.x86.avx512.mask.pmovus.wb.mem.128
3220   _mm_mask_cvtusepi16_storeu_epi8 (__P, __M, __A);
3221 }
3222 
test_mm256_mask_cvtusepi16_storeu_epi8(void * __P,__mmask16 __M,__m256i __A)3223 void test_mm256_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A)
3224 {
3225  // CHECK-LABEL:@test_mm256_mask_cvtusepi16_storeu_epi8
3226  // CHECK: @llvm.x86.avx512.mask.pmovus.wb.mem.256
3227   _mm256_mask_cvtusepi16_storeu_epi8 ( __P, __M, __A);
3228 }
3229 
test_mm256_mask_cvtepi16_storeu_epi8(void * __P,__mmask16 __M,__m256i __A)3230 void test_mm256_mask_cvtepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A)
3231 {
3232  // CHECK-LABEL:@test_mm256_mask_cvtepi16_storeu_epi8
3233  // CHECK: @llvm.x86.avx512.mask.pmov.wb.mem.256
3234   _mm256_mask_cvtepi16_storeu_epi8 ( __P,  __M, __A);
3235 }
3236 
test_mm256_mask_cvtsepi16_storeu_epi8(void * __P,__mmask16 __M,__m256i __A)3237 void test_mm256_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A)
3238 {
3239  // CHECK-LABEL:@test_mm256_mask_cvtsepi16_storeu_epi8
3240  // CHECK: @llvm.x86.avx512.mask.pmovs.wb.mem.256
3241  _mm256_mask_cvtsepi16_storeu_epi8 ( __P, __M, __A);
3242 }
3243