1 // RUN: %clang_cc1 %s -flax-vector-conversions=none -ffreestanding -triple=x86_64 -target-feature +avx10.2-256 \
2 // RUN: -emit-llvm -o - -Wno-invalid-feature-combination -Wall -Werror | FileCheck %s
3 // RUN: %clang_cc1 %s -flax-vector-conversions=none -ffreestanding -triple=i386 -target-feature +avx10.2-256 \
4 // RUN: -emit-llvm -o - -Wno-invalid-feature-combination -Wall -Werror | FileCheck %s
8 __m128h
test_mm_cvtx2ps_ph(__m128 __A
, __m128 __B
) {
9 // CHECK-LABEL: @test_mm_cvtx2ps_ph(
10 // CHECK: call <8 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.128
11 return _mm_cvtx2ps_ph(__A
, __B
);
14 __m128h
test_mm_mask_cvtx2ps_ph(__m128h __W
, __mmask8 __U
, __m128 __A
, __m128 __B
) {
15 // CHECK-LABEL: @test_mm_mask_cvtx2ps_ph(
16 // CHECK: call <8 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.128
17 return _mm_mask_cvtx2ps_ph(__W
, __U
, __A
, __B
);
20 __m128h
test_mm_maskz_cvtx2ps_ph(__mmask8 __U
, __m128 __A
, __m128 __B
) {
21 // CHECK-LABEL: @test_mm_maskz_cvtx2ps_ph(
22 // CHECK: call <8 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.128
23 return _mm_maskz_cvtx2ps_ph(__U
, __A
, __B
);
26 __m256h
test_mm256_cvtx2ps_ph(__m256 __A
, __m256 __B
) {
27 // CHECK-LABEL: @test_mm256_cvtx2ps_ph(
28 // CHECK: call <16 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.256
29 return _mm256_cvtx2ps_ph(__A
, __B
);
32 __m256h
test_mm256_mask_cvtx2ps_ph(__m256h __W
, __mmask16 __U
, __m256 __A
, __m256 __B
) {
33 // CHECK-LABEL: @test_mm256_mask_cvtx2ps_ph(
34 // CHECK: call <16 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.256
35 return _mm256_mask_cvtx2ps_ph(__W
, __U
, __A
, __B
);
38 __m256h
test_mm256_maskz_cvtx2ps_ph(__mmask16 __U
, __m256 __A
, __m256 __B
) {
39 // CHECK-LABEL: @test_mm256_maskz_cvtx2ps_ph(
40 // CHECK: call <16 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.256
41 return _mm256_maskz_cvtx2ps_ph(__U
, __A
, __B
);
44 __m256h
test_mm256_cvtx_round2ps_ph(__m256 __A
, __m256 __B
) {
45 // CHECK-LABEL: @test_mm256_cvtx_round2ps_ph(
46 // CHECK: call <16 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.256(
47 return _mm256_cvtx_round2ps_ph(__A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
50 __m256h
test_mm256_mask_cvtx_round2ps_ph(__m256h __W
, __mmask8 __U
, __m256 __A
, __m256 __B
) {
51 // CHECK-LABEL: @test_mm256_mask_cvtx_round2ps_ph(
52 // CHECK: call <16 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.256(
53 return _mm256_mask_cvtx_round2ps_ph(__W
, __U
, __A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
56 __m256h
test_mm256_maskz_cvtx_round2ps_ph(__mmask8 __U
, __m256 __A
, __m256 __B
) {
57 // CHECK-LABEL: @test_mm256_maskz_cvtx_round2ps_ph(
58 // CHECK: call <16 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.256(
59 return _mm256_maskz_cvtx_round2ps_ph(__U
, __A
, __B
, _MM_FROUND_TO_ZERO
| _MM_FROUND_NO_EXC
);
62 __m128i
test_mm_cvtbiasph_pbf8(__m128i __A
, __m128h __B
) {
63 // CHECK-LABEL: @test_mm_cvtbiasph_pbf8(
64 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8128(
65 return _mm_cvtbiasph_pbf8(__A
, __B
);
68 __m128i
test_mm_mask_cvtbiasph_pbf8(__m128i __W
, __mmask8 __U
, __m128i __A
, __m128h __B
) {
69 // CHECK-LABEL: @test_mm_mask_cvtbiasph_pbf8(
70 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8128(
71 return _mm_mask_cvtbiasph_pbf8(__W
, __U
, __A
, __B
);
74 __m128i
test_mm_maskz_cvtbiasph_pbf8(__mmask8 __U
, __m128i __A
, __m128h __B
) {
75 // CHECK-LABEL: @test_mm_maskz_cvtbiasph_pbf8(
76 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8128(
77 return _mm_maskz_cvtbiasph_pbf8(__U
, __A
, __B
);
80 __m128i
test_mm256_cvtbiasph_pbf8(__m256i __A
, __m256h __B
) {
81 // CHECK-LABEL: @test_mm256_cvtbiasph_pbf8(
82 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8256(
83 return _mm256_cvtbiasph_pbf8(__A
, __B
);
86 __m128i
test_mm256_mask_cvtbiasph_pbf8(__m128i __W
, __mmask16 __U
, __m256i __A
, __m256h __B
) {
87 // CHECK-LABEL: @test_mm256_mask_cvtbiasph_pbf8(
88 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8256(
89 return _mm256_mask_cvtbiasph_pbf8(__W
, __U
, __A
, __B
);
92 __m128i
test_mm256_maskz_cvtbiasph_pbf8(__mmask16 __U
, __m256i __A
, __m256h __B
) {
93 // CHECK-LABEL: @test_mm256_maskz_cvtbiasph_pbf8(
94 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8256(
95 return _mm256_maskz_cvtbiasph_pbf8(__U
, __A
, __B
);
98 __m128i
test_mm_cvtbiassph_pbf8(__m128i __A
, __m128h __B
) {
99 // CHECK-LABEL: @test_mm_cvtbiassph_pbf8(
100 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8s128(
101 return _mm_cvtbiassph_pbf8(__A
, __B
);
104 __m128i
test_mm_mask_cvtbiassph_pbf8(__m128i __W
, __mmask8 __U
, __m128i __A
, __m128h __B
) {
105 // CHECK-LABEL: @test_mm_mask_cvtbiassph_pbf8(
106 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8s128(
107 return _mm_mask_cvtbiassph_pbf8(__W
, __U
, __A
, __B
);
110 __m128i
test_mm_maskz_cvtbiassph_pbf8(__mmask8 __U
, __m128i __A
, __m128h __B
) {
111 // CHECK-LABEL: @test_mm_maskz_cvtbiassph_pbf8(
112 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8s128(
113 return _mm_maskz_cvtbiassph_pbf8(__U
, __A
, __B
);
116 __m128i
test_mm256_cvtbiassph_pbf8(__m256i __A
, __m256h __B
) {
117 // CHECK-LABEL: @test_mm256_cvtbiassph_pbf8(
118 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8s256(
119 return _mm256_cvtbiassph_pbf8(__A
, __B
);
122 __m128i
test_mm256_mask_cvtbiassph_pbf8(__m128i __W
, __mmask16 __U
, __m256i __A
, __m256h __B
) {
123 // CHECK-LABEL: @test_mm256_mask_cvtbiassph_pbf8(
124 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8s256(
125 return _mm256_mask_cvtbiassph_pbf8(__W
, __U
, __A
, __B
);
128 __m128i
test_mm256_maskz_cvtbiassph_pbf8(__mmask16 __U
, __m256i __A
, __m256h __B
) {
129 // CHECK-LABEL: @test_mm256_maskz_cvtbiassph_pbf8(
130 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8s256(
131 return _mm256_maskz_cvtbiassph_pbf8(__U
, __A
, __B
);
134 __m128i
test_mm_cvtbiasph_phf8(__m128i __A
, __m128h __B
) {
135 // CHECK-LABEL: @test_mm_cvtbiasph_phf8(
136 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8128(
137 return _mm_cvtbiasph_phf8(__A
, __B
);
140 __m128i
test_mm_mask_cvtbiasph_phf8(__m128i __W
, __mmask8 __U
, __m128i __A
, __m128h __B
) {
141 // CHECK-LABEL: @test_mm_mask_cvtbiasph_phf8(
142 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8128(
143 return _mm_mask_cvtbiasph_phf8(__W
, __U
, __A
, __B
);
146 __m128i
test_mm_maskz_cvtbiasph_phf8(__mmask8 __U
, __m128i __A
, __m128h __B
) {
147 // CHECK-LABEL: @test_mm_maskz_cvtbiasph_phf8(
148 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8128(
149 return _mm_maskz_cvtbiasph_phf8(__U
, __A
, __B
);
152 __m128i
test_mm256_cvtbiasph_phf8(__m256i __A
, __m256h __B
) {
153 // CHECK-LABEL: @test_mm256_cvtbiasph_phf8(
154 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8256(
155 return _mm256_cvtbiasph_phf8(__A
, __B
);
158 __m128i
test_mm256_mask_cvtbiasph_phf8(__m128i __W
, __mmask16 __U
, __m256i __A
, __m256h __B
) {
159 // CHECK-LABEL: @test_mm256_mask_cvtbiasph_phf8(
160 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8256(
161 return _mm256_mask_cvtbiasph_phf8(__W
, __U
, __A
, __B
);
164 __m128i
test_mm256_maskz_cvtbiasph_phf8(__mmask16 __U
, __m256i __A
, __m256h __B
) {
165 // CHECK-LABEL: @test_mm256_maskz_cvtbiasph_phf8(
166 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8256(
167 return _mm256_maskz_cvtbiasph_phf8(__U
, __A
, __B
);
170 __m128i
test_mm_cvtbiassph_phf8(__m128i __A
, __m128h __B
) {
171 // CHECK-LABEL: @test_mm_cvtbiassph_phf8(
172 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8s128(
173 return _mm_cvtbiassph_phf8(__A
, __B
);
176 __m128i
test_mm_mask_cvtbiassph_phf8(__m128i __W
, __mmask8 __U
, __m128i __A
, __m128h __B
) {
177 // CHECK-LABEL: @test_mm_mask_cvtbiassph_phf8(
178 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8s128(
179 return _mm_mask_cvtbiassph_phf8(__W
, __U
, __A
, __B
);
182 __m128i
test_mm_maskz_cvtbiassph_phf8(__mmask8 __U
, __m128i __A
, __m128h __B
) {
183 // CHECK-LABEL: @test_mm_maskz_cvtbiassph_phf8(
184 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8s128(
185 return _mm_maskz_cvtbiassph_phf8(__U
, __A
, __B
);
188 __m128i
test_mm256_cvtbiassph_phf8(__m256i __A
, __m256h __B
) {
189 // CHECK-LABEL: @test_mm256_cvtbiassph_phf8(
190 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8s256(
191 return _mm256_cvtbiassph_phf8(__A
, __B
);
194 __m128i
test_mm256_mask_cvtbiassph_phf8(__m128i __W
, __mmask16 __U
, __m256i __A
, __m256h __B
) {
195 // CHECK-LABEL: @test_mm256_mask_cvtbiassph_phf8(
196 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8s256(
197 return _mm256_mask_cvtbiassph_phf8(__W
, __U
, __A
, __B
);
200 __m128i
test_mm256_maskz_cvtbiassph_phf8(__mmask16 __U
, __m256i __A
, __m256h __B
) {
201 // CHECK-LABEL: @test_mm256_maskz_cvtbiassph_phf8(
202 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8s256(
203 return _mm256_maskz_cvtbiassph_phf8(__U
, __A
, __B
);
206 __m128i
test_mm_cvtne2ph_pbf8(__m128h __A
, __m128h __B
) {
207 // CHECK-LABEL: @test_mm_cvtne2ph_pbf8(
208 // CHECK: call <16 x i8> @llvm.x86.avx10.vcvtne2ph2bf8128(
209 return _mm_cvtne2ph_pbf8(__A
, __B
);
212 __m128i
test_mm_mask_cvtne2ph_pbf8(__m128i __W
, __mmask16 __U
, __m128h __A
, __m128h __B
) {
213 // CHECK-LABEL: @test_mm_mask_cvtne2ph_pbf8(
214 // CHECK: call <16 x i8> @llvm.x86.avx10.vcvtne2ph2bf8128(
215 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
216 // CHECK: ret <2 x i64> %{{.*}}
217 return _mm_mask_cvtne2ph_pbf8(__W
, __U
, __A
, __B
);
220 __m128i
test_mm_maskz_cvtne2ph_pbf8(__mmask16 __U
, __m128h __A
, __m128h __B
) {
221 // CHECK-LABEL: @test_mm_maskz_cvtne2ph_pbf8(
222 // CHECK: call <16 x i8> @llvm.x86.avx10.vcvtne2ph2bf8128(
223 // CHECK: zeroinitializer
224 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
225 return _mm_maskz_cvtne2ph_pbf8(__U
, __A
, __B
);
228 __m256i
test_mm256_cvtne2ph_pbf8(__m256h __A
, __m256h __B
) {
229 // CHECK-LABEL: @test_mm256_cvtne2ph_pbf8(
230 // CHECK: call <32 x i8> @llvm.x86.avx10.vcvtne2ph2bf8256(
231 return _mm256_cvtne2ph_pbf8(__A
, __B
);
234 __m256i
test_mm256_mask_cvtne2ph_pbf8(__m256i __W
, __mmask16 __U
, __m256h __A
, __m256h __B
) {
235 // CHECK-LABEL: @test_mm256_mask_cvtne2ph_pbf8(
236 // CHECK: call <32 x i8> @llvm.x86.avx10.vcvtne2ph2bf8256(
237 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
238 // CHECK: ret <4 x i64> %{{.*}}
239 return _mm256_mask_cvtne2ph_pbf8(__W
, __U
, __A
, __B
);
242 __m256i
test_mm256_maskz_cvtne2ph_pbf8(__mmask16 __U
, __m256h __A
, __m256h __B
) {
243 // CHECK-LABEL: @test_mm256_maskz_cvtne2ph_pbf8(
244 // CHECK: call <32 x i8> @llvm.x86.avx10.vcvtne2ph2bf8256(
245 // CHECK: zeroinitializer
246 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
247 return _mm256_maskz_cvtne2ph_pbf8(__U
, __A
, __B
);
250 __m128i
test_mm_cvtnes2ph_pbf8(__m128h __A
, __m128h __B
) {
251 // CHECK-LABEL: @test_mm_cvtnes2ph_pbf8(
252 // CHECK: call <16 x i8> @llvm.x86.avx10.vcvtne2ph2bf8s128(
253 return _mm_cvtnes2ph_pbf8(__A
, __B
);
256 __m128i
test_mm_mask_cvtnes2ph_pbf8(__m128i __W
, __mmask16 __U
, __m128h __A
, __m128h __B
) {
257 // CHECK-LABEL: @test_mm_mask_cvtnes2ph_pbf8(
258 // CHECK: call <16 x i8> @llvm.x86.avx10.vcvtne2ph2bf8s128(
259 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
260 // CHECK: ret <2 x i64> %{{.*}}
261 return _mm_mask_cvtnes2ph_pbf8(__W
, __U
, __A
, __B
);
264 __m128i
test_mm_maskz_cvtnes2ph_pbf8(__mmask16 __U
, __m128h __A
, __m128h __B
) {
265 // CHECK-LABEL: @test_mm_maskz_cvtnes2ph_pbf8(
266 // CHECK: call <16 x i8> @llvm.x86.avx10.vcvtne2ph2bf8s128(
267 // CHECK: zeroinitializer
268 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
269 return _mm_maskz_cvtnes2ph_pbf8(__U
, __A
, __B
);
272 __m256i
test_mm256_cvtnes2ph_pbf8(__m256h __A
, __m256h __B
) {
273 // CHECK-LABEL: @test_mm256_cvtnes2ph_pbf8(
274 // CHECK: call <32 x i8> @llvm.x86.avx10.vcvtne2ph2bf8s256(
275 return _mm256_cvtnes2ph_pbf8(__A
, __B
);
278 __m256i
test_mm256_mask_cvtnes2ph_pbf8(__m256i __W
, __mmask16 __U
, __m256h __A
, __m256h __B
) {
279 // CHECK-LABEL: @test_mm256_mask_cvtnes2ph_pbf8(
280 // CHECK: call <32 x i8> @llvm.x86.avx10.vcvtne2ph2bf8s256(
281 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
282 // CHECK: ret <4 x i64> %{{.*}}
283 return _mm256_mask_cvtnes2ph_pbf8(__W
, __U
, __A
, __B
);
286 __m256i
test_mm256_maskz_cvtnes2ph_pbf8(__mmask16 __U
, __m256h __A
, __m256h __B
) {
287 // CHECK-LABEL: @test_mm256_maskz_cvtnes2ph_pbf8(
288 // CHECK: call <32 x i8> @llvm.x86.avx10.vcvtne2ph2bf8s256(
289 // CHECK: zeroinitializer
290 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
291 return _mm256_maskz_cvtnes2ph_pbf8(__U
, __A
, __B
);
294 __m128i
test_mm_cvtne2ph_phf8(__m128h __A
, __m128h __B
) {
295 // CHECK-LABEL: @test_mm_cvtne2ph_phf8(
296 // CHECK: call <16 x i8> @llvm.x86.avx10.vcvtne2ph2hf8128(
297 return _mm_cvtne2ph_phf8(__A
, __B
);
300 __m128i
test_mm_mask_cvtne2ph_phf8(__m128i __W
, __mmask16 __U
, __m128h __A
, __m128h __B
) {
301 // CHECK-LABEL: @test_mm_mask_cvtne2ph_phf8(
302 // CHECK: call <16 x i8> @llvm.x86.avx10.vcvtne2ph2hf8128(
303 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
304 // CHECK: ret <2 x i64> %{{.*}}
305 return _mm_mask_cvtne2ph_phf8(__W
, __U
, __A
, __B
);
308 __m128i
test_mm_maskz_cvtne2ph_phf8(__mmask16 __U
, __m128h __A
, __m128h __B
) {
309 // CHECK-LABEL: @test_mm_maskz_cvtne2ph_phf8(
310 // CHECK: call <16 x i8> @llvm.x86.avx10.vcvtne2ph2hf8128(
311 // CHECK: zeroinitializer
312 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
313 return _mm_maskz_cvtne2ph_phf8(__U
, __A
, __B
);
316 __m256i
test_mm256_cvtne2ph_phf8(__m256h __A
, __m256h __B
) {
317 // CHECK-LABEL: @test_mm256_cvtne2ph_phf8(
318 // CHECK: call <32 x i8> @llvm.x86.avx10.vcvtne2ph2hf8256(
319 return _mm256_cvtne2ph_phf8(__A
, __B
);
322 __m256i
test_mm256_mask_cvtne2ph_phf8(__m256i __W
, __mmask16 __U
, __m256h __A
, __m256h __B
) {
323 // CHECK-LABEL: @test_mm256_mask_cvtne2ph_phf8(
324 // CHECK: call <32 x i8> @llvm.x86.avx10.vcvtne2ph2hf8256(
325 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
326 // CHECK: ret <4 x i64> %{{.*}}
327 return _mm256_mask_cvtne2ph_phf8(__W
, __U
, __A
, __B
);
330 __m256i
test_mm256_maskz_cvtne2ph_phf8(__mmask16 __U
, __m256h __A
, __m256h __B
) {
331 // CHECK-LABEL: @test_mm256_maskz_cvtne2ph_phf8(
332 // CHECK: call <32 x i8> @llvm.x86.avx10.vcvtne2ph2hf8256(
333 // CHECK: zeroinitializer
334 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
335 return _mm256_maskz_cvtne2ph_phf8(__U
, __A
, __B
);
338 __m128i
test_mm_cvtnes2ph_phf8(__m128h __A
, __m128h __B
) {
339 // CHECK-LABEL: @test_mm_cvtnes2ph_phf8(
340 // CHECK: call <16 x i8> @llvm.x86.avx10.vcvtne2ph2hf8s128(
341 return _mm_cvtnes2ph_phf8(__A
, __B
);
344 __m128i
test_mm_mask_cvtnes2ph_phf8(__m128i __W
, __mmask16 __U
, __m128h __A
, __m128h __B
) {
345 // CHECK-LABEL: @test_mm_mask_cvtnes2ph_phf8(
346 // CHECK: call <16 x i8> @llvm.x86.avx10.vcvtne2ph2hf8s128(
347 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
348 // CHECK: ret <2 x i64> %{{.*}}
349 return _mm_mask_cvtnes2ph_phf8(__W
, __U
, __A
, __B
);
352 __m128i
test_mm_maskz_cvtnes2ph_phf8(__mmask16 __U
, __m128h __A
, __m128h __B
) {
353 // CHECK-LABEL: @test_mm_maskz_cvtnes2ph_phf8(
354 // CHECK: call <16 x i8> @llvm.x86.avx10.vcvtne2ph2hf8s128(
355 // CHECK: zeroinitializer
356 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
357 return _mm_maskz_cvtnes2ph_phf8(__U
, __A
, __B
);
360 __m256i
test_mm256_cvtnes2ph_phf8(__m256h __A
, __m256h __B
) {
361 // CHECK-LABEL: @test_mm256_cvtnes2ph_phf8(
362 // CHECK: call <32 x i8> @llvm.x86.avx10.vcvtne2ph2hf8s256(
363 return _mm256_cvtnes2ph_phf8(__A
, __B
);
366 __m256i
test_mm256_mask_cvtnes2ph_phf8(__m256i __W
, __mmask16 __U
, __m256h __A
, __m256h __B
) {
367 // CHECK-LABEL: @test_mm256_mask_cvtnes2ph_phf8(
368 // CHECK: call <32 x i8> @llvm.x86.avx10.vcvtne2ph2hf8s256(
369 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
370 // CHECK: ret <4 x i64> %{{.*}}
371 return _mm256_mask_cvtnes2ph_phf8(__W
, __U
, __A
, __B
);
374 __m256i
test_mm256_maskz_cvtnes2ph_phf8(__mmask16 __U
, __m256h __A
, __m256h __B
) {
375 // CHECK-LABEL: @test_mm256_maskz_cvtnes2ph_phf8(
376 // CHECK: call <32 x i8> @llvm.x86.avx10.vcvtne2ph2hf8s256(
377 // CHECK: zeroinitializer
378 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
379 return _mm256_maskz_cvtnes2ph_phf8(__U
, __A
, __B
);
382 __m128h
test_mm_cvtnehf8_ph(__m128i __A
) {
383 // CHECK-LABEL: @test_mm_cvtnehf8_ph(
384 // CHECK: call <8 x half> @llvm.x86.avx10.mask.vcvthf82ph128(
385 return _mm_cvtnehf8_ph(__A
);
388 __m128h
test_mm_mask_cvtnehf8_ph(__m128h __A
, __mmask8 __B
, __m128i __C
) {
389 // CHECK-LABEL: @test_mm_mask_cvtnehf8_ph(
390 // CHECK: call <8 x half> @llvm.x86.avx10.mask.vcvthf82ph128(
391 return _mm_mask_cvtnehf8_ph(__A
, __B
, __C
);
394 __m128h
test_mm_maskz_cvtnehf8_ph(__mmask8 __A
, __m128i __B
) {
395 // CHECK-LABEL: @test_mm_maskz_cvtnehf8_ph(
396 // CHECK: call <8 x half> @llvm.x86.avx10.mask.vcvthf82ph128(
397 return _mm_maskz_cvtnehf8_ph(__A
, __B
);
400 __m256h
test_mm256_cvtnehf8_ph(__m128i __A
) {
401 // CHECK-LABEL: @test_mm256_cvtnehf8_ph(
402 // CHECK: call <16 x half> @llvm.x86.avx10.mask.vcvthf82ph256(
403 return _mm256_cvtnehf8_ph(__A
);
406 __m256h
test_mm256_mask_cvtnehf8_ph(__m256h __A
, __mmask16 __B
, __m128i __C
) {
407 // CHECK-LABEL: @test_mm256_mask_cvtnehf8_ph(
408 // CHECK: call <16 x half> @llvm.x86.avx10.mask.vcvthf82ph256(
409 return _mm256_mask_cvtnehf8_ph(__A
, __B
, __C
);
412 __m256h
test_mm256_maskz_cvtnehf8_ph(__mmask16 __A
, __m128i __B
) {
413 // CHECK-LABEL: @test_mm256_maskz_cvtnehf8_ph(
414 // CHECK: call <16 x half> @llvm.x86.avx10.mask.vcvthf82ph256(
415 return _mm256_maskz_cvtnehf8_ph(__A
, __B
);
418 __m128i
test_mm_cvtneph_pbf8(__m128h __A
) {
419 // CHECK-LABEL: @test_mm_cvtneph_pbf8(
420 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2bf8128(
421 return _mm_cvtneph_pbf8(__A
);
424 __m128i
test_mm_mask_cvtneph_pbf8(__m128i __A
, __mmask8 __B
, __m128h __C
) {
425 // CHECK-LABEL: @test_mm_mask_cvtneph_pbf8(
426 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2bf8128(
427 return _mm_mask_cvtneph_pbf8(__A
, __B
, __C
);
430 __m128i
test_mm_maskz_cvtneph_pbf8(__mmask8 __A
, __m128h __B
) {
431 // CHECK-LABEL: @test_mm_maskz_cvtneph_pbf8(
432 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2bf8128(
433 return _mm_maskz_cvtneph_pbf8(__A
, __B
);
436 __m128i
test_mm256_cvtneph_pbf8(__m256h __A
) {
437 // CHECK-LABEL: @test_mm256_cvtneph_pbf8(
438 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2bf8256(
439 return _mm256_cvtneph_pbf8(__A
);
442 __m128i
test_mm256_mask_cvtneph_pbf8(__m128i __A
, __mmask16 __B
, __m256h __C
) {
443 // CHECK-LABEL: @test_mm256_mask_cvtneph_pbf8(
444 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2bf8256(
445 return _mm256_mask_cvtneph_pbf8(__A
, __B
, __C
);
448 __m128i
test_mm256_maskz_cvtneph_pbf8(__mmask16 __A
, __m256h __B
) {
449 // CHECK-LABEL: @test_mm256_maskz_cvtneph_pbf8(
450 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2bf8256(
451 return _mm256_maskz_cvtneph_pbf8(__A
, __B
);
454 __m128i
test_mm_cvtnesph_pbf8(__m128h __A
) {
455 // CHECK-LABEL: @test_mm_cvtnesph_pbf8(
456 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2bf8s128(
457 return _mm_cvtnesph_pbf8(__A
);
460 __m128i
test_mm_mask_cvtnesph_pbf8(__m128i __A
, __mmask8 __B
, __m128h __C
) {
461 // CHECK-LABEL: @test_mm_mask_cvtnesph_pbf8(
462 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2bf8s128(
463 return _mm_mask_cvtnesph_pbf8(__A
, __B
, __C
);
466 __m128i
test_mm_maskz_cvtnesph_pbf8(__mmask8 __A
, __m128h __B
) {
467 // CHECK-LABEL: @test_mm_maskz_cvtnesph_pbf8(
468 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2bf8s128(
469 return _mm_maskz_cvtnesph_pbf8(__A
, __B
);
472 __m128i
test_mm256_cvtnesph_pbf8(__m256h __A
) {
473 // CHECK-LABEL: @test_mm256_cvtnesph_pbf8(
474 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2bf8s256(
475 return _mm256_cvtnesph_pbf8(__A
);
478 __m128i
test_mm256_mask_cvtnesph_pbf8(__m128i __A
, __mmask16 __B
, __m256h __C
) {
479 // CHECK-LABEL: @test_mm256_mask_cvtnesph_pbf8(
480 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2bf8s256(
481 return _mm256_mask_cvtnesph_pbf8(__A
, __B
, __C
);
484 __m128i
test_mm256_maskz_cvtnesph_pbf8(__mmask16 __A
, __m256h __B
) {
485 // CHECK-LABEL: @test_mm256_maskz_cvtnesph_pbf8(
486 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2bf8s256(
487 return _mm256_maskz_cvtnesph_pbf8(__A
, __B
);
490 __m128i
test_mm_cvtneph_phf8(__m128h __A
) {
491 // CHECK-LABEL: @test_mm_cvtneph_phf8(
492 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2hf8128(
493 return _mm_cvtneph_phf8(__A
);
496 __m128i
test_mm_mask_cvtneph_phf8(__m128i __A
, __mmask8 __B
, __m128h __C
) {
497 // CHECK-LABEL: @test_mm_mask_cvtneph_phf8(
498 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2hf8128(
499 return _mm_mask_cvtneph_phf8(__A
, __B
, __C
);
502 __m128i
test_mm_maskz_cvtneph_phf8(__mmask8 __A
, __m128h __B
) {
503 // CHECK-LABEL: @test_mm_maskz_cvtneph_phf8(
504 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2hf8128(
505 return _mm_maskz_cvtneph_phf8(__A
, __B
);
508 __m128i
test_mm256_cvtneph_phf8(__m256h __A
) {
509 // CHECK-LABEL: @test_mm256_cvtneph_phf8(
510 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2hf8256(
511 return _mm256_cvtneph_phf8(__A
);
514 __m128i
test_mm256_mask_cvtneph_phf8(__m128i __A
, __mmask16 __B
, __m256h __C
) {
515 // CHECK-LABEL: @test_mm256_mask_cvtneph_phf8(
516 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2hf8256(
517 return _mm256_mask_cvtneph_phf8(__A
, __B
, __C
);
520 __m128i
test_mm256_maskz_cvtneph_phf8(__mmask16 __A
, __m256h __B
) {
521 // CHECK-LABEL: @test_mm256_maskz_cvtneph_phf8(
522 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2hf8256(
523 return _mm256_maskz_cvtneph_phf8(__A
, __B
);
526 __m128i
test_mm_cvtnesph_phf8(__m128h __A
) {
527 // CHECK-LABEL: @test_mm_cvtnesph_phf8(
528 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2hf8s128(
529 return _mm_cvtnesph_phf8(__A
);
532 __m128i
test_mm_mask_cvtnesph_phf8(__m128i __A
, __mmask8 __B
, __m128h __C
) {
533 // CHECK-LABEL: @test_mm_mask_cvtnesph_phf8(
534 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2hf8s128(
535 return _mm_mask_cvtnesph_phf8(__A
, __B
, __C
);
538 __m128i
test_mm_maskz_cvtnesph_phf8(__mmask8 __A
, __m128h __B
) {
539 // CHECK-LABEL: @test_mm_maskz_cvtnesph_phf8(
540 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2hf8s128(
541 return _mm_maskz_cvtnesph_phf8(__A
, __B
);
544 __m128i
test_mm256_cvtnesph_phf8(__m256h __A
) {
545 // CHECK-LABEL: @test_mm256_cvtnesph_phf8(
546 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2hf8s256(
547 return _mm256_cvtnesph_phf8(__A
);
550 __m128i
test_mm256_mask_cvtnesph_phf8(__m128i __A
, __mmask16 __B
, __m256h __C
) {
551 // CHECK-LABEL: @test_mm256_mask_cvtnesph_phf8(
552 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2hf8s256(
553 return _mm256_mask_cvtnesph_phf8(__A
, __B
, __C
);
556 __m128i
test_mm256_maskz_cvtnesph_phf8(__mmask16 __A
, __m256h __B
) {
557 // CHECK-LABEL: @test_mm256_maskz_cvtnesph_phf8(
558 // CHECK: call <16 x i8> @llvm.x86.avx10.mask.vcvtneph2hf8s256(
559 return _mm256_maskz_cvtnesph_phf8(__A
, __B
);
562 __m256h
test_mm256_cvtpbf8_ph(__m128i A
) {
563 // CHECK-LABEL: @test_mm256_cvtpbf8_ph
564 // CHECK: sext <16 x i8> %{{.*}} to <16 x i16>
565 // CHECK: @llvm.x86.avx2.pslli.w
566 // CHECK: ret <16 x half> %{{.*}}
567 return _mm256_cvtpbf8_ph(A
);
570 __m256h
test_mm256_mask_cvtpbf8_ph(__m256h S
, __mmask16 M
, __m128i A
) {
571 // CHECK-LABEL: @test_mm256_mask_cvtpbf8_ph
572 // CHECK: sext <16 x i8> %{{.*}} to <16 x i16>
573 // CHECK: @llvm.x86.avx2.pslli.w
574 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
575 // CHECK: ret <16 x half> %{{.*}}
576 return _mm256_mask_cvtpbf8_ph(S
, M
, A
);
579 __m256h
test_mm256_maskz_cvtpbf8_ph(__mmask16 M
, __m128i A
) {
580 // CHECK-LABEL: @test_mm256_maskz_cvtpbf8_ph
581 // CHECK: sext <16 x i8> %{{.*}} to <16 x i16>
582 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
583 // CHECK: @llvm.x86.avx2.pslli.w
584 // CHECK: ret <16 x half> %{{.*}}
585 return _mm256_maskz_cvtpbf8_ph(M
, A
);
588 __m128h
test_mm_cvtpbf8_ph(__m128i A
) {
589 // CHECK-LABEL: @test_mm_cvtpbf8_ph
590 // CHECK: sext <8 x i8> %{{.*}} to <8 x i16>
591 // CHECK: @llvm.x86.sse2.pslli.w
592 // CHECK: ret <8 x half> %{{.*}}
593 return _mm_cvtpbf8_ph(A
);
596 __m128h
test_mm_mask_cvtpbf8_ph(__m128h S
, __mmask8 M
, __m128i A
) {
597 // CHECK-LABEL: @test_mm_mask_cvtpbf8_ph
598 // CHECK: sext <8 x i8> %{{.*}} to <8 x i16>
599 // CHECK: @llvm.x86.sse2.pslli.w
600 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
601 // CHECK: ret <8 x half> %{{.*}}
602 return _mm_mask_cvtpbf8_ph(S
, M
, A
);
605 __m128h
test_mm_maskz_cvtpbf8_ph(__mmask8 M
, __m128i A
) {
606 // CHECK-LABEL: @test_mm_maskz_cvtpbf8_ph
607 // CHECK: sext <8 x i8> %{{.*}} to <8 x i16>
608 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
609 // CHECK: @llvm.x86.sse2.pslli.w
610 // CHECK: ret <8 x half> %{{.*}}
611 return _mm_maskz_cvtpbf8_ph(M
, A
);