blob: 5024d94e71857d841909a48953fd8785f28be7d1 [file] [log] [blame]
Eli Friedman3cd55f42013-09-23 23:52:04 +00001// RUN: %clang_cc1 %s -O3 -triple=x86_64-apple-darwin -target-feature +avx2 -emit-llvm -o - -Werror | FileCheck %s
Craig Topperdec792e2011-12-19 05:04:33 +00002
3// Don't include mm_malloc.h, it's system specific.
4#define __MM_MALLOC_H
5
6#include <immintrin.h>
7
Craig Topperf4bb9522011-12-24 03:28:57 +00008__m256i test_mm256_mpsadbw_epu8(__m256i x, __m256i y) {
Craig Topperdec792e2011-12-19 05:04:33 +00009 // CHECK: @llvm.x86.avx2.mpsadbw({{.*}}, {{.*}}, i32 3)
10 return _mm256_mpsadbw_epu8(x, y, 3);
11}
12
Manman Ren86c32502012-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 Topperf4bb9522011-12-24 03:28:57 +000018__m256i test_mm256_abs_epi8(__m256i a) {
Craig Topperdec792e2011-12-19 05:04:33 +000019 // CHECK: @llvm.x86.avx2.pabs.b
20 return _mm256_abs_epi8(a);
21}
22
Craig Topperf4bb9522011-12-24 03:28:57 +000023__m256i test_mm256_abs_epi16(__m256i a) {
Craig Topperdec792e2011-12-19 05:04:33 +000024 // CHECK: @llvm.x86.avx2.pabs.w
25 return _mm256_abs_epi16(a);
26}
27
Craig Topperf4bb9522011-12-24 03:28:57 +000028__m256i test_mm256_abs_epi32(__m256i a) {
Craig Topperdec792e2011-12-19 05:04:33 +000029 // CHECK: @llvm.x86.avx2.pabs.d
30 return _mm256_abs_epi32(a);
31}
32
Craig Topperf4bb9522011-12-24 03:28:57 +000033__m256i test_mm256_packs_epi16(__m256i a, __m256i b) {
Craig Topperdec792e2011-12-19 05:04:33 +000034 // CHECK: @llvm.x86.avx2.packsswb
35 return _mm256_packs_epi16(a, b);
36}
37
Craig Topperf4bb9522011-12-24 03:28:57 +000038__m256i test_mm256_packs_epi32(__m256i a, __m256i b) {
Craig Topperdec792e2011-12-19 05:04:33 +000039 // CHECK: @llvm.x86.avx2.packssdw
40 return _mm256_packs_epi32(a, b);
41}
42
Craig Topperf4bb9522011-12-24 03:28:57 +000043__m256i test_mm256_packs_epu16(__m256i a, __m256i b) {
Craig Topperdec792e2011-12-19 05:04:33 +000044 // CHECK: @llvm.x86.avx2.packuswb
45 return _mm256_packus_epi16(a, b);
46}
47
Craig Topperf4bb9522011-12-24 03:28:57 +000048__m256i test_mm256_packs_epu32(__m256i a, __m256i b) {
Craig Topperdec792e2011-12-19 05:04:33 +000049 // CHECK: @llvm.x86.avx2.packusdw
50 return _mm256_packus_epi32(a, b);
51}
52
Craig Topperf4bb9522011-12-24 03:28:57 +000053__m256i test_mm256_add_epi8(__m256i a, __m256i b) {
Craig Topperdec792e2011-12-19 05:04:33 +000054 // CHECK: add <32 x i8>
55 return _mm256_add_epi8(a, b);
56}
57
Craig Topperf4bb9522011-12-24 03:28:57 +000058__m256i test_mm256_add_epi16(__m256i a, __m256i b) {
Craig Topperdec792e2011-12-19 05:04:33 +000059 // CHECK: add <16 x i16>
60 return _mm256_add_epi16(a, b);
61}
62
Craig Topperf4bb9522011-12-24 03:28:57 +000063__m256i test_mm256_add_epi32(__m256i a, __m256i b) {
Craig Topperdec792e2011-12-19 05:04:33 +000064 // CHECK: add <8 x i32>
65 return _mm256_add_epi32(a, b);
66}
67
Craig Topperf4bb9522011-12-24 03:28:57 +000068__m256i test_mm256_add_epi64(__m256i a, __m256i b) {
Craig Topperdec792e2011-12-19 05:04:33 +000069 // CHECK: add <4 x i64>
70 return _mm256_add_epi64(a, b);
71}
72
Craig Topperf4bb9522011-12-24 03:28:57 +000073__m256i test_mm256_adds_epi8(__m256i a, __m256i b) {
Craig Topper94aba2c2011-12-19 07:03:25 +000074 // CHECK: @llvm.x86.avx2.padds.b
75 return _mm256_adds_epi8(a, b);
76}
77
Craig Topperf4bb9522011-12-24 03:28:57 +000078__m256i test_mm256_adds_epi16(__m256i a, __m256i b) {
Craig Topper94aba2c2011-12-19 07:03:25 +000079 // CHECK: @llvm.x86.avx2.padds.w
80 return _mm256_adds_epi16(a, b);
81}
82
Craig Topperf4bb9522011-12-24 03:28:57 +000083__m256i test_mm256_adds_epu8(__m256i a, __m256i b) {
Craig Topper94aba2c2011-12-19 07:03:25 +000084 // CHECK: @llvm.x86.avx2.paddus.b
85 return _mm256_adds_epu8(a, b);
86}
87
Craig Topperf4bb9522011-12-24 03:28:57 +000088__m256i test_mm256_adds_epu16(__m256i a, __m256i b) {
Craig Topper94aba2c2011-12-19 07:03:25 +000089 // CHECK: @llvm.x86.avx2.paddus.w
90 return _mm256_adds_epu16(a, b);
91}
92
Craig Topperf4bb9522011-12-24 03:28:57 +000093__m256i test_mm256_alignr_epi8(__m256i a, __m256i b) {
Eli Friedman61221b72011-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 Topper94aba2c2011-12-19 07:03:25 +000095 return _mm256_alignr_epi8(a, b, 2);
96}
97
Craig Topperf4bb9522011-12-24 03:28:57 +000098__m256i test2_mm256_alignr_epi8(__m256i a, __m256i b) {
Craig Topper94aba2c2011-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 Topperf4bb9522011-12-24 03:28:57 +0000103__m256i test_mm256_sub_epi8(__m256i a, __m256i b) {
Craig Topperdec792e2011-12-19 05:04:33 +0000104 // CHECK: sub <32 x i8>
105 return _mm256_sub_epi8(a, b);
106}
107
Craig Topperf4bb9522011-12-24 03:28:57 +0000108__m256i test_mm256_sub_epi16(__m256i a, __m256i b) {
Craig Topperdec792e2011-12-19 05:04:33 +0000109 // CHECK: sub <16 x i16>
110 return _mm256_sub_epi16(a, b);
111}
112
Craig Topperf4bb9522011-12-24 03:28:57 +0000113__m256i test_mm256_sub_epi32(__m256i a, __m256i b) {
Craig Topperdec792e2011-12-19 05:04:33 +0000114 // CHECK: sub <8 x i32>
115 return _mm256_sub_epi32(a, b);
116}
117
Craig Topperf4bb9522011-12-24 03:28:57 +0000118__m256i test_mm256_sub_epi64(__m256i a, __m256i b) {
Craig Topperdec792e2011-12-19 05:04:33 +0000119 // CHECK: sub <4 x i64>
120 return _mm256_sub_epi64(a, b);
121}
Craig Topper94aba2c2011-12-19 07:03:25 +0000122
Craig Topperf4bb9522011-12-24 03:28:57 +0000123__m256i test_mm256_subs_epi8(__m256i a, __m256i b) {
Craig Topper94aba2c2011-12-19 07:03:25 +0000124 // CHECK: @llvm.x86.avx2.psubs.b
125 return _mm256_subs_epi8(a, b);
126}
127
Craig Topperf4bb9522011-12-24 03:28:57 +0000128__m256i test_mm256_subs_epi16(__m256i a, __m256i b) {
Craig Topper94aba2c2011-12-19 07:03:25 +0000129 // CHECK: @llvm.x86.avx2.psubs.w
130 return _mm256_subs_epi16(a, b);
131}
132
Craig Topperf4bb9522011-12-24 03:28:57 +0000133__m256i test_mm256_subs_epu8(__m256i a, __m256i b) {
Craig Topper94aba2c2011-12-19 07:03:25 +0000134 // CHECK: @llvm.x86.avx2.psubus.b
135 return _mm256_subs_epu8(a, b);
136}
137
Craig Topperf4bb9522011-12-24 03:28:57 +0000138__m256i test_mm256_subs_epu16(__m256i a, __m256i b) {
Craig Topper94aba2c2011-12-19 07:03:25 +0000139 // CHECK: @llvm.x86.avx2.psubus.w
140 return _mm256_subs_epu16(a, b);
141}
Craig Toppera557e1c2011-12-19 09:03:48 +0000142
Craig Topperf4bb9522011-12-24 03:28:57 +0000143__m256i test_mm256_and_si256(__m256i a, __m256i b) {
Craig Toppera557e1c2011-12-19 09:03:48 +0000144 // CHECK: and <4 x i64>
145 return _mm256_and_si256(a, b);
146}
147
Craig Topperf4bb9522011-12-24 03:28:57 +0000148__m256i test_mm256_andnot_si256(__m256i a, __m256i b) {
Craig Toppera557e1c2011-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 Topperf4bb9522011-12-24 03:28:57 +0000154__m256i test_mm256_or_si256(__m256i a, __m256i b) {
Craig Toppera557e1c2011-12-19 09:03:48 +0000155 // CHECK: or <4 x i64>
156 return _mm256_or_si256(a, b);
157}
158
Craig Topperf4bb9522011-12-24 03:28:57 +0000159__m256i test_mm256_xor_si256(__m256i a, __m256i b) {
Craig Toppera557e1c2011-12-19 09:03:48 +0000160 // CHECK: xor <4 x i64>
161 return _mm256_xor_si256(a, b);
162}
Craig Toppera89747d2011-12-20 09:55:26 +0000163
Craig Topperf4bb9522011-12-24 03:28:57 +0000164__m256i test_mm256_avg_epu8(__m256i a, __m256i b) {
Craig Toppera89747d2011-12-20 09:55:26 +0000165 // CHECK: @llvm.x86.avx2.pavg.b
166 return _mm256_avg_epu8(a, b);
167}
168
Craig Topperf4bb9522011-12-24 03:28:57 +0000169__m256i test_mm256_avg_epu16(__m256i a, __m256i b) {
Craig Toppera89747d2011-12-20 09:55:26 +0000170 // CHECK: @llvm.x86.avx2.pavg.w
171 return _mm256_avg_epu16(a, b);
172}
173
Craig Topperf4bb9522011-12-24 03:28:57 +0000174__m256i test_mm256_blendv_epi8(__m256i a, __m256i b, __m256i m) {
Craig Toppera89747d2011-12-20 09:55:26 +0000175 // CHECK: @llvm.x86.avx2.pblendvb
176 return _mm256_blendv_epi8(a, b, m);
177}
178
Craig Topperf4bb9522011-12-24 03:28:57 +0000179__m256i test_mm256_blend_epi16(__m256i a, __m256i b) {
Craig Toppera89747d2011-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 Topperf4bb9522011-12-24 03:28:57 +0000184__m256i test_mm256_cmpeq_epi8(__m256i a, __m256i b) {
Craig Toppera89747d2011-12-20 09:55:26 +0000185 // CHECK: icmp eq <32 x i8>
186 return _mm256_cmpeq_epi8(a, b);
187}
188
Craig Topperf4bb9522011-12-24 03:28:57 +0000189__m256i test_mm256_cmpeq_epi16(__m256i a, __m256i b) {
Craig Toppera89747d2011-12-20 09:55:26 +0000190 // CHECK: icmp eq <16 x i16>
191 return _mm256_cmpeq_epi16(a, b);
192}
193
Craig Topperf4bb9522011-12-24 03:28:57 +0000194__m256i test_mm256_cmpeq_epi32(__m256i a, __m256i b) {
Craig Toppera89747d2011-12-20 09:55:26 +0000195 // CHECK: icmp eq <8 x i32>
196 return _mm256_cmpeq_epi32(a, b);
197}
198
Craig Topperf4bb9522011-12-24 03:28:57 +0000199__m256i test_mm256_cmpeq_epi64(__m256i a, __m256i b) {
Craig Toppera89747d2011-12-20 09:55:26 +0000200 // CHECK: icmp eq <4 x i64>
201 return _mm256_cmpeq_epi64(a, b);
202}
203
Craig Topperf4bb9522011-12-24 03:28:57 +0000204__m256i test_mm256_cmpgt_epi8(__m256i a, __m256i b) {
Craig Toppera89747d2011-12-20 09:55:26 +0000205 // CHECK: icmp sgt <32 x i8>
206 return _mm256_cmpgt_epi8(a, b);
207}
208
Craig Topperf4bb9522011-12-24 03:28:57 +0000209__m256i test_mm256_cmpgt_epi16(__m256i a, __m256i b) {
Craig Toppera89747d2011-12-20 09:55:26 +0000210 // CHECK: icmp sgt <16 x i16>
211 return _mm256_cmpgt_epi16(a, b);
212}
213
Craig Topperf4bb9522011-12-24 03:28:57 +0000214__m256i test_mm256_cmpgt_epi32(__m256i a, __m256i b) {
Craig Toppera89747d2011-12-20 09:55:26 +0000215 // CHECK: icmp sgt <8 x i32>
216 return _mm256_cmpgt_epi32(a, b);
217}
218
Craig Topperf4bb9522011-12-24 03:28:57 +0000219__m256i test_mm256_cmpgt_epi64(__m256i a, __m256i b) {
Craig Toppera89747d2011-12-20 09:55:26 +0000220 // CHECK: icmp sgt <4 x i64>
221 return _mm256_cmpgt_epi64(a, b);
222}
Craig Topper3fe5ac42011-12-21 08:17:40 +0000223
Craig Topperf4bb9522011-12-24 03:28:57 +0000224__m256i test_mm256_hadd_epi16(__m256i a, __m256i b) {
Craig Topper3fe5ac42011-12-21 08:17:40 +0000225 // CHECK: @llvm.x86.avx2.phadd.w
226 return _mm256_hadd_epi16(a, b);
227}
228
Craig Topperf4bb9522011-12-24 03:28:57 +0000229__m256i test_mm256_hadd_epi32(__m256i a, __m256i b) {
Craig Topper3fe5ac42011-12-21 08:17:40 +0000230 // CHECK: @llvm.x86.avx2.phadd.d
231 return _mm256_hadd_epi32(a, b);
232}
233
Craig Topperf4bb9522011-12-24 03:28:57 +0000234__m256i test_mm256_hadds_epi16(__m256i a, __m256i b) {
Craig Topper3fe5ac42011-12-21 08:17:40 +0000235 // CHECK: @llvm.x86.avx2.phadd.sw
236 return _mm256_hadds_epi16(a, b);
237}
238
Craig Topperf4bb9522011-12-24 03:28:57 +0000239__m256i test_mm256_hsub_epi16(__m256i a, __m256i b) {
Craig Topper3fe5ac42011-12-21 08:17:40 +0000240 // CHECK: @llvm.x86.avx2.phsub.w
241 return _mm256_hsub_epi16(a, b);
242}
243
Craig Topperf4bb9522011-12-24 03:28:57 +0000244__m256i test_mm256_hsub_epi32(__m256i a, __m256i b) {
Craig Topper3fe5ac42011-12-21 08:17:40 +0000245 // CHECK: @llvm.x86.avx2.phsub.d
246 return _mm256_hsub_epi32(a, b);
247}
248
Craig Topperf4bb9522011-12-24 03:28:57 +0000249__m256i test_mm256_hsubs_epi16(__m256i a, __m256i b) {
Craig Topper3fe5ac42011-12-21 08:17:40 +0000250 // CHECK: @llvm.x86.avx2.phsub.sw
251 return _mm256_hsubs_epi16(a, b);
252}
Craig Toppera73baa82011-12-21 08:35:05 +0000253
Craig Topperf4bb9522011-12-24 03:28:57 +0000254__m256i test_mm256_maddubs_epi16(__m256i a, __m256i b) {
Craig Toppera73baa82011-12-21 08:35:05 +0000255 // CHECK: @llvm.x86.avx2.pmadd.ub.sw
256 return _mm256_maddubs_epi16(a, b);
257}
258
Craig Topperf4bb9522011-12-24 03:28:57 +0000259__m256i test_mm256_madd_epi16(__m256i a, __m256i b) {
Craig Toppera73baa82011-12-21 08:35:05 +0000260 // CHECK: @llvm.x86.avx2.pmadd.wd
261 return _mm256_madd_epi16(a, b);
262}
Craig Topper1f2460a2011-12-22 09:18:58 +0000263
Craig Topperf4bb9522011-12-24 03:28:57 +0000264__m256i test_mm256_max_epi8(__m256i a, __m256i b) {
Craig Topper1f2460a2011-12-22 09:18:58 +0000265 // CHECK: @llvm.x86.avx2.pmaxs.b
266 return _mm256_max_epi8(a, b);
267}
268
Craig Topperf4bb9522011-12-24 03:28:57 +0000269__m256i test_mm256_max_epi16(__m256i a, __m256i b) {
Craig Topper1f2460a2011-12-22 09:18:58 +0000270 // CHECK: @llvm.x86.avx2.pmaxs.w
271 return _mm256_max_epi16(a, b);
272}
273
Craig Topperf4bb9522011-12-24 03:28:57 +0000274__m256i test_mm256_max_epi32(__m256i a, __m256i b) {
Craig Topper1f2460a2011-12-22 09:18:58 +0000275 // CHECK: @llvm.x86.avx2.pmaxs.d
276 return _mm256_max_epi32(a, b);
277}
278
Craig Topperf4bb9522011-12-24 03:28:57 +0000279__m256i test_mm256_max_epu8(__m256i a, __m256i b) {
Craig Topper1f2460a2011-12-22 09:18:58 +0000280 // CHECK: @llvm.x86.avx2.pmaxu.b
281 return _mm256_max_epu8(a, b);
282}
283
Craig Topperf4bb9522011-12-24 03:28:57 +0000284__m256i test_mm256_max_epu16(__m256i a, __m256i b) {
Craig Topper1f2460a2011-12-22 09:18:58 +0000285 // CHECK: @llvm.x86.avx2.pmaxu.w
286 return _mm256_max_epu16(a, b);
287}
288
Craig Topperf4bb9522011-12-24 03:28:57 +0000289__m256i test_mm256_max_epu32(__m256i a, __m256i b) {
Craig Topper1f2460a2011-12-22 09:18:58 +0000290 // CHECK: @llvm.x86.avx2.pmaxu.d
291 return _mm256_max_epu32(a, b);
292}
293
Craig Topperf4bb9522011-12-24 03:28:57 +0000294__m256i test_mm256_min_epi8(__m256i a, __m256i b) {
Craig Topper1f2460a2011-12-22 09:18:58 +0000295 // CHECK: @llvm.x86.avx2.pmins.b
296 return _mm256_min_epi8(a, b);
297}
298
Craig Topperf4bb9522011-12-24 03:28:57 +0000299__m256i test_mm256_min_epi16(__m256i a, __m256i b) {
Craig Topper1f2460a2011-12-22 09:18:58 +0000300 // CHECK: @llvm.x86.avx2.pmins.w
301 return _mm256_min_epi16(a, b);
302}
303
Craig Topperf4bb9522011-12-24 03:28:57 +0000304__m256i test_mm256_min_epi32(__m256i a, __m256i b) {
Craig Topper1f2460a2011-12-22 09:18:58 +0000305 // CHECK: @llvm.x86.avx2.pmins.d
306 return _mm256_min_epi32(a, b);
307}
308
Craig Topperf4bb9522011-12-24 03:28:57 +0000309__m256i test_mm256_min_epu8(__m256i a, __m256i b) {
Craig Topper1f2460a2011-12-22 09:18:58 +0000310 // CHECK: @llvm.x86.avx2.pminu.b
311 return _mm256_min_epu8(a, b);
312}
313
Craig Topperf4bb9522011-12-24 03:28:57 +0000314__m256i test_mm256_min_epu16(__m256i a, __m256i b) {
Craig Topper1f2460a2011-12-22 09:18:58 +0000315 // CHECK: @llvm.x86.avx2.pminu.w
316 return _mm256_min_epu16(a, b);
317}
318
Craig Topperf4bb9522011-12-24 03:28:57 +0000319__m256i test_mm256_min_epu32(__m256i a, __m256i b) {
Craig Topper1f2460a2011-12-22 09:18:58 +0000320 // CHECK: @llvm.x86.avx2.pminu.d
321 return _mm256_min_epu32(a, b);
322}
323
Craig Topperf4bb9522011-12-24 03:28:57 +0000324int test_mm256_movemask_epi8(__m256i a) {
Craig Topper1f2460a2011-12-22 09:18:58 +0000325 // CHECK: @llvm.x86.avx2.pmovmskb
326 return _mm256_movemask_epi8(a);
327}
328
Craig Topperf4bb9522011-12-24 03:28:57 +0000329__m256i test_mm256_cvtepi8_epi16(__m128i a) {
Craig Topper1f2460a2011-12-22 09:18:58 +0000330 // CHECK: @llvm.x86.avx2.pmovsxbw
331 return _mm256_cvtepi8_epi16(a);
332}
333
Craig Topperf4bb9522011-12-24 03:28:57 +0000334__m256i test_mm256_cvtepi8_epi32(__m128i a) {
Craig Topper1f2460a2011-12-22 09:18:58 +0000335 // CHECK: @llvm.x86.avx2.pmovsxbd
336 return _mm256_cvtepi8_epi32(a);
337}
338
Craig Topperf4bb9522011-12-24 03:28:57 +0000339__m256i test_mm256_cvtepi8_epi64(__m128i a) {
Craig Topper1f2460a2011-12-22 09:18:58 +0000340 // CHECK: @llvm.x86.avx2.pmovsxbq
341 return _mm256_cvtepi8_epi64(a);
342}
343
Craig Topperf4bb9522011-12-24 03:28:57 +0000344__m256i test_mm256_cvtepi16_epi32(__m128i a) {
Craig Topper1f2460a2011-12-22 09:18:58 +0000345 // CHECK: @llvm.x86.avx2.pmovsxwd
346 return _mm256_cvtepi16_epi32(a);
347}
348
Craig Topperf4bb9522011-12-24 03:28:57 +0000349__m256i test_mm256_cvtepi16_epi64(__m128i a) {
Craig Topper1f2460a2011-12-22 09:18:58 +0000350 // CHECK: @llvm.x86.avx2.pmovsxwq
351 return _mm256_cvtepi16_epi64(a);
352}
353
Craig Topperf4bb9522011-12-24 03:28:57 +0000354__m256i test_mm256_cvtepi32_epi64(__m128i a) {
Craig Topper1f2460a2011-12-22 09:18:58 +0000355 // CHECK: @llvm.x86.avx2.pmovsxdq
356 return _mm256_cvtepi32_epi64(a);
357}
358
Craig Topperf4bb9522011-12-24 03:28:57 +0000359__m256i test_mm256_cvtepu8_epi16(__m128i a) {
Craig Topper1f2460a2011-12-22 09:18:58 +0000360 // CHECK: @llvm.x86.avx2.pmovzxbw
361 return _mm256_cvtepu8_epi16(a);
362}
363
Craig Topperf4bb9522011-12-24 03:28:57 +0000364__m256i test_mm256_cvtepu8_epi32(__m128i a) {
Craig Topper1f2460a2011-12-22 09:18:58 +0000365 // CHECK: @llvm.x86.avx2.pmovzxbd
366 return _mm256_cvtepu8_epi32(a);
367}
368
Craig Topperf4bb9522011-12-24 03:28:57 +0000369__m256i test_mm256_cvtepu8_epi64(__m128i a) {
Craig Topper1f2460a2011-12-22 09:18:58 +0000370 // CHECK: @llvm.x86.avx2.pmovzxbq
371 return _mm256_cvtepu8_epi64(a);
372}
373
Craig Topperf4bb9522011-12-24 03:28:57 +0000374__m256i test_mm256_cvtepu16_epi32(__m128i a) {
Craig Topper1f2460a2011-12-22 09:18:58 +0000375 // CHECK: @llvm.x86.avx2.pmovzxwd
376 return _mm256_cvtepu16_epi32(a);
377}
378
Craig Topperf4bb9522011-12-24 03:28:57 +0000379__m256i test_mm256_cvtepu16_epi64(__m128i a) {
Craig Topper1f2460a2011-12-22 09:18:58 +0000380 // CHECK: @llvm.x86.avx2.pmovzxwq
381 return _mm256_cvtepu16_epi64(a);
382}
383
Craig Topperf4bb9522011-12-24 03:28:57 +0000384__m256i test_mm256_cvtepu32_epi64(__m128i a) {
Craig Topper1f2460a2011-12-22 09:18:58 +0000385 // CHECK: @llvm.x86.avx2.pmovzxdq
386 return _mm256_cvtepu32_epi64(a);
387}
Craig Topper235a3652011-12-23 08:31:16 +0000388
Craig Topperf4bb9522011-12-24 03:28:57 +0000389__m256i test_mm256_mul_epi32(__m256i a, __m256i b) {
Craig Topper235a3652011-12-23 08:31:16 +0000390 // CHECK: @llvm.x86.avx2.pmul.dq
391 return _mm256_mul_epi32(a, b);
392}
393
Craig Topperf4bb9522011-12-24 03:28:57 +0000394__m256i test_mm256_mulhrs_epi16(__m256i a, __m256i b) {
Craig Topper235a3652011-12-23 08:31:16 +0000395 // CHECK: @llvm.x86.avx2.pmul.hr.sw
396 return _mm256_mulhrs_epi16(a, b);
397}
398
Craig Topperf4bb9522011-12-24 03:28:57 +0000399__m256i test_mm256_mulhi_epu16(__m256i a, __m256i b) {
Craig Topper235a3652011-12-23 08:31:16 +0000400 // CHECK: @llvm.x86.avx2.pmulhu.w
401 return _mm256_mulhi_epu16(a, b);
402}
403
Craig Topperf4bb9522011-12-24 03:28:57 +0000404__m256i test_mm256_mulhi_epi16(__m256i a, __m256i b) {
Craig Topper235a3652011-12-23 08:31:16 +0000405 // CHECK: @llvm.x86.avx2.pmulh.w
406 return _mm256_mulhi_epi16(a, b);
407}
408
Craig Topperf4bb9522011-12-24 03:28:57 +0000409__m256i test_mm256_mullo_epi16(__m256i a, __m256i b) {
Craig Topper235a3652011-12-23 08:31:16 +0000410 // CHECK: mul <16 x i16>
411 return _mm256_mullo_epi16(a, b);
412}
413
Craig Topperf4bb9522011-12-24 03:28:57 +0000414__m256i test_mm256_mullo_epi32(__m256i a, __m256i b) {
Craig Topper235a3652011-12-23 08:31:16 +0000415 // CHECK: mul <8 x i32>
416 return _mm256_mullo_epi32(a, b);
417}
418
Craig Topperf4bb9522011-12-24 03:28:57 +0000419__m256i test_mm256_mul_epu32(__m256i a, __m256i b) {
Craig Topper235a3652011-12-23 08:31:16 +0000420 // CHECK: @llvm.x86.avx2.pmulu.dq
421 return _mm256_mul_epu32(a, b);
422}
Craig Topperf4bb9522011-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 Toppera6fdbd12011-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 Topper9a01e582011-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 Toppera9387732011-12-24 07:55:25 +0000605 // check: @llvm.x86.avx2.vbroadcast.sd.pd.256
Craig Topper9a01e582011-12-24 05:19:47 +0000606 return _mm256_broadcastsd_pd(a);
607}
608
Juergen Ributzka2c2dbf42013-08-17 16:40:09 +0000609__m256i test_mm256_broadcastsi128_si256(__m128i a) {
Craig Topper9a01e582011-12-24 05:19:47 +0000610 // CHECK: @llvm.x86.avx2.vbroadcasti128
Juergen Ributzka2c2dbf42013-08-17 16:40:09 +0000611 return _mm256_broadcastsi128_si256(a);
Craig Topper9a01e582011-12-24 05:19:47 +0000612}
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 Toppera9387732011-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 Topper8e578552012-04-15 22:18:10 +0000670 // CHECK: shufflevector{{.*}}<i32 1, i32 2, i32 1, i32 0>
Craig Toppera9387732011-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 Topper8e578552012-04-15 22:18:10 +0000680 // CHECK: shufflevector{{.*}}<i32 3, i32 0, i32 2, i32 0>
Craig Toppera9387732011-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 Topper26e74e52012-04-17 05:16:56 +0000685 // CHECK: @llvm.x86.avx2.vperm2i128
Craig Toppere5ea3b02012-02-08 07:33:36 +0000686 return _mm256_permute2x128_si256(a, b, 0x31);
Craig Toppera9387732011-12-24 07:55:25 +0000687}
Craig Topper175543a2011-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 Renadd5e9e2012-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 Ren86c32502012-06-29 00:54:35 +0000795__m256d test_mm256_mask_i32gather_pd(__m256d a, double const *b, __m128i c,
Manman Renadd5e9e2012-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 Ren86c32502012-06-29 00:54:35 +0000826__m128 test_mm256_mask_i64gather_ps(__m128 a, float const *b, __m256i c,
827 __m128 d) {
Manman Renadd5e9e2012-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 Ren86c32502012-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
Eli Friedman3cd55f42013-09-23 23:52:04 +0000853__m128i test_mm_mask_i32gather_epi64(__m128i a, long long const *b, __m128i c,
Manman Ren86c32502012-06-29 00:54:35 +0000854 __m128i d) {
855 // CHECK: @llvm.x86.avx2.gather.d.q
856 return _mm_mask_i32gather_epi64(a, b, c, d, 2);
857}
Eli Friedman3cd55f42013-09-23 23:52:04 +0000858__m256i test_mm256_mask_i32gather_epi64(__m256i a, long long const *b, __m128i c,
Manman Ren86c32502012-06-29 00:54:35 +0000859 __m256i d) {
860 // CHECK: @llvm.x86.avx2.gather.d.q.256
861 return _mm256_mask_i32gather_epi64(a, b, c, d, 2);
862}
Eli Friedman3cd55f42013-09-23 23:52:04 +0000863__m128i test_mm_mask_i64gather_epi64(__m128i a, long long const *b, __m128i c,
Manman Ren86c32502012-06-29 00:54:35 +0000864 __m128i d) {
865 // CHECK: @llvm.x86.avx2.gather.q.q
866 return _mm_mask_i64gather_epi64(a, b, c, d, 2);
867}
Eli Friedman3cd55f42013-09-23 23:52:04 +0000868__m256i test_mm256_mask_i64gather_epi64(__m256i a, long long const *b, __m256i c,
Manman Ren86c32502012-06-29 00:54:35 +0000869 __m256i d) {
870 // CHECK: @llvm.x86.avx2.gather.q.q.256
871 return _mm256_mask_i64gather_epi64(a, b, c, d, 2);
872}
Manman Renf865ba02012-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}
Eli Friedman3cd55f42013-09-23 23:52:04 +0000923__m128i test_mm_i32gather_epi64(long long const *b, __m128i c) {
Manman Renf865ba02012-06-29 05:19:13 +0000924 // CHECK: @llvm.x86.avx2.gather.d.q
925 return _mm_i32gather_epi64(b, c, 2);
926}
Eli Friedman3cd55f42013-09-23 23:52:04 +0000927__m256i test_mm256_i32gather_epi64(long long const *b, __m128i c) {
Manman Renf865ba02012-06-29 05:19:13 +0000928 // CHECK: @llvm.x86.avx2.gather.d.q.256
929 return _mm256_i32gather_epi64(b, c, 2);
930}
Eli Friedman3cd55f42013-09-23 23:52:04 +0000931__m128i test_mm_i64gather_epi64(long long const *b, __m128i c) {
Manman Renf865ba02012-06-29 05:19:13 +0000932 // CHECK: @llvm.x86.avx2.gather.q.q
933 return _mm_i64gather_epi64(b, c, 2);
934}
Eli Friedman3cd55f42013-09-23 23:52:04 +0000935__m256i test_mm256_i64gather_epi64(long long const *b, __m256i c) {
Manman Renf865ba02012-06-29 05:19:13 +0000936 // CHECK: @llvm.x86.avx2.gather.q.q.256
937 return _mm256_i64gather_epi64(b, c, 2);
938}