[LLVM][IR] Use splat syntax when printing ConstantExpr based splats. (#116856)
[llvm-project.git] / clang / test / CodeGen / X86 / avx10_2_512satcvt-builtins.c
blobbf6acaafcbcb93ce8da0f88ddfb7432a8b35c47f
1 // RUN: %clang_cc1 %s -flax-vector-conversions=none -ffreestanding -triple=x86_64 -target-feature +avx10.2-512 \
2 // RUN: -emit-llvm -o - -Wall -Werror | FileCheck %s
3 // RUN: %clang_cc1 %s -flax-vector-conversions=none -ffreestanding -triple=i386 -target-feature +avx10.2-512 \
4 // RUN: -emit-llvm -o - -Wall -Werror | FileCheck %s
6 #include <immintrin.h>
8 __m512i test_mm512_ipcvtnebf16_epi8(__m512bh __A) {
9 // CHECK-LABEL: @test_mm512_ipcvtnebf16_epi8(
10 // CHECK: @llvm.x86.avx10.vcvtnebf162ibs512
11 return _mm512_ipcvtnebf16_epi8(__A);
14 __m512i test_mm512_mask_ipcvtnebf16_epi8(__m512i __S, __mmask32 __A, __m512bh __B) {
15 // CHECK-LABEL: @test_mm512_mask_ipcvtnebf16_epi8(
16 // CHECK: @llvm.x86.avx10.vcvtnebf162ibs512
17 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
18 return _mm512_mask_ipcvtnebf16_epi8(__S, __A, __B);
21 __m512i test_mm512_maskz_ipcvtnebf16_epi8(__mmask32 __A, __m512bh __B) {
22 // CHECK-LABEL: @test_mm512_maskz_ipcvtnebf16_epi8
23 // CHECK: @llvm.x86.avx10.vcvtnebf162ibs512
24 // CHECK: zeroinitializer
25 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
26 return _mm512_maskz_ipcvtnebf16_epi8(__A, __B);
29 __m512i test_mm512_ipcvtnebf16_epu8(__m512bh __A) {
30 // CHECK-LABEL: @test_mm512_ipcvtnebf16_epu8(
31 // CHECK: @llvm.x86.avx10.vcvtnebf162iubs512
32 return _mm512_ipcvtnebf16_epu8(__A);
35 __m512i test_mm512_mask_ipcvtnebf16_epu8(__m512i __S, __mmask32 __A, __m512bh __B) {
36 // CHECK-LABEL: @test_mm512_mask_ipcvtnebf16_epu8(
37 // CHECK: @llvm.x86.avx10.vcvtnebf162iubs512
38 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
39 return _mm512_mask_ipcvtnebf16_epu8(__S, __A, __B);
42 __m512i test_mm512_maskz_ipcvtnebf16_epu8(__mmask32 __A, __m512bh __B) {
43 // CHECK-LABEL: @test_mm512_maskz_ipcvtnebf16_epu8
44 // CHECK: @llvm.x86.avx10.vcvtnebf162iubs512
45 // CHECK: zeroinitializer
46 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
47 return _mm512_maskz_ipcvtnebf16_epu8(__A, __B);
50 __m512i test_mm512_ipcvtph_epi8(__m512h __A) {
51 // CHECK-LABEL: @test_mm512_ipcvtph_epi8(
52 // CHECK: @llvm.x86.avx10.mask.vcvtph2ibs512
53 return _mm512_ipcvtph_epi8(__A);
56 __m512i test_mm512_mask_ipcvtph_epi8(__m512i __S, __mmask32 __A, __m512h __B) {
57 // CHECK-LABEL: @test_mm512_mask_ipcvtph_epi8(
58 // CHECK: @llvm.x86.avx10.mask.vcvtph2ibs512
59 return _mm512_mask_ipcvtph_epi8(__S, __A, __B);
62 __m512i test_mm512_maskz_ipcvtph_epi8(__mmask32 __A, __m512h __B) {
63 // CHECK-LABEL: @test_mm512_maskz_ipcvtph_epi8(
64 // CHECK: @llvm.x86.avx10.mask.vcvtph2ibs512
65 return _mm512_maskz_ipcvtph_epi8(__A, __B);
68 __m512i test_mm512_ipcvt_roundph_epi8(__m512h __A) {
69 // CHECK-LABEL: @test_mm512_ipcvt_roundph_epi8(
70 // CHECK: @llvm.x86.avx10.mask.vcvtph2ibs512
71 return _mm512_ipcvt_roundph_epi8(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
74 __m512i test_mm512_mask_ipcvt_roundph_epi8(__m512i __S, __mmask32 __A, __m512h __B) {
75 // CHECK-LABEL: @test_mm512_mask_ipcvt_roundph_epi8
76 // CHECK: @llvm.x86.avx10.mask.vcvtph2ibs512
77 return _mm512_mask_ipcvt_roundph_epi8(__S, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
80 __m512i test_mm512_maskz_ipcvt_roundph_epi8(__mmask32 __A, __m512h __B) {
81 // CHECK-LABEL: @test_mm512_maskz_ipcvt_roundph_epi8
82 // CHECK: @llvm.x86.avx10.mask.vcvtph2ibs512
83 return _mm512_maskz_ipcvt_roundph_epi8(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
86 __m512i test_mm512_ipcvtph_epu8(__m512h __A) {
87 // CHECK-LABEL: @test_mm512_ipcvtph_epu8(
88 // CHECK: @llvm.x86.avx10.mask.vcvtph2iubs512
89 return _mm512_ipcvtph_epu8(__A);
92 __m512i test_mm512_mask_ipcvtph_epu8(__m512i __S, __mmask32 __A, __m512h __B) {
93 // CHECK-LABEL: @test_mm512_mask_ipcvtph_epu8(
94 // CHECK: @llvm.x86.avx10.mask.vcvtph2iubs512
95 return _mm512_mask_ipcvtph_epu8(__S, __A, __B);
98 __m512i test_mm512_maskz_ipcvtph_epu8(__mmask32 __A, __m512h __B) {
99 // CHECK-LABEL: @test_mm512_maskz_ipcvtph_epu8(
100 // CHECK: @llvm.x86.avx10.mask.vcvtph2iubs512
101 return _mm512_maskz_ipcvtph_epu8(__A, __B);
104 __m512i test_mm512_ipcvt_roundph_epu8(__m512h __A) {
105 // CHECK-LABEL: @test_mm512_ipcvt_roundph_epu8(
106 // CHECK: @llvm.x86.avx10.mask.vcvtph2iubs512
107 return _mm512_ipcvt_roundph_epu8(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
110 __m512i test_mm512_mask_ipcvt_roundph_epu8(__m512i __S, __mmask32 __A, __m512h __B) {
111 // CHECK-LABEL: @test_mm512_mask_ipcvt_roundph_epu8
112 // CHECK: @llvm.x86.avx10.mask.vcvtph2iubs512
113 return _mm512_mask_ipcvt_roundph_epu8(__S, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
116 __m512i test_mm512_maskz_ipcvt_roundph_epu8(__mmask32 __A, __m512h __B) {
117 // CHECK-LABEL: @test_mm512_maskz_ipcvt_roundph_epu8
118 // CHECK: @llvm.x86.avx10.mask.vcvtph2iubs512
119 return _mm512_maskz_ipcvt_roundph_epu8(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
122 __m512i test_mm512_ipcvtps_epi8(__m512 __A) {
123 // CHECK-LABEL: @test_mm512_ipcvtps_epi8(
124 // CHECK: @llvm.x86.avx10.mask.vcvtps2ibs512
125 return _mm512_ipcvtps_epi8(__A);
128 __m512i test_mm512_mask_ipcvtps_epi8(__m512i __S, __mmask16 __A, __m512 __B) {
129 // CHECK-LABEL: @test_mm512_mask_ipcvtps_epi8(
130 // CHECK: @llvm.x86.avx10.mask.vcvtps2ibs512
131 return _mm512_mask_ipcvtps_epi8(__S, __A, __B);
134 __m512i test_mm512_maskz_ipcvtps_epi8(__mmask16 __A, __m512 __B) {
135 // CHECK-LABEL: @test_mm512_maskz_ipcvtps_epi8(
136 // CHECK: @llvm.x86.avx10.mask.vcvtps2ibs512
137 return _mm512_maskz_ipcvtps_epi8(__A, __B);
140 __m512i test_mm512_ipcvt_roundps_epi8(__m512 __A) {
141 // CHECK-LABEL: @test_mm512_ipcvt_roundps_epi8(
142 // CHECK: @llvm.x86.avx10.mask.vcvtps2ibs512
143 return _mm512_ipcvt_roundps_epi8(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
146 __m512i test_mm512_mask_ipcvt_roundps_epi8(__m512i __S, __mmask16 __A, __m512 __B) {
147 // CHECK-LABEL: @test_mm512_mask_ipcvt_roundps_epi8
148 // CHECK: @llvm.x86.avx10.mask.vcvtps2ibs512
149 return _mm512_mask_ipcvt_roundps_epi8(__S, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
152 __m512i test_mm512_maskz_ipcvt_roundps_epi8(__mmask16 __A, __m512 __B) {
153 // CHECK-LABEL: @test_mm512_maskz_ipcvt_roundps_epi8
154 // CHECK: @llvm.x86.avx10.mask.vcvtps2ibs512
155 return _mm512_maskz_ipcvt_roundps_epi8(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
158 __m512i test_mm512_ipcvtps_epu8(__m512 __A) {
159 // CHECK-LABEL: @test_mm512_ipcvtps_epu8(
160 // CHECK: @llvm.x86.avx10.mask.vcvtps2iubs512
161 return _mm512_ipcvtps_epu8(__A);
164 __m512i test_mm512_mask_ipcvtps_epu8(__m512i __S, __mmask16 __A, __m512 __B) {
165 // CHECK-LABEL: @test_mm512_mask_ipcvtps_epu8(
166 // CHECK: @llvm.x86.avx10.mask.vcvtps2iubs512
167 return _mm512_mask_ipcvtps_epu8(__S, __A, __B);
170 __m512i test_mm512_maskz_ipcvtps_epu8(__mmask16 __A, __m512 __B) {
171 // CHECK-LABEL: @test_mm512_maskz_ipcvtps_epu8(
172 // CHECK: @llvm.x86.avx10.mask.vcvtps2iubs512
173 return _mm512_maskz_ipcvtps_epu8(__A, __B);
176 __m512i test_mm512_ipcvt_roundps_epu8(__m512 __A) {
177 // CHECK-LABEL: @test_mm512_ipcvt_roundps_epu8(
178 // CHECK: @llvm.x86.avx10.mask.vcvtps2iubs512
179 return _mm512_ipcvt_roundps_epu8(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
182 __m512i test_mm512_mask_ipcvt_roundps_epu8(__m512i __S, __mmask16 __A, __m512 __B) {
183 // CHECK-LABEL: @test_mm512_mask_ipcvt_roundps_epu8
184 // CHECK: @llvm.x86.avx10.mask.vcvtps2iubs512
185 return _mm512_mask_ipcvt_roundps_epu8(__S, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
188 __m512i test_mm512_maskz_ipcvt_roundps_epu8(__mmask16 __A, __m512 __B) {
189 // CHECK-LABEL: @test_mm512_maskz_ipcvt_roundps_epu8
190 // CHECK: @llvm.x86.avx10.mask.vcvtps2iubs512
191 return _mm512_maskz_ipcvt_roundps_epu8(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
194 __m512i test_mm512_ipcvttnebf16_epi8(__m512bh __A) {
195 // CHECK-LABEL: @test_mm512_ipcvttnebf16_epi8(
196 // CHECK: @llvm.x86.avx10.vcvttnebf162ibs512(
197 return _mm512_ipcvttnebf16_epi8(__A);
200 __m512i test_mm512_mask_ipcvttnebf16_epi8(__m512i __S, __mmask32 __A, __m512bh __B) {
201 // CHECK-LABEL: @test_mm512_mask_ipcvttnebf16_epi8(
202 // CHECK: @llvm.x86.avx10.vcvttnebf162ibs512(
203 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
204 return _mm512_mask_ipcvttnebf16_epi8(__S, __A, __B);
207 __m512i test_mm512_maskz_ipcvttnebf16_epi8(__mmask32 __A, __m512bh __B) {
208 // CHECK-LABEL: @test_mm512_maskz_ipcvttnebf16_epi8
209 // CHECK: @llvm.x86.avx10.vcvttnebf162ibs512(
210 // CHECK: zeroinitializer
211 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
212 return _mm512_maskz_ipcvttnebf16_epi8(__A, __B);
215 __m512i test_mm512_ipcvttnebf16_epu8(__m512bh __A) {
216 // CHECK-LABEL: @test_mm512_ipcvttnebf16_epu8(
217 // CHECK: @llvm.x86.avx10.vcvttnebf162iubs512(
218 return _mm512_ipcvttnebf16_epu8(__A);
221 __m512i test_mm512_mask_ipcvttnebf16_epu8(__m512i __S, __mmask32 __A, __m512bh __B) {
222 // CHECK-LABEL: @test_mm512_mask_ipcvttnebf16_epu8(
223 // CHECK: @llvm.x86.avx10.vcvttnebf162iubs512(
224 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
225 return _mm512_mask_ipcvttnebf16_epu8(__S, __A, __B);
228 __m512i test_mm512_maskz_ipcvttnebf16_epu8(__mmask32 __A, __m512bh __B) {
229 // CHECK-LABEL: @test_mm512_maskz_ipcvttnebf16_epu8
230 // CHECK: @llvm.x86.avx10.vcvttnebf162iubs512(
231 // CHECK: zeroinitializer
232 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
233 return _mm512_maskz_ipcvttnebf16_epu8(__A, __B);
236 __m512i test_mm512_ipcvttph_epi8(__m512h __A) {
237 // CHECK-LABEL: @test_mm512_ipcvttph_epi8(
238 // CHECK: @llvm.x86.avx10.mask.vcvttph2ibs512
239 return _mm512_ipcvttph_epi8(__A);
242 __m512i test_mm512_mask_ipcvttph_epi8(__m512i __S, __mmask32 __A, __m512h __B) {
243 // CHECK-LABEL: @test_mm512_mask_ipcvttph_epi8(
244 // CHECK: @llvm.x86.avx10.mask.vcvttph2ibs512
245 return _mm512_mask_ipcvttph_epi8(__S, __A, __B);
248 __m512i test_mm512_maskz_ipcvttph_epi8(__mmask32 __A, __m512h __B) {
249 // CHECK-LABEL: @test_mm512_maskz_ipcvttph_epi8
250 // CHECK: @llvm.x86.avx10.mask.vcvttph2ibs512
251 return _mm512_maskz_ipcvttph_epi8(__A, __B);
254 __m512i test_mm512_ipcvtt_roundph_epi8(__m512h __A) {
255 // CHECK-LABEL: @test_mm512_ipcvtt_roundph_epi8
256 // CHECK: @llvm.x86.avx10.mask.vcvttph2ibs512
257 return _mm512_ipcvtt_roundph_epi8(__A, _MM_FROUND_NO_EXC);
260 __m512i test_mm512_mask_ipcvtt_roundph_epi8(__m512i __S, __mmask32 __A, __m512h __B) {
261 // CHECK-LABEL: @test_mm512_mask_ipcvtt_roundph_epi8
262 // CHECK: @llvm.x86.avx10.mask.vcvttph2ibs512
263 return _mm512_mask_ipcvtt_roundph_epi8(__S, __A, __B, _MM_FROUND_NO_EXC);
266 __m512i test_mm512_maskz_ipcvtt_roundph_epi8(__mmask32 __A, __m512h __B) {
267 // CHECK-LABEL: @test_mm512_maskz_ipcvtt_roundph_epi8
268 // CHECK: @llvm.x86.avx10.mask.vcvttph2ibs512
269 return _mm512_maskz_ipcvtt_roundph_epi8(__A, __B, _MM_FROUND_NO_EXC);
272 __m512i test_mm512_ipcvttph_epu8(__m512h __A) {
273 // CHECK-LABEL: @test_mm512_ipcvttph_epu8(
274 // CHECK: @llvm.x86.avx10.mask.vcvttph2iubs512
275 return _mm512_ipcvttph_epu8(__A);
278 __m512i test_mm512_mask_ipcvttph_epu8(__m512i __S, __mmask32 __A, __m512h __B) {
279 // CHECK-LABEL: @test_mm512_mask_ipcvttph_epu8(
280 // CHECK: @llvm.x86.avx10.mask.vcvttph2iubs512
281 return _mm512_mask_ipcvttph_epu8(__S, __A, __B);
284 __m512i test_mm512_maskz_ipcvttph_epu8(__mmask32 __A, __m512h __B) {
285 // CHECK-LABEL: @test_mm512_maskz_ipcvttph_epu8
286 // CHECK: @llvm.x86.avx10.mask.vcvttph2iubs512
287 return _mm512_maskz_ipcvttph_epu8(__A, __B);
290 __m512i test_mm512_ipcvtt_roundph_epu8(__m512h __A) {
291 // CHECK-LABEL: @test_mm512_ipcvtt_roundph_epu8
292 // CHECK: @llvm.x86.avx10.mask.vcvttph2iubs512
293 return _mm512_ipcvtt_roundph_epu8(__A, _MM_FROUND_NO_EXC);
296 __m512i test_mm512_mask_ipcvtt_roundph_epu8(__m512i __S, __mmask32 __A, __m512h __B) {
297 // CHECK-LABEL: @test_mm512_mask_ipcvtt_roundph_epu8
298 // CHECK: @llvm.x86.avx10.mask.vcvttph2iubs512
299 return _mm512_mask_ipcvtt_roundph_epu8(__S, __A, __B, _MM_FROUND_NO_EXC);
302 __m512i test_mm512_maskz_ipcvtt_roundph_epu8(__mmask32 __A, __m512h __B) {
303 // CHECK-LABEL: @test_mm512_maskz_ipcvtt_roundph_epu8
304 // CHECK: @llvm.x86.avx10.mask.vcvttph2iubs512
305 return _mm512_maskz_ipcvtt_roundph_epu8(__A, __B, _MM_FROUND_NO_EXC);
308 __m512i test_mm512_ipcvttps_epi8(__m512 __A) {
309 // CHECK-LABEL: @test_mm512_ipcvttps_epi8(
310 // CHECK: @llvm.x86.avx10.mask.vcvttps2ibs512
311 return _mm512_ipcvttps_epi8(__A);
314 __m512i test_mm512_mask_ipcvttps_epi8(__m512i __S, __mmask16 __A, __m512 __B) {
315 // CHECK-LABEL: @test_mm512_mask_ipcvttps_epi8(
316 // CHECK: @llvm.x86.avx10.mask.vcvttps2ibs512
317 return _mm512_mask_ipcvttps_epi8(__S, __A, __B);
320 __m512i test_mm512_maskz_ipcvttps_epi8(__mmask16 __A, __m512 __B) {
321 // CHECK-LABEL: @test_mm512_maskz_ipcvttps_epi8
322 // CHECK: @llvm.x86.avx10.mask.vcvttps2ibs512
323 return _mm512_maskz_ipcvttps_epi8(__A, __B);
326 __m512i test_mm512_ipcvtt_roundps_epi8(__m512 __A) {
327 // CHECK-LABEL: @test_mm512_ipcvtt_roundps_epi8
328 // CHECK: @llvm.x86.avx10.mask.vcvttps2ibs512
329 return _mm512_ipcvtt_roundps_epi8(__A, _MM_FROUND_NO_EXC);
332 __m512i test_mm512_mask_ipcvtt_roundps_epi8(__m512i __S, __mmask16 __A, __m512 __B) {
333 // CHECK-LABEL: @test_mm512_mask_ipcvtt_roundps_epi8
334 // CHECK: @llvm.x86.avx10.mask.vcvttps2ibs512
335 return _mm512_mask_ipcvtt_roundps_epi8(__S, __A, __B, _MM_FROUND_NO_EXC);
339 __m512i test_mm512_maskz_ipcvtt_roundps_epi8(__mmask16 __A, __m512 __B) {
340 // CHECK-LABEL: @test_mm512_maskz_ipcvtt_roundps_epi8
341 // CHECK: @llvm.x86.avx10.mask.vcvttps2ibs512
342 return _mm512_maskz_ipcvtt_roundps_epi8(__A, __B, _MM_FROUND_NO_EXC);
345 __m512i test_mm512_ipcvttps_epu8(__m512 __A) {
346 // CHECK-LABEL: @test_mm512_ipcvttps_epu8(
347 // CHECK: @llvm.x86.avx10.mask.vcvttps2iubs512
348 return _mm512_ipcvttps_epu8(__A);
351 __m512i test_mm512_mask_ipcvttps_epu8(__m512i __S, __mmask16 __A, __m512 __B) {
352 // CHECK-LABEL: @test_mm512_mask_ipcvttps_epu8(
353 // CHECK: @llvm.x86.avx10.mask.vcvttps2iubs512
354 return _mm512_mask_ipcvttps_epu8(__S, __A, __B);
357 __m512i test_mm512_maskz_ipcvttps_epu8(__mmask16 __A, __m512 __B) {
358 // CHECK-LABEL: @test_mm512_maskz_ipcvttps_epu8
359 // CHECK: @llvm.x86.avx10.mask.vcvttps2iubs512
360 return _mm512_maskz_ipcvttps_epu8(__A, __B);
363 __m512i test_mm512_ipcvtt_roundps_epu8(__m512 __A) {
364 // CHECK-LABEL: @test_mm512_ipcvtt_roundps_epu8
365 // CHECK: @llvm.x86.avx10.mask.vcvttps2iubs512
366 return _mm512_ipcvtt_roundps_epu8(__A, _MM_FROUND_NO_EXC);
369 __m512i test_mm512_mask_ipcvtt_roundps_epu8(__m512i __S, __mmask16 __A, __m512 __B) {
370 // CHECK-LABEL: @test_mm512_mask_ipcvtt_roundps_epu8
371 // CHECK: @llvm.x86.avx10.mask.vcvttps2iubs512
372 return _mm512_mask_ipcvtt_roundps_epu8(__S, __A, __B, _MM_FROUND_NO_EXC);
375 __m512i test_mm512_maskz_ipcvtt_roundps_epu8(__mmask16 __A, __m512 __B) {
376 // CHECK-LABEL: @test_mm512_maskz_ipcvtt_roundps_epu8
377 // CHECK: @llvm.x86.avx10.mask.vcvttps2iubs512
378 return _mm512_maskz_ipcvtt_roundps_epu8(__A, __B, _MM_FROUND_NO_EXC);