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