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
test_mm512_mask_compress_epi16(__m512i __S,__mmask32 __U,__m512i __D)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
test_mm512_maskz_compress_epi16(__mmask32 __U,__m512i __D)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
test_mm512_mask_compress_epi8(__m512i __S,__mmask64 __U,__m512i __D)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
test_mm512_maskz_compress_epi8(__mmask64 __U,__m512i __D)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
test_mm512_mask_compressstoreu_epi16(void * __P,__mmask32 __U,__m512i __D)29 void 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
test_mm512_mask_compressstoreu_epi8(void * __P,__mmask64 __U,__m512i __D)35 void 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
test_mm512_mask_expand_epi16(__m512i __S,__mmask32 __U,__m512i __D)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
test_mm512_maskz_expand_epi16(__mmask32 __U,__m512i __D)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
test_mm512_mask_expand_epi8(__m512i __S,__mmask64 __U,__m512i __D)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
test_mm512_maskz_expand_epi8(__mmask64 __U,__m512i __D)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
test_mm512_mask_expandloadu_epi16(__m512i __S,__mmask32 __U,void const * __P)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
test_mm512_maskz_expandloadu_epi16(__mmask32 __U,void const * __P)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
test_mm512_mask_expandloadu_epi8(__m512i __S,__mmask64 __U,void const * __P)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
test_mm512_maskz_expandloadu_epi8(__mmask64 __U,void const * __P)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
test_mm512_mask_shldi_epi64(__m512i __S,__mmask8 __U,__m512i __A,__m512i __B)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
test_mm512_maskz_shldi_epi64(__mmask8 __U,__m512i __A,__m512i __B)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
test_mm512_shldi_epi64(__m512i __A,__m512i __B)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
test_mm512_mask_shldi_epi32(__m512i __S,__mmask16 __U,__m512i __A,__m512i __B)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
test_mm512_maskz_shldi_epi32(__mmask16 __U,__m512i __A,__m512i __B)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
test_mm512_shldi_epi32(__m512i __A,__m512i __B)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
test_mm512_mask_shldi_epi16(__m512i __S,__mmask32 __U,__m512i __A,__m512i __B)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
test_mm512_maskz_shldi_epi16(__mmask32 __U,__m512i __A,__m512i __B)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
test_mm512_shldi_epi16(__m512i __A,__m512i __B)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
test_mm512_mask_shrdi_epi64(__m512i __S,__mmask8 __U,__m512i __A,__m512i __B)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
test_mm512_maskz_shrdi_epi64(__mmask8 __U,__m512i __A,__m512i __B)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
test_mm512_shrdi_epi64(__m512i __A,__m512i __B)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
test_mm512_mask_shrdi_epi32(__m512i __S,__mmask16 __U,__m512i __A,__m512i __B)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
test_mm512_maskz_shrdi_epi32(__mmask16 __U,__m512i __A,__m512i __B)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
test_mm512_shrdi_epi32(__m512i __A,__m512i __B)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
test_mm512_mask_shrdi_epi16(__m512i __S,__mmask32 __U,__m512i __A,__m512i __B)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
test_mm512_maskz_shrdi_epi16(__mmask32 __U,__m512i __A,__m512i __B)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
test_mm512_shrdi_epi16(__m512i __A,__m512i __B)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
test_mm512_mask_shldv_epi64(__m512i __S,__mmask8 __U,__m512i __A,__m512i __B)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
test_mm512_maskz_shldv_epi64(__mmask8 __U,__m512i __S,__m512i __A,__m512i __B)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
test_mm512_shldv_epi64(__m512i __S,__m512i __A,__m512i __B)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
test_mm512_mask_shldv_epi32(__m512i __S,__mmask16 __U,__m512i __A,__m512i __B)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
test_mm512_maskz_shldv_epi32(__mmask16 __U,__m512i __S,__m512i __A,__m512i __B)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
test_mm512_shldv_epi32(__m512i __S,__m512i __A,__m512i __B)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
test_mm512_mask_shldv_epi16(__m512i __S,__mmask32 __U,__m512i __A,__m512i __B)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
test_mm512_maskz_shldv_epi16(__mmask32 __U,__m512i __S,__m512i __A,__m512i __B)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
test_mm512_shldv_epi16(__m512i __S,__m512i __A,__m512i __B)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
test_mm512_mask_shrdv_epi64(__m512i __S,__mmask8 __U,__m512i __A,__m512i __B)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
test_mm512_maskz_shrdv_epi64(__mmask8 __U,__m512i __S,__m512i __A,__m512i __B)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
test_mm512_shrdv_epi64(__m512i __S,__m512i __A,__m512i __B)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
test_mm512_mask_shrdv_epi32(__m512i __S,__mmask16 __U,__m512i __A,__m512i __B)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
test_mm512_maskz_shrdv_epi32(__mmask16 __U,__m512i __S,__m512i __A,__m512i __B)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
test_mm512_shrdv_epi32(__m512i __S,__m512i __A,__m512i __B)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
test_mm512_mask_shrdv_epi16(__m512i __S,__mmask32 __U,__m512i __A,__m512i __B)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
test_mm512_maskz_shrdv_epi16(__mmask32 __U,__m512i __S,__m512i __A,__m512i __B)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
test_mm512_shrdv_epi16(__m512i __S,__m512i __A,__m512i __B)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