• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // RUN: %clang_cc1 %s -O3 -triple=x86_64-apple-darwin -target-feature +avx2 -emit-llvm -o - | FileCheck %s
2 
3 // Don't include mm_malloc.h, it's system specific.
4 #define __MM_MALLOC_H
5 
6 #include <immintrin.h>
7 
test_mm256_mpsadbw_epu8(__m256i x,__m256i y)8 __m256i test_mm256_mpsadbw_epu8(__m256i x, __m256i y) {
9   // CHECK: @llvm.x86.avx2.mpsadbw({{.*}}, {{.*}}, i32 3)
10   return _mm256_mpsadbw_epu8(x, y, 3);
11 }
12 
test_mm256_abs_epi8(__m256i a)13 __m256i test_mm256_abs_epi8(__m256i a) {
14   // CHECK: @llvm.x86.avx2.pabs.b
15   return _mm256_abs_epi8(a);
16 }
17 
test_mm256_abs_epi16(__m256i a)18 __m256i test_mm256_abs_epi16(__m256i a) {
19   // CHECK: @llvm.x86.avx2.pabs.w
20   return _mm256_abs_epi16(a);
21 }
22 
test_mm256_abs_epi32(__m256i a)23 __m256i test_mm256_abs_epi32(__m256i a) {
24   // CHECK: @llvm.x86.avx2.pabs.d
25   return _mm256_abs_epi32(a);
26 }
27 
test_mm256_packs_epi16(__m256i a,__m256i b)28 __m256i test_mm256_packs_epi16(__m256i a, __m256i b) {
29   // CHECK: @llvm.x86.avx2.packsswb
30   return _mm256_packs_epi16(a, b);
31 }
32 
test_mm256_packs_epi32(__m256i a,__m256i b)33 __m256i test_mm256_packs_epi32(__m256i a, __m256i b) {
34   // CHECK: @llvm.x86.avx2.packssdw
35   return _mm256_packs_epi32(a, b);
36 }
37 
test_mm256_packs_epu16(__m256i a,__m256i b)38 __m256i test_mm256_packs_epu16(__m256i a, __m256i b) {
39   // CHECK: @llvm.x86.avx2.packuswb
40   return _mm256_packus_epi16(a, b);
41 }
42 
test_mm256_packs_epu32(__m256i a,__m256i b)43 __m256i test_mm256_packs_epu32(__m256i a, __m256i b) {
44   // CHECK: @llvm.x86.avx2.packusdw
45   return _mm256_packus_epi32(a, b);
46 }
47 
test_mm256_add_epi8(__m256i a,__m256i b)48 __m256i test_mm256_add_epi8(__m256i a, __m256i b) {
49   // CHECK: add <32 x i8>
50   return _mm256_add_epi8(a, b);
51 }
52 
test_mm256_add_epi16(__m256i a,__m256i b)53 __m256i test_mm256_add_epi16(__m256i a, __m256i b) {
54   // CHECK: add <16 x i16>
55   return _mm256_add_epi16(a, b);
56 }
57 
test_mm256_add_epi32(__m256i a,__m256i b)58 __m256i test_mm256_add_epi32(__m256i a, __m256i b) {
59   // CHECK: add <8 x i32>
60   return _mm256_add_epi32(a, b);
61 }
62 
test_mm256_add_epi64(__m256i a,__m256i b)63 __m256i test_mm256_add_epi64(__m256i a, __m256i b) {
64   // CHECK: add <4 x i64>
65   return _mm256_add_epi64(a, b);
66 }
67 
test_mm256_adds_epi8(__m256i a,__m256i b)68 __m256i test_mm256_adds_epi8(__m256i a, __m256i b) {
69   // CHECK: @llvm.x86.avx2.padds.b
70   return _mm256_adds_epi8(a, b);
71 }
72 
test_mm256_adds_epi16(__m256i a,__m256i b)73 __m256i test_mm256_adds_epi16(__m256i a, __m256i b) {
74   // CHECK: @llvm.x86.avx2.padds.w
75   return _mm256_adds_epi16(a, b);
76 }
77 
test_mm256_adds_epu8(__m256i a,__m256i b)78 __m256i test_mm256_adds_epu8(__m256i a, __m256i b) {
79   // CHECK: @llvm.x86.avx2.paddus.b
80   return _mm256_adds_epu8(a, b);
81 }
82 
test_mm256_adds_epu16(__m256i a,__m256i b)83 __m256i test_mm256_adds_epu16(__m256i a, __m256i b) {
84   // CHECK: @llvm.x86.avx2.paddus.w
85   return _mm256_adds_epu16(a, b);
86 }
87 
test_mm256_alignr_epi8(__m256i a,__m256i b)88 __m256i test_mm256_alignr_epi8(__m256i a, __m256i b) {
89   // 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>
90   return _mm256_alignr_epi8(a, b, 2);
91 }
92 
test2_mm256_alignr_epi8(__m256i a,__m256i b)93 __m256i test2_mm256_alignr_epi8(__m256i a, __m256i b) {
94   // CHECK: @llvm.x86.avx2.psrl.dq({{.*}}, i32 8)
95   return _mm256_alignr_epi8(a, b, 17);
96 }
97 
test_mm256_sub_epi8(__m256i a,__m256i b)98 __m256i test_mm256_sub_epi8(__m256i a, __m256i b) {
99   // CHECK: sub <32 x i8>
100   return _mm256_sub_epi8(a, b);
101 }
102 
test_mm256_sub_epi16(__m256i a,__m256i b)103 __m256i test_mm256_sub_epi16(__m256i a, __m256i b) {
104   // CHECK: sub <16 x i16>
105   return _mm256_sub_epi16(a, b);
106 }
107 
test_mm256_sub_epi32(__m256i a,__m256i b)108 __m256i test_mm256_sub_epi32(__m256i a, __m256i b) {
109   // CHECK: sub <8 x i32>
110   return _mm256_sub_epi32(a, b);
111 }
112 
test_mm256_sub_epi64(__m256i a,__m256i b)113 __m256i test_mm256_sub_epi64(__m256i a, __m256i b) {
114   // CHECK: sub <4 x i64>
115   return _mm256_sub_epi64(a, b);
116 }
117 
test_mm256_subs_epi8(__m256i a,__m256i b)118 __m256i test_mm256_subs_epi8(__m256i a, __m256i b) {
119   // CHECK: @llvm.x86.avx2.psubs.b
120   return _mm256_subs_epi8(a, b);
121 }
122 
test_mm256_subs_epi16(__m256i a,__m256i b)123 __m256i test_mm256_subs_epi16(__m256i a, __m256i b) {
124   // CHECK: @llvm.x86.avx2.psubs.w
125   return _mm256_subs_epi16(a, b);
126 }
127 
test_mm256_subs_epu8(__m256i a,__m256i b)128 __m256i test_mm256_subs_epu8(__m256i a, __m256i b) {
129   // CHECK: @llvm.x86.avx2.psubus.b
130   return _mm256_subs_epu8(a, b);
131 }
132 
test_mm256_subs_epu16(__m256i a,__m256i b)133 __m256i test_mm256_subs_epu16(__m256i a, __m256i b) {
134   // CHECK: @llvm.x86.avx2.psubus.w
135   return _mm256_subs_epu16(a, b);
136 }
137 
test_mm256_and_si256(__m256i a,__m256i b)138 __m256i test_mm256_and_si256(__m256i a, __m256i b) {
139   // CHECK: and <4 x i64>
140   return _mm256_and_si256(a, b);
141 }
142 
test_mm256_andnot_si256(__m256i a,__m256i b)143 __m256i test_mm256_andnot_si256(__m256i a, __m256i b) {
144   // CHECK: xor <4 x i64>
145   // CHECK: and <4 x i64>
146   return _mm256_andnot_si256(a, b);
147 }
148 
test_mm256_or_si256(__m256i a,__m256i b)149 __m256i test_mm256_or_si256(__m256i a, __m256i b) {
150   // CHECK: or <4 x i64>
151   return _mm256_or_si256(a, b);
152 }
153 
test_mm256_xor_si256(__m256i a,__m256i b)154 __m256i test_mm256_xor_si256(__m256i a, __m256i b) {
155   // CHECK: xor <4 x i64>
156   return _mm256_xor_si256(a, b);
157 }
158 
test_mm256_avg_epu8(__m256i a,__m256i b)159 __m256i test_mm256_avg_epu8(__m256i a, __m256i b) {
160   // CHECK: @llvm.x86.avx2.pavg.b
161   return _mm256_avg_epu8(a, b);
162 }
163 
test_mm256_avg_epu16(__m256i a,__m256i b)164 __m256i test_mm256_avg_epu16(__m256i a, __m256i b) {
165   // CHECK: @llvm.x86.avx2.pavg.w
166   return _mm256_avg_epu16(a, b);
167 }
168 
test_mm256_blendv_epi8(__m256i a,__m256i b,__m256i m)169 __m256i test_mm256_blendv_epi8(__m256i a, __m256i b, __m256i m) {
170   // CHECK: @llvm.x86.avx2.pblendvb
171   return _mm256_blendv_epi8(a, b, m);
172 }
173 
test_mm256_blend_epi16(__m256i a,__m256i b)174 __m256i test_mm256_blend_epi16(__m256i a, __m256i b) {
175   // CHECK: @llvm.x86.avx2.pblendw(<16 x i16> %{{.*}}, <16 x i16> %{{.*}}, i32 2)
176   return _mm256_blend_epi16(a, b, 2);
177 }
178 
test_mm256_cmpeq_epi8(__m256i a,__m256i b)179 __m256i test_mm256_cmpeq_epi8(__m256i a, __m256i b) {
180   // CHECK: icmp eq <32 x i8>
181   return _mm256_cmpeq_epi8(a, b);
182 }
183 
test_mm256_cmpeq_epi16(__m256i a,__m256i b)184 __m256i test_mm256_cmpeq_epi16(__m256i a, __m256i b) {
185   // CHECK: icmp eq <16 x i16>
186   return _mm256_cmpeq_epi16(a, b);
187 }
188 
test_mm256_cmpeq_epi32(__m256i a,__m256i b)189 __m256i test_mm256_cmpeq_epi32(__m256i a, __m256i b) {
190   // CHECK: icmp eq <8 x i32>
191   return _mm256_cmpeq_epi32(a, b);
192 }
193 
test_mm256_cmpeq_epi64(__m256i a,__m256i b)194 __m256i test_mm256_cmpeq_epi64(__m256i a, __m256i b) {
195   // CHECK: icmp eq <4 x i64>
196   return _mm256_cmpeq_epi64(a, b);
197 }
198 
test_mm256_cmpgt_epi8(__m256i a,__m256i b)199 __m256i test_mm256_cmpgt_epi8(__m256i a, __m256i b) {
200   // CHECK: icmp sgt <32 x i8>
201   return _mm256_cmpgt_epi8(a, b);
202 }
203 
test_mm256_cmpgt_epi16(__m256i a,__m256i b)204 __m256i test_mm256_cmpgt_epi16(__m256i a, __m256i b) {
205   // CHECK: icmp sgt <16 x i16>
206   return _mm256_cmpgt_epi16(a, b);
207 }
208 
test_mm256_cmpgt_epi32(__m256i a,__m256i b)209 __m256i test_mm256_cmpgt_epi32(__m256i a, __m256i b) {
210   // CHECK: icmp sgt <8 x i32>
211   return _mm256_cmpgt_epi32(a, b);
212 }
213 
test_mm256_cmpgt_epi64(__m256i a,__m256i b)214 __m256i test_mm256_cmpgt_epi64(__m256i a, __m256i b) {
215   // CHECK: icmp sgt <4 x i64>
216   return _mm256_cmpgt_epi64(a, b);
217 }
218 
test_mm256_hadd_epi16(__m256i a,__m256i b)219 __m256i test_mm256_hadd_epi16(__m256i a, __m256i b) {
220   // CHECK: @llvm.x86.avx2.phadd.w
221   return _mm256_hadd_epi16(a, b);
222 }
223 
test_mm256_hadd_epi32(__m256i a,__m256i b)224 __m256i test_mm256_hadd_epi32(__m256i a, __m256i b) {
225   // CHECK: @llvm.x86.avx2.phadd.d
226   return _mm256_hadd_epi32(a, b);
227 }
228 
test_mm256_hadds_epi16(__m256i a,__m256i b)229 __m256i test_mm256_hadds_epi16(__m256i a, __m256i b) {
230   // CHECK: @llvm.x86.avx2.phadd.sw
231   return _mm256_hadds_epi16(a, b);
232 }
233 
test_mm256_hsub_epi16(__m256i a,__m256i b)234 __m256i test_mm256_hsub_epi16(__m256i a, __m256i b) {
235   // CHECK: @llvm.x86.avx2.phsub.w
236   return _mm256_hsub_epi16(a, b);
237 }
238 
test_mm256_hsub_epi32(__m256i a,__m256i b)239 __m256i test_mm256_hsub_epi32(__m256i a, __m256i b) {
240   // CHECK: @llvm.x86.avx2.phsub.d
241   return _mm256_hsub_epi32(a, b);
242 }
243 
test_mm256_hsubs_epi16(__m256i a,__m256i b)244 __m256i test_mm256_hsubs_epi16(__m256i a, __m256i b) {
245   // CHECK: @llvm.x86.avx2.phsub.sw
246   return _mm256_hsubs_epi16(a, b);
247 }
248 
test_mm256_maddubs_epi16(__m256i a,__m256i b)249 __m256i test_mm256_maddubs_epi16(__m256i a, __m256i b) {
250   // CHECK: @llvm.x86.avx2.pmadd.ub.sw
251   return _mm256_maddubs_epi16(a, b);
252 }
253 
test_mm256_madd_epi16(__m256i a,__m256i b)254 __m256i test_mm256_madd_epi16(__m256i a, __m256i b) {
255   // CHECK: @llvm.x86.avx2.pmadd.wd
256   return _mm256_madd_epi16(a, b);
257 }
258 
test_mm256_max_epi8(__m256i a,__m256i b)259 __m256i test_mm256_max_epi8(__m256i a, __m256i b) {
260   // CHECK: @llvm.x86.avx2.pmaxs.b
261   return _mm256_max_epi8(a, b);
262 }
263 
test_mm256_max_epi16(__m256i a,__m256i b)264 __m256i test_mm256_max_epi16(__m256i a, __m256i b) {
265   // CHECK: @llvm.x86.avx2.pmaxs.w
266   return _mm256_max_epi16(a, b);
267 }
268 
test_mm256_max_epi32(__m256i a,__m256i b)269 __m256i test_mm256_max_epi32(__m256i a, __m256i b) {
270   // CHECK: @llvm.x86.avx2.pmaxs.d
271   return _mm256_max_epi32(a, b);
272 }
273 
test_mm256_max_epu8(__m256i a,__m256i b)274 __m256i test_mm256_max_epu8(__m256i a, __m256i b) {
275   // CHECK: @llvm.x86.avx2.pmaxu.b
276   return _mm256_max_epu8(a, b);
277 }
278 
test_mm256_max_epu16(__m256i a,__m256i b)279 __m256i test_mm256_max_epu16(__m256i a, __m256i b) {
280   // CHECK: @llvm.x86.avx2.pmaxu.w
281   return _mm256_max_epu16(a, b);
282 }
283 
test_mm256_max_epu32(__m256i a,__m256i b)284 __m256i test_mm256_max_epu32(__m256i a, __m256i b) {
285   // CHECK: @llvm.x86.avx2.pmaxu.d
286   return _mm256_max_epu32(a, b);
287 }
288 
test_mm256_min_epi8(__m256i a,__m256i b)289 __m256i test_mm256_min_epi8(__m256i a, __m256i b) {
290   // CHECK: @llvm.x86.avx2.pmins.b
291   return _mm256_min_epi8(a, b);
292 }
293 
test_mm256_min_epi16(__m256i a,__m256i b)294 __m256i test_mm256_min_epi16(__m256i a, __m256i b) {
295   // CHECK: @llvm.x86.avx2.pmins.w
296   return _mm256_min_epi16(a, b);
297 }
298 
test_mm256_min_epi32(__m256i a,__m256i b)299 __m256i test_mm256_min_epi32(__m256i a, __m256i b) {
300   // CHECK: @llvm.x86.avx2.pmins.d
301   return _mm256_min_epi32(a, b);
302 }
303 
test_mm256_min_epu8(__m256i a,__m256i b)304 __m256i test_mm256_min_epu8(__m256i a, __m256i b) {
305   // CHECK: @llvm.x86.avx2.pminu.b
306   return _mm256_min_epu8(a, b);
307 }
308 
test_mm256_min_epu16(__m256i a,__m256i b)309 __m256i test_mm256_min_epu16(__m256i a, __m256i b) {
310   // CHECK: @llvm.x86.avx2.pminu.w
311   return _mm256_min_epu16(a, b);
312 }
313 
test_mm256_min_epu32(__m256i a,__m256i b)314 __m256i test_mm256_min_epu32(__m256i a, __m256i b) {
315   // CHECK: @llvm.x86.avx2.pminu.d
316   return _mm256_min_epu32(a, b);
317 }
318 
test_mm256_movemask_epi8(__m256i a)319 int test_mm256_movemask_epi8(__m256i a) {
320   // CHECK: @llvm.x86.avx2.pmovmskb
321   return _mm256_movemask_epi8(a);
322 }
323 
test_mm256_cvtepi8_epi16(__m128i a)324 __m256i test_mm256_cvtepi8_epi16(__m128i a) {
325   // CHECK: @llvm.x86.avx2.pmovsxbw
326   return _mm256_cvtepi8_epi16(a);
327 }
328 
test_mm256_cvtepi8_epi32(__m128i a)329 __m256i test_mm256_cvtepi8_epi32(__m128i a) {
330   // CHECK: @llvm.x86.avx2.pmovsxbd
331   return _mm256_cvtepi8_epi32(a);
332 }
333 
test_mm256_cvtepi8_epi64(__m128i a)334 __m256i test_mm256_cvtepi8_epi64(__m128i a) {
335   // CHECK: @llvm.x86.avx2.pmovsxbq
336   return _mm256_cvtepi8_epi64(a);
337 }
338 
test_mm256_cvtepi16_epi32(__m128i a)339 __m256i test_mm256_cvtepi16_epi32(__m128i a) {
340   // CHECK: @llvm.x86.avx2.pmovsxwd
341   return _mm256_cvtepi16_epi32(a);
342 }
343 
test_mm256_cvtepi16_epi64(__m128i a)344 __m256i test_mm256_cvtepi16_epi64(__m128i a) {
345   // CHECK: @llvm.x86.avx2.pmovsxwq
346   return _mm256_cvtepi16_epi64(a);
347 }
348 
test_mm256_cvtepi32_epi64(__m128i a)349 __m256i test_mm256_cvtepi32_epi64(__m128i a) {
350   // CHECK: @llvm.x86.avx2.pmovsxdq
351   return _mm256_cvtepi32_epi64(a);
352 }
353 
test_mm256_cvtepu8_epi16(__m128i a)354 __m256i test_mm256_cvtepu8_epi16(__m128i a) {
355   // CHECK: @llvm.x86.avx2.pmovzxbw
356   return _mm256_cvtepu8_epi16(a);
357 }
358 
test_mm256_cvtepu8_epi32(__m128i a)359 __m256i test_mm256_cvtepu8_epi32(__m128i a) {
360   // CHECK: @llvm.x86.avx2.pmovzxbd
361   return _mm256_cvtepu8_epi32(a);
362 }
363 
test_mm256_cvtepu8_epi64(__m128i a)364 __m256i test_mm256_cvtepu8_epi64(__m128i a) {
365   // CHECK: @llvm.x86.avx2.pmovzxbq
366   return _mm256_cvtepu8_epi64(a);
367 }
368 
test_mm256_cvtepu16_epi32(__m128i a)369 __m256i test_mm256_cvtepu16_epi32(__m128i a) {
370   // CHECK: @llvm.x86.avx2.pmovzxwd
371   return _mm256_cvtepu16_epi32(a);
372 }
373 
test_mm256_cvtepu16_epi64(__m128i a)374 __m256i test_mm256_cvtepu16_epi64(__m128i a) {
375   // CHECK: @llvm.x86.avx2.pmovzxwq
376   return _mm256_cvtepu16_epi64(a);
377 }
378 
test_mm256_cvtepu32_epi64(__m128i a)379 __m256i test_mm256_cvtepu32_epi64(__m128i a) {
380   // CHECK: @llvm.x86.avx2.pmovzxdq
381   return _mm256_cvtepu32_epi64(a);
382 }
383 
test_mm256_mul_epi32(__m256i a,__m256i b)384 __m256i test_mm256_mul_epi32(__m256i a, __m256i b) {
385   // CHECK: @llvm.x86.avx2.pmul.dq
386   return _mm256_mul_epi32(a, b);
387 }
388 
test_mm256_mulhrs_epi16(__m256i a,__m256i b)389 __m256i test_mm256_mulhrs_epi16(__m256i a, __m256i b) {
390   // CHECK: @llvm.x86.avx2.pmul.hr.sw
391   return _mm256_mulhrs_epi16(a, b);
392 }
393 
test_mm256_mulhi_epu16(__m256i a,__m256i b)394 __m256i test_mm256_mulhi_epu16(__m256i a, __m256i b) {
395   // CHECK: @llvm.x86.avx2.pmulhu.w
396   return _mm256_mulhi_epu16(a, b);
397 }
398 
test_mm256_mulhi_epi16(__m256i a,__m256i b)399 __m256i test_mm256_mulhi_epi16(__m256i a, __m256i b) {
400   // CHECK: @llvm.x86.avx2.pmulh.w
401   return _mm256_mulhi_epi16(a, b);
402 }
403 
test_mm256_mullo_epi16(__m256i a,__m256i b)404 __m256i test_mm256_mullo_epi16(__m256i a, __m256i b) {
405   // CHECK: mul <16 x i16>
406   return _mm256_mullo_epi16(a, b);
407 }
408 
test_mm256_mullo_epi32(__m256i a,__m256i b)409 __m256i test_mm256_mullo_epi32(__m256i a, __m256i b) {
410   // CHECK: mul <8 x i32>
411   return _mm256_mullo_epi32(a, b);
412 }
413 
test_mm256_mul_epu32(__m256i a,__m256i b)414 __m256i test_mm256_mul_epu32(__m256i a, __m256i b) {
415   // CHECK: @llvm.x86.avx2.pmulu.dq
416   return _mm256_mul_epu32(a, b);
417 }
418 
test_mm256_shuffle_epi8(__m256i a,__m256i b)419 __m256i test_mm256_shuffle_epi8(__m256i a, __m256i b) {
420   // CHECK: @llvm.x86.avx2.pshuf.b
421   return _mm256_shuffle_epi8(a, b);
422 }
423 
test_mm256_shuffle_epi32(__m256i a)424 __m256i test_mm256_shuffle_epi32(__m256i a) {
425   // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> undef, <8 x i32> <i32 3, i32 3, i32 0, i32 0, i32 7, i32 7, i32 4, i32 4>
426   return _mm256_shuffle_epi32(a, 15);
427 }
428 
test_mm256_shufflehi_epi16(__m256i a)429 __m256i test_mm256_shufflehi_epi16(__m256i a) {
430   // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 7, i32 6, i32 6, i32 5, i32 8, i32 9, i32 10, i32 11, i32 15, i32 14, i32 14, i32 13>
431   return _mm256_shufflehi_epi16(a, 107);
432 }
433 
test_mm256_shufflelo_epi16(__m256i a)434 __m256i test_mm256_shufflelo_epi16(__m256i a) {
435   // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> undef, <16 x i32> <i32 3, i32 0, i32 1, i32 1, i32 4, i32 5, i32 6, i32 7, i32 11, i32 8, i32 9, i32 9, i32 12, i32 13, i32 14, i32 15>
436   return _mm256_shufflelo_epi16(a, 83);
437 }
438 
test_mm256_sign_epi8(__m256i a,__m256i b)439 __m256i test_mm256_sign_epi8(__m256i a, __m256i b) {
440   // CHECK: @llvm.x86.avx2.psign.b
441   return _mm256_sign_epi8(a, b);
442 }
443 
test_mm256_sign_epi16(__m256i a,__m256i b)444 __m256i test_mm256_sign_epi16(__m256i a, __m256i b) {
445   // CHECK: @llvm.x86.avx2.psign.w
446   return _mm256_sign_epi16(a, b);
447 }
448 
test_mm256_sign_epi32(__m256i a,__m256i b)449 __m256i test_mm256_sign_epi32(__m256i a, __m256i b) {
450   // CHECK: @llvm.x86.avx2.psign.d
451   return _mm256_sign_epi32(a, b);
452 }
453 
test_mm256_slli_si256(__m256i a)454 __m256i test_mm256_slli_si256(__m256i a) {
455   // CHECK: @llvm.x86.avx2.psll.dq
456   return _mm256_slli_si256(a, 3);
457 }
458 
test_mm256_slli_epi16(__m256i a)459 __m256i test_mm256_slli_epi16(__m256i a) {
460   // CHECK: @llvm.x86.avx2.pslli.w
461   return _mm256_slli_epi16(a, 3);
462 }
463 
test_mm256_sll_epi16(__m256i a,__m128i b)464 __m256i test_mm256_sll_epi16(__m256i a, __m128i b) {
465   // CHECK: @llvm.x86.avx2.psll.w
466   return _mm256_sll_epi16(a, b);
467 }
468 
test_mm256_slli_epi32(__m256i a)469 __m256i test_mm256_slli_epi32(__m256i a) {
470   // CHECK: @llvm.x86.avx2.pslli.d
471   return _mm256_slli_epi32(a, 3);
472 }
473 
test_mm256_sll_epi32(__m256i a,__m128i b)474 __m256i test_mm256_sll_epi32(__m256i a, __m128i b) {
475   // CHECK: @llvm.x86.avx2.psll.d
476   return _mm256_sll_epi32(a, b);
477 }
478 
test_mm256_slli_epi64(__m256i a)479 __m256i test_mm256_slli_epi64(__m256i a) {
480   // CHECK: @llvm.x86.avx2.pslli.q
481   return _mm256_slli_epi64(a, 3);
482 }
483 
test_mm256_sll_epi64(__m256i a,__m128i b)484 __m256i test_mm256_sll_epi64(__m256i a, __m128i b) {
485   // CHECK: @llvm.x86.avx2.psll.q
486   return _mm256_sll_epi64(a, b);
487 }
488 
test_mm256_srai_epi16(__m256i a)489 __m256i test_mm256_srai_epi16(__m256i a) {
490   // CHECK: @llvm.x86.avx2.psrai.w
491   return _mm256_srai_epi16(a, 3);
492 }
493 
test_mm256_sra_epi16(__m256i a,__m128i b)494 __m256i test_mm256_sra_epi16(__m256i a, __m128i b) {
495   // CHECK: @llvm.x86.avx2.psra.w
496   return _mm256_sra_epi16(a, b);
497 }
498 
test_mm256_srai_epi32(__m256i a)499 __m256i test_mm256_srai_epi32(__m256i a) {
500   // CHECK: @llvm.x86.avx2.psrai.d
501   return _mm256_srai_epi32(a, 3);
502 }
503 
test_mm256_sra_epi32(__m256i a,__m128i b)504 __m256i test_mm256_sra_epi32(__m256i a, __m128i b) {
505   // CHECK: @llvm.x86.avx2.psra.d
506   return _mm256_sra_epi32(a, b);
507 }
508 
test_mm256_srli_si256(__m256i a)509 __m256i test_mm256_srli_si256(__m256i a) {
510   // CHECK: @llvm.x86.avx2.psrl.dq
511   return _mm256_srli_si256(a, 3);
512 }
513 
test_mm256_srli_epi16(__m256i a)514 __m256i test_mm256_srli_epi16(__m256i a) {
515   // CHECK: @llvm.x86.avx2.psrli.w
516   return _mm256_srli_epi16(a, 3);
517 }
518 
test_mm256_srl_epi16(__m256i a,__m128i b)519 __m256i test_mm256_srl_epi16(__m256i a, __m128i b) {
520   // CHECK: @llvm.x86.avx2.psrl.w
521   return _mm256_srl_epi16(a, b);
522 }
523 
test_mm256_srli_epi32(__m256i a)524 __m256i test_mm256_srli_epi32(__m256i a) {
525   // CHECK: @llvm.x86.avx2.psrli.d
526   return _mm256_srli_epi32(a, 3);
527 }
528 
test_mm256_srl_epi32(__m256i a,__m128i b)529 __m256i test_mm256_srl_epi32(__m256i a, __m128i b) {
530   // CHECK: @llvm.x86.avx2.psrl.d
531   return _mm256_srl_epi32(a, b);
532 }
533 
test_mm256_srli_epi64(__m256i a)534 __m256i test_mm256_srli_epi64(__m256i a) {
535   // CHECK: @llvm.x86.avx2.psrli.q
536   return _mm256_srli_epi64(a, 3);
537 }
538 
test_mm256_srl_epi64(__m256i a,__m128i b)539 __m256i test_mm256_srl_epi64(__m256i a, __m128i b) {
540   // CHECK: @llvm.x86.avx2.psrl.q
541   return _mm256_srl_epi64(a, b);
542 }
543 
test_mm256_unpackhi_epi8(__m256i a,__m256i b)544 __m256i test_mm256_unpackhi_epi8(__m256i a, __m256i b) {
545   // 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>
546   return _mm256_unpackhi_epi8(a, b);
547 }
548 
test_mm256_unpackhi_epi16(__m256i a,__m256i b)549 __m256i test_mm256_unpackhi_epi16(__m256i a, __m256i b) {
550   // 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>
551   return _mm256_unpackhi_epi16(a, b);
552 }
553 
test_mm256_unpackhi_epi32(__m256i a,__m256i b)554 __m256i test_mm256_unpackhi_epi32(__m256i a, __m256i b) {
555   // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 2, i32 10, i32 3, i32 11, i32 6, i32 14, i32 7, i32 15>
556   return _mm256_unpackhi_epi32(a, b);
557 }
558 
test_mm256_unpackhi_epi64(__m256i a,__m256i b)559 __m256i test_mm256_unpackhi_epi64(__m256i a, __m256i b) {
560   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
561   return _mm256_unpackhi_epi64(a, b);
562 }
563 
test_mm256_unpacklo_epi8(__m256i a,__m256i b)564 __m256i test_mm256_unpacklo_epi8(__m256i a, __m256i b) {
565   // 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>
566   return _mm256_unpacklo_epi8(a, b);
567 }
568 
test_mm256_unpacklo_epi16(__m256i a,__m256i b)569 __m256i test_mm256_unpacklo_epi16(__m256i a, __m256i b) {
570   // 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>
571   return _mm256_unpacklo_epi16(a, b);
572 }
573 
test_mm256_unpacklo_epi32(__m256i a,__m256i b)574 __m256i test_mm256_unpacklo_epi32(__m256i a, __m256i b) {
575   // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 4, i32 12, i32 5, i32 13>
576   return _mm256_unpacklo_epi32(a, b);
577 }
578 
test_mm256_unpacklo_epi64(__m256i a,__m256i b)579 __m256i test_mm256_unpacklo_epi64(__m256i a, __m256i b) {
580   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
581   return _mm256_unpacklo_epi64(a, b);
582 }
583 
test_mm256_stream_load_si256(__m256i * a)584 __m256i test_mm256_stream_load_si256(__m256i *a) {
585   // CHECK: @llvm.x86.avx2.movntdqa
586   return _mm256_stream_load_si256(a);
587 }
588 
test_mm_broadcastss_ps(__m128 a)589 __m128 test_mm_broadcastss_ps(__m128 a) {
590   // CHECK: @llvm.x86.avx2.vbroadcast.ss.ps
591   return _mm_broadcastss_ps(a);
592 }
593 
test_mm256_broadcastss_ps(__m128 a)594 __m256 test_mm256_broadcastss_ps(__m128 a) {
595   // CHECK: @llvm.x86.avx2.vbroadcast.ss.ps.256
596   return _mm256_broadcastss_ps(a);
597 }
598 
test_mm256_broadcastsd_pd(__m128d a)599 __m256d test_mm256_broadcastsd_pd(__m128d a) {
600   // check: @llvm.x86.avx2.vbroadcast.sd.pd.256
601   return _mm256_broadcastsd_pd(a);
602 }
603 
test_mm_broadcastsi128_si256(__m128i * a)604 __m256i test_mm_broadcastsi128_si256(__m128i *a) {
605   // CHECK: @llvm.x86.avx2.vbroadcasti128
606   return _mm_broadcastsi128_si256(a);
607 }
608 
test_mm_blend_epi32(__m128i a,__m128i b)609 __m128i test_mm_blend_epi32(__m128i a, __m128i b) {
610   // CHECK: @llvm.x86.avx2.pblendd.128
611   return _mm_blend_epi32(a, b, 57);
612 }
613 
test_mm256_blend_epi32(__m256i a,__m256i b)614 __m256i test_mm256_blend_epi32(__m256i a, __m256i b) {
615   // CHECK: @llvm.x86.avx2.pblendd.256
616   return _mm256_blend_epi32(a, b, 57);
617 }
618 
test_mm256_broadcastb_epi8(__m128i a)619 __m256i test_mm256_broadcastb_epi8(__m128i a) {
620   // CHECK: @llvm.x86.avx2.pbroadcastb.256
621   return _mm256_broadcastb_epi8(a);
622 }
623 
test_mm256_broadcastw_epi16(__m128i a)624 __m256i test_mm256_broadcastw_epi16(__m128i a) {
625   // CHECK: @llvm.x86.avx2.pbroadcastw.256
626   return _mm256_broadcastw_epi16(a);
627 }
628 
test_mm256_broadcastd_epi32(__m128i a)629 __m256i test_mm256_broadcastd_epi32(__m128i a) {
630   // CHECK: @llvm.x86.avx2.pbroadcastd.256
631   return _mm256_broadcastd_epi32(a);
632 }
633 
test_mm256_broadcastq_epi64(__m128i a)634 __m256i test_mm256_broadcastq_epi64(__m128i a) {
635   // CHECK: @llvm.x86.avx2.pbroadcastq.256
636   return _mm256_broadcastq_epi64(a);
637 }
638 
test_mm_broadcastb_epi8(__m128i a)639 __m128i test_mm_broadcastb_epi8(__m128i a) {
640   // CHECK: @llvm.x86.avx2.pbroadcastb.128
641   return _mm_broadcastb_epi8(a);
642 }
643 
test_mm_broadcastw_epi16(__m128i a)644 __m128i test_mm_broadcastw_epi16(__m128i a) {
645   // CHECK: @llvm.x86.avx2.pbroadcastw.128
646   return _mm_broadcastw_epi16(a);
647 }
648 
test_mm_broadcastd_epi32(__m128i a)649 __m128i test_mm_broadcastd_epi32(__m128i a) {
650   // CHECK: @llvm.x86.avx2.pbroadcastd.128
651   return _mm_broadcastd_epi32(a);
652 }
653 
test_mm_broadcastq_epi64(__m128i a)654 __m128i test_mm_broadcastq_epi64(__m128i a) {
655   // CHECK: @llvm.x86.avx2.pbroadcastq.128
656   return _mm_broadcastq_epi64(a);
657 }
658 
test_mm256_permutevar8x32_epi32(__m256i a,__m256i b)659 __m256i test_mm256_permutevar8x32_epi32(__m256i a, __m256i b) {
660   // CHECK: @llvm.x86.avx2.permd
661   return _mm256_permutevar8x32_epi32(a, b);
662 }
663 
test_mm256_permute4x64_pd(__m256d a)664 __m256d test_mm256_permute4x64_pd(__m256d a) {
665   // CHECK: shufflevector{{.*}}<i32 1, i32 2, i32 1, i32 0>
666   return _mm256_permute4x64_pd(a, 25);
667 }
668 
test_mm256_permutevar8x32_ps(__m256 a,__m256 b)669 __m256 test_mm256_permutevar8x32_ps(__m256 a, __m256 b) {
670   // CHECK: @llvm.x86.avx2.permps
671   return _mm256_permutevar8x32_ps(a, b);
672 }
673 
test_mm256_permute4x64_epi64(__m256i a)674 __m256i test_mm256_permute4x64_epi64(__m256i a) {
675   // CHECK: shufflevector{{.*}}<i32 3, i32 0, i32 2, i32 0>
676   return _mm256_permute4x64_epi64(a, 35);
677 }
678 
test_mm256_permute2x128_si256(__m256i a,__m256i b)679 __m256i test_mm256_permute2x128_si256(__m256i a, __m256i b) {
680   // CHECK: @llvm.x86.avx2.vperm2i128
681   return _mm256_permute2x128_si256(a, b, 0x31);
682 }
683 
test_mm256_extracti128_si256(__m256i a)684 __m128i test_mm256_extracti128_si256(__m256i a) {
685   // CHECK: @llvm.x86.avx2.vextracti128
686   return _mm256_extracti128_si256(a, 1);
687 }
688 
test_mm256_inserti128_si256(__m256i a,__m128i b)689 __m256i test_mm256_inserti128_si256(__m256i a, __m128i b) {
690   // CHECK: @llvm.x86.avx2.vinserti128
691   return _mm256_inserti128_si256(a, b, 1);
692 }
693 
test_mm256_maskload_epi32(int const * a,__m256i m)694 __m256i test_mm256_maskload_epi32(int const *a, __m256i m) {
695   // CHECK: @llvm.x86.avx2.maskload.d.256
696   return _mm256_maskload_epi32(a, m);
697 }
698 
test_mm256_maskload_epi64(long long const * a,__m256i m)699 __m256i test_mm256_maskload_epi64(long long const *a, __m256i m) {
700   // CHECK: @llvm.x86.avx2.maskload.q.256
701   return _mm256_maskload_epi64(a, m);
702 }
703 
test_mm_maskload_epi32(int const * a,__m128i m)704 __m128i test_mm_maskload_epi32(int const *a, __m128i m) {
705   // CHECK: @llvm.x86.avx2.maskload.d
706   return _mm_maskload_epi32(a, m);
707 }
708 
test_mm_maskload_epi64(long long const * a,__m128i m)709 __m128i test_mm_maskload_epi64(long long const *a, __m128i m) {
710   // CHECK: @llvm.x86.avx2.maskload.q
711   return _mm_maskload_epi64(a, m);
712 }
713 
test_mm256_maskstore_epi32(int * a,__m256i m,__m256i b)714 void test_mm256_maskstore_epi32(int *a, __m256i m, __m256i b) {
715   // CHECK: @llvm.x86.avx2.maskstore.d.256
716   _mm256_maskstore_epi32(a, m, b);
717 }
718 
test_mm256_maskstore_epi64(long long * a,__m256i m,__m256i b)719 void test_mm256_maskstore_epi64(long long *a, __m256i m, __m256i b) {
720   // CHECK: @llvm.x86.avx2.maskstore.q.256
721   _mm256_maskstore_epi64(a, m, b);
722 }
723 
test_mm_maskstore_epi32(int * a,__m128i m,__m128i b)724 void test_mm_maskstore_epi32(int *a, __m128i m, __m128i b) {
725   // CHECK: @llvm.x86.avx2.maskstore.d
726   _mm_maskstore_epi32(a, m, b);
727 }
728 
test_mm_maskstore_epi64(long long * a,__m128i m,__m128i b)729 void test_mm_maskstore_epi64(long long *a, __m128i m, __m128i b) {
730   // CHECK: @llvm.x86.avx2.maskstore.q
731   _mm_maskstore_epi64(a, m, b);
732 }
733 
test_mm256_sllv_epi32(__m256i a,__m256i b)734 __m256i test_mm256_sllv_epi32(__m256i a, __m256i b) {
735   // CHECK: @llvm.x86.avx2.psllv.d.256
736   return _mm256_sllv_epi32(a, b);
737 }
738 
test_mm_sllv_epi32(__m128i a,__m128i b)739 __m128i test_mm_sllv_epi32(__m128i a, __m128i b) {
740   // CHECK: @llvm.x86.avx2.psllv.d
741   return _mm_sllv_epi32(a, b);
742 }
743 
test_mm256_sllv_epi64(__m256i a,__m256i b)744 __m256i test_mm256_sllv_epi64(__m256i a, __m256i b) {
745   // CHECK: @llvm.x86.avx2.psllv.q.256
746   return _mm256_sllv_epi64(a, b);
747 }
748 
test_mm_sllv_epi64(__m128i a,__m128i b)749 __m128i test_mm_sllv_epi64(__m128i a, __m128i b) {
750   // CHECK: @llvm.x86.avx2.psllv.q
751   return _mm_sllv_epi64(a, b);
752 }
753 
test_mm256_srav_epi32(__m256i a,__m256i b)754 __m256i test_mm256_srav_epi32(__m256i a, __m256i b) {
755   // CHECK: @llvm.x86.avx2.psrav.d.256
756   return _mm256_srav_epi32(a, b);
757 }
758 
test_mm_srav_epi32(__m128i a,__m128i b)759 __m128i test_mm_srav_epi32(__m128i a, __m128i b) {
760   // CHECK: @llvm.x86.avx2.psrav.d
761   return _mm_srav_epi32(a, b);
762 }
763 
test_mm256_srlv_epi32(__m256i a,__m256i b)764 __m256i test_mm256_srlv_epi32(__m256i a, __m256i b) {
765   // CHECK: @llvm.x86.avx2.psrlv.d.256
766   return _mm256_srlv_epi32(a, b);
767 }
768 
test_mm_srlv_epi32(__m128i a,__m128i b)769 __m128i test_mm_srlv_epi32(__m128i a, __m128i b) {
770   // CHECK: @llvm.x86.avx2.psrlv.d
771   return _mm_srlv_epi32(a, b);
772 }
773 
test_mm256_srlv_epi64(__m256i a,__m256i b)774 __m256i test_mm256_srlv_epi64(__m256i a, __m256i b) {
775   // CHECK: @llvm.x86.avx2.psrlv.q.256
776   return _mm256_srlv_epi64(a, b);
777 }
778 
test_mm_srlv_epi64(__m128i a,__m128i b)779 __m128i test_mm_srlv_epi64(__m128i a, __m128i b) {
780   // CHECK: @llvm.x86.avx2.psrlv.q
781   return _mm_srlv_epi64(a, b);
782 }
783