]>
git.feebdaed.xyz Git - 0xmirror/gcc.git/commit
aarch64: add narrowing sme2 conversions to fp8
This patch adds the following intrinsics (all __arm_streaming only) along with
asm tests for them.
BFCVT, FCVT Convert to packed 8-bit floating-point format:
- svmfloat8_t svcvt_mf8[_f16_x2]_fpm(svfloat16x2_t zn, fpm_t fpm)
- svmfloat8_t svcvt_mf8[_bf16_x2]_fpm(svbfloat16x2_t zn, fpm_t fpm)
- svmfloat8_t svcvt_mf8[_f32_x4]_fpm(svfloat32x4_t zn, fpm_t fpm)
FCVTN Convert to interleaved 8-bit floating-point format.
- svmfloat8_t svcvtn_mf8[_f32_x4]_fpm(svfloat32x4_t zn, fpm_t fpm)
gcc/
* config/aarch64/aarch64-sve-builtins-base.cc (svcvt_impl): Update to
handle fp8 cases.
* config/aarch64/aarch64-sve-builtins-sve2.def (svcvt, svcvtn): Added
DEF_SVE_FUNCTION_GS_FPM instances.
* config/aarch64/aarch64-sve2.md
(@aarch64_sve2_fp8_cvtn<mode>): Updated define_insn for additional case.
(@aarch64_sme2_fp8_cvt<mode>): Added new define_insn.
* config/aarch64/iterators.md (VNx16F_NARROW): Added new iterator to
handle narrowing SVE floating point operations.
(UNSPEC_FCVT): Added new unspec.
gcc/testsuite/
* gcc.target/aarch64/sme2/acle-asm/cvt_mf8_bf16_x2.c: Added test file.
* gcc.target/aarch64/sme2/acle-asm/cvt_mf8_f16_x2.c: Likewise.
* gcc.target/aarch64/sme2/acle-asm/cvt_mf8_f32_x4.c: Likewise.
* gcc.target/aarch64/sme2/acle-asm/cvtn_mf8_f32_x4.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/test_sve_acle.h
(TEST_X2_NARROW): Added fpm0 argument for intrinsics.
(TEST_X4_NARROW): Likewise.