blob: d4812695e587e9e90d9f99fb7a1ae345844a75eb [file] [log] [blame]
Coby Tayreea09663a2017-12-27 11:25:07 +00001// RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512vbmi2 -emit-llvm -o - -Wall -Werror | FileCheck %s
2
3#include <immintrin.h>
4
5__m512i test_mm512_mask_compress_epi16(__m512i __S, __mmask32 __U, __m512i __D) {
6 // CHECK-LABEL: @test_mm512_mask_compress_epi16
Craig Topper07b6d3d2019-01-28 07:03:10 +00007 // CHECK: @llvm.x86.avx512.mask.compress
Coby Tayreea09663a2017-12-27 11:25:07 +00008 return _mm512_mask_compress_epi16(__S, __U, __D);
9}
10
11__m512i test_mm512_maskz_compress_epi16(__mmask32 __U, __m512i __D) {
12 // CHECK-LABEL: @test_mm512_maskz_compress_epi16
Craig Topper07b6d3d2019-01-28 07:03:10 +000013 // CHECK: @llvm.x86.avx512.mask.compress
Coby Tayreea09663a2017-12-27 11:25:07 +000014 return _mm512_maskz_compress_epi16(__U, __D);
15}
16
17__m512i test_mm512_mask_compress_epi8(__m512i __S, __mmask64 __U, __m512i __D) {
18 // CHECK-LABEL: @test_mm512_mask_compress_epi8
Craig Topper07b6d3d2019-01-28 07:03:10 +000019 // CHECK: @llvm.x86.avx512.mask.compress
Coby Tayreea09663a2017-12-27 11:25:07 +000020 return _mm512_mask_compress_epi8(__S, __U, __D);
21}
22
23__m512i test_mm512_maskz_compress_epi8(__mmask64 __U, __m512i __D) {
24 // CHECK-LABEL: @test_mm512_maskz_compress_epi8
Craig Topper07b6d3d2019-01-28 07:03:10 +000025 // CHECK: @llvm.x86.avx512.mask.compress
Coby Tayreea09663a2017-12-27 11:25:07 +000026 return _mm512_maskz_compress_epi8(__U, __D);
27}
28
29void test_mm512_mask_compressstoreu_epi16(void *__P, __mmask32 __U, __m512i __D) {
30 // CHECK-LABEL: @test_mm512_mask_compressstoreu_epi16
Craig Topper3cce6a72018-06-10 17:27:05 +000031 // CHECK: @llvm.masked.compressstore.v32i16(<32 x i16> %{{.*}}, i16* %{{.*}}, <32 x i1> %{{.*}})
Coby Tayreea09663a2017-12-27 11:25:07 +000032 _mm512_mask_compressstoreu_epi16(__P, __U, __D);
33}
34
35void test_mm512_mask_compressstoreu_epi8(void *__P, __mmask64 __U, __m512i __D) {
36 // CHECK-LABEL: @test_mm512_mask_compressstoreu_epi8
Craig Topper3cce6a72018-06-10 17:27:05 +000037 // CHECK: @llvm.masked.compressstore.v64i8(<64 x i8> %{{.*}}, i8* %{{.*}}, <64 x i1> %{{.*}})
Coby Tayreea09663a2017-12-27 11:25:07 +000038 _mm512_mask_compressstoreu_epi8(__P, __U, __D);
39}
40
41__m512i test_mm512_mask_expand_epi16(__m512i __S, __mmask32 __U, __m512i __D) {
42 // CHECK-LABEL: @test_mm512_mask_expand_epi16
Craig Topper07b6d3d2019-01-28 07:03:10 +000043 // CHECK: @llvm.x86.avx512.mask.expand
Coby Tayreea09663a2017-12-27 11:25:07 +000044 return _mm512_mask_expand_epi16(__S, __U, __D);
45}
46
47__m512i test_mm512_maskz_expand_epi16(__mmask32 __U, __m512i __D) {
48 // CHECK-LABEL: @test_mm512_maskz_expand_epi16
Craig Topper07b6d3d2019-01-28 07:03:10 +000049 // CHECK: @llvm.x86.avx512.mask.expand
Coby Tayreea09663a2017-12-27 11:25:07 +000050 return _mm512_maskz_expand_epi16(__U, __D);
51}
52
53__m512i test_mm512_mask_expand_epi8(__m512i __S, __mmask64 __U, __m512i __D) {
54 // CHECK-LABEL: @test_mm512_mask_expand_epi8
Craig Topper07b6d3d2019-01-28 07:03:10 +000055 // CHECK: @llvm.x86.avx512.mask.expand
Coby Tayreea09663a2017-12-27 11:25:07 +000056 return _mm512_mask_expand_epi8(__S, __U, __D);
57}
58
59__m512i test_mm512_maskz_expand_epi8(__mmask64 __U, __m512i __D) {
60 // CHECK-LABEL: @test_mm512_maskz_expand_epi8
Craig Topper07b6d3d2019-01-28 07:03:10 +000061 // CHECK: @llvm.x86.avx512.mask.expand
Coby Tayreea09663a2017-12-27 11:25:07 +000062 return _mm512_maskz_expand_epi8(__U, __D);
63}
64
65__m512i test_mm512_mask_expandloadu_epi16(__m512i __S, __mmask32 __U, void const* __P) {
66 // CHECK-LABEL: @test_mm512_mask_expandloadu_epi16
Craig Topper3cce6a72018-06-10 17:27:05 +000067 // CHECK: @llvm.masked.expandload.v32i16(i16* %{{.*}}, <32 x i1> %{{.*}}, <32 x i16> %{{.*}})
Coby Tayreea09663a2017-12-27 11:25:07 +000068 return _mm512_mask_expandloadu_epi16(__S, __U, __P);
69}
70
71__m512i test_mm512_maskz_expandloadu_epi16(__mmask32 __U, void const* __P) {
72 // CHECK-LABEL: @test_mm512_maskz_expandloadu_epi16
Craig Topper3cce6a72018-06-10 17:27:05 +000073 // CHECK: @llvm.masked.expandload.v32i16(i16* %{{.*}}, <32 x i1> %{{.*}}, <32 x i16> %{{.*}})
Coby Tayreea09663a2017-12-27 11:25:07 +000074 return _mm512_maskz_expandloadu_epi16(__U, __P);
75}
76
77__m512i test_mm512_mask_expandloadu_epi8(__m512i __S, __mmask64 __U, void const* __P) {
78 // CHECK-LABEL: @test_mm512_mask_expandloadu_epi8
Craig Topper3cce6a72018-06-10 17:27:05 +000079 // CHECK: @llvm.masked.expandload.v64i8(i8* %{{.*}}, <64 x i1> %{{.*}}, <64 x i8> %{{.*}})
Coby Tayreea09663a2017-12-27 11:25:07 +000080 return _mm512_mask_expandloadu_epi8(__S, __U, __P);
81}
82
83__m512i test_mm512_maskz_expandloadu_epi8(__mmask64 __U, void const* __P) {
84 // CHECK-LABEL: @test_mm512_maskz_expandloadu_epi8
Craig Topper3cce6a72018-06-10 17:27:05 +000085 // CHECK: @llvm.masked.expandload.v64i8(i8* %{{.*}}, <64 x i1> %{{.*}}, <64 x i8> %{{.*}})
Coby Tayreea09663a2017-12-27 11:25:07 +000086 return _mm512_maskz_expandloadu_epi8(__U, __P);
87}
88
89__m512i test_mm512_mask_shldi_epi64(__m512i __S, __mmask8 __U, __m512i __A, __m512i __B) {
90 // CHECK-LABEL: @test_mm512_mask_shldi_epi64
Craig Toppercd9e2322019-01-07 21:00:41 +000091 // CHECK: @llvm.fshl.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> <i64 47, i64 47, i64 47, i64 47, i64 47, i64 47, i64 47, i64 47>)
Craig Topper2527c372018-06-13 07:19:28 +000092 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
Craig Topperb4f7c5f2019-01-07 06:01:58 +000093 return _mm512_mask_shldi_epi64(__S, __U, __A, __B, 47);
Coby Tayreea09663a2017-12-27 11:25:07 +000094}
95
96__m512i test_mm512_maskz_shldi_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
97 // CHECK-LABEL: @test_mm512_maskz_shldi_epi64
Craig Toppercd9e2322019-01-07 21:00:41 +000098 // CHECK: @llvm.fshl.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> <i64 63, i64 63, i64 63, i64 63, i64 63, i64 63, i64 63, i64 63>)
Craig Topper2527c372018-06-13 07:19:28 +000099 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
Coby Tayreea09663a2017-12-27 11:25:07 +0000100 return _mm512_maskz_shldi_epi64(__U, __A, __B, 63);
101}
102
103__m512i test_mm512_shldi_epi64(__m512i __A, __m512i __B) {
104 // CHECK-LABEL: @test_mm512_shldi_epi64
Craig Toppercd9e2322019-01-07 21:00:41 +0000105 // CHECK: @llvm.fshl.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> <i64 31, i64 31, i64 31, i64 31, i64 31, i64 31, i64 31, i64 31>)
Coby Tayreea09663a2017-12-27 11:25:07 +0000106 return _mm512_shldi_epi64(__A, __B, 31);
107}
108
109__m512i test_mm512_mask_shldi_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B) {
110 // CHECK-LABEL: @test_mm512_mask_shldi_epi32
Craig Toppercd9e2322019-01-07 21:00:41 +0000111 // CHECK: @llvm.fshl.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7>)
Craig Topper2527c372018-06-13 07:19:28 +0000112 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
Craig Topperb4f7c5f2019-01-07 06:01:58 +0000113 return _mm512_mask_shldi_epi32(__S, __U, __A, __B, 7);
Coby Tayreea09663a2017-12-27 11:25:07 +0000114}
115
116__m512i test_mm512_maskz_shldi_epi32(__mmask16 __U, __m512i __A, __m512i __B) {
117 // CHECK-LABEL: @test_mm512_maskz_shldi_epi32
Craig Toppercd9e2322019-01-07 21:00:41 +0000118 // CHECK: @llvm.fshl.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15>)
Craig Topper2527c372018-06-13 07:19:28 +0000119 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
Craig Topperb4f7c5f2019-01-07 06:01:58 +0000120 return _mm512_maskz_shldi_epi32(__U, __A, __B, 15);
Coby Tayreea09663a2017-12-27 11:25:07 +0000121}
122
123__m512i test_mm512_shldi_epi32(__m512i __A, __m512i __B) {
124 // CHECK-LABEL: @test_mm512_shldi_epi32
Craig Toppercd9e2322019-01-07 21:00:41 +0000125 // CHECK: @llvm.fshl.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31>)
Coby Tayreea09663a2017-12-27 11:25:07 +0000126 return _mm512_shldi_epi32(__A, __B, 31);
127}
128
129__m512i test_mm512_mask_shldi_epi16(__m512i __S, __mmask32 __U, __m512i __A, __m512i __B) {
130 // CHECK-LABEL: @test_mm512_mask_shldi_epi16
Craig Toppercd9e2322019-01-07 21:00:41 +0000131 // CHECK: @llvm.fshl.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>)
Craig Topper2527c372018-06-13 07:19:28 +0000132 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
Craig Topperb4f7c5f2019-01-07 06:01:58 +0000133 return _mm512_mask_shldi_epi16(__S, __U, __A, __B, 3);
Coby Tayreea09663a2017-12-27 11:25:07 +0000134}
135
136__m512i test_mm512_maskz_shldi_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
137 // CHECK-LABEL: @test_mm512_maskz_shldi_epi16
Craig Toppercd9e2322019-01-07 21:00:41 +0000138 // CHECK: @llvm.fshl.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> <i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7>)
Craig Topper2527c372018-06-13 07:19:28 +0000139 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
Craig Topperb4f7c5f2019-01-07 06:01:58 +0000140 return _mm512_maskz_shldi_epi16(__U, __A, __B, 7);
Coby Tayreea09663a2017-12-27 11:25:07 +0000141}
142
143__m512i test_mm512_shldi_epi16(__m512i __A, __m512i __B) {
144 // CHECK-LABEL: @test_mm512_shldi_epi16
Craig Toppercd9e2322019-01-07 21:00:41 +0000145 // CHECK: @llvm.fshl.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> <i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15>)
Craig Topperb4f7c5f2019-01-07 06:01:58 +0000146 return _mm512_shldi_epi16(__A, __B, 15);
Coby Tayreea09663a2017-12-27 11:25:07 +0000147}
148
149__m512i test_mm512_mask_shrdi_epi64(__m512i __S, __mmask8 __U, __m512i __A, __m512i __B) {
150 // CHECK-LABEL: @test_mm512_mask_shrdi_epi64
Craig Toppercd9e2322019-01-07 21:00:41 +0000151 // CHECK: @llvm.fshr.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> <i64 47, i64 47, i64 47, i64 47, i64 47, i64 47, i64 47, i64 47>)
Craig Topper2527c372018-06-13 07:19:28 +0000152 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
Craig Topperb4f7c5f2019-01-07 06:01:58 +0000153 return _mm512_mask_shrdi_epi64(__S, __U, __A, __B, 47);
Coby Tayreea09663a2017-12-27 11:25:07 +0000154}
155
156__m512i test_mm512_maskz_shrdi_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
157 // CHECK-LABEL: @test_mm512_maskz_shrdi_epi64
Craig Toppercd9e2322019-01-07 21:00:41 +0000158 // CHECK: @llvm.fshr.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> <i64 63, i64 63, i64 63, i64 63, i64 63, i64 63, i64 63, i64 63>)
Craig Topper2527c372018-06-13 07:19:28 +0000159 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
Coby Tayreea09663a2017-12-27 11:25:07 +0000160 return _mm512_maskz_shrdi_epi64(__U, __A, __B, 63);
161}
162
163__m512i test_mm512_shrdi_epi64(__m512i __A, __m512i __B) {
164 // CHECK-LABEL: @test_mm512_shrdi_epi64
Craig Toppercd9e2322019-01-07 21:00:41 +0000165 // CHECK: @llvm.fshr.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> <i64 31, i64 31, i64 31, i64 31, i64 31, i64 31, i64 31, i64 31>)
Coby Tayreea09663a2017-12-27 11:25:07 +0000166 return _mm512_shrdi_epi64(__A, __B, 31);
167}
168
169__m512i test_mm512_mask_shrdi_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B) {
170 // CHECK-LABEL: @test_mm512_mask_shrdi_epi32
Craig Toppercd9e2322019-01-07 21:00:41 +0000171 // CHECK: @llvm.fshr.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7>)
Craig Topper2527c372018-06-13 07:19:28 +0000172 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
Craig Topperb4f7c5f2019-01-07 06:01:58 +0000173 return _mm512_mask_shrdi_epi32(__S, __U, __A, __B, 7);
Coby Tayreea09663a2017-12-27 11:25:07 +0000174}
175
176__m512i test_mm512_maskz_shrdi_epi32(__mmask16 __U, __m512i __A, __m512i __B) {
177 // CHECK-LABEL: @test_mm512_maskz_shrdi_epi32
Craig Toppercd9e2322019-01-07 21:00:41 +0000178 // CHECK: @llvm.fshr.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15>)
Craig Topper2527c372018-06-13 07:19:28 +0000179 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
Craig Topperb4f7c5f2019-01-07 06:01:58 +0000180 return _mm512_maskz_shrdi_epi32(__U, __A, __B, 15);
Coby Tayreea09663a2017-12-27 11:25:07 +0000181}
182
183__m512i test_mm512_shrdi_epi32(__m512i __A, __m512i __B) {
184 // CHECK-LABEL: @test_mm512_shrdi_epi32
Craig Toppercd9e2322019-01-07 21:00:41 +0000185 // CHECK: @llvm.fshr.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31>)
Coby Tayreea09663a2017-12-27 11:25:07 +0000186 return _mm512_shrdi_epi32(__A, __B, 31);
187}
188
189__m512i test_mm512_mask_shrdi_epi16(__m512i __S, __mmask32 __U, __m512i __A, __m512i __B) {
190 // CHECK-LABEL: @test_mm512_mask_shrdi_epi16
Craig Toppercd9e2322019-01-07 21:00:41 +0000191 // CHECK: @llvm.fshr.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>)
Craig Topper2527c372018-06-13 07:19:28 +0000192 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
Craig Topperb4f7c5f2019-01-07 06:01:58 +0000193 return _mm512_mask_shrdi_epi16(__S, __U, __A, __B, 3);
Coby Tayreea09663a2017-12-27 11:25:07 +0000194}
195
196__m512i test_mm512_maskz_shrdi_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
197 // CHECK-LABEL: @test_mm512_maskz_shrdi_epi16
Craig Toppercd9e2322019-01-07 21:00:41 +0000198 // CHECK: @llvm.fshr.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> <i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15>)
Craig Topper2527c372018-06-13 07:19:28 +0000199 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
Craig Topperb4f7c5f2019-01-07 06:01:58 +0000200 return _mm512_maskz_shrdi_epi16(__U, __A, __B, 15);
Coby Tayreea09663a2017-12-27 11:25:07 +0000201}
202
203__m512i test_mm512_shrdi_epi16(__m512i __A, __m512i __B) {
204 // CHECK-LABEL: @test_mm512_shrdi_epi16
Craig Toppercd9e2322019-01-07 21:00:41 +0000205 // CHECK: @llvm.fshr.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> <i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31>)
Coby Tayreea09663a2017-12-27 11:25:07 +0000206 return _mm512_shrdi_epi16(__A, __B, 31);
207}
208
209__m512i test_mm512_mask_shldv_epi64(__m512i __S, __mmask8 __U, __m512i __A, __m512i __B) {
210 // CHECK-LABEL: @test_mm512_mask_shldv_epi64
Craig Toppercd9e2322019-01-07 21:00:41 +0000211 // CHECK: @llvm.fshl.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}})
212 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
Coby Tayreea09663a2017-12-27 11:25:07 +0000213 return _mm512_mask_shldv_epi64(__S, __U, __A, __B);
214}
215
216__m512i test_mm512_maskz_shldv_epi64(__mmask8 __U, __m512i __S, __m512i __A, __m512i __B) {
217 // CHECK-LABEL: @test_mm512_maskz_shldv_epi64
Craig Toppercd9e2322019-01-07 21:00:41 +0000218 // CHECK: @llvm.fshl.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}})
219 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
Coby Tayreea09663a2017-12-27 11:25:07 +0000220 return _mm512_maskz_shldv_epi64(__U, __S, __A, __B);
221}
222
223__m512i test_mm512_shldv_epi64(__m512i __S, __m512i __A, __m512i __B) {
224 // CHECK-LABEL: @test_mm512_shldv_epi64
Craig Toppercd9e2322019-01-07 21:00:41 +0000225 // CHECK: @llvm.fshl.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}})
Coby Tayreea09663a2017-12-27 11:25:07 +0000226 return _mm512_shldv_epi64(__S, __A, __B);
227}
228
229__m512i test_mm512_mask_shldv_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B) {
230 // CHECK-LABEL: @test_mm512_mask_shldv_epi32
Craig Toppercd9e2322019-01-07 21:00:41 +0000231 // CHECK: @llvm.fshl.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
232 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
Coby Tayreea09663a2017-12-27 11:25:07 +0000233 return _mm512_mask_shldv_epi32(__S, __U, __A, __B);
234}
235
236__m512i test_mm512_maskz_shldv_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B) {
237 // CHECK-LABEL: @test_mm512_maskz_shldv_epi32
Craig Toppercd9e2322019-01-07 21:00:41 +0000238 // CHECK: @llvm.fshl.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
239 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
Coby Tayreea09663a2017-12-27 11:25:07 +0000240 return _mm512_maskz_shldv_epi32(__U, __S, __A, __B);
241}
242
243__m512i test_mm512_shldv_epi32(__m512i __S, __m512i __A, __m512i __B) {
244 // CHECK-LABEL: @test_mm512_shldv_epi32
Craig Toppercd9e2322019-01-07 21:00:41 +0000245 // CHECK: @llvm.fshl.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
Coby Tayreea09663a2017-12-27 11:25:07 +0000246 return _mm512_shldv_epi32(__S, __A, __B);
247}
248
249__m512i test_mm512_mask_shldv_epi16(__m512i __S, __mmask32 __U, __m512i __A, __m512i __B) {
250 // CHECK-LABEL: @test_mm512_mask_shldv_epi16
Craig Toppercd9e2322019-01-07 21:00:41 +0000251 // CHECK: @llvm.fshl.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}})
252 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
Coby Tayreea09663a2017-12-27 11:25:07 +0000253 return _mm512_mask_shldv_epi16(__S, __U, __A, __B);
254}
255
256__m512i test_mm512_maskz_shldv_epi16(__mmask32 __U, __m512i __S, __m512i __A, __m512i __B) {
257 // CHECK-LABEL: @test_mm512_maskz_shldv_epi16
Craig Toppercd9e2322019-01-07 21:00:41 +0000258 // CHECK: @llvm.fshl.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}})
259 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
Coby Tayreea09663a2017-12-27 11:25:07 +0000260 return _mm512_maskz_shldv_epi16(__U, __S, __A, __B);
261}
262
263__m512i test_mm512_shldv_epi16(__m512i __S, __m512i __A, __m512i __B) {
264 // CHECK-LABEL: @test_mm512_shldv_epi16
Craig Toppercd9e2322019-01-07 21:00:41 +0000265 // CHECK: @llvm.fshl.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}})
Coby Tayreea09663a2017-12-27 11:25:07 +0000266 return _mm512_shldv_epi16(__S, __A, __B);
267}
268
269__m512i test_mm512_mask_shrdv_epi64(__m512i __S, __mmask8 __U, __m512i __A, __m512i __B) {
270 // CHECK-LABEL: @test_mm512_mask_shrdv_epi64
Craig Toppercd9e2322019-01-07 21:00:41 +0000271 // CHECK: @llvm.fshr.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}})
272 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
Coby Tayreea09663a2017-12-27 11:25:07 +0000273 return _mm512_mask_shrdv_epi64(__S, __U, __A, __B);
274}
275
276__m512i test_mm512_maskz_shrdv_epi64(__mmask8 __U, __m512i __S, __m512i __A, __m512i __B) {
277 // CHECK-LABEL: @test_mm512_maskz_shrdv_epi64
Craig Toppercd9e2322019-01-07 21:00:41 +0000278 // CHECK: @llvm.fshr.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}})
279 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
Coby Tayreea09663a2017-12-27 11:25:07 +0000280 return _mm512_maskz_shrdv_epi64(__U, __S, __A, __B);
281}
282
283__m512i test_mm512_shrdv_epi64(__m512i __S, __m512i __A, __m512i __B) {
284 // CHECK-LABEL: @test_mm512_shrdv_epi64
Craig Toppercd9e2322019-01-07 21:00:41 +0000285 // CHECK: @llvm.fshr.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}})
Coby Tayreea09663a2017-12-27 11:25:07 +0000286 return _mm512_shrdv_epi64(__S, __A, __B);
287}
288
289__m512i test_mm512_mask_shrdv_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B) {
290 // CHECK-LABEL: @test_mm512_mask_shrdv_epi32
Craig Toppercd9e2322019-01-07 21:00:41 +0000291 // CHECK: @llvm.fshr.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
292 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
Coby Tayreea09663a2017-12-27 11:25:07 +0000293 return _mm512_mask_shrdv_epi32(__S, __U, __A, __B);
294}
295
296__m512i test_mm512_maskz_shrdv_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B) {
297 // CHECK-LABEL: @test_mm512_maskz_shrdv_epi32
Craig Toppercd9e2322019-01-07 21:00:41 +0000298 // CHECK: @llvm.fshr.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
299 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
Coby Tayreea09663a2017-12-27 11:25:07 +0000300 return _mm512_maskz_shrdv_epi32(__U, __S, __A, __B);
301}
302
303__m512i test_mm512_shrdv_epi32(__m512i __S, __m512i __A, __m512i __B) {
304 // CHECK-LABEL: @test_mm512_shrdv_epi32
Craig Toppercd9e2322019-01-07 21:00:41 +0000305 // CHECK: @llvm.fshr.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
Coby Tayreea09663a2017-12-27 11:25:07 +0000306 return _mm512_shrdv_epi32(__S, __A, __B);
307}
308
309__m512i test_mm512_mask_shrdv_epi16(__m512i __S, __mmask32 __U, __m512i __A, __m512i __B) {
310 // CHECK-LABEL: @test_mm512_mask_shrdv_epi16
Craig Toppercd9e2322019-01-07 21:00:41 +0000311 // CHECK: @llvm.fshr.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}})
312 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
Coby Tayreea09663a2017-12-27 11:25:07 +0000313 return _mm512_mask_shrdv_epi16(__S, __U, __A, __B);
314}
315
316__m512i test_mm512_maskz_shrdv_epi16(__mmask32 __U, __m512i __S, __m512i __A, __m512i __B) {
317 // CHECK-LABEL: @test_mm512_maskz_shrdv_epi16
Craig Toppercd9e2322019-01-07 21:00:41 +0000318 // CHECK: @llvm.fshr.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}})
319 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
Coby Tayreea09663a2017-12-27 11:25:07 +0000320 return _mm512_maskz_shrdv_epi16(__U, __S, __A, __B);
321}
322
323__m512i test_mm512_shrdv_epi16(__m512i __S, __m512i __A, __m512i __B) {
324 // CHECK-LABEL: @test_mm512_shrdv_epi16
Craig Toppercd9e2322019-01-07 21:00:41 +0000325 // CHECK: @llvm.fshr.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}})
Coby Tayreea09663a2017-12-27 11:25:07 +0000326 return _mm512_shrdv_epi16(__S, __A, __B);
327}
328