Clang Project

clang_source_code/test/CodeGen/avx512vbmi2-builtins.c
1// 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
7  // CHECK: @llvm.x86.avx512.mask.compress
8  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
13  // CHECK: @llvm.x86.avx512.mask.compress
14  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
19  // CHECK: @llvm.x86.avx512.mask.compress
20  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
25  // CHECK: @llvm.x86.avx512.mask.compress
26  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
31  // CHECK: @llvm.masked.compressstore.v32i16(<32 x i16> %{{.*}}, i16* %{{.*}}, <32 x i1> %{{.*}})
32  _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
37  // CHECK: @llvm.masked.compressstore.v64i8(<64 x i8> %{{.*}}, i8* %{{.*}}, <64 x i1> %{{.*}})
38  _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
43  // CHECK: @llvm.x86.avx512.mask.expand
44  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
49  // CHECK: @llvm.x86.avx512.mask.expand
50  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
55  // CHECK: @llvm.x86.avx512.mask.expand
56  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
61  // CHECK: @llvm.x86.avx512.mask.expand
62  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
67  // CHECK: @llvm.masked.expandload.v32i16(i16* %{{.*}}, <32 x i1> %{{.*}}, <32 x i16> %{{.*}})
68  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
73  // CHECK: @llvm.masked.expandload.v32i16(i16* %{{.*}}, <32 x i1> %{{.*}}, <32 x i16> %{{.*}})
74  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
79  // CHECK: @llvm.masked.expandload.v64i8(i8* %{{.*}}, <64 x i1> %{{.*}}, <64 x i8> %{{.*}})
80  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
85  // CHECK: @llvm.masked.expandload.v64i8(i8* %{{.*}}, <64 x i1> %{{.*}}, <64 x i8> %{{.*}})
86  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
91  // 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>)
92  // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
93  return _mm512_mask_shldi_epi64(__S, __U, __A, __B, 47);
94}
95
96__m512i test_mm512_maskz_shldi_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
97  // CHECK-LABEL: @test_mm512_maskz_shldi_epi64
98  // 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>)
99  // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
100  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
105  // 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>)
106  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
111  // 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>)
112  // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
113  return _mm512_mask_shldi_epi32(__S, __U, __A, __B, 7);
114}
115
116__m512i test_mm512_maskz_shldi_epi32(__mmask16 __U, __m512i __A, __m512i __B) {
117  // CHECK-LABEL: @test_mm512_maskz_shldi_epi32
118  // 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>)
119  // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
120  return _mm512_maskz_shldi_epi32(__U, __A, __B, 15);
121}
122
123__m512i test_mm512_shldi_epi32(__m512i __A, __m512i __B) {
124  // CHECK-LABEL: @test_mm512_shldi_epi32
125  // 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>)
126  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
131  // 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>)
132  // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
133  return _mm512_mask_shldi_epi16(__S, __U, __A, __B, 3);
134}
135
136__m512i test_mm512_maskz_shldi_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
137  // CHECK-LABEL: @test_mm512_maskz_shldi_epi16
138  // 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>)
139  // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
140  return _mm512_maskz_shldi_epi16(__U, __A, __B, 7);
141}
142
143__m512i test_mm512_shldi_epi16(__m512i __A, __m512i __B) {
144  // CHECK-LABEL: @test_mm512_shldi_epi16
145  // 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>)
146  return _mm512_shldi_epi16(__A, __B, 15);
147}
148
149__m512i test_mm512_mask_shrdi_epi64(__m512i __S, __mmask8 __U, __m512i __A, __m512i __B) {
150  // CHECK-LABEL: @test_mm512_mask_shrdi_epi64
151  // 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>)
152  // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
153  return _mm512_mask_shrdi_epi64(__S, __U, __A, __B, 47);
154}
155
156__m512i test_mm512_maskz_shrdi_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
157  // CHECK-LABEL: @test_mm512_maskz_shrdi_epi64
158  // 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>)
159  // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
160  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
165  // 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>)
166  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
171  // 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>)
172  // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
173  return _mm512_mask_shrdi_epi32(__S, __U, __A, __B, 7);
174}
175
176__m512i test_mm512_maskz_shrdi_epi32(__mmask16 __U, __m512i __A, __m512i __B) {
177  // CHECK-LABEL: @test_mm512_maskz_shrdi_epi32
178  // 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>)
179  // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
180  return _mm512_maskz_shrdi_epi32(__U, __A, __B, 15);
181}
182
183__m512i test_mm512_shrdi_epi32(__m512i __A, __m512i __B) {
184  // CHECK-LABEL: @test_mm512_shrdi_epi32
185  // 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>)
186  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
191  // 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>)
192  // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
193  return _mm512_mask_shrdi_epi16(__S, __U, __A, __B, 3);
194}
195
196__m512i test_mm512_maskz_shrdi_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
197  // CHECK-LABEL: @test_mm512_maskz_shrdi_epi16
198  // 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>)
199  // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
200  return _mm512_maskz_shrdi_epi16(__U, __A, __B, 15);
201}
202
203__m512i test_mm512_shrdi_epi16(__m512i __A, __m512i __B) {
204  // CHECK-LABEL: @test_mm512_shrdi_epi16
205  // 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>)
206  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
211  // 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> %{{.*}}
213  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
218  // 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> %{{.*}}
220  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
225  // CHECK: @llvm.fshl.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}})
226  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
231  // 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> %{{.*}}
233  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
238  // 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> %{{.*}}
240  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
245  // CHECK: @llvm.fshl.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
246  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
251  // 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> %{{.*}}
253  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
258  // 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> %{{.*}}
260  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
265  // CHECK: @llvm.fshl.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}})
266  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
271  // 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> %{{.*}}
273  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
278  // 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> %{{.*}}
280  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
285  // CHECK: @llvm.fshr.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}})
286  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
291  // 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> %{{.*}}
293  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
298  // 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> %{{.*}}
300  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
305  // CHECK: @llvm.fshr.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
306  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
311  // 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> %{{.*}}
313  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
318  // 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> %{{.*}}
320  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
325  // CHECK: @llvm.fshr.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}})
326  return _mm512_shrdv_epi16(__S, __A, __B);
327}
328
329