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: [[SUB:%.*]] = sub <16 x i8> zeroinitializer, [[A:%.*]]
901   // CHECK: [[CMP:%.*]] = icmp sgt <16 x i8> [[A]], zeroinitializer
902   // CHECK: [[SEL:%.*]] = select <16 x i1> [[CMP]], <16 x i8> [[A]], <16 x i8> [[SUB]]
903   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[SEL]] to [[DSTTY:<2 x i64>]]
904   // CHECK: [[SEL:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
905   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> [[SEL]], <16 x i8> %{{.*}}
906   return _mm_mask_abs_epi8(__W,__U,__A);
907 }
908 
test_mm_maskz_abs_epi8(__mmask16 __U,__m128i __A)909 __m128i test_mm_maskz_abs_epi8(__mmask16 __U, __m128i __A) {
910   // CHECK-LABEL: @test_mm_maskz_abs_epi8
911   // CHECK: [[SUB:%.*]] = sub <16 x i8> zeroinitializer, [[A:%.*]]
912   // CHECK: [[CMP:%.*]] = icmp sgt <16 x i8> [[A]], zeroinitializer
913   // CHECK: [[SEL:%.*]] = select <16 x i1> [[CMP]], <16 x i8> [[A]], <16 x i8> [[SUB]]
914   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[SEL]] to [[DSTTY:<2 x i64>]]
915   // CHECK: [[SEL:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
916   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> [[SEL]], <16 x i8> %{{.*}}
917   return _mm_maskz_abs_epi8(__U,__A);
918 }
919 
test_mm256_mask_abs_epi8(__m256i __W,__mmask32 __U,__m256i __A)920 __m256i test_mm256_mask_abs_epi8(__m256i __W, __mmask32 __U, __m256i __A) {
921   // CHECK-LABEL: @test_mm256_mask_abs_epi8
922   // CHECK: [[SUB:%.*]] = sub <32 x i8> zeroinitializer, [[A:%.*]]
923   // CHECK: [[CMP:%.*]] = icmp sgt <32 x i8> [[A]], zeroinitializer
924   // CHECK: [[SEL:%.*]] = select <32 x i1> [[CMP]], <32 x i8> [[A]], <32 x i8> [[SUB]]
925   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[SEL]] to [[DSTTY:<4 x i64>]]
926   // CHECK: [[SEL:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
927   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> [[SEL]], <32 x i8> %{{.*}}
928   return _mm256_mask_abs_epi8(__W,__U,__A);
929 }
930 
test_mm256_maskz_abs_epi8(__mmask32 __U,__m256i __A)931 __m256i test_mm256_maskz_abs_epi8(__mmask32 __U, __m256i __A) {
932   // CHECK-LABEL: @test_mm256_maskz_abs_epi8
933   // CHECK: [[SUB:%.*]] = sub <32 x i8> zeroinitializer, [[A:%.*]]
934   // CHECK: [[CMP:%.*]] = icmp sgt <32 x i8> [[A]], zeroinitializer
935   // CHECK: [[SEL:%.*]] = select <32 x i1> [[CMP]], <32 x i8> [[A]], <32 x i8> [[SUB]]
936   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[SEL]] to [[DSTTY:<4 x i64>]]
937   // CHECK: [[SEL:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
938   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> [[SEL]], <32 x i8> %{{.*}}
939   return _mm256_maskz_abs_epi8(__U,__A);
940 }
941 
test_mm_mask_abs_epi16(__m128i __W,__mmask8 __U,__m128i __A)942 __m128i test_mm_mask_abs_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
943   // CHECK-LABEL: @test_mm_mask_abs_epi16
944   // CHECK: [[SUB:%.*]] = sub <8 x i16> zeroinitializer, [[A:%.*]]
945   // CHECK: [[CMP:%.*]] = icmp sgt <8 x i16> [[A]], zeroinitializer
946   // CHECK: [[SEL:%.*]] = select <8 x i1> [[CMP]], <8 x i16> [[A]], <8 x i16> [[SUB]]
947   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[SEL]] to [[DSTTY:<2 x i64>]]
948   // CHECK: [[SEL:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
949   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> [[SEL]], <8 x i16> %{{.*}}
950   return _mm_mask_abs_epi16(__W,__U,__A);
951 }
952 
test_mm_maskz_abs_epi16(__mmask8 __U,__m128i __A)953 __m128i test_mm_maskz_abs_epi16(__mmask8 __U, __m128i __A) {
954   // CHECK-LABEL: @test_mm_maskz_abs_epi16
955   // CHECK: [[SUB:%.*]] = sub <8 x i16> zeroinitializer, [[A:%.*]]
956   // CHECK: [[CMP:%.*]] = icmp sgt <8 x i16> [[A]], zeroinitializer
957   // CHECK: [[SEL:%.*]] = select <8 x i1> [[CMP]], <8 x i16> [[A]], <8 x i16> [[SUB]]
958   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[SEL]] to [[DSTTY:<2 x i64>]]
959   // CHECK: [[SEL:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
960   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> [[SEL]], <8 x i16> %{{.*}}
961   return _mm_maskz_abs_epi16(__U,__A);
962 }
963 
test_mm256_mask_abs_epi16(__m256i __W,__mmask16 __U,__m256i __A)964 __m256i test_mm256_mask_abs_epi16(__m256i __W, __mmask16 __U, __m256i __A) {
965   // CHECK-LABEL: @test_mm256_mask_abs_epi16
966   // CHECK: [[SUB:%.*]] = sub <16 x i16> zeroinitializer, [[A:%.*]]
967   // CHECK: [[CMP:%.*]] = icmp sgt <16 x i16> [[A]], zeroinitializer
968   // CHECK: [[SEL:%.*]] = select <16 x i1> [[CMP]], <16 x i16> [[A]], <16 x i16> [[SUB]]
969   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[SEL]] to [[DSTTY:<4 x i64>]]
970   // CHECK: [[SEL:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
971   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> [[SEL]], <16 x i16> %{{.*}}
972   return _mm256_mask_abs_epi16(__W,__U,__A);
973 }
974 
test_mm256_maskz_abs_epi16(__mmask16 __U,__m256i __A)975 __m256i test_mm256_maskz_abs_epi16(__mmask16 __U, __m256i __A) {
976   // CHECK-LABEL: @test_mm256_maskz_abs_epi16
977   // CHECK: [[SUB:%.*]] = sub <16 x i16> zeroinitializer, [[A:%.*]]
978   // CHECK: [[CMP:%.*]] = icmp sgt <16 x i16> [[A]], zeroinitializer
979   // CHECK: [[SEL:%.*]] = select <16 x i1> [[CMP]], <16 x i16> [[A]], <16 x i16> [[SUB]]
980   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[SEL]] to [[DSTTY:<4 x i64>]]
981   // CHECK: [[SEL:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
982   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> [[SEL]], <16 x i16> %{{.*}}
983   return _mm256_maskz_abs_epi16(__U,__A);
984 }
985 
test_mm_maskz_packs_epi32(__mmask8 __M,__m128i __A,__m128i __B)986 __m128i test_mm_maskz_packs_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
987   // CHECK-LABEL: @test_mm_maskz_packs_epi32
988   // CHECK: @llvm.x86.sse2.packssdw
989   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
990   return _mm_maskz_packs_epi32(__M,__A,__B);
991 }
test_mm_mask_packs_epi32(__m128i __W,__mmask8 __M,__m128i __A,__m128i __B)992 __m128i test_mm_mask_packs_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
993   // CHECK-LABEL: @test_mm_mask_packs_epi32
994   // CHECK: @llvm.x86.sse2.packssdw
995   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
996   return _mm_mask_packs_epi32(__W,__M,__A,__B);
997 }
test_mm256_maskz_packs_epi32(__mmask16 __M,__m256i __A,__m256i __B)998 __m256i test_mm256_maskz_packs_epi32(__mmask16 __M, __m256i __A, __m256i __B) {
999   // CHECK-LABEL: @test_mm256_maskz_packs_epi32
1000   // CHECK: @llvm.x86.avx2.packssdw
1001   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1002   return _mm256_maskz_packs_epi32(__M,__A,__B);
1003 }
test_mm256_mask_packs_epi32(__m256i __W,__mmask16 __M,__m256i __A,__m256i __B)1004 __m256i test_mm256_mask_packs_epi32(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {
1005   // CHECK-LABEL: @test_mm256_mask_packs_epi32
1006   // CHECK: @llvm.x86.avx2.packssdw
1007   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1008   return _mm256_mask_packs_epi32(__W,__M,__A,__B);
1009 }
test_mm_maskz_packs_epi16(__mmask16 __M,__m128i __A,__m128i __B)1010 __m128i test_mm_maskz_packs_epi16(__mmask16 __M, __m128i __A, __m128i __B) {
1011   // CHECK-LABEL: @test_mm_maskz_packs_epi16
1012   // CHECK: @llvm.x86.sse2.packsswb
1013   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1014   return _mm_maskz_packs_epi16(__M,__A,__B);
1015 }
test_mm_mask_packs_epi16(__m128i __W,__mmask16 __M,__m128i __A,__m128i __B)1016 __m128i test_mm_mask_packs_epi16(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {
1017   // CHECK-LABEL: @test_mm_mask_packs_epi16
1018   // CHECK: @llvm.x86.sse2.packsswb
1019   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1020   return _mm_mask_packs_epi16(__W,__M,__A,__B);
1021 }
test_mm256_maskz_packs_epi16(__mmask32 __M,__m256i __A,__m256i __B)1022 __m256i test_mm256_maskz_packs_epi16(__mmask32 __M, __m256i __A, __m256i __B) {
1023   // CHECK-LABEL: @test_mm256_maskz_packs_epi16
1024   // CHECK: @llvm.x86.avx2.packsswb
1025   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1026   return _mm256_maskz_packs_epi16(__M,__A,__B);
1027 }
test_mm256_mask_packs_epi16(__m256i __W,__mmask32 __M,__m256i __A,__m256i __B)1028 __m256i test_mm256_mask_packs_epi16(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {
1029   // CHECK-LABEL: @test_mm256_mask_packs_epi16
1030   // CHECK: @llvm.x86.avx2.packsswb
1031   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1032   return _mm256_mask_packs_epi16(__W,__M,__A,__B);
1033 }
1034 
test_mm_mask_packus_epi32(__m128i __W,__mmask8 __M,__m128i __A,__m128i __B)1035 __m128i test_mm_mask_packus_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
1036   // CHECK-LABEL: @test_mm_mask_packus_epi32
1037   // CHECK: @llvm.x86.sse41.packusdw
1038   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1039   return _mm_mask_packus_epi32(__W,__M,__A,__B);
1040 }
1041 
test_mm_maskz_packus_epi32(__mmask8 __M,__m128i __A,__m128i __B)1042 __m128i test_mm_maskz_packus_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
1043   // CHECK-LABEL: @test_mm_maskz_packus_epi32
1044   // CHECK: @llvm.x86.sse41.packusdw
1045   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1046   return _mm_maskz_packus_epi32(__M,__A,__B);
1047 }
1048 
test_mm256_maskz_packus_epi32(__mmask16 __M,__m256i __A,__m256i __B)1049 __m256i test_mm256_maskz_packus_epi32(__mmask16 __M, __m256i __A, __m256i __B) {
1050   // CHECK-LABEL: @test_mm256_maskz_packus_epi32
1051   // CHECK: @llvm.x86.avx2.packusdw
1052   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1053   return _mm256_maskz_packus_epi32(__M,__A,__B);
1054 }
1055 
test_mm256_mask_packus_epi32(__m256i __W,__mmask16 __M,__m256i __A,__m256i __B)1056 __m256i test_mm256_mask_packus_epi32(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {
1057   // CHECK-LABEL: @test_mm256_mask_packus_epi32
1058   // CHECK: @llvm.x86.avx2.packusdw
1059   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1060   return _mm256_mask_packus_epi32(__W,__M,__A,__B);
1061 }
1062 
test_mm_maskz_packus_epi16(__mmask16 __M,__m128i __A,__m128i __B)1063 __m128i test_mm_maskz_packus_epi16(__mmask16 __M, __m128i __A, __m128i __B) {
1064   // CHECK-LABEL: @test_mm_maskz_packus_epi16
1065   // CHECK: @llvm.x86.sse2.packuswb
1066   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1067   return _mm_maskz_packus_epi16(__M,__A,__B);
1068 }
1069 
test_mm_mask_packus_epi16(__m128i __W,__mmask16 __M,__m128i __A,__m128i __B)1070 __m128i test_mm_mask_packus_epi16(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {
1071   // CHECK-LABEL: @test_mm_mask_packus_epi16
1072   // CHECK: @llvm.x86.sse2.packuswb
1073   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1074   return _mm_mask_packus_epi16(__W,__M,__A,__B);
1075 }
1076 
test_mm256_maskz_packus_epi16(__mmask32 __M,__m256i __A,__m256i __B)1077 __m256i test_mm256_maskz_packus_epi16(__mmask32 __M, __m256i __A, __m256i __B) {
1078   // CHECK-LABEL: @test_mm256_maskz_packus_epi16
1079   // CHECK: @llvm.x86.avx2.packuswb
1080   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1081   return _mm256_maskz_packus_epi16(__M,__A,__B);
1082 }
1083 
test_mm256_mask_packus_epi16(__m256i __W,__mmask32 __M,__m256i __A,__m256i __B)1084 __m256i test_mm256_mask_packus_epi16(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {
1085   // CHECK-LABEL: @test_mm256_mask_packus_epi16
1086   // CHECK: @llvm.x86.avx2.packuswb
1087   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1088   return _mm256_mask_packus_epi16(__W,__M,__A,__B);
1089 }
1090 
test_mm_mask_adds_epi8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)1091 __m128i test_mm_mask_adds_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1092   // CHECK-LABEL: @test_mm_mask_adds_epi8
1093   // CHECK: @llvm.sadd.sat.v16i8
1094   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1095   return _mm_mask_adds_epi8(__W,__U,__A,__B);
1096 }
test_mm_maskz_adds_epi8(__mmask16 __U,__m128i __A,__m128i __B)1097 __m128i test_mm_maskz_adds_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
1098   // CHECK-LABEL: @test_mm_maskz_adds_epi8
1099   // CHECK: @llvm.sadd.sat.v16i8
1100   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1101   return _mm_maskz_adds_epi8(__U,__A,__B);
1102 }
test_mm256_mask_adds_epi8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)1103 __m256i test_mm256_mask_adds_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1104   // CHECK-LABEL: @test_mm256_mask_adds_epi8
1105   // CHECK: @llvm.sadd.sat.v32i8
1106   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1107   return _mm256_mask_adds_epi8(__W,__U,__A,__B);
1108 }
test_mm256_maskz_adds_epi8(__mmask32 __U,__m256i __A,__m256i __B)1109 __m256i test_mm256_maskz_adds_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
1110   // CHECK-LABEL: @test_mm256_maskz_adds_epi8
1111   // CHECK: @llvm.sadd.sat.v32i8
1112   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1113   return _mm256_maskz_adds_epi8(__U,__A,__B);
1114 }
test_mm_mask_adds_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)1115 __m128i test_mm_mask_adds_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1116   // CHECK-LABEL: @test_mm_mask_adds_epi16
1117   // CHECK: @llvm.sadd.sat.v8i16
1118   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1119   return _mm_mask_adds_epi16(__W,__U,__A,__B);
1120 }
test_mm_maskz_adds_epi16(__mmask8 __U,__m128i __A,__m128i __B)1121 __m128i test_mm_maskz_adds_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
1122   // CHECK-LABEL: @test_mm_maskz_adds_epi16
1123   // CHECK: @llvm.sadd.sat.v8i16
1124   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1125   return _mm_maskz_adds_epi16(__U,__A,__B);
1126 }
test_mm256_mask_adds_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)1127 __m256i test_mm256_mask_adds_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1128   // CHECK-LABEL: @test_mm256_mask_adds_epi16
1129   // CHECK: @llvm.sadd.sat.v16i16
1130   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1131   return _mm256_mask_adds_epi16(__W,__U,__A,__B);
1132 }
test_mm256_maskz_adds_epi16(__mmask16 __U,__m256i __A,__m256i __B)1133 __m256i test_mm256_maskz_adds_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
1134   // CHECK-LABEL: @test_mm256_maskz_adds_epi16
1135   // CHECK: @llvm.sadd.sat.v16i16
1136   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1137   return _mm256_maskz_adds_epi16(__U,__A,__B);
1138 }
test_mm_mask_adds_epu8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)1139 __m128i test_mm_mask_adds_epu8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1140   // CHECK-LABEL: @test_mm_mask_adds_epu8
1141   // CHECK-NOT: @llvm.x86.sse2.paddus.b
1142   // CHECK: call <16 x i8> @llvm.uadd.sat.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1143   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1144   return _mm_mask_adds_epu8(__W,__U,__A,__B);
1145 }
test_mm_maskz_adds_epu8(__mmask16 __U,__m128i __A,__m128i __B)1146 __m128i test_mm_maskz_adds_epu8(__mmask16 __U, __m128i __A, __m128i __B) {
1147   // CHECK-LABEL: @test_mm_maskz_adds_epu8
1148   // CHECK-NOT: @llvm.x86.sse2.paddus.b
1149   // CHECK: call <16 x i8> @llvm.uadd.sat.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1150   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1151   return _mm_maskz_adds_epu8(__U,__A,__B);
1152 }
test_mm256_mask_adds_epu8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)1153 __m256i test_mm256_mask_adds_epu8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1154   // CHECK-LABEL: @test_mm256_mask_adds_epu8
1155   // CHECK-NOT: @llvm.x86.avx2.paddus.b
1156   // CHECK: call <32 x i8> @llvm.uadd.sat.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1157   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1158   return _mm256_mask_adds_epu8(__W,__U,__A,__B);
1159 }
test_mm256_maskz_adds_epu8(__mmask32 __U,__m256i __A,__m256i __B)1160 __m256i test_mm256_maskz_adds_epu8(__mmask32 __U, __m256i __A, __m256i __B) {
1161   // CHECK-LABEL: @test_mm256_maskz_adds_epu8
1162   // CHECK-NOT: @llvm.x86.avx2.paddus.b
1163   // CHECK: call <32 x i8> @llvm.uadd.sat.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1164   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1165   return _mm256_maskz_adds_epu8(__U,__A,__B);
1166 }
test_mm_mask_adds_epu16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)1167 __m128i test_mm_mask_adds_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1168   // CHECK-LABEL: @test_mm_mask_adds_epu16
1169   // CHECK-NOT: @llvm.x86.sse2.paddus.w
1170   // CHECK: call <8 x i16> @llvm.uadd.sat.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1171   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1172   return _mm_mask_adds_epu16(__W,__U,__A,__B);
1173 }
test_mm_maskz_adds_epu16(__mmask8 __U,__m128i __A,__m128i __B)1174 __m128i test_mm_maskz_adds_epu16(__mmask8 __U, __m128i __A, __m128i __B) {
1175   // CHECK-LABEL: @test_mm_maskz_adds_epu16
1176   // CHECK-NOT: @llvm.x86.sse2.paddus.w
1177   // CHECK: call <8 x i16> @llvm.uadd.sat.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1178   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1179   return _mm_maskz_adds_epu16(__U,__A,__B);
1180 }
test_mm256_mask_adds_epu16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)1181 __m256i test_mm256_mask_adds_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1182   // CHECK-LABEL: @test_mm256_mask_adds_epu16
1183   // CHECK-NOT: @llvm.x86.avx2.paddus.w
1184   // CHECK: call <16 x i16> @llvm.uadd.sat.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1185   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1186   return _mm256_mask_adds_epu16(__W,__U,__A,__B);
1187 }
test_mm256_maskz_adds_epu16(__mmask16 __U,__m256i __A,__m256i __B)1188 __m256i test_mm256_maskz_adds_epu16(__mmask16 __U, __m256i __A, __m256i __B) {
1189   // CHECK-LABEL: @test_mm256_maskz_adds_epu16
1190   // CHECK-NOT: @llvm.x86.avx2.paddus.w
1191   // CHECK: call <16 x i16> @llvm.uadd.sat.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1192   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1193   return _mm256_maskz_adds_epu16(__U,__A,__B);
1194 }
test_mm_mask_avg_epu8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)1195 __m128i test_mm_mask_avg_epu8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1196   // CHECK-LABEL: @test_mm_mask_avg_epu8
1197   // CHECK: @llvm.x86.sse2.pavg.b
1198   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1199   return _mm_mask_avg_epu8(__W,__U,__A,__B);
1200 }
test_mm_maskz_avg_epu8(__mmask16 __U,__m128i __A,__m128i __B)1201 __m128i test_mm_maskz_avg_epu8(__mmask16 __U, __m128i __A, __m128i __B) {
1202   // CHECK-LABEL: @test_mm_maskz_avg_epu8
1203   // CHECK: @llvm.x86.sse2.pavg.b
1204   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1205   return _mm_maskz_avg_epu8(__U,__A,__B);
1206 }
test_mm256_mask_avg_epu8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)1207 __m256i test_mm256_mask_avg_epu8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1208   // CHECK-LABEL: @test_mm256_mask_avg_epu8
1209   // CHECK: @llvm.x86.avx2.pavg.b
1210   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1211   return _mm256_mask_avg_epu8(__W,__U,__A,__B);
1212 }
test_mm256_maskz_avg_epu8(__mmask32 __U,__m256i __A,__m256i __B)1213 __m256i test_mm256_maskz_avg_epu8(__mmask32 __U, __m256i __A, __m256i __B) {
1214   // CHECK-LABEL: @test_mm256_maskz_avg_epu8
1215   // CHECK: @llvm.x86.avx2.pavg.b
1216   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1217   return _mm256_maskz_avg_epu8(__U,__A,__B);
1218 }
test_mm_mask_avg_epu16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)1219 __m128i test_mm_mask_avg_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1220   // CHECK-LABEL: @test_mm_mask_avg_epu16
1221   // CHECK: @llvm.x86.sse2.pavg.w
1222   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1223   return _mm_mask_avg_epu16(__W,__U,__A,__B);
1224 }
test_mm_maskz_avg_epu16(__mmask8 __U,__m128i __A,__m128i __B)1225 __m128i test_mm_maskz_avg_epu16(__mmask8 __U, __m128i __A, __m128i __B) {
1226   // CHECK-LABEL: @test_mm_maskz_avg_epu16
1227   // CHECK: @llvm.x86.sse2.pavg.w
1228   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1229   return _mm_maskz_avg_epu16(__U,__A,__B);
1230 }
test_mm256_mask_avg_epu16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)1231 __m256i test_mm256_mask_avg_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1232   // CHECK-LABEL: @test_mm256_mask_avg_epu16
1233   // CHECK: @llvm.x86.avx2.pavg.w
1234   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1235   return _mm256_mask_avg_epu16(__W,__U,__A,__B);
1236 }
test_mm256_maskz_avg_epu16(__mmask16 __U,__m256i __A,__m256i __B)1237 __m256i test_mm256_maskz_avg_epu16(__mmask16 __U, __m256i __A, __m256i __B) {
1238   // CHECK-LABEL: @test_mm256_maskz_avg_epu16
1239   // CHECK: @llvm.x86.avx2.pavg.w
1240   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1241   return _mm256_maskz_avg_epu16(__U,__A,__B);
1242 }
test_mm_maskz_max_epi8(__mmask16 __M,__m128i __A,__m128i __B)1243 __m128i test_mm_maskz_max_epi8(__mmask16 __M, __m128i __A, __m128i __B) {
1244   // CHECK-LABEL: @test_mm_maskz_max_epi8
1245   // CHECK:       [[CMP:%.*]] = icmp sgt <16 x i8> [[X:%.*]], [[Y:%.*]]
1246   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i8> [[X]], <16 x i8> [[Y]]
1247   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]
1248   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1249   // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1250   return _mm_maskz_max_epi8(__M,__A,__B);
1251 }
test_mm_mask_max_epi8(__m128i __W,__mmask16 __M,__m128i __A,__m128i __B)1252 __m128i test_mm_mask_max_epi8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {
1253   // CHECK-LABEL: @test_mm_mask_max_epi8
1254   // CHECK:       [[CMP:%.*]] = icmp sgt <16 x i8> [[X:%.*]], [[Y:%.*]]
1255   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i8> [[X]], <16 x i8> [[Y]]
1256   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]
1257   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1258   // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1259   return _mm_mask_max_epi8(__W,__M,__A,__B);
1260 }
test_mm256_maskz_max_epi8(__mmask32 __M,__m256i __A,__m256i __B)1261 __m256i test_mm256_maskz_max_epi8(__mmask32 __M, __m256i __A, __m256i __B) {
1262   // CHECK-LABEL: @test_mm256_maskz_max_epi8
1263   // CHECK:       [[CMP:%.*]] = icmp sgt <32 x i8> [[X:%.*]], [[Y:%.*]]
1264   // CHECK-NEXT:  [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i8> [[X]], <32 x i8> [[Y]]
1265   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]
1266   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1267   // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1268   return _mm256_maskz_max_epi8(__M,__A,__B);
1269 }
test_mm256_mask_max_epi8(__m256i __W,__mmask32 __M,__m256i __A,__m256i __B)1270 __m256i test_mm256_mask_max_epi8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {
1271   // CHECK-LABEL: @test_mm256_mask_max_epi8
1272   // CHECK:       [[CMP:%.*]] = icmp sgt <32 x i8> [[X:%.*]], [[Y:%.*]]
1273   // CHECK-NEXT:  [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i8> [[X]], <32 x i8> [[Y]]
1274   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]
1275   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1276   // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1277   return _mm256_mask_max_epi8(__W,__M,__A,__B);
1278 }
test_mm_maskz_max_epi16(__mmask8 __M,__m128i __A,__m128i __B)1279 __m128i test_mm_maskz_max_epi16(__mmask8 __M, __m128i __A, __m128i __B) {
1280   // CHECK-LABEL: @test_mm_maskz_max_epi16
1281   // CHECK:       [[CMP:%.*]] = icmp sgt <8 x i16> [[X:%.*]], [[Y:%.*]]
1282   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i16> [[X]], <8 x i16> [[Y]]
1283   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]
1284   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1285   // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1286   return _mm_maskz_max_epi16(__M,__A,__B);
1287 }
test_mm_mask_max_epi16(__m128i __W,__mmask8 __M,__m128i __A,__m128i __B)1288 __m128i test_mm_mask_max_epi16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
1289   // CHECK-LABEL: @test_mm_mask_max_epi16
1290   // CHECK:       [[CMP:%.*]] = icmp sgt <8 x i16> [[X:%.*]], [[Y:%.*]]
1291   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i16> [[X]], <8 x i16> [[Y]]
1292   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]
1293   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1294   // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1295   return _mm_mask_max_epi16(__W,__M,__A,__B);
1296 }
test_mm256_maskz_max_epi16(__mmask16 __M,__m256i __A,__m256i __B)1297 __m256i test_mm256_maskz_max_epi16(__mmask16 __M, __m256i __A, __m256i __B) {
1298   // CHECK-LABEL: @test_mm256_maskz_max_epi16
1299   // CHECK:       [[CMP:%.*]] = icmp sgt <16 x i16> [[X:%.*]], [[Y:%.*]]
1300   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i16> [[X]], <16 x i16> [[Y]]
1301   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]
1302   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1303   // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1304   return _mm256_maskz_max_epi16(__M,__A,__B);
1305 }
test_mm256_mask_max_epi16(__m256i __W,__mmask16 __M,__m256i __A,__m256i __B)1306 __m256i test_mm256_mask_max_epi16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {
1307   // CHECK-LABEL: @test_mm256_mask_max_epi16
1308   // CHECK:       [[CMP:%.*]] = icmp sgt <16 x i16> [[X:%.*]], [[Y:%.*]]
1309   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i16> [[X]], <16 x i16> [[Y]]
1310   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]
1311   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1312   // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1313   return _mm256_mask_max_epi16(__W,__M,__A,__B);
1314 }
test_mm_maskz_max_epu8(__mmask16 __M,__m128i __A,__m128i __B)1315 __m128i test_mm_maskz_max_epu8(__mmask16 __M, __m128i __A, __m128i __B) {
1316   // CHECK-LABEL: @test_mm_maskz_max_epu8
1317   // CHECK:       [[CMP:%.*]] = icmp ugt <16 x i8> [[X:%.*]], [[Y:%.*]]
1318   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i8> [[X]], <16 x i8> [[Y]]
1319   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]
1320   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1321   // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1322   return _mm_maskz_max_epu8(__M,__A,__B);
1323 }
test_mm_mask_max_epu8(__m128i __W,__mmask16 __M,__m128i __A,__m128i __B)1324 __m128i test_mm_mask_max_epu8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {
1325   // CHECK-LABEL: @test_mm_mask_max_epu8
1326   // CHECK:       [[CMP:%.*]] = icmp ugt <16 x i8> [[X:%.*]], [[Y:%.*]]
1327   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i8> [[X]], <16 x i8> [[Y]]
1328   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]
1329   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1330   // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1331   return _mm_mask_max_epu8(__W,__M,__A,__B);
1332 }
test_mm256_maskz_max_epu8(__mmask32 __M,__m256i __A,__m256i __B)1333 __m256i test_mm256_maskz_max_epu8(__mmask32 __M, __m256i __A, __m256i __B) {
1334   // CHECK-LABEL: @test_mm256_maskz_max_epu8
1335   // CHECK:       [[CMP:%.*]] = icmp ugt <32 x i8> [[X:%.*]], [[Y:%.*]]
1336   // CHECK-NEXT:  [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i8> [[X]], <32 x i8> [[Y]]
1337   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]
1338   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1339   // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1340   return _mm256_maskz_max_epu8(__M,__A,__B);
1341 }
test_mm256_mask_max_epu8(__m256i __W,__mmask32 __M,__m256i __A,__m256i __B)1342 __m256i test_mm256_mask_max_epu8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {
1343   // CHECK-LABEL: @test_mm256_mask_max_epu8
1344   // CHECK:       [[CMP:%.*]] = icmp ugt <32 x i8> [[X:%.*]], [[Y:%.*]]
1345   // CHECK-NEXT:  [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i8> [[X]], <32 x i8> [[Y]]
1346   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]
1347   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1348   // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1349   return _mm256_mask_max_epu8(__W,__M,__A,__B);
1350 }
test_mm_maskz_max_epu16(__mmask8 __M,__m128i __A,__m128i __B)1351 __m128i test_mm_maskz_max_epu16(__mmask8 __M, __m128i __A, __m128i __B) {
1352   // CHECK-LABEL: @test_mm_maskz_max_epu16
1353   // CHECK:       [[CMP:%.*]] = icmp ugt <8 x i16> [[X:%.*]], [[Y:%.*]]
1354   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i16> [[X]], <8 x i16> [[Y]]
1355   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]
1356   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1357   // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1358   return _mm_maskz_max_epu16(__M,__A,__B);
1359 }
test_mm_mask_max_epu16(__m128i __W,__mmask8 __M,__m128i __A,__m128i __B)1360 __m128i test_mm_mask_max_epu16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
1361   // CHECK-LABEL: @test_mm_mask_max_epu16
1362   // CHECK:       [[CMP:%.*]] = icmp ugt <8 x i16> [[X:%.*]], [[Y:%.*]]
1363   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i16> [[X]], <8 x i16> [[Y]]
1364   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]
1365   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1366   // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1367   return _mm_mask_max_epu16(__W,__M,__A,__B);
1368 }
test_mm256_maskz_max_epu16(__mmask16 __M,__m256i __A,__m256i __B)1369 __m256i test_mm256_maskz_max_epu16(__mmask16 __M, __m256i __A, __m256i __B) {
1370   // CHECK-LABEL: @test_mm256_maskz_max_epu16
1371   // CHECK:       [[CMP:%.*]] = icmp ugt <16 x i16> [[X:%.*]], [[Y:%.*]]
1372   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i16> [[X]], <16 x i16> [[Y]]
1373   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]
1374   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1375   // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1376   return _mm256_maskz_max_epu16(__M,__A,__B);
1377 }
test_mm256_mask_max_epu16(__m256i __W,__mmask16 __M,__m256i __A,__m256i __B)1378 __m256i test_mm256_mask_max_epu16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {
1379   // CHECK-LABEL: @test_mm256_mask_max_epu16
1380   // CHECK:       [[CMP:%.*]] = icmp ugt <16 x i16> [[X:%.*]], [[Y:%.*]]
1381   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i16> [[X]], <16 x i16> [[Y]]
1382   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]
1383   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1384   // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1385   return _mm256_mask_max_epu16(__W,__M,__A,__B);
1386 }
test_mm_maskz_min_epi8(__mmask16 __M,__m128i __A,__m128i __B)1387 __m128i test_mm_maskz_min_epi8(__mmask16 __M, __m128i __A, __m128i __B) {
1388   // CHECK-LABEL: @test_mm_maskz_min_epi8
1389   // CHECK:       [[CMP:%.*]] = icmp slt <16 x i8> [[X:%.*]], [[Y:%.*]]
1390   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i8> [[X]], <16 x i8> [[Y]]
1391   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]
1392   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1393   // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1394   return _mm_maskz_min_epi8(__M,__A,__B);
1395 }
test_mm_mask_min_epi8(__m128i __W,__mmask16 __M,__m128i __A,__m128i __B)1396 __m128i test_mm_mask_min_epi8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {
1397   // CHECK-LABEL: @test_mm_mask_min_epi8
1398   // CHECK:       [[CMP:%.*]] = icmp slt <16 x i8> [[X:%.*]], [[Y:%.*]]
1399   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i8> [[X]], <16 x i8> [[Y]]
1400   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]
1401   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1402   // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1403   return _mm_mask_min_epi8(__W,__M,__A,__B);
1404 }
test_mm256_maskz_min_epi8(__mmask32 __M,__m256i __A,__m256i __B)1405 __m256i test_mm256_maskz_min_epi8(__mmask32 __M, __m256i __A, __m256i __B) {
1406   // CHECK-LABEL: @test_mm256_maskz_min_epi8
1407   // CHECK:       [[CMP:%.*]] = icmp slt <32 x i8> [[X:%.*]], [[Y:%.*]]
1408   // CHECK-NEXT:  [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i8> [[X]], <32 x i8> [[Y]]
1409   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]
1410   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1411   // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1412   return _mm256_maskz_min_epi8(__M,__A,__B);
1413 }
test_mm256_mask_min_epi8(__m256i __W,__mmask32 __M,__m256i __A,__m256i __B)1414 __m256i test_mm256_mask_min_epi8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {
1415   // CHECK-LABEL: @test_mm256_mask_min_epi8
1416   // CHECK:       [[CMP:%.*]] = icmp slt <32 x i8> [[X:%.*]], [[Y:%.*]]
1417   // CHECK-NEXT:  [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i8> [[X]], <32 x i8> [[Y]]
1418   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]
1419   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1420   // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1421   return _mm256_mask_min_epi8(__W,__M,__A,__B);
1422 }
test_mm_maskz_min_epi16(__mmask8 __M,__m128i __A,__m128i __B)1423 __m128i test_mm_maskz_min_epi16(__mmask8 __M, __m128i __A, __m128i __B) {
1424   // CHECK-LABEL: @test_mm_maskz_min_epi16
1425   // CHECK:       [[CMP:%.*]] = icmp slt <8 x i16> [[X:%.*]], [[Y:%.*]]
1426   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i16> [[X]], <8 x i16> [[Y]]
1427   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]
1428   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1429   // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1430   return _mm_maskz_min_epi16(__M,__A,__B);
1431 }
test_mm_mask_min_epi16(__m128i __W,__mmask8 __M,__m128i __A,__m128i __B)1432 __m128i test_mm_mask_min_epi16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
1433   // CHECK-LABEL: @test_mm_mask_min_epi16
1434   // CHECK:       [[CMP:%.*]] = icmp slt <8 x i16> [[X:%.*]], [[Y:%.*]]
1435   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i16> [[X]], <8 x i16> [[Y]]
1436   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]
1437   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1438   // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1439   return _mm_mask_min_epi16(__W,__M,__A,__B);
1440 }
test_mm256_maskz_min_epi16(__mmask16 __M,__m256i __A,__m256i __B)1441 __m256i test_mm256_maskz_min_epi16(__mmask16 __M, __m256i __A, __m256i __B) {
1442   // CHECK-LABEL: @test_mm256_maskz_min_epi16
1443   // CHECK:       [[CMP:%.*]] = icmp slt <16 x i16> [[X:%.*]], [[Y:%.*]]
1444   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i16> [[X]], <16 x i16> [[Y]]
1445   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]
1446   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1447   // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1448   return _mm256_maskz_min_epi16(__M,__A,__B);
1449 }
test_mm256_mask_min_epi16(__m256i __W,__mmask16 __M,__m256i __A,__m256i __B)1450 __m256i test_mm256_mask_min_epi16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {
1451   // CHECK-LABEL: @test_mm256_mask_min_epi16
1452   // CHECK:       [[CMP:%.*]] = icmp slt <16 x i16> [[X:%.*]], [[Y:%.*]]
1453   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i16> [[X]], <16 x i16> [[Y]]
1454   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]
1455   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1456   // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1457   return _mm256_mask_min_epi16(__W,__M,__A,__B);
1458 }
test_mm_maskz_min_epu8(__mmask16 __M,__m128i __A,__m128i __B)1459 __m128i test_mm_maskz_min_epu8(__mmask16 __M, __m128i __A, __m128i __B) {
1460   // CHECK-LABEL: @test_mm_maskz_min_epu8
1461   // CHECK:       [[CMP:%.*]] = icmp ult <16 x i8> [[X:%.*]], [[Y:%.*]]
1462   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i8> [[X]], <16 x i8> [[Y]]
1463   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]
1464   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1465   // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1466   return _mm_maskz_min_epu8(__M,__A,__B);
1467 }
test_mm_mask_min_epu8(__m128i __W,__mmask16 __M,__m128i __A,__m128i __B)1468 __m128i test_mm_mask_min_epu8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {
1469   // CHECK-LABEL: @test_mm_mask_min_epu8
1470   // CHECK:       [[CMP:%.*]] = icmp ult <16 x i8> [[X:%.*]], [[Y:%.*]]
1471   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i8> [[X]], <16 x i8> [[Y]]
1472   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]
1473   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1474   // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}
1475   return _mm_mask_min_epu8(__W,__M,__A,__B);
1476 }
test_mm256_maskz_min_epu8(__mmask32 __M,__m256i __A,__m256i __B)1477 __m256i test_mm256_maskz_min_epu8(__mmask32 __M, __m256i __A, __m256i __B) {
1478   // CHECK-LABEL: @test_mm256_maskz_min_epu8
1479   // CHECK:       [[CMP:%.*]] = icmp ult <32 x i8> [[X:%.*]], [[Y:%.*]]
1480   // CHECK-NEXT:  [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i8> [[X]], <32 x i8> [[Y]]
1481   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]
1482   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1483   // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1484   return _mm256_maskz_min_epu8(__M,__A,__B);
1485 }
test_mm256_mask_min_epu8(__m256i __W,__mmask32 __M,__m256i __A,__m256i __B)1486 __m256i test_mm256_mask_min_epu8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {
1487   // CHECK-LABEL: @test_mm256_mask_min_epu8
1488   // CHECK:       [[CMP:%.*]] = icmp ult <32 x i8> [[X:%.*]], [[Y:%.*]]
1489   // CHECK-NEXT:  [[RES:%.*]] = select <32 x i1> [[CMP]], <32 x i8> [[X]], <32 x i8> [[Y]]
1490   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]
1491   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1492   // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}
1493   return _mm256_mask_min_epu8(__W,__M,__A,__B);
1494 }
test_mm_maskz_min_epu16(__mmask8 __M,__m128i __A,__m128i __B)1495 __m128i test_mm_maskz_min_epu16(__mmask8 __M, __m128i __A, __m128i __B) {
1496   // CHECK-LABEL: @test_mm_maskz_min_epu16
1497   // CHECK:       [[CMP:%.*]] = icmp ult <8 x i16> [[X:%.*]], [[Y:%.*]]
1498   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i16> [[X]], <8 x i16> [[Y]]
1499   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]
1500   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1501   // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1502   return _mm_maskz_min_epu16(__M,__A,__B);
1503 }
test_mm_mask_min_epu16(__m128i __W,__mmask8 __M,__m128i __A,__m128i __B)1504 __m128i test_mm_mask_min_epu16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
1505   // CHECK-LABEL: @test_mm_mask_min_epu16
1506   // CHECK:       [[CMP:%.*]] = icmp ult <8 x i16> [[X:%.*]], [[Y:%.*]]
1507   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i16> [[X]], <8 x i16> [[Y]]
1508   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]
1509   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1510   // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}
1511   return _mm_mask_min_epu16(__W,__M,__A,__B);
1512 }
test_mm256_maskz_min_epu16(__mmask16 __M,__m256i __A,__m256i __B)1513 __m256i test_mm256_maskz_min_epu16(__mmask16 __M, __m256i __A, __m256i __B) {
1514   // CHECK-LABEL: @test_mm256_maskz_min_epu16
1515   // CHECK:       [[CMP:%.*]] = icmp ult <16 x i16> [[X:%.*]], [[Y:%.*]]
1516   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i16> [[X]], <16 x i16> [[Y]]
1517   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]
1518   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1519   // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1520   return _mm256_maskz_min_epu16(__M,__A,__B);
1521 }
test_mm256_mask_min_epu16(__m256i __W,__mmask16 __M,__m256i __A,__m256i __B)1522 __m256i test_mm256_mask_min_epu16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {
1523   // CHECK-LABEL: @test_mm256_mask_min_epu16
1524   // CHECK:       [[CMP:%.*]] = icmp ult <16 x i16> [[X:%.*]], [[Y:%.*]]
1525   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i16> [[X]], <16 x i16> [[Y]]
1526   // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]
1527   // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]
1528   // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}
1529   return _mm256_mask_min_epu16(__W,__M,__A,__B);
1530 }
test_mm_mask_shuffle_epi8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)1531 __m128i test_mm_mask_shuffle_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1532   // CHECK-LABEL: @test_mm_mask_shuffle_epi8
1533   // CHECK: @llvm.x86.ssse3.pshuf.b
1534   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1535   return _mm_mask_shuffle_epi8(__W,__U,__A,__B);
1536 }
test_mm_maskz_shuffle_epi8(__mmask16 __U,__m128i __A,__m128i __B)1537 __m128i test_mm_maskz_shuffle_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
1538   // CHECK-LABEL: @test_mm_maskz_shuffle_epi8
1539   // CHECK: @llvm.x86.ssse3.pshuf.b
1540   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1541   return _mm_maskz_shuffle_epi8(__U,__A,__B);
1542 }
test_mm256_mask_shuffle_epi8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)1543 __m256i test_mm256_mask_shuffle_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1544   // CHECK-LABEL: @test_mm256_mask_shuffle_epi8
1545   // CHECK: @llvm.x86.avx2.pshuf.b
1546   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1547   return _mm256_mask_shuffle_epi8(__W,__U,__A,__B);
1548 }
test_mm256_maskz_shuffle_epi8(__mmask32 __U,__m256i __A,__m256i __B)1549 __m256i test_mm256_maskz_shuffle_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
1550   // CHECK-LABEL: @test_mm256_maskz_shuffle_epi8
1551   // CHECK: @llvm.x86.avx2.pshuf.b
1552   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1553   return _mm256_maskz_shuffle_epi8(__U,__A,__B);
1554 }
test_mm_mask_subs_epi8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)1555 __m128i test_mm_mask_subs_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1556   // CHECK-LABEL: @test_mm_mask_subs_epi8
1557   // CHECK: @llvm.ssub.sat.v16i8
1558   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1559   return _mm_mask_subs_epi8(__W,__U,__A,__B);
1560 }
test_mm_maskz_subs_epi8(__mmask16 __U,__m128i __A,__m128i __B)1561 __m128i test_mm_maskz_subs_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
1562   // CHECK-LABEL: @test_mm_maskz_subs_epi8
1563   // CHECK: @llvm.ssub.sat.v16i8
1564   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1565   return _mm_maskz_subs_epi8(__U,__A,__B);
1566 }
test_mm256_mask_subs_epi8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)1567 __m256i test_mm256_mask_subs_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1568   // CHECK-LABEL: @test_mm256_mask_subs_epi8
1569   // CHECK: @llvm.ssub.sat.v32i8
1570   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1571   return _mm256_mask_subs_epi8(__W,__U,__A,__B);
1572 }
test_mm256_maskz_subs_epi8(__mmask32 __U,__m256i __A,__m256i __B)1573 __m256i test_mm256_maskz_subs_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
1574   // CHECK-LABEL: @test_mm256_maskz_subs_epi8
1575   // CHECK: @llvm.ssub.sat.v32i8
1576   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1577   return _mm256_maskz_subs_epi8(__U,__A,__B);
1578 }
test_mm_mask_subs_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)1579 __m128i test_mm_mask_subs_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1580   // CHECK-LABEL: @test_mm_mask_subs_epi16
1581   // CHECK: @llvm.ssub.sat.v8i16
1582   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1583   return _mm_mask_subs_epi16(__W,__U,__A,__B);
1584 }
test_mm_maskz_subs_epi16(__mmask8 __U,__m128i __A,__m128i __B)1585 __m128i test_mm_maskz_subs_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
1586   // CHECK-LABEL: @test_mm_maskz_subs_epi16
1587   // CHECK: @llvm.ssub.sat.v8i16
1588   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1589   return _mm_maskz_subs_epi16(__U,__A,__B);
1590 }
test_mm256_mask_subs_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)1591 __m256i test_mm256_mask_subs_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1592   // CHECK-LABEL: @test_mm256_mask_subs_epi16
1593   // CHECK: @llvm.ssub.sat.v16i16
1594   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1595   return _mm256_mask_subs_epi16(__W,__U,__A,__B);
1596 }
test_mm256_maskz_subs_epi16(__mmask16 __U,__m256i __A,__m256i __B)1597 __m256i test_mm256_maskz_subs_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
1598   // CHECK-LABEL: @test_mm256_maskz_subs_epi16
1599   // CHECK: @llvm.ssub.sat.v16i16
1600   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1601   return _mm256_maskz_subs_epi16(__U,__A,__B);
1602 }
test_mm_mask_subs_epu8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)1603 __m128i test_mm_mask_subs_epu8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1604   // CHECK-LABEL: @test_mm_mask_subs_epu8
1605   // CHECK-NOT: @llvm.x86.sse2.psubus.b
1606   // CHECK: call <16 x i8> @llvm.usub.sat.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1607   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1608   return _mm_mask_subs_epu8(__W,__U,__A,__B);
1609 }
test_mm_maskz_subs_epu8(__mmask16 __U,__m128i __A,__m128i __B)1610 __m128i test_mm_maskz_subs_epu8(__mmask16 __U, __m128i __A, __m128i __B) {
1611   // CHECK-LABEL: @test_mm_maskz_subs_epu8
1612   // CHECK-NOT: @llvm.x86.sse2.psubus.b
1613   // CHECK: call <16 x i8> @llvm.usub.sat.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1614   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1615   return _mm_maskz_subs_epu8(__U,__A,__B);
1616 }
test_mm256_mask_subs_epu8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)1617 __m256i test_mm256_mask_subs_epu8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1618   // CHECK-LABEL: @test_mm256_mask_subs_epu8
1619   // CHECK-NOT: @llvm.x86.avx2.psubus.b
1620   // CHECK: call <32 x i8> @llvm.usub.sat.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1621   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1622   return _mm256_mask_subs_epu8(__W,__U,__A,__B);
1623 }
test_mm256_maskz_subs_epu8(__mmask32 __U,__m256i __A,__m256i __B)1624 __m256i test_mm256_maskz_subs_epu8(__mmask32 __U, __m256i __A, __m256i __B) {
1625   // CHECK-LABEL: @test_mm256_maskz_subs_epu8
1626   // CHECK-NOT: @llvm.x86.avx2.psubus.b
1627   // CHECK: call <32 x i8> @llvm.usub.sat.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})
1628   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1629   return _mm256_maskz_subs_epu8(__U,__A,__B);
1630 }
test_mm_mask_subs_epu16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)1631 __m128i test_mm_mask_subs_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1632   // CHECK-LABEL: @test_mm_mask_subs_epu16
1633   // CHECK-NOT: @llvm.x86.sse2.psubus.w
1634   // CHECK: call <8 x i16> @llvm.usub.sat.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1635   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1636   return _mm_mask_subs_epu16(__W,__U,__A,__B);
1637 }
test_mm_maskz_subs_epu16(__mmask8 __U,__m128i __A,__m128i __B)1638 __m128i test_mm_maskz_subs_epu16(__mmask8 __U, __m128i __A, __m128i __B) {
1639   // CHECK-LABEL: @test_mm_maskz_subs_epu16
1640   // CHECK-NOT: @llvm.x86.sse2.psubus.w
1641   // CHECK: call <8 x i16> @llvm.usub.sat.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1642   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1643   return _mm_maskz_subs_epu16(__U,__A,__B);
1644 }
test_mm256_mask_subs_epu16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)1645 __m256i test_mm256_mask_subs_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1646   // CHECK-LABEL: @test_mm256_mask_subs_epu16
1647   // CHECK-NOT: @llvm.x86.avx2.psubus.w
1648   // CHECK: call <16 x i16> @llvm.usub.sat.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1649   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1650   return _mm256_mask_subs_epu16(__W,__U,__A,__B);
1651 }
test_mm256_maskz_subs_epu16(__mmask16 __U,__m256i __A,__m256i __B)1652 __m256i test_mm256_maskz_subs_epu16(__mmask16 __U, __m256i __A, __m256i __B) {
1653   // CHECK-LABEL: @test_mm256_maskz_subs_epu16
1654   // CHECK-NOT: @llvm.x86.avx2.psubus.w
1655   // CHECK: call <16 x i16> @llvm.usub.sat.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})
1656   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1657   return _mm256_maskz_subs_epu16(__U,__A,__B);
1658 }
1659 
1660 
test_mm_mask2_permutex2var_epi16(__m128i __A,__m128i __I,__mmask8 __U,__m128i __B)1661 __m128i test_mm_mask2_permutex2var_epi16(__m128i __A, __m128i __I, __mmask8 __U, __m128i __B) {
1662   // CHECK-LABEL: @test_mm_mask2_permutex2var_epi16
1663   // CHECK: @llvm.x86.avx512.vpermi2var.hi.128
1664   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1665   return _mm_mask2_permutex2var_epi16(__A,__I,__U,__B);
1666 }
test_mm256_mask2_permutex2var_epi16(__m256i __A,__m256i __I,__mmask16 __U,__m256i __B)1667 __m256i test_mm256_mask2_permutex2var_epi16(__m256i __A, __m256i __I, __mmask16 __U, __m256i __B) {
1668   // CHECK-LABEL: @test_mm256_mask2_permutex2var_epi16
1669   // CHECK: @llvm.x86.avx512.vpermi2var.hi.256
1670   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1671   return _mm256_mask2_permutex2var_epi16(__A,__I,__U,__B);
1672 }
test_mm_permutex2var_epi16(__m128i __A,__m128i __I,__m128i __B)1673 __m128i test_mm_permutex2var_epi16(__m128i __A, __m128i __I, __m128i __B) {
1674   // CHECK-LABEL: @test_mm_permutex2var_epi16
1675   // CHECK: @llvm.x86.avx512.vpermi2var.hi.128
1676   return _mm_permutex2var_epi16(__A,__I,__B);
1677 }
test_mm_mask_permutex2var_epi16(__m128i __A,__mmask8 __U,__m128i __I,__m128i __B)1678 __m128i test_mm_mask_permutex2var_epi16(__m128i __A, __mmask8 __U, __m128i __I, __m128i __B) {
1679   // CHECK-LABEL: @test_mm_mask_permutex2var_epi16
1680   // CHECK: @llvm.x86.avx512.vpermi2var.hi.128
1681   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1682   return _mm_mask_permutex2var_epi16(__A,__U,__I,__B);
1683 }
test_mm_maskz_permutex2var_epi16(__mmask8 __U,__m128i __A,__m128i __I,__m128i __B)1684 __m128i test_mm_maskz_permutex2var_epi16(__mmask8 __U, __m128i __A, __m128i __I, __m128i __B) {
1685   // CHECK-LABEL: @test_mm_maskz_permutex2var_epi16
1686   // CHECK: @llvm.x86.avx512.vpermi2var.hi.128
1687   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1688   return _mm_maskz_permutex2var_epi16(__U,__A,__I,__B);
1689 }
1690 
test_mm256_permutex2var_epi16(__m256i __A,__m256i __I,__m256i __B)1691 __m256i test_mm256_permutex2var_epi16(__m256i __A, __m256i __I, __m256i __B) {
1692   // CHECK-LABEL: @test_mm256_permutex2var_epi16
1693   // CHECK: @llvm.x86.avx512.vpermi2var.hi.256
1694   return _mm256_permutex2var_epi16(__A,__I,__B);
1695 }
test_mm256_mask_permutex2var_epi16(__m256i __A,__mmask16 __U,__m256i __I,__m256i __B)1696 __m256i test_mm256_mask_permutex2var_epi16(__m256i __A, __mmask16 __U, __m256i __I, __m256i __B) {
1697   // CHECK-LABEL: @test_mm256_mask_permutex2var_epi16
1698   // CHECK: @llvm.x86.avx512.vpermi2var.hi.256
1699   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1700   return _mm256_mask_permutex2var_epi16(__A,__U,__I,__B);
1701 }
test_mm256_maskz_permutex2var_epi16(__mmask16 __U,__m256i __A,__m256i __I,__m256i __B)1702 __m256i test_mm256_maskz_permutex2var_epi16(__mmask16 __U, __m256i __A, __m256i __I, __m256i __B) {
1703   // CHECK-LABEL: @test_mm256_maskz_permutex2var_epi16
1704   // CHECK: @llvm.x86.avx512.vpermi2var.hi.256
1705   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1706   return _mm256_maskz_permutex2var_epi16(__U,__A,__I,__B);
1707 }
test_mm_mask_maddubs_epi16(__m128i __W,__mmask8 __U,__m128i __X,__m128i __Y)1708 __m128i test_mm_mask_maddubs_epi16(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
1709   // CHECK-LABEL: @test_mm_mask_maddubs_epi16
1710   // CHECK: @llvm.x86.ssse3.pmadd.ub.sw
1711   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1712   return _mm_mask_maddubs_epi16(__W, __U, __X, __Y);
1713 }
1714 
test_mm_maskz_maddubs_epi16(__mmask8 __U,__m128i __X,__m128i __Y)1715 __m128i test_mm_maskz_maddubs_epi16(__mmask8 __U, __m128i __X, __m128i __Y) {
1716   // CHECK-LABEL: @test_mm_maskz_maddubs_epi16
1717   // CHECK: @llvm.x86.ssse3.pmadd.ub.sw
1718   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1719   return _mm_maskz_maddubs_epi16(__U, __X, __Y);
1720 }
1721 
test_mm256_mask_maddubs_epi16(__m256i __W,__mmask16 __U,__m256i __X,__m256i __Y)1722 __m256i test_mm256_mask_maddubs_epi16(__m256i __W, __mmask16 __U, __m256i __X, __m256i __Y) {
1723   // CHECK-LABEL: @test_mm256_mask_maddubs_epi16
1724   // CHECK: @llvm.x86.avx2.pmadd.ub.sw
1725   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1726   return _mm256_mask_maddubs_epi16(__W, __U, __X, __Y);
1727 }
1728 
test_mm256_maskz_maddubs_epi16(__mmask16 __U,__m256i __X,__m256i __Y)1729 __m256i test_mm256_maskz_maddubs_epi16(__mmask16 __U, __m256i __X, __m256i __Y) {
1730   // CHECK-LABEL: @test_mm256_maskz_maddubs_epi16
1731   // CHECK: @llvm.x86.avx2.pmadd.ub.sw
1732   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1733   return _mm256_maskz_maddubs_epi16(__U, __X, __Y);
1734 }
1735 
test_mm_mask_madd_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)1736 __m128i test_mm_mask_madd_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1737   // CHECK-LABEL: @test_mm_mask_madd_epi16
1738   // CHECK: @llvm.x86.sse2.pmadd.wd
1739   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
1740   return _mm_mask_madd_epi16(__W, __U, __A, __B);
1741 }
1742 
test_mm_maskz_madd_epi16(__mmask8 __U,__m128i __A,__m128i __B)1743 __m128i test_mm_maskz_madd_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
1744   // CHECK-LABEL: @test_mm_maskz_madd_epi16
1745   // CHECK: @llvm.x86.sse2.pmadd.wd
1746   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
1747   return _mm_maskz_madd_epi16(__U, __A, __B);
1748 }
1749 
test_mm256_mask_madd_epi16(__m256i __W,__mmask8 __U,__m256i __A,__m256i __B)1750 __m256i test_mm256_mask_madd_epi16(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
1751   // CHECK-LABEL: @test_mm256_mask_madd_epi16
1752   // CHECK: @llvm.x86.avx2.pmadd.wd
1753   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
1754   return _mm256_mask_madd_epi16(__W, __U, __A, __B);
1755 }
1756 
test_mm256_maskz_madd_epi16(__mmask8 __U,__m256i __A,__m256i __B)1757 __m256i test_mm256_maskz_madd_epi16(__mmask8 __U, __m256i __A, __m256i __B) {
1758   // CHECK-LABEL: @test_mm256_maskz_madd_epi16
1759   // CHECK: @llvm.x86.avx2.pmadd.wd
1760   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
1761   return _mm256_maskz_madd_epi16(__U, __A, __B);
1762 }
1763 
test_mm_cvtsepi16_epi8(__m128i __A)1764 __m128i test_mm_cvtsepi16_epi8(__m128i __A) {
1765   // CHECK-LABEL: @test_mm_cvtsepi16_epi8
1766   // CHECK: @llvm.x86.avx512.mask.pmovs.wb.128
1767   return _mm_cvtsepi16_epi8(__A);
1768 }
1769 
test_mm_mask_cvtsepi16_epi8(__m128i __O,__mmask8 __M,__m128i __A)1770 __m128i test_mm_mask_cvtsepi16_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
1771   // CHECK-LABEL: @test_mm_mask_cvtsepi16_epi8
1772   // CHECK: @llvm.x86.avx512.mask.pmovs.wb.128
1773   return _mm_mask_cvtsepi16_epi8(__O, __M, __A);
1774 }
1775 
test_mm_maskz_cvtsepi16_epi8(__mmask8 __M,__m128i __A)1776 __m128i test_mm_maskz_cvtsepi16_epi8(__mmask8 __M, __m128i __A) {
1777   // CHECK-LABEL: @test_mm_maskz_cvtsepi16_epi8
1778   // CHECK: @llvm.x86.avx512.mask.pmovs.wb.128
1779   return _mm_maskz_cvtsepi16_epi8(__M, __A);
1780 }
1781 
test_mm256_cvtsepi16_epi8(__m256i __A)1782 __m128i test_mm256_cvtsepi16_epi8(__m256i __A) {
1783   // CHECK-LABEL: @test_mm256_cvtsepi16_epi8
1784   // CHECK: @llvm.x86.avx512.mask.pmovs.wb.256
1785   return _mm256_cvtsepi16_epi8(__A);
1786 }
1787 
test_mm256_mask_cvtsepi16_epi8(__m128i __O,__mmask16 __M,__m256i __A)1788 __m128i test_mm256_mask_cvtsepi16_epi8(__m128i __O, __mmask16 __M, __m256i __A) {
1789   // CHECK-LABEL: @test_mm256_mask_cvtsepi16_epi8
1790   // CHECK: @llvm.x86.avx512.mask.pmovs.wb.256
1791   return _mm256_mask_cvtsepi16_epi8(__O, __M, __A);
1792 }
1793 
test_mm256_maskz_cvtsepi16_epi8(__mmask16 __M,__m256i __A)1794 __m128i test_mm256_maskz_cvtsepi16_epi8(__mmask16 __M, __m256i __A) {
1795   // CHECK-LABEL: @test_mm256_maskz_cvtsepi16_epi8
1796   // CHECK: @llvm.x86.avx512.mask.pmovs.wb.256
1797   return _mm256_maskz_cvtsepi16_epi8(__M, __A);
1798 }
1799 
test_mm_cvtusepi16_epi8(__m128i __A)1800 __m128i test_mm_cvtusepi16_epi8(__m128i __A) {
1801   // CHECK-LABEL: @test_mm_cvtusepi16_epi8
1802   // CHECK: @llvm.x86.avx512.mask.pmovus.wb.128
1803   return _mm_cvtusepi16_epi8(__A);
1804 }
1805 
test_mm_mask_cvtusepi16_epi8(__m128i __O,__mmask8 __M,__m128i __A)1806 __m128i test_mm_mask_cvtusepi16_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
1807   // CHECK-LABEL: @test_mm_mask_cvtusepi16_epi8
1808   // CHECK: @llvm.x86.avx512.mask.pmovus.wb.128
1809   return _mm_mask_cvtusepi16_epi8(__O, __M, __A);
1810 }
1811 
test_mm_maskz_cvtusepi16_epi8(__mmask8 __M,__m128i __A)1812 __m128i test_mm_maskz_cvtusepi16_epi8(__mmask8 __M, __m128i __A) {
1813   // CHECK-LABEL: @test_mm_maskz_cvtusepi16_epi8
1814   // CHECK: @llvm.x86.avx512.mask.pmovus.wb.128
1815   return _mm_maskz_cvtusepi16_epi8(__M, __A);
1816 }
1817 
test_mm256_cvtusepi16_epi8(__m256i __A)1818 __m128i test_mm256_cvtusepi16_epi8(__m256i __A) {
1819   // CHECK-LABEL: @test_mm256_cvtusepi16_epi8
1820   // CHECK: @llvm.x86.avx512.mask.pmovus.wb.256
1821   return _mm256_cvtusepi16_epi8(__A);
1822 }
1823 
test_mm256_mask_cvtusepi16_epi8(__m128i __O,__mmask16 __M,__m256i __A)1824 __m128i test_mm256_mask_cvtusepi16_epi8(__m128i __O, __mmask16 __M, __m256i __A) {
1825   // CHECK-LABEL: @test_mm256_mask_cvtusepi16_epi8
1826   // CHECK: @llvm.x86.avx512.mask.pmovus.wb.256
1827   return _mm256_mask_cvtusepi16_epi8(__O, __M, __A);
1828 }
1829 
test_mm256_maskz_cvtusepi16_epi8(__mmask16 __M,__m256i __A)1830 __m128i test_mm256_maskz_cvtusepi16_epi8(__mmask16 __M, __m256i __A) {
1831   // CHECK-LABEL: @test_mm256_maskz_cvtusepi16_epi8
1832   // CHECK: @llvm.x86.avx512.mask.pmovus.wb.256
1833   return _mm256_maskz_cvtusepi16_epi8(__M, __A);
1834 }
1835 
test_mm_cvtepi16_epi8(__m128i __A)1836 __m128i test_mm_cvtepi16_epi8(__m128i __A) {
1837   // CHECK-LABEL: @test_mm_cvtepi16_epi8
1838   // CHECK: trunc <8 x i16> %{{.*}} to <8 x i8>
1839   // 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>
1840   return _mm_cvtepi16_epi8(__A);
1841 }
1842 
test_mm_mask_cvtepi16_epi8(__m128i __O,__mmask8 __M,__m128i __A)1843 __m128i test_mm_mask_cvtepi16_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
1844   // CHECK-LABEL: @test_mm_mask_cvtepi16_epi8
1845   // CHECK: @llvm.x86.avx512.mask.pmov.wb.128
1846   return _mm_mask_cvtepi16_epi8(__O, __M, __A);
1847 }
1848 
test_mm_maskz_cvtepi16_epi8(__mmask8 __M,__m128i __A)1849 __m128i test_mm_maskz_cvtepi16_epi8(__mmask8 __M, __m128i __A) {
1850   // CHECK-LABEL: @test_mm_maskz_cvtepi16_epi8
1851   // CHECK: @llvm.x86.avx512.mask.pmov.wb.128
1852   return _mm_maskz_cvtepi16_epi8(__M, __A);
1853 }
1854 
test_mm256_cvtepi16_epi8(__m256i __A)1855 __m128i test_mm256_cvtepi16_epi8(__m256i __A) {
1856   // CHECK-LABEL: @test_mm256_cvtepi16_epi8
1857   // CHECK: trunc <16 x i16> %{{.*}} to <16 x i8>
1858   return _mm256_cvtepi16_epi8(__A);
1859 }
1860 
test_mm256_mask_cvtepi16_epi8(__m128i __O,__mmask16 __M,__m256i __A)1861 __m128i test_mm256_mask_cvtepi16_epi8(__m128i __O, __mmask16 __M, __m256i __A) {
1862   // CHECK-LABEL: @test_mm256_mask_cvtepi16_epi8
1863   // CHECK: trunc <16 x i16> %{{.*}} to <16 x i8>
1864   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1865   return _mm256_mask_cvtepi16_epi8(__O, __M, __A);
1866 }
1867 
test_mm256_maskz_cvtepi16_epi8(__mmask16 __M,__m256i __A)1868 __m128i test_mm256_maskz_cvtepi16_epi8(__mmask16 __M, __m256i __A) {
1869   // CHECK-LABEL: @test_mm256_maskz_cvtepi16_epi8
1870   // CHECK: trunc <16 x i16> %{{.*}} to <16 x i8>
1871   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1872   return _mm256_maskz_cvtepi16_epi8(__M, __A);
1873 }
1874 
test_mm_mask_mulhrs_epi16(__m128i __W,__mmask8 __U,__m128i __X,__m128i __Y)1875 __m128i test_mm_mask_mulhrs_epi16(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
1876   // CHECK-LABEL: @test_mm_mask_mulhrs_epi16
1877   // CHECK: @llvm.x86.ssse3.pmul.hr.sw
1878   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1879   return _mm_mask_mulhrs_epi16(__W, __U, __X, __Y);
1880 }
1881 
test_mm_maskz_mulhrs_epi16(__mmask8 __U,__m128i __X,__m128i __Y)1882 __m128i test_mm_maskz_mulhrs_epi16(__mmask8 __U, __m128i __X, __m128i __Y) {
1883   // CHECK-LABEL: @test_mm_maskz_mulhrs_epi16
1884   // CHECK: @llvm.x86.ssse3.pmul.hr.sw
1885   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1886   return _mm_maskz_mulhrs_epi16(__U, __X, __Y);
1887 }
1888 
test_mm256_mask_mulhrs_epi16(__m256i __W,__mmask16 __U,__m256i __X,__m256i __Y)1889 __m256i test_mm256_mask_mulhrs_epi16(__m256i __W, __mmask16 __U, __m256i __X, __m256i __Y) {
1890   // CHECK-LABEL: @test_mm256_mask_mulhrs_epi16
1891   // CHECK: @llvm.x86.avx2.pmul.hr.sw
1892   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1893   return _mm256_mask_mulhrs_epi16(__W, __U, __X, __Y);
1894 }
1895 
test_mm256_maskz_mulhrs_epi16(__mmask16 __U,__m256i __X,__m256i __Y)1896 __m256i test_mm256_maskz_mulhrs_epi16(__mmask16 __U, __m256i __X, __m256i __Y) {
1897   // CHECK-LABEL: @test_mm256_maskz_mulhrs_epi16
1898   // CHECK: @llvm.x86.avx2.pmul.hr.sw
1899   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1900   return _mm256_maskz_mulhrs_epi16(__U, __X, __Y);
1901 }
1902 
test_mm_mask_mulhi_epu16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)1903 __m128i test_mm_mask_mulhi_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1904   // CHECK-LABEL: @test_mm_mask_mulhi_epu16
1905   // CHECK: @llvm.x86.sse2.pmulhu.w
1906   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1907   return _mm_mask_mulhi_epu16(__W, __U, __A, __B);
1908 }
1909 
test_mm_maskz_mulhi_epu16(__mmask8 __U,__m128i __A,__m128i __B)1910 __m128i test_mm_maskz_mulhi_epu16(__mmask8 __U, __m128i __A, __m128i __B) {
1911   // CHECK-LABEL: @test_mm_maskz_mulhi_epu16
1912   // CHECK: @llvm.x86.sse2.pmulhu.w
1913   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1914   return _mm_maskz_mulhi_epu16(__U, __A, __B);
1915 }
1916 
test_mm256_mask_mulhi_epu16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)1917 __m256i test_mm256_mask_mulhi_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1918   // CHECK-LABEL: @test_mm256_mask_mulhi_epu16
1919   // CHECK: @llvm.x86.avx2.pmulhu.w
1920   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1921   return _mm256_mask_mulhi_epu16(__W, __U, __A, __B);
1922 }
1923 
test_mm256_maskz_mulhi_epu16(__mmask16 __U,__m256i __A,__m256i __B)1924 __m256i test_mm256_maskz_mulhi_epu16(__mmask16 __U, __m256i __A, __m256i __B) {
1925   // CHECK-LABEL: @test_mm256_maskz_mulhi_epu16
1926   // CHECK: @llvm.x86.avx2.pmulhu.w
1927   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1928   return _mm256_maskz_mulhi_epu16(__U, __A, __B);
1929 }
1930 
test_mm_mask_mulhi_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)1931 __m128i test_mm_mask_mulhi_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1932   // CHECK-LABEL: @test_mm_mask_mulhi_epi16
1933   // CHECK: @llvm.x86.sse2.pmulh.w
1934   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1935   return _mm_mask_mulhi_epi16(__W, __U, __A, __B);
1936 }
1937 
test_mm_maskz_mulhi_epi16(__mmask8 __U,__m128i __A,__m128i __B)1938 __m128i test_mm_maskz_mulhi_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
1939   // CHECK-LABEL: @test_mm_maskz_mulhi_epi16
1940   // CHECK: @llvm.x86.sse2.pmulh.w
1941   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1942   return _mm_maskz_mulhi_epi16(__U, __A, __B);
1943 }
1944 
test_mm256_mask_mulhi_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)1945 __m256i test_mm256_mask_mulhi_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1946   // CHECK-LABEL: @test_mm256_mask_mulhi_epi16
1947   // CHECK: @llvm.x86.avx2.pmulh.w
1948   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1949   return _mm256_mask_mulhi_epi16(__W, __U, __A, __B);
1950 }
1951 
test_mm256_maskz_mulhi_epi16(__mmask16 __U,__m256i __A,__m256i __B)1952 __m256i test_mm256_maskz_mulhi_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
1953   // CHECK-LABEL: @test_mm256_maskz_mulhi_epi16
1954   // CHECK: @llvm.x86.avx2.pmulh.w
1955   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
1956   return _mm256_maskz_mulhi_epi16(__U, __A, __B);
1957 }
1958 
test_mm_mask_unpackhi_epi8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)1959 __m128i test_mm_mask_unpackhi_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1960   // CHECK-LABEL: @test_mm_mask_unpackhi_epi8
1961   // 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>
1962   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1963   return _mm_mask_unpackhi_epi8(__W, __U, __A, __B);
1964 }
1965 
test_mm_maskz_unpackhi_epi8(__mmask16 __U,__m128i __A,__m128i __B)1966 __m128i test_mm_maskz_unpackhi_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
1967   // CHECK-LABEL: @test_mm_maskz_unpackhi_epi8
1968   // 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>
1969   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
1970   return _mm_maskz_unpackhi_epi8(__U, __A, __B);
1971 }
1972 
test_mm256_mask_unpackhi_epi8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)1973 __m256i test_mm256_mask_unpackhi_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1974   // CHECK-LABEL: @test_mm256_mask_unpackhi_epi8
1975   // 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>
1976   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1977   return _mm256_mask_unpackhi_epi8(__W, __U, __A, __B);
1978 }
1979 
test_mm256_maskz_unpackhi_epi8(__mmask32 __U,__m256i __A,__m256i __B)1980 __m256i test_mm256_maskz_unpackhi_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
1981   // CHECK-LABEL: @test_mm256_maskz_unpackhi_epi8
1982   // 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>
1983   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
1984   return _mm256_maskz_unpackhi_epi8(__U, __A, __B);
1985 }
1986 
test_mm_mask_unpackhi_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)1987 __m128i test_mm_mask_unpackhi_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1988   // CHECK-LABEL: @test_mm_mask_unpackhi_epi16
1989   // 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>
1990   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1991   return _mm_mask_unpackhi_epi16(__W, __U, __A, __B);
1992 }
1993 
test_mm_maskz_unpackhi_epi16(__mmask8 __U,__m128i __A,__m128i __B)1994 __m128i test_mm_maskz_unpackhi_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
1995   // CHECK-LABEL: @test_mm_maskz_unpackhi_epi16
1996   // 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>
1997   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
1998   return _mm_maskz_unpackhi_epi16(__U, __A, __B);
1999 }
2000 
test_mm256_mask_unpackhi_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)2001 __m256i test_mm256_mask_unpackhi_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
2002   // CHECK-LABEL: @test_mm256_mask_unpackhi_epi16
2003   // 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>
2004   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2005   return _mm256_mask_unpackhi_epi16(__W, __U, __A, __B);
2006 }
2007 
test_mm256_maskz_unpackhi_epi16(__mmask16 __U,__m256i __A,__m256i __B)2008 __m256i test_mm256_maskz_unpackhi_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
2009   // CHECK-LABEL: @test_mm256_maskz_unpackhi_epi16
2010   // 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>
2011   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2012   return _mm256_maskz_unpackhi_epi16(__U, __A, __B);
2013 }
2014 
test_mm_mask_unpacklo_epi8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)2015 __m128i test_mm_mask_unpacklo_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
2016   // CHECK-LABEL: @test_mm_mask_unpacklo_epi8
2017   // 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>
2018   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
2019   return _mm_mask_unpacklo_epi8(__W, __U, __A, __B);
2020 }
2021 
test_mm_maskz_unpacklo_epi8(__mmask16 __U,__m128i __A,__m128i __B)2022 __m128i test_mm_maskz_unpacklo_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
2023   // CHECK-LABEL: @test_mm_maskz_unpacklo_epi8
2024   // 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>
2025   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
2026   return _mm_maskz_unpacklo_epi8(__U, __A, __B);
2027 }
2028 
test_mm256_mask_unpacklo_epi8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)2029 __m256i test_mm256_mask_unpacklo_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
2030   // CHECK-LABEL: @test_mm256_mask_unpacklo_epi8
2031   // 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>
2032   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
2033   return _mm256_mask_unpacklo_epi8(__W, __U, __A, __B);
2034 }
2035 
test_mm256_maskz_unpacklo_epi8(__mmask32 __U,__m256i __A,__m256i __B)2036 __m256i test_mm256_maskz_unpacklo_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
2037   // CHECK-LABEL: @test_mm256_maskz_unpacklo_epi8
2038   // 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>
2039   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
2040   return _mm256_maskz_unpacklo_epi8(__U, __A, __B);
2041 }
2042 
test_mm_mask_unpacklo_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)2043 __m128i test_mm_mask_unpacklo_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2044   // CHECK-LABEL: @test_mm_mask_unpacklo_epi16
2045   // 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>
2046   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2047   return _mm_mask_unpacklo_epi16(__W, __U, __A, __B);
2048 }
2049 
test_mm_maskz_unpacklo_epi16(__mmask8 __U,__m128i __A,__m128i __B)2050 __m128i test_mm_maskz_unpacklo_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2051   // CHECK-LABEL: @test_mm_maskz_unpacklo_epi16
2052   // 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>
2053   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2054   return _mm_maskz_unpacklo_epi16(__U, __A, __B);
2055 }
2056 
test_mm256_mask_unpacklo_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)2057 __m256i test_mm256_mask_unpacklo_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
2058   // CHECK-LABEL: @test_mm256_mask_unpacklo_epi16
2059   // 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>
2060   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2061   return _mm256_mask_unpacklo_epi16(__W, __U, __A, __B);
2062 }
2063 
test_mm256_maskz_unpacklo_epi16(__mmask16 __U,__m256i __A,__m256i __B)2064 __m256i test_mm256_maskz_unpacklo_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
2065   // CHECK-LABEL: @test_mm256_maskz_unpacklo_epi16
2066   // 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>
2067   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2068   return _mm256_maskz_unpacklo_epi16(__U, __A, __B);
2069 }
2070 
test_mm_mask_cvtepi8_epi16(__m128i __W,__mmask8 __U,__m128i __A)2071 __m128i test_mm_mask_cvtepi8_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
2072   // CHECK-LABEL: @test_mm_mask_cvtepi8_epi16
2073   // CHECK: sext <8 x i8> %{{.*}} to <8 x i16>
2074   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2075   return _mm_mask_cvtepi8_epi16(__W, __U, __A);
2076 }
2077 
test_mm_maskz_cvtepi8_epi16(__mmask8 __U,__m128i __A)2078 __m128i test_mm_maskz_cvtepi8_epi16(__mmask8 __U, __m128i __A) {
2079   // CHECK-LABEL: @test_mm_maskz_cvtepi8_epi16
2080   // CHECK: sext <8 x i8> %{{.*}} to <8 x i16>
2081   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2082   return _mm_maskz_cvtepi8_epi16(__U, __A);
2083 }
2084 
test_mm256_mask_cvtepi8_epi16(__m256i __W,__mmask16 __U,__m128i __A)2085 __m256i test_mm256_mask_cvtepi8_epi16(__m256i __W, __mmask16 __U, __m128i __A) {
2086   // CHECK-LABEL: @test_mm256_mask_cvtepi8_epi16
2087   // CHECK: sext <16 x i8> %{{.*}} to <16 x i16>
2088   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2089   return _mm256_mask_cvtepi8_epi16(__W, __U, __A);
2090 }
2091 
test_mm256_maskz_cvtepi8_epi16(__mmask16 __U,__m128i __A)2092 __m256i test_mm256_maskz_cvtepi8_epi16(__mmask16 __U, __m128i __A) {
2093   // CHECK-LABEL: @test_mm256_maskz_cvtepi8_epi16
2094   // CHECK: sext <16 x i8> %{{.*}} to <16 x i16>
2095   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2096   return _mm256_maskz_cvtepi8_epi16(__U, __A);
2097 }
2098 
test_mm_mask_cvtepu8_epi16(__m128i __W,__mmask8 __U,__m128i __A)2099 __m128i test_mm_mask_cvtepu8_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
2100   // CHECK-LABEL: @test_mm_mask_cvtepu8_epi16
2101   // CHECK: zext <8 x i8> %{{.*}} to <8 x i16>
2102   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2103   return _mm_mask_cvtepu8_epi16(__W, __U, __A);
2104 }
2105 
test_mm_maskz_cvtepu8_epi16(__mmask8 __U,__m128i __A)2106 __m128i test_mm_maskz_cvtepu8_epi16(__mmask8 __U, __m128i __A) {
2107   // CHECK-LABEL: @test_mm_maskz_cvtepu8_epi16
2108   // CHECK: zext <8 x i8> %{{.*}} to <8 x i16>
2109   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2110   return _mm_maskz_cvtepu8_epi16(__U, __A);
2111 }
2112 
test_mm256_mask_cvtepu8_epi16(__m256i __W,__mmask16 __U,__m128i __A)2113 __m256i test_mm256_mask_cvtepu8_epi16(__m256i __W, __mmask16 __U, __m128i __A) {
2114   // CHECK-LABEL: @test_mm256_mask_cvtepu8_epi16
2115   // CHECK: zext <16 x i8> %{{.*}} to <16 x i16>
2116   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2117   return _mm256_mask_cvtepu8_epi16(__W, __U, __A);
2118 }
2119 
test_mm256_maskz_cvtepu8_epi16(__mmask16 __U,__m128i __A)2120 __m256i test_mm256_maskz_cvtepu8_epi16(__mmask16 __U, __m128i __A) {
2121   // CHECK-LABEL: @test_mm256_maskz_cvtepu8_epi16
2122   // CHECK: zext <16 x i8> %{{.*}} to <16 x i16>
2123   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2124   return _mm256_maskz_cvtepu8_epi16(__U, __A);
2125 }
2126 
test_mm256_sllv_epi16(__m256i __A,__m256i __B)2127 __m256i test_mm256_sllv_epi16(__m256i __A, __m256i __B) {
2128   // CHECK-LABEL: @test_mm256_sllv_epi16
2129   // CHECK: @llvm.x86.avx512.psllv.w.256(
2130   return _mm256_sllv_epi16(__A, __B);
2131 }
2132 
test_mm256_mask_sllv_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)2133 __m256i test_mm256_mask_sllv_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
2134   // CHECK-LABEL: @test_mm256_mask_sllv_epi16
2135   // CHECK: @llvm.x86.avx512.psllv.w.256(
2136   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2137   return _mm256_mask_sllv_epi16(__W, __U, __A, __B);
2138 }
2139 
test_mm256_maskz_sllv_epi16(__mmask16 __U,__m256i __A,__m256i __B)2140 __m256i test_mm256_maskz_sllv_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
2141   // CHECK-LABEL: @test_mm256_maskz_sllv_epi16
2142   // CHECK: @llvm.x86.avx512.psllv.w.256(
2143   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2144   return _mm256_maskz_sllv_epi16(__U, __A, __B);
2145 }
2146 
test_mm_sllv_epi16(__m128i __A,__m128i __B)2147 __m128i test_mm_sllv_epi16(__m128i __A, __m128i __B) {
2148   // CHECK-LABEL: @test_mm_sllv_epi16
2149   // CHECK: @llvm.x86.avx512.psllv.w.128(
2150   return _mm_sllv_epi16(__A, __B);
2151 }
2152 
test_mm_mask_sllv_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)2153 __m128i test_mm_mask_sllv_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2154   // CHECK-LABEL: @test_mm_mask_sllv_epi16
2155   // CHECK: @llvm.x86.avx512.psllv.w.128(
2156   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2157   return _mm_mask_sllv_epi16(__W, __U, __A, __B);
2158 }
2159 
test_mm_maskz_sllv_epi16(__mmask8 __U,__m128i __A,__m128i __B)2160 __m128i test_mm_maskz_sllv_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2161   // CHECK-LABEL: @test_mm_maskz_sllv_epi16
2162   // CHECK: @llvm.x86.avx512.psllv.w.128(
2163   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2164   return _mm_maskz_sllv_epi16(__U, __A, __B);
2165 }
2166 
test_mm_mask_sll_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)2167 __m128i test_mm_mask_sll_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2168   // CHECK-LABEL: @test_mm_mask_sll_epi16
2169   // CHECK: @llvm.x86.sse2.psll.w
2170   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2171   return _mm_mask_sll_epi16(__W, __U, __A, __B);
2172 }
2173 
test_mm_maskz_sll_epi16(__mmask8 __U,__m128i __A,__m128i __B)2174 __m128i test_mm_maskz_sll_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2175   // CHECK-LABEL: @test_mm_maskz_sll_epi16
2176   // CHECK: @llvm.x86.sse2.psll.w
2177   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2178   return _mm_maskz_sll_epi16(__U, __A, __B);
2179 }
2180 
test_mm256_mask_sll_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m128i __B)2181 __m256i test_mm256_mask_sll_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B) {
2182   // CHECK-LABEL: @test_mm256_mask_sll_epi16
2183   // CHECK: @llvm.x86.avx2.psll.w
2184   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2185   return _mm256_mask_sll_epi16(__W, __U, __A, __B);
2186 }
2187 
test_mm256_maskz_sll_epi16(__mmask16 __U,__m256i __A,__m128i __B)2188 __m256i test_mm256_maskz_sll_epi16(__mmask16 __U, __m256i __A, __m128i __B) {
2189   // CHECK-LABEL: @test_mm256_maskz_sll_epi16
2190   // CHECK: @llvm.x86.avx2.psll.w
2191   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2192   return _mm256_maskz_sll_epi16(__U, __A, __B);
2193 }
2194 
test_mm_mask_slli_epi16(__m128i __W,__mmask8 __U,__m128i __A)2195 __m128i test_mm_mask_slli_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
2196   // CHECK-LABEL: @test_mm_mask_slli_epi16
2197   // CHECK: @llvm.x86.sse2.pslli.w
2198   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2199   return _mm_mask_slli_epi16(__W, __U, __A, 5);
2200 }
2201 
test_mm_mask_slli_epi16_2(__m128i __W,__mmask8 __U,__m128i __A,unsigned int __B)2202 __m128i test_mm_mask_slli_epi16_2(__m128i __W, __mmask8 __U, __m128i __A, unsigned int __B) {
2203   // CHECK-LABEL: @test_mm_mask_slli_epi16_2
2204   // CHECK: @llvm.x86.sse2.pslli.w
2205   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2206   return _mm_mask_slli_epi16(__W, __U, __A, __B);
2207 }
2208 
test_mm_maskz_slli_epi16(__mmask8 __U,__m128i __A)2209 __m128i test_mm_maskz_slli_epi16(__mmask8 __U, __m128i __A) {
2210   // CHECK-LABEL: @test_mm_maskz_slli_epi16
2211   // CHECK: @llvm.x86.sse2.pslli.w
2212   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2213   return _mm_maskz_slli_epi16(__U, __A, 5);
2214 }
2215 
test_mm_maskz_slli_epi16_2(__mmask8 __U,__m128i __A,unsigned int __B)2216 __m128i test_mm_maskz_slli_epi16_2(__mmask8 __U, __m128i __A, unsigned int __B) {
2217   // CHECK-LABEL: @test_mm_maskz_slli_epi16_2
2218   // CHECK: @llvm.x86.sse2.pslli.w
2219   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2220   return _mm_maskz_slli_epi16(__U, __A, __B);
2221 }
2222 
test_mm256_mask_slli_epi16(__m256i __W,__mmask16 __U,__m256i __A)2223 __m256i test_mm256_mask_slli_epi16(__m256i __W, __mmask16 __U, __m256i __A) {
2224   // CHECK-LABEL: @test_mm256_mask_slli_epi16
2225   // CHECK: @llvm.x86.avx2.pslli.w
2226   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2227   return _mm256_mask_slli_epi16(__W, __U, __A, 5);
2228 }
2229 
test_mm256_mask_slli_epi16_2(__m256i __W,__mmask16 __U,__m256i __A,unsigned int __B)2230 __m256i test_mm256_mask_slli_epi16_2(__m256i __W, __mmask16 __U, __m256i __A, unsigned int __B) {
2231   // CHECK-LABEL: @test_mm256_mask_slli_epi16_2
2232   // CHECK: @llvm.x86.avx2.pslli.w
2233   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2234   return _mm256_mask_slli_epi16(__W, __U, __A, __B);
2235 }
2236 
test_mm256_maskz_slli_epi16(__mmask16 __U,__m256i __A)2237 __m256i test_mm256_maskz_slli_epi16(__mmask16 __U, __m256i __A) {
2238   // CHECK-LABEL: @test_mm256_maskz_slli_epi16
2239   // CHECK: @llvm.x86.avx2.pslli.w
2240   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2241   return _mm256_maskz_slli_epi16(__U, __A, 5);
2242 }
2243 
test_mm256_maskz_slli_epi16_2(__mmask16 __U,__m256i __A,unsigned int __B)2244 __m256i test_mm256_maskz_slli_epi16_2(__mmask16 __U, __m256i __A, unsigned int __B) {
2245   // CHECK-LABEL: @test_mm256_maskz_slli_epi16_2
2246   // CHECK: @llvm.x86.avx2.pslli.w
2247   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2248   return _mm256_maskz_slli_epi16(__U, __A, __B);
2249 }
2250 
test_mm256_srlv_epi16(__m256i __A,__m256i __B)2251 __m256i test_mm256_srlv_epi16(__m256i __A, __m256i __B) {
2252   // CHECK-LABEL: @test_mm256_srlv_epi16
2253   // CHECK: @llvm.x86.avx512.psrlv.w.256(
2254   return _mm256_srlv_epi16(__A, __B);
2255 }
2256 
test_mm256_mask_srlv_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)2257 __m256i test_mm256_mask_srlv_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
2258   // CHECK-LABEL: @test_mm256_mask_srlv_epi16
2259   // CHECK: @llvm.x86.avx512.psrlv.w.256(
2260   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2261   return _mm256_mask_srlv_epi16(__W, __U, __A, __B);
2262 }
2263 
test_mm256_maskz_srlv_epi16(__mmask16 __U,__m256i __A,__m256i __B)2264 __m256i test_mm256_maskz_srlv_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
2265   // CHECK-LABEL: @test_mm256_maskz_srlv_epi16
2266   // CHECK: @llvm.x86.avx512.psrlv.w.256(
2267   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2268   return _mm256_maskz_srlv_epi16(__U, __A, __B);
2269 }
2270 
test_mm_srlv_epi16(__m128i __A,__m128i __B)2271 __m128i test_mm_srlv_epi16(__m128i __A, __m128i __B) {
2272   // CHECK-LABEL: @test_mm_srlv_epi16
2273   // CHECK: @llvm.x86.avx512.psrlv.w.128(
2274   return _mm_srlv_epi16(__A, __B);
2275 }
2276 
test_mm_mask_srlv_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)2277 __m128i test_mm_mask_srlv_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2278   // CHECK-LABEL: @test_mm_mask_srlv_epi16
2279   // CHECK: @llvm.x86.avx512.psrlv.w.128(
2280   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2281   return _mm_mask_srlv_epi16(__W, __U, __A, __B);
2282 }
2283 
test_mm_maskz_srlv_epi16(__mmask8 __U,__m128i __A,__m128i __B)2284 __m128i test_mm_maskz_srlv_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2285   // CHECK-LABEL: @test_mm_maskz_srlv_epi16
2286   // CHECK: @llvm.x86.avx512.psrlv.w.128(
2287   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2288   return _mm_maskz_srlv_epi16(__U, __A, __B);
2289 }
2290 
test_mm_mask_srl_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)2291 __m128i test_mm_mask_srl_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2292   // CHECK-LABEL: @test_mm_mask_srl_epi16
2293   // CHECK: @llvm.x86.sse2.psrl.w
2294   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2295   return _mm_mask_srl_epi16(__W, __U, __A, __B);
2296 }
2297 
test_mm_maskz_srl_epi16(__mmask8 __U,__m128i __A,__m128i __B)2298 __m128i test_mm_maskz_srl_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2299   // CHECK-LABEL: @test_mm_maskz_srl_epi16
2300   // CHECK: @llvm.x86.sse2.psrl.w
2301   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2302   return _mm_maskz_srl_epi16(__U, __A, __B);
2303 }
2304 
test_mm256_mask_srl_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m128i __B)2305 __m256i test_mm256_mask_srl_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B) {
2306   // CHECK-LABEL: @test_mm256_mask_srl_epi16
2307   // CHECK: @llvm.x86.avx2.psrl.w
2308   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2309   return _mm256_mask_srl_epi16(__W, __U, __A, __B);
2310 }
2311 
test_mm256_maskz_srl_epi16(__mmask16 __U,__m256i __A,__m128i __B)2312 __m256i test_mm256_maskz_srl_epi16(__mmask16 __U, __m256i __A, __m128i __B) {
2313   // CHECK-LABEL: @test_mm256_maskz_srl_epi16
2314   // CHECK: @llvm.x86.avx2.psrl.w
2315   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2316   return _mm256_maskz_srl_epi16(__U, __A, __B);
2317 }
2318 
test_mm_mask_srli_epi16(__m128i __W,__mmask8 __U,__m128i __A)2319 __m128i test_mm_mask_srli_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
2320   // CHECK-LABEL: @test_mm_mask_srli_epi16
2321   // CHECK: @llvm.x86.sse2.psrli.w
2322   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2323   return _mm_mask_srli_epi16(__W, __U, __A, 5);
2324 }
2325 
test_mm_mask_srli_epi16_2(__m128i __W,__mmask8 __U,__m128i __A,int __B)2326 __m128i test_mm_mask_srli_epi16_2(__m128i __W, __mmask8 __U, __m128i __A, int __B) {
2327   // CHECK-LABEL: @test_mm_mask_srli_epi16_2
2328   // CHECK: @llvm.x86.sse2.psrli.w
2329   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2330   return _mm_mask_srli_epi16(__W, __U, __A, __B);
2331 }
2332 
test_mm_maskz_srli_epi16(__mmask8 __U,__m128i __A)2333 __m128i test_mm_maskz_srli_epi16(__mmask8 __U, __m128i __A) {
2334   // CHECK-LABEL: @test_mm_maskz_srli_epi16
2335   // CHECK: @llvm.x86.sse2.psrli.w
2336   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2337   return _mm_maskz_srli_epi16(__U, __A, 5);
2338 }
2339 
test_mm_maskz_srli_epi16_2(__mmask8 __U,__m128i __A,int __B)2340 __m128i test_mm_maskz_srli_epi16_2(__mmask8 __U, __m128i __A, int __B) {
2341   // CHECK-LABEL: @test_mm_maskz_srli_epi16_2
2342   // CHECK: @llvm.x86.sse2.psrli.w
2343   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2344   return _mm_maskz_srli_epi16(__U, __A, __B);
2345 }
2346 
test_mm256_mask_srli_epi16(__m256i __W,__mmask16 __U,__m256i __A)2347 __m256i test_mm256_mask_srli_epi16(__m256i __W, __mmask16 __U, __m256i __A) {
2348   // CHECK-LABEL: @test_mm256_mask_srli_epi16
2349   // CHECK: @llvm.x86.avx2.psrli.w
2350   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2351   return _mm256_mask_srli_epi16(__W, __U, __A, 5);
2352 }
2353 
test_mm256_mask_srli_epi16_2(__m256i __W,__mmask16 __U,__m256i __A,int __B)2354 __m256i test_mm256_mask_srli_epi16_2(__m256i __W, __mmask16 __U, __m256i __A, int __B) {
2355   // CHECK-LABEL: @test_mm256_mask_srli_epi16_2
2356   // CHECK: @llvm.x86.avx2.psrli.w
2357   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2358   return _mm256_mask_srli_epi16(__W, __U, __A, __B);
2359 }
2360 
test_mm256_maskz_srli_epi16(__mmask16 __U,__m256i __A)2361 __m256i test_mm256_maskz_srli_epi16(__mmask16 __U, __m256i __A) {
2362   // CHECK-LABEL: @test_mm256_maskz_srli_epi16
2363   // CHECK: @llvm.x86.avx2.psrli.w
2364   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2365   return _mm256_maskz_srli_epi16(__U, __A, 5);
2366 }
2367 
test_mm256_maskz_srli_epi16_2(__mmask16 __U,__m256i __A,int __B)2368 __m256i test_mm256_maskz_srli_epi16_2(__mmask16 __U, __m256i __A, int __B) {
2369   // CHECK-LABEL: @test_mm256_maskz_srli_epi16_2
2370   // CHECK: @llvm.x86.avx2.psrli.w
2371   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2372   return _mm256_maskz_srli_epi16(__U, __A, __B);
2373 }
2374 
test_mm256_srav_epi16(__m256i __A,__m256i __B)2375 __m256i test_mm256_srav_epi16(__m256i __A, __m256i __B) {
2376   // CHECK-LABEL: @test_mm256_srav_epi16
2377   // CHECK: @llvm.x86.avx512.psrav.w.256(
2378   return _mm256_srav_epi16(__A, __B);
2379 }
2380 
test_mm256_mask_srav_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)2381 __m256i test_mm256_mask_srav_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
2382   // CHECK-LABEL: @test_mm256_mask_srav_epi16
2383   // CHECK: @llvm.x86.avx512.psrav.w.256(
2384   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2385   return _mm256_mask_srav_epi16(__W, __U, __A, __B);
2386 }
2387 
test_mm256_maskz_srav_epi16(__mmask16 __U,__m256i __A,__m256i __B)2388 __m256i test_mm256_maskz_srav_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
2389   // CHECK-LABEL: @test_mm256_maskz_srav_epi16
2390   // CHECK: @llvm.x86.avx512.psrav.w.256(
2391   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2392   return _mm256_maskz_srav_epi16(__U, __A, __B);
2393 }
2394 
test_mm_srav_epi16(__m128i __A,__m128i __B)2395 __m128i test_mm_srav_epi16(__m128i __A, __m128i __B) {
2396   // CHECK-LABEL: @test_mm_srav_epi16
2397   // CHECK: @llvm.x86.avx512.psrav.w.128(
2398   return _mm_srav_epi16(__A, __B);
2399 }
2400 
test_mm_mask_srav_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)2401 __m128i test_mm_mask_srav_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2402   // CHECK-LABEL: @test_mm_mask_srav_epi16
2403   // CHECK: @llvm.x86.avx512.psrav.w.128(
2404   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2405   return _mm_mask_srav_epi16(__W, __U, __A, __B);
2406 }
2407 
test_mm_maskz_srav_epi16(__mmask8 __U,__m128i __A,__m128i __B)2408 __m128i test_mm_maskz_srav_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2409   // CHECK-LABEL: @test_mm_maskz_srav_epi16
2410   // CHECK: @llvm.x86.avx512.psrav.w.128(
2411   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2412   return _mm_maskz_srav_epi16(__U, __A, __B);
2413 }
2414 
test_mm_mask_sra_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)2415 __m128i test_mm_mask_sra_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2416   // CHECK-LABEL: @test_mm_mask_sra_epi16
2417   // CHECK: @llvm.x86.sse2.psra.w
2418   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2419   return _mm_mask_sra_epi16(__W, __U, __A, __B);
2420 }
2421 
test_mm_maskz_sra_epi16(__mmask8 __U,__m128i __A,__m128i __B)2422 __m128i test_mm_maskz_sra_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2423   // CHECK-LABEL: @test_mm_maskz_sra_epi16
2424   // CHECK: @llvm.x86.sse2.psra.w
2425   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2426   return _mm_maskz_sra_epi16(__U, __A, __B);
2427 }
2428 
test_mm256_mask_sra_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m128i __B)2429 __m256i test_mm256_mask_sra_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B) {
2430   // CHECK-LABEL: @test_mm256_mask_sra_epi16
2431   // CHECK: @llvm.x86.avx2.psra.w
2432   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2433   return _mm256_mask_sra_epi16(__W, __U, __A, __B);
2434 }
2435 
test_mm256_maskz_sra_epi16(__mmask16 __U,__m256i __A,__m128i __B)2436 __m256i test_mm256_maskz_sra_epi16(__mmask16 __U, __m256i __A, __m128i __B) {
2437   // CHECK-LABEL: @test_mm256_maskz_sra_epi16
2438   // CHECK: @llvm.x86.avx2.psra.w
2439   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2440   return _mm256_maskz_sra_epi16(__U, __A, __B);
2441 }
2442 
test_mm_mask_srai_epi16(__m128i __W,__mmask8 __U,__m128i __A)2443 __m128i test_mm_mask_srai_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
2444   // CHECK-LABEL: @test_mm_mask_srai_epi16
2445   // CHECK: @llvm.x86.sse2.psrai.w
2446   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2447   return _mm_mask_srai_epi16(__W, __U, __A, 5);
2448 }
2449 
test_mm_mask_srai_epi16_2(__m128i __W,__mmask8 __U,__m128i __A,unsigned int __B)2450 __m128i test_mm_mask_srai_epi16_2(__m128i __W, __mmask8 __U, __m128i __A, unsigned int __B) {
2451   // CHECK-LABEL: @test_mm_mask_srai_epi16_2
2452   // CHECK: @llvm.x86.sse2.psrai.w
2453   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2454   return _mm_mask_srai_epi16(__W, __U, __A, __B);
2455 }
2456 
test_mm_maskz_srai_epi16(__mmask8 __U,__m128i __A)2457 __m128i test_mm_maskz_srai_epi16(__mmask8 __U, __m128i __A) {
2458   // CHECK-LABEL: @test_mm_maskz_srai_epi16
2459   // CHECK: @llvm.x86.sse2.psrai.w
2460   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2461   return _mm_maskz_srai_epi16(__U, __A, 5);
2462 }
2463 
test_mm_maskz_srai_epi16_2(__mmask8 __U,__m128i __A,unsigned int __B)2464 __m128i test_mm_maskz_srai_epi16_2(__mmask8 __U, __m128i __A, unsigned int __B) {
2465   // CHECK-LABEL: @test_mm_maskz_srai_epi16_2
2466   // CHECK: @llvm.x86.sse2.psrai.w
2467   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2468   return _mm_maskz_srai_epi16(__U, __A, __B);
2469 }
2470 
test_mm256_mask_srai_epi16(__m256i __W,__mmask16 __U,__m256i __A)2471 __m256i test_mm256_mask_srai_epi16(__m256i __W, __mmask16 __U, __m256i __A) {
2472   // CHECK-LABEL: @test_mm256_mask_srai_epi16
2473   // CHECK: @llvm.x86.avx2.psrai.w
2474   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2475   return _mm256_mask_srai_epi16(__W, __U, __A, 5);
2476 }
2477 
test_mm256_mask_srai_epi16_2(__m256i __W,__mmask16 __U,__m256i __A,unsigned int __B)2478 __m256i test_mm256_mask_srai_epi16_2(__m256i __W, __mmask16 __U, __m256i __A, unsigned int __B) {
2479   // CHECK-LABEL: @test_mm256_mask_srai_epi16_2
2480   // CHECK: @llvm.x86.avx2.psrai.w
2481   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2482   return _mm256_mask_srai_epi16(__W, __U, __A, __B);
2483 }
2484 
test_mm256_maskz_srai_epi16(__mmask16 __U,__m256i __A)2485 __m256i test_mm256_maskz_srai_epi16(__mmask16 __U, __m256i __A) {
2486   // CHECK-LABEL: @test_mm256_maskz_srai_epi16
2487   // CHECK: @llvm.x86.avx2.psrai.w
2488   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2489   return _mm256_maskz_srai_epi16(__U, __A, 5);
2490 }
2491 
test_mm256_maskz_srai_epi16_2(__mmask16 __U,__m256i __A,unsigned int __B)2492 __m256i test_mm256_maskz_srai_epi16_2(__mmask16 __U, __m256i __A, unsigned int __B) {
2493   // CHECK-LABEL: @test_mm256_maskz_srai_epi16_2
2494   // CHECK: @llvm.x86.avx2.psrai.w
2495   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2496   return _mm256_maskz_srai_epi16(__U, __A, __B);
2497 }
2498 
test_mm_mask_mov_epi16(__m128i __W,__mmask8 __U,__m128i __A)2499 __m128i test_mm_mask_mov_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
2500   // CHECK-LABEL: @test_mm_mask_mov_epi16
2501   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2502   return _mm_mask_mov_epi16(__W, __U, __A);
2503 }
2504 
test_mm_maskz_mov_epi16(__mmask8 __U,__m128i __A)2505 __m128i test_mm_maskz_mov_epi16(__mmask8 __U, __m128i __A) {
2506   // CHECK-LABEL: @test_mm_maskz_mov_epi16
2507   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2508   return _mm_maskz_mov_epi16(__U, __A);
2509 }
2510 
test_mm256_mask_mov_epi16(__m256i __W,__mmask16 __U,__m256i __A)2511 __m256i test_mm256_mask_mov_epi16(__m256i __W, __mmask16 __U, __m256i __A) {
2512   // CHECK-LABEL: @test_mm256_mask_mov_epi16
2513   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2514   return _mm256_mask_mov_epi16(__W, __U, __A);
2515 }
2516 
test_mm256_maskz_mov_epi16(__mmask16 __U,__m256i __A)2517 __m256i test_mm256_maskz_mov_epi16(__mmask16 __U, __m256i __A) {
2518   // CHECK-LABEL: @test_mm256_maskz_mov_epi16
2519   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2520   return _mm256_maskz_mov_epi16(__U, __A);
2521 }
2522 
test_mm_mask_mov_epi8(__m128i __W,__mmask16 __U,__m128i __A)2523 __m128i test_mm_mask_mov_epi8(__m128i __W, __mmask16 __U, __m128i __A) {
2524   // CHECK-LABEL: @test_mm_mask_mov_epi8
2525   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
2526   return _mm_mask_mov_epi8(__W, __U, __A);
2527 }
2528 
test_mm_maskz_mov_epi8(__mmask16 __U,__m128i __A)2529 __m128i test_mm_maskz_mov_epi8(__mmask16 __U, __m128i __A) {
2530   // CHECK-LABEL: @test_mm_maskz_mov_epi8
2531   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
2532   return _mm_maskz_mov_epi8(__U, __A);
2533 }
2534 
test_mm256_mask_mov_epi8(__m256i __W,__mmask32 __U,__m256i __A)2535 __m256i test_mm256_mask_mov_epi8(__m256i __W, __mmask32 __U, __m256i __A) {
2536   // CHECK-LABEL: @test_mm256_mask_mov_epi8
2537   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
2538   return _mm256_mask_mov_epi8(__W, __U, __A);
2539 }
2540 
test_mm256_maskz_mov_epi8(__mmask32 __U,__m256i __A)2541 __m256i test_mm256_maskz_mov_epi8(__mmask32 __U, __m256i __A) {
2542   // CHECK-LABEL: @test_mm256_maskz_mov_epi8
2543   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
2544   return _mm256_maskz_mov_epi8(__U, __A);
2545 }
2546 
test_mm_loadu_epi16(void const * __P)2547 __m128i test_mm_loadu_epi16(void const *__P) {
2548   // CHECK-LABEL: @test_mm_loadu_epi16
2549   // CHECK: load <2 x i64>, <2 x i64>* %{{.*}}, align 1{{$}}
2550   return _mm_loadu_epi16(__P);
2551 }
2552 
test_mm_mask_loadu_epi16(__m128i __W,__mmask8 __U,void const * __P)2553 __m128i test_mm_mask_loadu_epi16(__m128i __W, __mmask8 __U, void const *__P) {
2554   // CHECK-LABEL: @test_mm_mask_loadu_epi16
2555   // CHECK: @llvm.masked.load.v8i16.p0v8i16(<8 x i16>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i16> %{{.*}})
2556   return _mm_mask_loadu_epi16(__W, __U, __P);
2557 }
2558 
test_mm_maskz_loadu_epi16(__mmask8 __U,void const * __P)2559 __m128i test_mm_maskz_loadu_epi16(__mmask8 __U, void const *__P) {
2560   // CHECK-LABEL: @test_mm_maskz_loadu_epi16
2561   // CHECK: @llvm.masked.load.v8i16.p0v8i16(<8 x i16>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i16> %{{.*}})
2562   return _mm_maskz_loadu_epi16(__U, __P);
2563 }
2564 
test_mm256_loadu_epi16(void const * __P)2565 __m256i test_mm256_loadu_epi16(void const *__P) {
2566   // CHECK-LABEL: @test_mm256_loadu_epi16
2567   // CHECK: load <4 x i64>, <4 x i64>* %{{.*}}, align 1{{$}}
2568   return _mm256_loadu_epi16(__P);
2569 }
2570 
test_mm256_mask_loadu_epi16(__m256i __W,__mmask16 __U,void const * __P)2571 __m256i test_mm256_mask_loadu_epi16(__m256i __W, __mmask16 __U, void const *__P) {
2572   // CHECK-LABEL: @test_mm256_mask_loadu_epi16
2573   // CHECK: @llvm.masked.load.v16i16.p0v16i16(<16 x i16>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i16> %{{.*}})
2574   return _mm256_mask_loadu_epi16(__W, __U, __P);
2575 }
2576 
test_mm256_maskz_loadu_epi16(__mmask16 __U,void const * __P)2577 __m256i test_mm256_maskz_loadu_epi16(__mmask16 __U, void const *__P) {
2578   // CHECK-LABEL: @test_mm256_maskz_loadu_epi16
2579   // CHECK: @llvm.masked.load.v16i16.p0v16i16(<16 x i16>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i16> %{{.*}})
2580   return _mm256_maskz_loadu_epi16(__U, __P);
2581 }
2582 
test_mm_loadu_epi8(void const * __P)2583 __m128i test_mm_loadu_epi8(void const *__P) {
2584   // CHECK-LABEL: @test_mm_loadu_epi8
2585   // CHECK: load <2 x i64>, <2 x i64>* %{{.*}}, align 1{{$}}
2586   return _mm_loadu_epi8(__P);
2587 }
2588 
test_mm_mask_loadu_epi8(__m128i __W,__mmask16 __U,void const * __P)2589 __m128i test_mm_mask_loadu_epi8(__m128i __W, __mmask16 __U, void const *__P) {
2590   // CHECK-LABEL: @test_mm_mask_loadu_epi8
2591   // CHECK: @llvm.masked.load.v16i8.p0v16i8(<16 x i8>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i8> %{{.*}})
2592   return _mm_mask_loadu_epi8(__W, __U, __P);
2593 }
2594 
test_mm_maskz_loadu_epi8(__mmask16 __U,void const * __P)2595 __m128i test_mm_maskz_loadu_epi8(__mmask16 __U, void const *__P) {
2596   // CHECK-LABEL: @test_mm_maskz_loadu_epi8
2597   // CHECK: @llvm.masked.load.v16i8.p0v16i8(<16 x i8>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i8> %{{.*}})
2598   return _mm_maskz_loadu_epi8(__U, __P);
2599 }
2600 
test_mm256_loadu_epi8(void const * __P)2601 __m256i test_mm256_loadu_epi8(void const *__P) {
2602   // CHECK-LABEL: @test_mm256_loadu_epi8
2603   // CHECK: load <4 x i64>, <4 x i64>* %{{.*}}, align 1{{$}}
2604   return _mm256_loadu_epi8(__P);
2605 }
2606 
test_mm256_mask_loadu_epi8(__m256i __W,__mmask32 __U,void const * __P)2607 __m256i test_mm256_mask_loadu_epi8(__m256i __W, __mmask32 __U, void const *__P) {
2608   // CHECK-LABEL: @test_mm256_mask_loadu_epi8
2609   // CHECK: @llvm.masked.load.v32i8.p0v32i8(<32 x i8>* %{{.*}}, i32 1, <32 x i1> %{{.*}}, <32 x i8> %{{.*}})
2610   return _mm256_mask_loadu_epi8(__W, __U, __P);
2611 }
2612 
test_mm256_maskz_loadu_epi8(__mmask32 __U,void const * __P)2613 __m256i test_mm256_maskz_loadu_epi8(__mmask32 __U, void const *__P) {
2614   // CHECK-LABEL: @test_mm256_maskz_loadu_epi8
2615   // CHECK: @llvm.masked.load.v32i8.p0v32i8(<32 x i8>* %{{.*}}, i32 1, <32 x i1> %{{.*}}, <32 x i8> %{{.*}})
2616   return _mm256_maskz_loadu_epi8(__U, __P);
2617 }
2618 
test_mm_storeu_epi16(void * __p,__m128i __a)2619 void test_mm_storeu_epi16(void *__p, __m128i __a) {
2620   // check-label: @test_mm_storeu_epi16
2621   // check: store <2 x i64> %{{.*}}, <2 x i64>* %{{.*}}, align 1{{$}}
2622   return _mm_storeu_epi16(__p, __a);
2623 }
2624 
test_mm_mask_storeu_epi16(void * __P,__mmask8 __U,__m128i __A)2625 void test_mm_mask_storeu_epi16(void *__P, __mmask8 __U, __m128i __A) {
2626   // CHECK-LABEL: @test_mm_mask_storeu_epi16
2627   // CHECK: @llvm.masked.store.v8i16.p0v8i16(<8 x i16> %{{.*}}, <8 x i16>* %{{.*}}, i32 1, <8 x i1> %{{.*}})
2628   return _mm_mask_storeu_epi16(__P, __U, __A);
2629 }
2630 
test_mm256_storeu_epi16(void * __P,__m256i __A)2631 void test_mm256_storeu_epi16(void *__P, __m256i __A) {
2632   // CHECK-LABEL: @test_mm256_storeu_epi16
2633   // CHECK: store <4 x i64> %{{.*}}, <4 x i64>* %{{.*}}, align 1{{$}}
2634   return _mm256_storeu_epi16(__P, __A);
2635 }
2636 
test_mm256_mask_storeu_epi16(void * __P,__mmask16 __U,__m256i __A)2637 void test_mm256_mask_storeu_epi16(void *__P, __mmask16 __U, __m256i __A) {
2638   // CHECK-LABEL: @test_mm256_mask_storeu_epi16
2639   // CHECK: @llvm.masked.store.v16i16.p0v16i16(<16 x i16> %{{.*}}, <16 x i16>* %{{.*}}, i32 1, <16 x i1> %{{.*}})
2640   return _mm256_mask_storeu_epi16(__P, __U, __A);
2641 }
2642 
test_mm_storeu_epi8(void * __p,__m128i __a)2643 void test_mm_storeu_epi8(void *__p, __m128i __a) {
2644   // check-label: @test_mm_storeu_epi8
2645   // check: store <2 x i64> %{{.*}}, <2 x i64>* %{{.*}}, align 1{{$}}
2646   return _mm_storeu_epi8(__p, __a);
2647 }
2648 
test_mm_mask_storeu_epi8(void * __P,__mmask16 __U,__m128i __A)2649 void test_mm_mask_storeu_epi8(void *__P, __mmask16 __U, __m128i __A) {
2650   // CHECK-LABEL: @test_mm_mask_storeu_epi8
2651   // CHECK: @llvm.masked.store.v16i8.p0v16i8(<16 x i8> %{{.*}}, <16 x i8>* %{{.*}}, i32 1, <16 x i1> %{{.*}})
2652   return _mm_mask_storeu_epi8(__P, __U, __A);
2653 }
2654 
test_mm256_storeu_epi8(void * __P,__m256i __A)2655 void test_mm256_storeu_epi8(void *__P, __m256i __A) {
2656   // CHECK-LABEL: @test_mm256_storeu_epi8
2657   // CHECK: store <4 x i64> %{{.*}}, <4 x i64>* %{{.*}}, align 1{{$}}
2658   return _mm256_storeu_epi8(__P, __A);
2659 }
2660 
test_mm256_mask_storeu_epi8(void * __P,__mmask32 __U,__m256i __A)2661 void test_mm256_mask_storeu_epi8(void *__P, __mmask32 __U, __m256i __A) {
2662   // CHECK-LABEL: @test_mm256_mask_storeu_epi8
2663   // CHECK: @llvm.masked.store.v32i8.p0v32i8(<32 x i8> %{{.*}}, <32 x i8>* %{{.*}}, i32 1, <32 x i1> %{{.*}})
2664   return _mm256_mask_storeu_epi8(__P, __U, __A);
2665 }
test_mm_test_epi8_mask(__m128i __A,__m128i __B)2666 __mmask16 test_mm_test_epi8_mask(__m128i __A, __m128i __B) {
2667   // CHECK-LABEL: @test_mm_test_epi8_mask
2668   // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2669   // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}}
2670   return _mm_test_epi8_mask(__A, __B);
2671 }
2672 
test_mm_mask_test_epi8_mask(__mmask16 __U,__m128i __A,__m128i __B)2673 __mmask16 test_mm_mask_test_epi8_mask(__mmask16 __U, __m128i __A, __m128i __B) {
2674   // CHECK-LABEL: @test_mm_mask_test_epi8_mask
2675   // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2676   // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}}
2677   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2678   return _mm_mask_test_epi8_mask(__U, __A, __B);
2679 }
2680 
test_mm256_test_epi8_mask(__m256i __A,__m256i __B)2681 __mmask32 test_mm256_test_epi8_mask(__m256i __A, __m256i __B) {
2682   // CHECK-LABEL: @test_mm256_test_epi8_mask
2683   // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2684   // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}}
2685   return _mm256_test_epi8_mask(__A, __B);
2686 }
2687 
test_mm256_mask_test_epi8_mask(__mmask32 __U,__m256i __A,__m256i __B)2688 __mmask32 test_mm256_mask_test_epi8_mask(__mmask32 __U, __m256i __A, __m256i __B) {
2689   // CHECK-LABEL: @test_mm256_mask_test_epi8_mask
2690   // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2691   // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}}
2692   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
2693   return _mm256_mask_test_epi8_mask(__U, __A, __B);
2694 }
2695 
test_mm_test_epi16_mask(__m128i __A,__m128i __B)2696 __mmask8 test_mm_test_epi16_mask(__m128i __A, __m128i __B) {
2697   // CHECK-LABEL: @test_mm_test_epi16_mask
2698   // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2699   // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}}
2700   return _mm_test_epi16_mask(__A, __B);
2701 }
2702 
test_mm_mask_test_epi16_mask(__mmask8 __U,__m128i __A,__m128i __B)2703 __mmask8 test_mm_mask_test_epi16_mask(__mmask8 __U, __m128i __A, __m128i __B) {
2704   // CHECK-LABEL: @test_mm_mask_test_epi16_mask
2705   // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2706   // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}}
2707   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2708   return _mm_mask_test_epi16_mask(__U, __A, __B);
2709 }
2710 
test_mm256_test_epi16_mask(__m256i __A,__m256i __B)2711 __mmask16 test_mm256_test_epi16_mask(__m256i __A, __m256i __B) {
2712   // CHECK-LABEL: @test_mm256_test_epi16_mask
2713   // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2714   // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}}
2715   return _mm256_test_epi16_mask(__A, __B);
2716 }
2717 
test_mm256_mask_test_epi16_mask(__mmask16 __U,__m256i __A,__m256i __B)2718 __mmask16 test_mm256_mask_test_epi16_mask(__mmask16 __U, __m256i __A, __m256i __B) {
2719   // CHECK-LABEL: @test_mm256_mask_test_epi16_mask
2720   // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2721   // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}}
2722   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2723   return _mm256_mask_test_epi16_mask(__U, __A, __B);
2724 }
2725 
test_mm_testn_epi8_mask(__m128i __A,__m128i __B)2726 __mmask16 test_mm_testn_epi8_mask(__m128i __A, __m128i __B) {
2727   // CHECK-LABEL: @test_mm_testn_epi8_mask
2728   // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2729   // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
2730   return _mm_testn_epi8_mask(__A, __B);
2731 }
2732 
test_mm_mask_testn_epi8_mask(__mmask16 __U,__m128i __A,__m128i __B)2733 __mmask16 test_mm_mask_testn_epi8_mask(__mmask16 __U, __m128i __A, __m128i __B) {
2734   // CHECK-LABEL: @test_mm_mask_testn_epi8_mask
2735   // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2736   // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
2737   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2738   return _mm_mask_testn_epi8_mask(__U, __A, __B);
2739 }
2740 
test_mm256_testn_epi8_mask(__m256i __A,__m256i __B)2741 __mmask32 test_mm256_testn_epi8_mask(__m256i __A, __m256i __B) {
2742   // CHECK-LABEL: @test_mm256_testn_epi8_mask
2743   // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2744   // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}
2745   return _mm256_testn_epi8_mask(__A, __B);
2746 }
2747 
test_mm256_mask_testn_epi8_mask(__mmask32 __U,__m256i __A,__m256i __B)2748 __mmask32 test_mm256_mask_testn_epi8_mask(__mmask32 __U, __m256i __A, __m256i __B) {
2749   // CHECK-LABEL: @test_mm256_mask_testn_epi8_mask
2750   // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2751   // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}
2752   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
2753   return _mm256_mask_testn_epi8_mask(__U, __A, __B);
2754 }
2755 
test_mm_testn_epi16_mask(__m128i __A,__m128i __B)2756 __mmask8 test_mm_testn_epi16_mask(__m128i __A, __m128i __B) {
2757   // CHECK-LABEL: @test_mm_testn_epi16_mask
2758   // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2759   // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
2760   return _mm_testn_epi16_mask(__A, __B);
2761 }
2762 
test_mm_mask_testn_epi16_mask(__mmask8 __U,__m128i __A,__m128i __B)2763 __mmask8 test_mm_mask_testn_epi16_mask(__mmask8 __U, __m128i __A, __m128i __B) {
2764   // CHECK-LABEL: @test_mm_mask_testn_epi16_mask
2765   // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
2766   // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
2767   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2768   return _mm_mask_testn_epi16_mask(__U, __A, __B);
2769 }
2770 
test_mm256_testn_epi16_mask(__m256i __A,__m256i __B)2771 __mmask16 test_mm256_testn_epi16_mask(__m256i __A, __m256i __B) {
2772   // CHECK-LABEL: @test_mm256_testn_epi16_mask
2773   // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2774   // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}
2775   return _mm256_testn_epi16_mask(__A, __B);
2776 }
2777 
test_mm256_mask_testn_epi16_mask(__mmask16 __U,__m256i __A,__m256i __B)2778 __mmask16 test_mm256_mask_testn_epi16_mask(__mmask16 __U, __m256i __A, __m256i __B) {
2779   // CHECK-LABEL: @test_mm256_mask_testn_epi16_mask
2780   // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
2781   // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}
2782   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2783   return _mm256_mask_testn_epi16_mask(__U, __A, __B);
2784 }
2785 
test_mm_movepi8_mask(__m128i __A)2786 __mmask16 test_mm_movepi8_mask(__m128i __A) {
2787   // CHECK-LABEL: @test_mm_movepi8_mask
2788   // CHECK: [[CMP:%.*]] = icmp slt <16 x i8> %{{.*}}, zeroinitializer
2789   // CHECK: bitcast <16 x i1> [[CMP]] to i16
2790   return _mm_movepi8_mask(__A);
2791 }
2792 
test_mm256_movepi8_mask(__m256i __A)2793 __mmask32 test_mm256_movepi8_mask(__m256i __A) {
2794   // CHECK-LABEL: @test_mm256_movepi8_mask
2795   // CHECK: [[CMP:%.*]] = icmp slt <32 x i8> %{{.*}}, zeroinitializer
2796   // CHECK: bitcast <32 x i1> [[CMP]] to i32
2797   return _mm256_movepi8_mask(__A);
2798 }
2799 
test_mm_movm_epi8(__mmask16 __A)2800 __m128i test_mm_movm_epi8(__mmask16 __A) {
2801   // CHECK-LABEL: @test_mm_movm_epi8
2802   // CHECK: %{{.*}} = bitcast i16 %{{.*}} to <16 x i1>
2803   // CHECK: %vpmovm2.i = sext <16 x i1> %{{.*}} to <16 x i8>
2804   return _mm_movm_epi8(__A);
2805 }
2806 
test_mm256_movm_epi8(__mmask32 __A)2807 __m256i test_mm256_movm_epi8(__mmask32 __A) {
2808   // CHECK-LABEL: @test_mm256_movm_epi8
2809   // CHECK: %{{.*}} = bitcast i32 %{{.*}} to <32 x i1>
2810   // CHECK: %vpmovm2.i = sext <32 x i1> %{{.*}} to <32 x i8>
2811   return _mm256_movm_epi8(__A);
2812 }
2813 
test_mm_movm_epi16(__mmask8 __A)2814 __m128i test_mm_movm_epi16(__mmask8 __A) {
2815   // CHECK-LABEL: @test_mm_movm_epi16
2816   // CHECK: %{{.*}} = bitcast i8 %{{.*}} to <8 x i1>
2817   // CHECK: %vpmovm2.i = sext <8 x i1> %{{.*}} to <8 x i16>
2818   return _mm_movm_epi16(__A);
2819 }
2820 
test_mm256_movm_epi16(__mmask16 __A)2821 __m256i test_mm256_movm_epi16(__mmask16 __A) {
2822   // CHECK-LABEL: @test_mm256_movm_epi16
2823   // CHECK: %{{.*}} = bitcast i16 %{{.*}} to <16 x i1>
2824   // CHECK: %vpmovm2.i = sext <16 x i1> %{{.*}} to <16 x i16>
2825   return _mm256_movm_epi16(__A);
2826 }
2827 
test_mm_mask_broadcastb_epi8(__m128i __O,__mmask16 __M,__m128i __A)2828 __m128i test_mm_mask_broadcastb_epi8(__m128i __O, __mmask16 __M, __m128i __A) {
2829   // CHECK-LABEL: @test_mm_mask_broadcastb_epi8
2830   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> zeroinitializer
2831   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
2832   return _mm_mask_broadcastb_epi8(__O, __M, __A);
2833 }
2834 
test_mm_maskz_broadcastb_epi8(__mmask16 __M,__m128i __A)2835 __m128i test_mm_maskz_broadcastb_epi8(__mmask16 __M, __m128i __A) {
2836   // CHECK-LABEL: @test_mm_maskz_broadcastb_epi8
2837   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> zeroinitializer
2838   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
2839   return _mm_maskz_broadcastb_epi8(__M, __A);
2840 }
2841 
test_mm256_mask_broadcastb_epi8(__m256i __O,__mmask32 __M,__m128i __A)2842 __m256i test_mm256_mask_broadcastb_epi8(__m256i __O, __mmask32 __M, __m128i __A) {
2843   // CHECK-LABEL: @test_mm256_mask_broadcastb_epi8
2844   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <32 x i32> zeroinitializer
2845   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
2846   return _mm256_mask_broadcastb_epi8(__O, __M, __A);
2847 }
2848 
test_mm256_maskz_broadcastb_epi8(__mmask32 __M,__m128i __A)2849 __m256i test_mm256_maskz_broadcastb_epi8(__mmask32 __M, __m128i __A) {
2850   // CHECK-LABEL: @test_mm256_maskz_broadcastb_epi8
2851   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <32 x i32> zeroinitializer
2852   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
2853   return _mm256_maskz_broadcastb_epi8(__M, __A);
2854 }
2855 
test_mm_mask_broadcastw_epi16(__m128i __O,__mmask8 __M,__m128i __A)2856 __m128i test_mm_mask_broadcastw_epi16(__m128i __O, __mmask8 __M, __m128i __A) {
2857   // CHECK-LABEL: @test_mm_mask_broadcastw_epi16
2858   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> zeroinitializer
2859   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2860   return _mm_mask_broadcastw_epi16(__O, __M, __A);
2861 }
2862 
test_mm_maskz_broadcastw_epi16(__mmask8 __M,__m128i __A)2863 __m128i test_mm_maskz_broadcastw_epi16(__mmask8 __M, __m128i __A) {
2864   // CHECK-LABEL: @test_mm_maskz_broadcastw_epi16
2865   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> zeroinitializer
2866   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
2867   return _mm_maskz_broadcastw_epi16(__M, __A);
2868 }
2869 
test_mm256_mask_broadcastw_epi16(__m256i __O,__mmask16 __M,__m128i __A)2870 __m256i test_mm256_mask_broadcastw_epi16(__m256i __O, __mmask16 __M, __m128i __A) {
2871   // CHECK-LABEL: @test_mm256_mask_broadcastw_epi16
2872   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <16 x i32> zeroinitializer
2873   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2874   return _mm256_mask_broadcastw_epi16(__O, __M, __A);
2875 }
2876 
test_mm256_maskz_broadcastw_epi16(__mmask16 __M,__m128i __A)2877 __m256i test_mm256_maskz_broadcastw_epi16(__mmask16 __M, __m128i __A) {
2878   // CHECK-LABEL: @test_mm256_maskz_broadcastw_epi16
2879   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <16 x i32> zeroinitializer
2880   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
2881   return _mm256_maskz_broadcastw_epi16(__M, __A);
2882 }
test_mm_mask_set1_epi8(__m128i __O,__mmask16 __M,char __A)2883 __m128i test_mm_mask_set1_epi8 (__m128i __O, __mmask16 __M, char __A){
2884   // CHECK-LABEL: @test_mm_mask_set1_epi8
2885   // CHECK: insertelement <16 x i8> undef, i8 %{{.*}}, i32 0
2886   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 1
2887   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 2
2888   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 3
2889   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 4
2890   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 5
2891   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 6
2892   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 7
2893   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 8
2894   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 9
2895   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 10
2896   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 11
2897   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 12
2898   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 13
2899   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 14
2900   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 15
2901   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
2902   return _mm_mask_set1_epi8(__O, __M, __A);
2903 }
test_mm_maskz_set1_epi8(__mmask16 __M,char __A)2904 __m128i test_mm_maskz_set1_epi8 ( __mmask16 __M, char __A){
2905   // CHECK-LABEL: @test_mm_maskz_set1_epi8
2906   // CHECK: insertelement <16 x i8> undef, i8 %{{.*}}, i32 0
2907   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 1
2908   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 2
2909   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 3
2910   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 4
2911   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 5
2912   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 6
2913   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 7
2914   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 8
2915   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 9
2916   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 10
2917   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 11
2918   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 12
2919   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 13
2920   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 14
2921   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 15
2922   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
2923   return _mm_maskz_set1_epi8( __M, __A);
2924 }
2925 
test_mm256_mask_set1_epi8(__m256i __O,__mmask32 __M,char __A)2926 __m256i test_mm256_mask_set1_epi8(__m256i __O, __mmask32 __M, char __A) {
2927   // CHECK-LABEL: @test_mm256_mask_set1_epi8
2928   // CHECK: insertelement <32 x i8> undef, i8 %{{.*}}, i32 0
2929   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 1
2930   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 2
2931   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 3
2932   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 4
2933   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 5
2934   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 6
2935   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 7
2936   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 8
2937   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 9
2938   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 10
2939   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 11
2940   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 12
2941   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 13
2942   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 14
2943   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 15
2944   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 16
2945   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 17
2946   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 18
2947   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 19
2948   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 20
2949   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 21
2950   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 22
2951   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 23
2952   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 24
2953   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 25
2954   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 26
2955   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 27
2956   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 28
2957   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 29
2958   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 30
2959   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 31
2960   // CHECK:  select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
2961   return _mm256_mask_set1_epi8(__O, __M, __A);
2962 }
2963 
test_mm256_maskz_set1_epi8(__mmask32 __M,char __A)2964 __m256i test_mm256_maskz_set1_epi8( __mmask32 __M, char __A) {
2965   // CHECK-LABEL: @test_mm256_maskz_set1_epi8
2966   // CHECK: insertelement <32 x i8> undef, i8 %{{.*}}, i32 0
2967   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 1
2968   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 2
2969   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 3
2970   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 4
2971   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 5
2972   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 6
2973   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 7
2974   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 8
2975   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 9
2976   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 10
2977   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 11
2978   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 12
2979   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 13
2980   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 14
2981   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 15
2982   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 16
2983   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 17
2984   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 18
2985   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 19
2986   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 20
2987   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 21
2988   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 22
2989   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 23
2990   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 24
2991   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 25
2992   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 26
2993   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 27
2994   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 28
2995   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 29
2996   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 30
2997   // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 31
2998   // CHECK:  select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
2999   return _mm256_maskz_set1_epi8( __M, __A);
3000 }
3001 
3002 
test_mm256_mask_set1_epi16(__m256i __O,__mmask16 __M,short __A)3003 __m256i test_mm256_mask_set1_epi16(__m256i __O, __mmask16 __M, short __A) {
3004   // CHECK-LABEL: @test_mm256_mask_set1_epi16
3005   // CHECK: insertelement <16 x i16> undef, i16 %{{.*}}, i32 0
3006   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 1
3007   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 2
3008   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 3
3009   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 4
3010   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 5
3011   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 6
3012   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 7
3013   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 8
3014   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 9
3015   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 10
3016   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 11
3017   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 12
3018   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 13
3019   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 14
3020   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 15
3021   // CHECK:  select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3022   return _mm256_mask_set1_epi16(__O, __M, __A);
3023 }
3024 
test_mm256_maskz_set1_epi16(__mmask16 __M,short __A)3025 __m256i test_mm256_maskz_set1_epi16(__mmask16 __M, short __A) {
3026   // CHECK-LABEL: @test_mm256_maskz_set1_epi16
3027   // CHECK: insertelement <16 x i16> undef, i16 %{{.*}}, i32 0
3028   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 1
3029   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 2
3030   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 3
3031   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 4
3032   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 5
3033   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 6
3034   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 7
3035   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 8
3036   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 9
3037   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 10
3038   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 11
3039   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 12
3040   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 13
3041   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 14
3042   // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 15
3043   // CHECK:  select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3044   return _mm256_maskz_set1_epi16(__M, __A);
3045 }
3046 
test_mm_mask_set1_epi16(__m128i __O,__mmask8 __M,short __A)3047 __m128i test_mm_mask_set1_epi16(__m128i __O, __mmask8 __M, short __A) {
3048   // CHECK-LABEL: @test_mm_mask_set1_epi16
3049   // CHECK: insertelement <8 x i16> undef, i16 %{{.*}}, i32 0
3050   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 1
3051   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 2
3052   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 3
3053   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 4
3054   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 5
3055   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 6
3056   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 7
3057   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3058   return _mm_mask_set1_epi16(__O, __M, __A);
3059 }
3060 
test_mm_maskz_set1_epi16(__mmask8 __M,short __A)3061 __m128i test_mm_maskz_set1_epi16(__mmask8 __M, short __A) {
3062   // CHECK-LABEL: @test_mm_maskz_set1_epi16
3063   // CHECK: insertelement <8 x i16> undef, i16 %{{.*}}, i32 0
3064   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 1
3065   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 2
3066   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 3
3067   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 4
3068   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 5
3069   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 6
3070   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 7
3071   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3072   return _mm_maskz_set1_epi16(__M, __A);
3073 }
test_mm_permutexvar_epi16(__m128i __A,__m128i __B)3074 __m128i test_mm_permutexvar_epi16(__m128i __A, __m128i __B) {
3075   // CHECK-LABEL: @test_mm_permutexvar_epi16
3076   // CHECK: @llvm.x86.avx512.permvar.hi.128
3077   return _mm_permutexvar_epi16(__A, __B);
3078 }
3079 
test_mm_maskz_permutexvar_epi16(__mmask8 __M,__m128i __A,__m128i __B)3080 __m128i test_mm_maskz_permutexvar_epi16(__mmask8 __M, __m128i __A, __m128i __B) {
3081   // CHECK-LABEL: @test_mm_maskz_permutexvar_epi16
3082   // CHECK: @llvm.x86.avx512.permvar.hi.128
3083   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3084   return _mm_maskz_permutexvar_epi16(__M, __A, __B);
3085 }
3086 
test_mm_mask_permutexvar_epi16(__m128i __W,__mmask8 __M,__m128i __A,__m128i __B)3087 __m128i test_mm_mask_permutexvar_epi16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3088   // CHECK-LABEL: @test_mm_mask_permutexvar_epi16
3089   // CHECK: @llvm.x86.avx512.permvar.hi.128
3090   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3091   return _mm_mask_permutexvar_epi16(__W, __M, __A, __B);
3092 }
3093 
test_mm256_permutexvar_epi16(__m256i __A,__m256i __B)3094 __m256i test_mm256_permutexvar_epi16(__m256i __A, __m256i __B) {
3095   // CHECK-LABEL: @test_mm256_permutexvar_epi16
3096   // CHECK: @llvm.x86.avx512.permvar.hi.256
3097   return _mm256_permutexvar_epi16(__A, __B);
3098 }
3099 
test_mm256_maskz_permutexvar_epi16(__mmask16 __M,__m256i __A,__m256i __B)3100 __m256i test_mm256_maskz_permutexvar_epi16(__mmask16 __M, __m256i __A, __m256i __B) {
3101   // CHECK-LABEL: @test_mm256_maskz_permutexvar_epi16
3102   // CHECK: @llvm.x86.avx512.permvar.hi.256
3103   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3104   return _mm256_maskz_permutexvar_epi16(__M, __A, __B);
3105 }
3106 
test_mm256_mask_permutexvar_epi16(__m256i __W,__mmask16 __M,__m256i __A,__m256i __B)3107 __m256i test_mm256_mask_permutexvar_epi16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {
3108   // CHECK-LABEL: @test_mm256_mask_permutexvar_epi16
3109   // CHECK: @llvm.x86.avx512.permvar.hi.256
3110   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3111   return _mm256_mask_permutexvar_epi16(__W, __M, __A, __B);
3112 }
test_mm_mask_alignr_epi8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)3113 __m128i test_mm_mask_alignr_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
3114   // CHECK-LABEL: @test_mm_mask_alignr_epi8
3115   // 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>
3116   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
3117   return _mm_mask_alignr_epi8(__W, __U, __A, __B, 2);
3118 }
3119 
test_mm_maskz_alignr_epi8(__mmask16 __U,__m128i __A,__m128i __B)3120 __m128i test_mm_maskz_alignr_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
3121   // CHECK-LABEL: @test_mm_maskz_alignr_epi8
3122   // 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>
3123   // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
3124   return _mm_maskz_alignr_epi8(__U, __A, __B, 2);
3125 }
3126 
test_mm256_mask_alignr_epi8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)3127 __m256i test_mm256_mask_alignr_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
3128   // CHECK-LABEL: @test_mm256_mask_alignr_epi8
3129   // 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>
3130   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
3131   return _mm256_mask_alignr_epi8(__W, __U, __A, __B, 2);
3132 }
3133 
test_mm256_maskz_alignr_epi8(__mmask32 __U,__m256i __A,__m256i __B)3134 __m256i test_mm256_maskz_alignr_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
3135   // CHECK-LABEL: @test_mm256_maskz_alignr_epi8
3136   // 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>
3137   // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
3138   return _mm256_maskz_alignr_epi8(__U, __A, __B, 2);
3139 }
3140 
test_mm_dbsad_epu8(__m128i __A,__m128i __B)3141 __m128i test_mm_dbsad_epu8(__m128i __A, __m128i __B) {
3142   // CHECK-LABEL: @test_mm_dbsad_epu8
3143   // CHECK: @llvm.x86.avx512.dbpsadbw.128
3144   return _mm_dbsad_epu8(__A, __B, 170);
3145 }
3146 
test_mm_mask_dbsad_epu8(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)3147 __m128i test_mm_mask_dbsad_epu8(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
3148   // CHECK-LABEL: @test_mm_mask_dbsad_epu8
3149   // CHECK: @llvm.x86.avx512.dbpsadbw.128
3150   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3151   return _mm_mask_dbsad_epu8(__W, __U, __A, __B, 170);
3152 }
3153 
test_mm_maskz_dbsad_epu8(__mmask8 __U,__m128i __A,__m128i __B)3154 __m128i test_mm_maskz_dbsad_epu8(__mmask8 __U, __m128i __A, __m128i __B) {
3155   // CHECK-LABEL: @test_mm_maskz_dbsad_epu8
3156   // CHECK: @llvm.x86.avx512.dbpsadbw.128
3157   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3158   return _mm_maskz_dbsad_epu8(__U, __A, __B, 170);
3159 }
3160 
test_mm256_dbsad_epu8(__m256i __A,__m256i __B)3161 __m256i test_mm256_dbsad_epu8(__m256i __A, __m256i __B) {
3162   // CHECK-LABEL: @test_mm256_dbsad_epu8
3163   // CHECK: @llvm.x86.avx512.dbpsadbw.256
3164   return _mm256_dbsad_epu8(__A, __B, 170);
3165 }
3166 
test_mm256_mask_dbsad_epu8(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)3167 __m256i test_mm256_mask_dbsad_epu8(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
3168   // CHECK-LABEL: @test_mm256_mask_dbsad_epu8
3169   // CHECK: @llvm.x86.avx512.dbpsadbw.256
3170   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3171   return _mm256_mask_dbsad_epu8(__W, __U, __A, __B, 170);
3172 }
3173 
test_mm256_maskz_dbsad_epu8(__mmask16 __U,__m256i __A,__m256i __B)3174 __m256i test_mm256_maskz_dbsad_epu8(__mmask16 __U, __m256i __A, __m256i __B) {
3175   // CHECK-LABEL: @test_mm256_maskz_dbsad_epu8
3176   // CHECK: @llvm.x86.avx512.dbpsadbw.256
3177   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3178   return _mm256_maskz_dbsad_epu8(__U, __A, __B, 170);
3179 }
test_mm_movepi16_mask(__m128i __A)3180 __mmask8 test_mm_movepi16_mask(__m128i __A) {
3181   // CHECK-LABEL: @test_mm_movepi16_mask
3182   // CHECK: [[CMP:%.*]] = icmp slt <8 x i16> %{{.*}}, zeroinitializer
3183   // CHECK: bitcast <8 x i1> [[CMP]] to i8
3184   return _mm_movepi16_mask(__A);
3185 }
3186 
test_mm256_movepi16_mask(__m256i __A)3187 __mmask16 test_mm256_movepi16_mask(__m256i __A) {
3188   // CHECK-LABEL: @test_mm256_movepi16_mask
3189   // CHECK: [[CMP:%.*]] = icmp slt <16 x i16> %{{.*}}, zeroinitializer
3190   // CHECK: bitcast <16 x i1> [[CMP]] to i16
3191   return _mm256_movepi16_mask(__A);
3192 }
3193 
test_mm_mask_shufflehi_epi16(__m128i __W,__mmask8 __U,__m128i __A)3194 __m128i test_mm_mask_shufflehi_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
3195   // CHECK-LABEL: @test_mm_mask_shufflehi_epi16
3196   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 5, i32 4, i32 4>
3197   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3198   return _mm_mask_shufflehi_epi16(__W, __U, __A, 5);
3199 }
3200 
test_mm_maskz_shufflehi_epi16(__mmask8 __U,__m128i __A)3201 __m128i test_mm_maskz_shufflehi_epi16(__mmask8 __U, __m128i __A) {
3202   // CHECK-LABEL: @test_mm_maskz_shufflehi_epi16
3203   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 5, i32 4, i32 4>
3204   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3205   return _mm_maskz_shufflehi_epi16(__U, __A, 5);
3206 }
3207 
test_mm_mask_shufflelo_epi16(__m128i __W,__mmask8 __U,__m128i __A)3208 __m128i test_mm_mask_shufflelo_epi16(__m128i __W, __mmask8 __U, __m128i __A) {
3209   // CHECK-LABEL: @test_mm_mask_shufflelo_epi16
3210   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <8 x i32> <i32 1, i32 1, i32 0, i32 0, i32 4, i32 5, i32 6, i32 7>
3211   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3212   return _mm_mask_shufflelo_epi16(__W, __U, __A, 5);
3213 }
3214 
test_mm_maskz_shufflelo_epi16(__mmask8 __U,__m128i __A)3215 __m128i test_mm_maskz_shufflelo_epi16(__mmask8 __U, __m128i __A) {
3216   // CHECK-LABEL: @test_mm_maskz_shufflelo_epi16
3217   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <8 x i32> <i32 1, i32 1, i32 0, i32 0, i32 4, i32 5, i32 6, i32 7>
3218   // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
3219   return _mm_maskz_shufflelo_epi16(__U, __A, 5);
3220 }
3221 
test_mm256_mask_shufflehi_epi16(__m256i __W,__mmask16 __U,__m256i __A)3222 __m256i test_mm256_mask_shufflehi_epi16(__m256i __W, __mmask16 __U, __m256i __A) {
3223   // CHECK-LABEL: @test_mm256_mask_shufflehi_epi16
3224   // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> undef, <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>
3225   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3226   return _mm256_mask_shufflehi_epi16(__W, __U, __A, 5);
3227 }
3228 
test_mm256_maskz_shufflehi_epi16(__mmask16 __U,__m256i __A)3229 __m256i test_mm256_maskz_shufflehi_epi16(__mmask16 __U, __m256i __A) {
3230   // CHECK-LABEL: @test_mm256_maskz_shufflehi_epi16
3231   // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> undef, <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>
3232   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3233   return _mm256_maskz_shufflehi_epi16(__U, __A, 5);
3234 }
3235 
test_mm256_mask_shufflelo_epi16(__m256i __W,__mmask16 __U,__m256i __A)3236 __m256i test_mm256_mask_shufflelo_epi16(__m256i __W, __mmask16 __U, __m256i __A) {
3237   // CHECK-LABEL: @test_mm256_mask_shufflelo_epi16
3238   // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> undef, <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>
3239   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3240   return _mm256_mask_shufflelo_epi16(__W, __U, __A, 5);
3241 }
3242 
test_mm256_maskz_shufflelo_epi16(__mmask16 __U,__m256i __A)3243 __m256i test_mm256_maskz_shufflelo_epi16(__mmask16 __U, __m256i __A) {
3244   // CHECK-LABEL: @test_mm256_maskz_shufflelo_epi16
3245   // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> undef, <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>
3246   // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
3247   return _mm256_maskz_shufflelo_epi16(__U, __A, 5);
3248 }
3249 
test_mm_mask_cvtepi16_storeu_epi8(void * __P,__mmask8 __M,__m128i __A)3250 void test_mm_mask_cvtepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
3251 {
3252  // CHECK-LABEL:@test_mm_mask_cvtepi16_storeu_epi8
3253  // CHECK: @llvm.x86.avx512.mask.pmov.wb.mem.128
3254  _mm_mask_cvtepi16_storeu_epi8 (__P, __M, __A);
3255 }
3256 
test_mm_mask_cvtsepi16_storeu_epi8(void * __P,__mmask8 __M,__m128i __A)3257 void test_mm_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
3258 {
3259  // CHECK-LABEL:@test_mm_mask_cvtsepi16_storeu_epi8
3260  // CHECK: @llvm.x86.avx512.mask.pmovs.wb.mem.128
3261   _mm_mask_cvtsepi16_storeu_epi8 ( __P,  __M, __A);
3262 }
3263 
test_mm_mask_cvtusepi16_storeu_epi8(void * __P,__mmask8 __M,__m128i __A)3264 void test_mm_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
3265 {
3266  // CHECK-LABEL:@test_mm_mask_cvtusepi16_storeu_epi8
3267  // CHECK: @llvm.x86.avx512.mask.pmovus.wb.mem.128
3268   _mm_mask_cvtusepi16_storeu_epi8 (__P, __M, __A);
3269 }
3270 
test_mm256_mask_cvtusepi16_storeu_epi8(void * __P,__mmask16 __M,__m256i __A)3271 void test_mm256_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A)
3272 {
3273  // CHECK-LABEL:@test_mm256_mask_cvtusepi16_storeu_epi8
3274  // CHECK: @llvm.x86.avx512.mask.pmovus.wb.mem.256
3275   _mm256_mask_cvtusepi16_storeu_epi8 ( __P, __M, __A);
3276 }
3277 
test_mm256_mask_cvtepi16_storeu_epi8(void * __P,__mmask16 __M,__m256i __A)3278 void test_mm256_mask_cvtepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A)
3279 {
3280  // CHECK-LABEL:@test_mm256_mask_cvtepi16_storeu_epi8
3281  // CHECK: @llvm.x86.avx512.mask.pmov.wb.mem.256
3282   _mm256_mask_cvtepi16_storeu_epi8 ( __P,  __M, __A);
3283 }
3284 
test_mm256_mask_cvtsepi16_storeu_epi8(void * __P,__mmask16 __M,__m256i __A)3285 void test_mm256_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A)
3286 {
3287  // CHECK-LABEL:@test_mm256_mask_cvtsepi16_storeu_epi8
3288  // CHECK: @llvm.x86.avx512.mask.pmovs.wb.mem.256
3289  _mm256_mask_cvtsepi16_storeu_epi8 ( __P, __M, __A);
3290 }
3291