blob: b5bc605031737dc23cc536d349fd702464bc134e [file] [log] [blame]
Craig Topper925be542011-12-19 05:04:33 +00001// 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
Craig Toppercbe627b2011-12-24 03:28:57 +00008__m256i test_mm256_mpsadbw_epu8(__m256i x, __m256i y) {
Craig Topper925be542011-12-19 05:04:33 +00009 // CHECK: @llvm.x86.avx2.mpsadbw({{.*}}, {{.*}}, i32 3)
10 return _mm256_mpsadbw_epu8(x, y, 3);
11}
12
Manman Renc84804a2012-06-29 00:54:35 +000013__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
Craig Toppercbe627b2011-12-24 03:28:57 +000018__m256i test_mm256_abs_epi8(__m256i a) {
Craig Topper925be542011-12-19 05:04:33 +000019 // CHECK: @llvm.x86.avx2.pabs.b
20 return _mm256_abs_epi8(a);
21}
22
Craig Toppercbe627b2011-12-24 03:28:57 +000023__m256i test_mm256_abs_epi16(__m256i a) {
Craig Topper925be542011-12-19 05:04:33 +000024 // CHECK: @llvm.x86.avx2.pabs.w
25 return _mm256_abs_epi16(a);
26}
27
Craig Toppercbe627b2011-12-24 03:28:57 +000028__m256i test_mm256_abs_epi32(__m256i a) {
Craig Topper925be542011-12-19 05:04:33 +000029 // CHECK: @llvm.x86.avx2.pabs.d
30 return _mm256_abs_epi32(a);
31}
32
Craig Toppercbe627b2011-12-24 03:28:57 +000033__m256i test_mm256_packs_epi16(__m256i a, __m256i b) {
Craig Topper925be542011-12-19 05:04:33 +000034 // CHECK: @llvm.x86.avx2.packsswb
35 return _mm256_packs_epi16(a, b);
36}
37
Craig Toppercbe627b2011-12-24 03:28:57 +000038__m256i test_mm256_packs_epi32(__m256i a, __m256i b) {
Craig Topper925be542011-12-19 05:04:33 +000039 // CHECK: @llvm.x86.avx2.packssdw
40 return _mm256_packs_epi32(a, b);
41}
42
Craig Toppercbe627b2011-12-24 03:28:57 +000043__m256i test_mm256_packs_epu16(__m256i a, __m256i b) {
Craig Topper925be542011-12-19 05:04:33 +000044 // CHECK: @llvm.x86.avx2.packuswb
45 return _mm256_packus_epi16(a, b);
46}
47
Craig Toppercbe627b2011-12-24 03:28:57 +000048__m256i test_mm256_packs_epu32(__m256i a, __m256i b) {
Craig Topper925be542011-12-19 05:04:33 +000049 // CHECK: @llvm.x86.avx2.packusdw
50 return _mm256_packus_epi32(a, b);
51}
52
Craig Toppercbe627b2011-12-24 03:28:57 +000053__m256i test_mm256_add_epi8(__m256i a, __m256i b) {
Craig Topper925be542011-12-19 05:04:33 +000054 // CHECK: add <32 x i8>
55 return _mm256_add_epi8(a, b);
56}
57
Craig Toppercbe627b2011-12-24 03:28:57 +000058__m256i test_mm256_add_epi16(__m256i a, __m256i b) {
Craig Topper925be542011-12-19 05:04:33 +000059 // CHECK: add <16 x i16>
60 return _mm256_add_epi16(a, b);
61}
62
Craig Toppercbe627b2011-12-24 03:28:57 +000063__m256i test_mm256_add_epi32(__m256i a, __m256i b) {
Craig Topper925be542011-12-19 05:04:33 +000064 // CHECK: add <8 x i32>
65 return _mm256_add_epi32(a, b);
66}
67
Craig Toppercbe627b2011-12-24 03:28:57 +000068__m256i test_mm256_add_epi64(__m256i a, __m256i b) {
Craig Topper925be542011-12-19 05:04:33 +000069 // CHECK: add <4 x i64>
70 return _mm256_add_epi64(a, b);
71}
72
Craig Toppercbe627b2011-12-24 03:28:57 +000073__m256i test_mm256_adds_epi8(__m256i a, __m256i b) {
Craig Topper9c2ffd82011-12-19 07:03:25 +000074 // CHECK: @llvm.x86.avx2.padds.b
75 return _mm256_adds_epi8(a, b);
76}
77
Craig Toppercbe627b2011-12-24 03:28:57 +000078__m256i test_mm256_adds_epi16(__m256i a, __m256i b) {
Craig Topper9c2ffd82011-12-19 07:03:25 +000079 // CHECK: @llvm.x86.avx2.padds.w
80 return _mm256_adds_epi16(a, b);
81}
82
Craig Toppercbe627b2011-12-24 03:28:57 +000083__m256i test_mm256_adds_epu8(__m256i a, __m256i b) {
Craig Topper9c2ffd82011-12-19 07:03:25 +000084 // CHECK: @llvm.x86.avx2.paddus.b
85 return _mm256_adds_epu8(a, b);
86}
87
Craig Toppercbe627b2011-12-24 03:28:57 +000088__m256i test_mm256_adds_epu16(__m256i a, __m256i b) {
Craig Topper9c2ffd82011-12-19 07:03:25 +000089 // CHECK: @llvm.x86.avx2.paddus.w
90 return _mm256_adds_epu16(a, b);
91}
92
Craig Toppercbe627b2011-12-24 03:28:57 +000093__m256i test_mm256_alignr_epi8(__m256i a, __m256i b) {
Eli Friedmanaad21d72011-12-19 20:09:01 +000094 // 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>
Craig Topper9c2ffd82011-12-19 07:03:25 +000095 return _mm256_alignr_epi8(a, b, 2);
96}
97
Craig Toppercbe627b2011-12-24 03:28:57 +000098__m256i test2_mm256_alignr_epi8(__m256i a, __m256i b) {
Craig Topper9c2ffd82011-12-19 07:03:25 +000099 // CHECK: @llvm.x86.avx2.psrl.dq({{.*}}, i32 8)
100 return _mm256_alignr_epi8(a, b, 17);
101}
102
Craig Toppercbe627b2011-12-24 03:28:57 +0000103__m256i test_mm256_sub_epi8(__m256i a, __m256i b) {
Craig Topper925be542011-12-19 05:04:33 +0000104 // CHECK: sub <32 x i8>
105 return _mm256_sub_epi8(a, b);
106}
107
Craig Toppercbe627b2011-12-24 03:28:57 +0000108__m256i test_mm256_sub_epi16(__m256i a, __m256i b) {
Craig Topper925be542011-12-19 05:04:33 +0000109 // CHECK: sub <16 x i16>
110 return _mm256_sub_epi16(a, b);
111}
112
Craig Toppercbe627b2011-12-24 03:28:57 +0000113__m256i test_mm256_sub_epi32(__m256i a, __m256i b) {
Craig Topper925be542011-12-19 05:04:33 +0000114 // CHECK: sub <8 x i32>
115 return _mm256_sub_epi32(a, b);
116}
117
Craig Toppercbe627b2011-12-24 03:28:57 +0000118__m256i test_mm256_sub_epi64(__m256i a, __m256i b) {
Craig Topper925be542011-12-19 05:04:33 +0000119 // CHECK: sub <4 x i64>
120 return _mm256_sub_epi64(a, b);
121}
Craig Topper9c2ffd82011-12-19 07:03:25 +0000122
Craig Toppercbe627b2011-12-24 03:28:57 +0000123__m256i test_mm256_subs_epi8(__m256i a, __m256i b) {
Craig Topper9c2ffd82011-12-19 07:03:25 +0000124 // CHECK: @llvm.x86.avx2.psubs.b
125 return _mm256_subs_epi8(a, b);
126}
127
Craig Toppercbe627b2011-12-24 03:28:57 +0000128__m256i test_mm256_subs_epi16(__m256i a, __m256i b) {
Craig Topper9c2ffd82011-12-19 07:03:25 +0000129 // CHECK: @llvm.x86.avx2.psubs.w
130 return _mm256_subs_epi16(a, b);
131}
132
Craig Toppercbe627b2011-12-24 03:28:57 +0000133__m256i test_mm256_subs_epu8(__m256i a, __m256i b) {
Craig Topper9c2ffd82011-12-19 07:03:25 +0000134 // CHECK: @llvm.x86.avx2.psubus.b
135 return _mm256_subs_epu8(a, b);
136}
137
Craig Toppercbe627b2011-12-24 03:28:57 +0000138__m256i test_mm256_subs_epu16(__m256i a, __m256i b) {
Craig Topper9c2ffd82011-12-19 07:03:25 +0000139 // CHECK: @llvm.x86.avx2.psubus.w
140 return _mm256_subs_epu16(a, b);
141}
Craig Topper735ceaa2011-12-19 09:03:48 +0000142
Craig Toppercbe627b2011-12-24 03:28:57 +0000143__m256i test_mm256_and_si256(__m256i a, __m256i b) {
Craig Topper735ceaa2011-12-19 09:03:48 +0000144 // CHECK: and <4 x i64>
145 return _mm256_and_si256(a, b);
146}
147
Craig Toppercbe627b2011-12-24 03:28:57 +0000148__m256i test_mm256_andnot_si256(__m256i a, __m256i b) {
Craig Topper735ceaa2011-12-19 09:03:48 +0000149 // CHECK: xor <4 x i64>
150 // CHECK: and <4 x i64>
151 return _mm256_andnot_si256(a, b);
152}
153
Craig Toppercbe627b2011-12-24 03:28:57 +0000154__m256i test_mm256_or_si256(__m256i a, __m256i b) {
Craig Topper735ceaa2011-12-19 09:03:48 +0000155 // CHECK: or <4 x i64>
156 return _mm256_or_si256(a, b);
157}
158
Craig Toppercbe627b2011-12-24 03:28:57 +0000159__m256i test_mm256_xor_si256(__m256i a, __m256i b) {
Craig Topper735ceaa2011-12-19 09:03:48 +0000160 // CHECK: xor <4 x i64>
161 return _mm256_xor_si256(a, b);
162}
Craig Topper4c07c5d2011-12-20 09:55:26 +0000163
Craig Toppercbe627b2011-12-24 03:28:57 +0000164__m256i test_mm256_avg_epu8(__m256i a, __m256i b) {
Craig Topper4c07c5d2011-12-20 09:55:26 +0000165 // CHECK: @llvm.x86.avx2.pavg.b
166 return _mm256_avg_epu8(a, b);
167}
168
Craig Toppercbe627b2011-12-24 03:28:57 +0000169__m256i test_mm256_avg_epu16(__m256i a, __m256i b) {
Craig Topper4c07c5d2011-12-20 09:55:26 +0000170 // CHECK: @llvm.x86.avx2.pavg.w
171 return _mm256_avg_epu16(a, b);
172}
173
Craig Toppercbe627b2011-12-24 03:28:57 +0000174__m256i test_mm256_blendv_epi8(__m256i a, __m256i b, __m256i m) {
Craig Topper4c07c5d2011-12-20 09:55:26 +0000175 // CHECK: @llvm.x86.avx2.pblendvb
176 return _mm256_blendv_epi8(a, b, m);
177}
178
Craig Toppercbe627b2011-12-24 03:28:57 +0000179__m256i test_mm256_blend_epi16(__m256i a, __m256i b) {
Craig Topper4c07c5d2011-12-20 09:55:26 +0000180 // CHECK: @llvm.x86.avx2.pblendw(<16 x i16> %{{.*}}, <16 x i16> %{{.*}}, i32 2)
181 return _mm256_blend_epi16(a, b, 2);
182}
183
Craig Toppercbe627b2011-12-24 03:28:57 +0000184__m256i test_mm256_cmpeq_epi8(__m256i a, __m256i b) {
Craig Topper4c07c5d2011-12-20 09:55:26 +0000185 // CHECK: icmp eq <32 x i8>
186 return _mm256_cmpeq_epi8(a, b);
187}
188
Craig Toppercbe627b2011-12-24 03:28:57 +0000189__m256i test_mm256_cmpeq_epi16(__m256i a, __m256i b) {
Craig Topper4c07c5d2011-12-20 09:55:26 +0000190 // CHECK: icmp eq <16 x i16>
191 return _mm256_cmpeq_epi16(a, b);
192}
193
Craig Toppercbe627b2011-12-24 03:28:57 +0000194__m256i test_mm256_cmpeq_epi32(__m256i a, __m256i b) {
Craig Topper4c07c5d2011-12-20 09:55:26 +0000195 // CHECK: icmp eq <8 x i32>
196 return _mm256_cmpeq_epi32(a, b);
197}
198
Craig Toppercbe627b2011-12-24 03:28:57 +0000199__m256i test_mm256_cmpeq_epi64(__m256i a, __m256i b) {
Craig Topper4c07c5d2011-12-20 09:55:26 +0000200 // CHECK: icmp eq <4 x i64>
201 return _mm256_cmpeq_epi64(a, b);
202}
203
Craig Toppercbe627b2011-12-24 03:28:57 +0000204__m256i test_mm256_cmpgt_epi8(__m256i a, __m256i b) {
Craig Topper4c07c5d2011-12-20 09:55:26 +0000205 // CHECK: icmp sgt <32 x i8>
206 return _mm256_cmpgt_epi8(a, b);
207}
208
Craig Toppercbe627b2011-12-24 03:28:57 +0000209__m256i test_mm256_cmpgt_epi16(__m256i a, __m256i b) {
Craig Topper4c07c5d2011-12-20 09:55:26 +0000210 // CHECK: icmp sgt <16 x i16>
211 return _mm256_cmpgt_epi16(a, b);
212}
213
Craig Toppercbe627b2011-12-24 03:28:57 +0000214__m256i test_mm256_cmpgt_epi32(__m256i a, __m256i b) {
Craig Topper4c07c5d2011-12-20 09:55:26 +0000215 // CHECK: icmp sgt <8 x i32>
216 return _mm256_cmpgt_epi32(a, b);
217}
218
Craig Toppercbe627b2011-12-24 03:28:57 +0000219__m256i test_mm256_cmpgt_epi64(__m256i a, __m256i b) {
Craig Topper4c07c5d2011-12-20 09:55:26 +0000220 // CHECK: icmp sgt <4 x i64>
221 return _mm256_cmpgt_epi64(a, b);
222}
Craig Topper318e4602011-12-21 08:17:40 +0000223
Craig Toppercbe627b2011-12-24 03:28:57 +0000224__m256i test_mm256_hadd_epi16(__m256i a, __m256i b) {
Craig Topper318e4602011-12-21 08:17:40 +0000225 // CHECK: @llvm.x86.avx2.phadd.w
226 return _mm256_hadd_epi16(a, b);
227}
228
Craig Toppercbe627b2011-12-24 03:28:57 +0000229__m256i test_mm256_hadd_epi32(__m256i a, __m256i b) {
Craig Topper318e4602011-12-21 08:17:40 +0000230 // CHECK: @llvm.x86.avx2.phadd.d
231 return _mm256_hadd_epi32(a, b);
232}
233
Craig Toppercbe627b2011-12-24 03:28:57 +0000234__m256i test_mm256_hadds_epi16(__m256i a, __m256i b) {
Craig Topper318e4602011-12-21 08:17:40 +0000235 // CHECK: @llvm.x86.avx2.phadd.sw
236 return _mm256_hadds_epi16(a, b);
237}
238
Craig Toppercbe627b2011-12-24 03:28:57 +0000239__m256i test_mm256_hsub_epi16(__m256i a, __m256i b) {
Craig Topper318e4602011-12-21 08:17:40 +0000240 // CHECK: @llvm.x86.avx2.phsub.w
241 return _mm256_hsub_epi16(a, b);
242}
243
Craig Toppercbe627b2011-12-24 03:28:57 +0000244__m256i test_mm256_hsub_epi32(__m256i a, __m256i b) {
Craig Topper318e4602011-12-21 08:17:40 +0000245 // CHECK: @llvm.x86.avx2.phsub.d
246 return _mm256_hsub_epi32(a, b);
247}
248
Craig Toppercbe627b2011-12-24 03:28:57 +0000249__m256i test_mm256_hsubs_epi16(__m256i a, __m256i b) {
Craig Topper318e4602011-12-21 08:17:40 +0000250 // CHECK: @llvm.x86.avx2.phsub.sw
251 return _mm256_hsubs_epi16(a, b);
252}
Craig Topper4a4f25a2011-12-21 08:35:05 +0000253
Craig Toppercbe627b2011-12-24 03:28:57 +0000254__m256i test_mm256_maddubs_epi16(__m256i a, __m256i b) {
Craig Topper4a4f25a2011-12-21 08:35:05 +0000255 // CHECK: @llvm.x86.avx2.pmadd.ub.sw
256 return _mm256_maddubs_epi16(a, b);
257}
258
Craig Toppercbe627b2011-12-24 03:28:57 +0000259__m256i test_mm256_madd_epi16(__m256i a, __m256i b) {
Craig Topper4a4f25a2011-12-21 08:35:05 +0000260 // CHECK: @llvm.x86.avx2.pmadd.wd
261 return _mm256_madd_epi16(a, b);
262}
Craig Topper231f7932011-12-22 09:18:58 +0000263
Craig Toppercbe627b2011-12-24 03:28:57 +0000264__m256i test_mm256_max_epi8(__m256i a, __m256i b) {
Craig Topper231f7932011-12-22 09:18:58 +0000265 // CHECK: @llvm.x86.avx2.pmaxs.b
266 return _mm256_max_epi8(a, b);
267}
268
Craig Toppercbe627b2011-12-24 03:28:57 +0000269__m256i test_mm256_max_epi16(__m256i a, __m256i b) {
Craig Topper231f7932011-12-22 09:18:58 +0000270 // CHECK: @llvm.x86.avx2.pmaxs.w
271 return _mm256_max_epi16(a, b);
272}
273
Craig Toppercbe627b2011-12-24 03:28:57 +0000274__m256i test_mm256_max_epi32(__m256i a, __m256i b) {
Craig Topper231f7932011-12-22 09:18:58 +0000275 // CHECK: @llvm.x86.avx2.pmaxs.d
276 return _mm256_max_epi32(a, b);
277}
278
Craig Toppercbe627b2011-12-24 03:28:57 +0000279__m256i test_mm256_max_epu8(__m256i a, __m256i b) {
Craig Topper231f7932011-12-22 09:18:58 +0000280 // CHECK: @llvm.x86.avx2.pmaxu.b
281 return _mm256_max_epu8(a, b);
282}
283
Craig Toppercbe627b2011-12-24 03:28:57 +0000284__m256i test_mm256_max_epu16(__m256i a, __m256i b) {
Craig Topper231f7932011-12-22 09:18:58 +0000285 // CHECK: @llvm.x86.avx2.pmaxu.w
286 return _mm256_max_epu16(a, b);
287}
288
Craig Toppercbe627b2011-12-24 03:28:57 +0000289__m256i test_mm256_max_epu32(__m256i a, __m256i b) {
Craig Topper231f7932011-12-22 09:18:58 +0000290 // CHECK: @llvm.x86.avx2.pmaxu.d
291 return _mm256_max_epu32(a, b);
292}
293
Craig Toppercbe627b2011-12-24 03:28:57 +0000294__m256i test_mm256_min_epi8(__m256i a, __m256i b) {
Craig Topper231f7932011-12-22 09:18:58 +0000295 // CHECK: @llvm.x86.avx2.pmins.b
296 return _mm256_min_epi8(a, b);
297}
298
Craig Toppercbe627b2011-12-24 03:28:57 +0000299__m256i test_mm256_min_epi16(__m256i a, __m256i b) {
Craig Topper231f7932011-12-22 09:18:58 +0000300 // CHECK: @llvm.x86.avx2.pmins.w
301 return _mm256_min_epi16(a, b);
302}
303
Craig Toppercbe627b2011-12-24 03:28:57 +0000304__m256i test_mm256_min_epi32(__m256i a, __m256i b) {
Craig Topper231f7932011-12-22 09:18:58 +0000305 // CHECK: @llvm.x86.avx2.pmins.d
306 return _mm256_min_epi32(a, b);
307}
308
Craig Toppercbe627b2011-12-24 03:28:57 +0000309__m256i test_mm256_min_epu8(__m256i a, __m256i b) {
Craig Topper231f7932011-12-22 09:18:58 +0000310 // CHECK: @llvm.x86.avx2.pminu.b
311 return _mm256_min_epu8(a, b);
312}
313
Craig Toppercbe627b2011-12-24 03:28:57 +0000314__m256i test_mm256_min_epu16(__m256i a, __m256i b) {
Craig Topper231f7932011-12-22 09:18:58 +0000315 // CHECK: @llvm.x86.avx2.pminu.w
316 return _mm256_min_epu16(a, b);
317}
318
Craig Toppercbe627b2011-12-24 03:28:57 +0000319__m256i test_mm256_min_epu32(__m256i a, __m256i b) {
Craig Topper231f7932011-12-22 09:18:58 +0000320 // CHECK: @llvm.x86.avx2.pminu.d
321 return _mm256_min_epu32(a, b);
322}
323
Craig Toppercbe627b2011-12-24 03:28:57 +0000324int test_mm256_movemask_epi8(__m256i a) {
Craig Topper231f7932011-12-22 09:18:58 +0000325 // CHECK: @llvm.x86.avx2.pmovmskb
326 return _mm256_movemask_epi8(a);
327}
328
Craig Toppercbe627b2011-12-24 03:28:57 +0000329__m256i test_mm256_cvtepi8_epi16(__m128i a) {
Craig Topper231f7932011-12-22 09:18:58 +0000330 // CHECK: @llvm.x86.avx2.pmovsxbw
331 return _mm256_cvtepi8_epi16(a);
332}
333
Craig Toppercbe627b2011-12-24 03:28:57 +0000334__m256i test_mm256_cvtepi8_epi32(__m128i a) {
Craig Topper231f7932011-12-22 09:18:58 +0000335 // CHECK: @llvm.x86.avx2.pmovsxbd
336 return _mm256_cvtepi8_epi32(a);
337}
338
Craig Toppercbe627b2011-12-24 03:28:57 +0000339__m256i test_mm256_cvtepi8_epi64(__m128i a) {
Craig Topper231f7932011-12-22 09:18:58 +0000340 // CHECK: @llvm.x86.avx2.pmovsxbq
341 return _mm256_cvtepi8_epi64(a);
342}
343
Craig Toppercbe627b2011-12-24 03:28:57 +0000344__m256i test_mm256_cvtepi16_epi32(__m128i a) {
Craig Topper231f7932011-12-22 09:18:58 +0000345 // CHECK: @llvm.x86.avx2.pmovsxwd
346 return _mm256_cvtepi16_epi32(a);
347}
348
Craig Toppercbe627b2011-12-24 03:28:57 +0000349__m256i test_mm256_cvtepi16_epi64(__m128i a) {
Craig Topper231f7932011-12-22 09:18:58 +0000350 // CHECK: @llvm.x86.avx2.pmovsxwq
351 return _mm256_cvtepi16_epi64(a);
352}
353
Craig Toppercbe627b2011-12-24 03:28:57 +0000354__m256i test_mm256_cvtepi32_epi64(__m128i a) {
Craig Topper231f7932011-12-22 09:18:58 +0000355 // CHECK: @llvm.x86.avx2.pmovsxdq
356 return _mm256_cvtepi32_epi64(a);
357}
358
Craig Toppercbe627b2011-12-24 03:28:57 +0000359__m256i test_mm256_cvtepu8_epi16(__m128i a) {
Craig Topper231f7932011-12-22 09:18:58 +0000360 // CHECK: @llvm.x86.avx2.pmovzxbw
361 return _mm256_cvtepu8_epi16(a);
362}
363
Craig Toppercbe627b2011-12-24 03:28:57 +0000364__m256i test_mm256_cvtepu8_epi32(__m128i a) {
Craig Topper231f7932011-12-22 09:18:58 +0000365 // CHECK: @llvm.x86.avx2.pmovzxbd
366 return _mm256_cvtepu8_epi32(a);
367}
368
Craig Toppercbe627b2011-12-24 03:28:57 +0000369__m256i test_mm256_cvtepu8_epi64(__m128i a) {
Craig Topper231f7932011-12-22 09:18:58 +0000370 // CHECK: @llvm.x86.avx2.pmovzxbq
371 return _mm256_cvtepu8_epi64(a);
372}
373
Craig Toppercbe627b2011-12-24 03:28:57 +0000374__m256i test_mm256_cvtepu16_epi32(__m128i a) {
Craig Topper231f7932011-12-22 09:18:58 +0000375 // CHECK: @llvm.x86.avx2.pmovzxwd
376 return _mm256_cvtepu16_epi32(a);
377}
378
Craig Toppercbe627b2011-12-24 03:28:57 +0000379__m256i test_mm256_cvtepu16_epi64(__m128i a) {
Craig Topper231f7932011-12-22 09:18:58 +0000380 // CHECK: @llvm.x86.avx2.pmovzxwq
381 return _mm256_cvtepu16_epi64(a);
382}
383
Craig Toppercbe627b2011-12-24 03:28:57 +0000384__m256i test_mm256_cvtepu32_epi64(__m128i a) {
Craig Topper231f7932011-12-22 09:18:58 +0000385 // CHECK: @llvm.x86.avx2.pmovzxdq
386 return _mm256_cvtepu32_epi64(a);
387}
Craig Topper28a324a2011-12-23 08:31:16 +0000388
Craig Toppercbe627b2011-12-24 03:28:57 +0000389__m256i test_mm256_mul_epi32(__m256i a, __m256i b) {
Craig Topper28a324a2011-12-23 08:31:16 +0000390 // CHECK: @llvm.x86.avx2.pmul.dq
391 return _mm256_mul_epi32(a, b);
392}
393
Craig Toppercbe627b2011-12-24 03:28:57 +0000394__m256i test_mm256_mulhrs_epi16(__m256i a, __m256i b) {
Craig Topper28a324a2011-12-23 08:31:16 +0000395 // CHECK: @llvm.x86.avx2.pmul.hr.sw
396 return _mm256_mulhrs_epi16(a, b);
397}
398
Craig Toppercbe627b2011-12-24 03:28:57 +0000399__m256i test_mm256_mulhi_epu16(__m256i a, __m256i b) {
Craig Topper28a324a2011-12-23 08:31:16 +0000400 // CHECK: @llvm.x86.avx2.pmulhu.w
401 return _mm256_mulhi_epu16(a, b);
402}
403
Craig Toppercbe627b2011-12-24 03:28:57 +0000404__m256i test_mm256_mulhi_epi16(__m256i a, __m256i b) {
Craig Topper28a324a2011-12-23 08:31:16 +0000405 // CHECK: @llvm.x86.avx2.pmulh.w
406 return _mm256_mulhi_epi16(a, b);
407}
408
Craig Toppercbe627b2011-12-24 03:28:57 +0000409__m256i test_mm256_mullo_epi16(__m256i a, __m256i b) {
Craig Topper28a324a2011-12-23 08:31:16 +0000410 // CHECK: mul <16 x i16>
411 return _mm256_mullo_epi16(a, b);
412}
413
Craig Toppercbe627b2011-12-24 03:28:57 +0000414__m256i test_mm256_mullo_epi32(__m256i a, __m256i b) {
Craig Topper28a324a2011-12-23 08:31:16 +0000415 // CHECK: mul <8 x i32>
416 return _mm256_mullo_epi32(a, b);
417}
418
Craig Toppercbe627b2011-12-24 03:28:57 +0000419__m256i test_mm256_mul_epu32(__m256i a, __m256i b) {
Craig Topper28a324a2011-12-23 08:31:16 +0000420 // CHECK: @llvm.x86.avx2.pmulu.dq
421 return _mm256_mul_epu32(a, b);
422}
Craig Toppercbe627b2011-12-24 03:28:57 +0000423
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
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
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
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
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
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
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
459__m256i test_mm256_slli_si256(__m256i a) {
460 // CHECK: @llvm.x86.avx2.psll.dq
461 return _mm256_slli_si256(a, 3);
462}
463
464__m256i test_mm256_slli_epi16(__m256i a) {
465 // CHECK: @llvm.x86.avx2.pslli.w
466 return _mm256_slli_epi16(a, 3);
467}
468
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
474__m256i test_mm256_slli_epi32(__m256i a) {
475 // CHECK: @llvm.x86.avx2.pslli.d
476 return _mm256_slli_epi32(a, 3);
477}
478
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
484__m256i test_mm256_slli_epi64(__m256i a) {
485 // CHECK: @llvm.x86.avx2.pslli.q
486 return _mm256_slli_epi64(a, 3);
487}
488
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
494__m256i test_mm256_srai_epi16(__m256i a) {
495 // CHECK: @llvm.x86.avx2.psrai.w
496 return _mm256_srai_epi16(a, 3);
497}
498
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
504__m256i test_mm256_srai_epi32(__m256i a) {
505 // CHECK: @llvm.x86.avx2.psrai.d
506 return _mm256_srai_epi32(a, 3);
507}
508
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
514__m256i test_mm256_srli_si256(__m256i a) {
515 // CHECK: @llvm.x86.avx2.psrl.dq
516 return _mm256_srli_si256(a, 3);
517}
518
519__m256i test_mm256_srli_epi16(__m256i a) {
520 // CHECK: @llvm.x86.avx2.psrli.w
521 return _mm256_srli_epi16(a, 3);
522}
523
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
529__m256i test_mm256_srli_epi32(__m256i a) {
530 // CHECK: @llvm.x86.avx2.psrli.d
531 return _mm256_srli_epi32(a, 3);
532}
533
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
539__m256i test_mm256_srli_epi64(__m256i a) {
540 // CHECK: @llvm.x86.avx2.psrli.q
541 return _mm256_srli_epi64(a, 3);
542}
543
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}
Craig Topper7f16caa2011-12-24 03:58:43 +0000548
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
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
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
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
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
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
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
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}
Craig Topper967cd882011-12-24 05:19:47 +0000588
589__m256i test_mm256_stream_load_si256(__m256i *a) {
590 // CHECK: @llvm.x86.avx2.movntdqa
591 return _mm256_stream_load_si256(a);
592}
593
594__m128 test_mm_broadcastss_ps(__m128 a) {
595 // CHECK: @llvm.x86.avx2.vbroadcast.ss.ps
596 return _mm_broadcastss_ps(a);
597}
598
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
604__m256d test_mm256_broadcastsd_pd(__m128d a) {
Craig Topper7bb03402011-12-24 07:55:25 +0000605 // check: @llvm.x86.avx2.vbroadcast.sd.pd.256
Craig Topper967cd882011-12-24 05:19:47 +0000606 return _mm256_broadcastsd_pd(a);
607}
608
609__m256i test_mm_broadcastsi128_si256(__m128i *a) {
610 // CHECK: @llvm.x86.avx2.vbroadcasti128
611 return _mm_broadcastsi128_si256(a);
612}
613
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
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}
Craig Topper7bb03402011-12-24 07:55:25 +0000623
624__m256i test_mm256_broadcastb_epi8(__m128i a) {
625 // CHECK: @llvm.x86.avx2.pbroadcastb.256
626 return _mm256_broadcastb_epi8(a);
627}
628
629__m256i test_mm256_broadcastw_epi16(__m128i a) {
630 // CHECK: @llvm.x86.avx2.pbroadcastw.256
631 return _mm256_broadcastw_epi16(a);
632}
633
634__m256i test_mm256_broadcastd_epi32(__m128i a) {
635 // CHECK: @llvm.x86.avx2.pbroadcastd.256
636 return _mm256_broadcastd_epi32(a);
637}
638
639__m256i test_mm256_broadcastq_epi64(__m128i a) {
640 // CHECK: @llvm.x86.avx2.pbroadcastq.256
641 return _mm256_broadcastq_epi64(a);
642}
643
644__m128i test_mm_broadcastb_epi8(__m128i a) {
645 // CHECK: @llvm.x86.avx2.pbroadcastb.128
646 return _mm_broadcastb_epi8(a);
647}
648
649__m128i test_mm_broadcastw_epi16(__m128i a) {
650 // CHECK: @llvm.x86.avx2.pbroadcastw.128
651 return _mm_broadcastw_epi16(a);
652}
653
654__m128i test_mm_broadcastd_epi32(__m128i a) {
655 // CHECK: @llvm.x86.avx2.pbroadcastd.128
656 return _mm_broadcastd_epi32(a);
657}
658
659__m128i test_mm_broadcastq_epi64(__m128i a) {
660 // CHECK: @llvm.x86.avx2.pbroadcastq.128
661 return _mm_broadcastq_epi64(a);
662}
663
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
669__m256d test_mm256_permute4x64_pd(__m256d a) {
Craig Topperb5491f32012-04-15 22:18:10 +0000670 // CHECK: shufflevector{{.*}}<i32 1, i32 2, i32 1, i32 0>
Craig Topper7bb03402011-12-24 07:55:25 +0000671 return _mm256_permute4x64_pd(a, 25);
672}
673
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
679__m256i test_mm256_permute4x64_epi64(__m256i a) {
Craig Topperb5491f32012-04-15 22:18:10 +0000680 // CHECK: shufflevector{{.*}}<i32 3, i32 0, i32 2, i32 0>
Craig Topper7bb03402011-12-24 07:55:25 +0000681 return _mm256_permute4x64_epi64(a, 35);
682}
683
684__m256i test_mm256_permute2x128_si256(__m256i a, __m256i b) {
Craig Topper49a110d2012-04-17 05:16:56 +0000685 // CHECK: @llvm.x86.avx2.vperm2i128
Craig Toppercfa8e652012-02-08 07:33:36 +0000686 return _mm256_permute2x128_si256(a, b, 0x31);
Craig Topper7bb03402011-12-24 07:55:25 +0000687}
Craig Topper5cbd7512011-12-24 17:20:15 +0000688
689__m128i test_mm256_extracti128_si256(__m256i a) {
690 // CHECK: @llvm.x86.avx2.vextracti128
691 return _mm256_extracti128_si256(a, 1);
692}
693
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
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
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
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
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
719void 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
724void 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
729void 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
734void 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
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
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
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
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
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
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
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
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
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
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}
Manman Ren5283c992012-06-26 19:55:09 +0000788
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
Manman Renc84804a2012-06-29 00:54:35 +0000795__m256d test_mm256_mask_i32gather_pd(__m256d a, double const *b, __m128i c,
Manman Ren5283c992012-06-26 19:55:09 +0000796 __m256d d) {
797 // CHECK: @llvm.x86.avx2.gather.d.pd.256
798 return _mm256_mask_i32gather_pd(a, b, c, d, 2);
799}
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}
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
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}
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}
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}
Manman Renc84804a2012-06-29 00:54:35 +0000826__m128 test_mm256_mask_i64gather_ps(__m128 a, float const *b, __m256i c,
827 __m128 d) {
Manman Ren5283c992012-06-26 19:55:09 +0000828 // CHECK: @llvm.x86.avx2.gather.q.ps.256
829 return _mm256_mask_i64gather_ps(a, b, c, d, 2);
830}
Manman Renc84804a2012-06-29 00:54:35 +0000831
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}
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}
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}
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
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}
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}
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}
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}
Manman Ren56c045e2012-06-29 05:19:13 +0000873
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}
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}
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}
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}
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}
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}
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}
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
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}
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}
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}
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}
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}
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}
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}
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}