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