On 11/5/2025 10:24 AM, Claudio Bantaloukas via Sourceware Forge wrote:

From: Claudio Bantaloukas <[email protected]>

This patch adds the following intrinsics (all __arm_streaming only) along with
asm tests for them:
- svfloat16x2_t svcvt1_f16[_mf8]_x2_fpm(svmfloat8_t zn, fpm_t fpm)
- svfloat16x2_t svcvt2_f16[_mf8]_x2_fpm(svmfloat8_t zn, fpm_t fpm)
- svfloat16x2_t svcvt1_bf16[_mf8]_x2_fpm(svmfloat8_t zn, fpm_t fpm)
- svfloat16x2_t svcvt2_bf16[_mf8]_x2_fpm(svmfloat8_t zn, fpm_t fpm)
- svfloat16x2_t svcvtl1_f16[_mf8]_x2_fpm(svmfloat8_t zn, fpm_t fpm)
- svfloat16x2_t svcvtl2_f16[_mf8]_x2_fpm(svmfloat8_t zn, fpm_t fpm)
- svfloat16x2_t svcvtl1_bf16[_mf8]_x2_fpm(svmfloat8_t zn, fpm_t fpm)
- svfloat16x2_t svcvtl2_bf16[_mf8]_x2_fpm(svmfloat8_t zn, fpm_t fpm)

Can you also add something about which existing feature flag are these instructions gated by?


gcc/
        * config/aarch64/aarch64-sve-builtins-sve2.cc (svcvtl1, svcvtl2): Added
        new FUNTIONs.
        * config/aarch64/aarch64-sve-builtins-sve2.def
        (svcvt1, svcvt2, svcvtl1, svcvtl2): Added new DEF_SVE_FUNCTION_GS_FPM.
        * config/aarch64/aarch64-sve-builtins-sve2.h (svcvtl1, svcvtl2): Added
        new function_base.
        * config/aarch64/aarch64-sve-builtins.cc
        (function_resolver::resolve_unary): use group_suffix_id when resolving
        C overloads.
        * config/aarch64/aarch64-sve2.md
        (@aarch64_sve2_fp8_cvt_<fp8_cvt_uns_op><mode>): Added new define_insn.
        * config/aarch64/aarch64.h (TARGET_SSME2_FP8): Added new define.
        * config/aarch64/iterators.md
        (UNSPEC_F1CVTL. UNSPEC_F2CVTL): Added new unspecs.
        (FP8CVT_UNS): Extended int_iterator.
        (fp8_cvt_uns_op): Likewise.

gcc/testsuite/
        * g++.target/aarch64/sme2/aarch64-sme2-acle-asm.exp: Use tuning flag
        to reduce churn in testsuites.
        * gcc.target/aarch64/sme2/aarch64-sme2-acle-asm.exp: Likewise.
        * gcc.target/aarch64/sme2/acle-asm/cvt_mf8.c: Added test file.
        * gcc.target/aarch64/sme2/acle-asm/cvtl_mf8.c: Likewise.
        * gcc.target/aarch64/sve/acle/asm/test_sve_acle.h (TEST_X2_WIDE): Added
        fpm0 argument for intrinsics.
---
  .../aarch64/aarch64-sve-builtins-sve2.cc      |  2 +
  .../aarch64/aarch64-sve-builtins-sve2.def     |  8 ++++
  .../aarch64/aarch64-sve-builtins-sve2.h       |  2 +
  gcc/config/aarch64/aarch64-sve-builtins.cc    |  3 +-
  gcc/config/aarch64/aarch64-sve2.md            | 10 ++++
  gcc/config/aarch64/aarch64.h                  |  2 +
  gcc/config/aarch64/iterators.md               |  6 +++
  .../aarch64/sme2/aarch64-sme2-acle-asm.exp    |  5 +-
  .../aarch64/sme2/aarch64-sme2-acle-asm.exp    |  5 +-
  .../aarch64/sme2/acle-asm/cvt_mf8.c           | 47 +++++++++++++++++++
  .../aarch64/sme2/acle-asm/cvtl_mf8.c          | 47 +++++++++++++++++++
  .../aarch64/sve/acle/asm/test_sve_acle.h      |  1 +
  12 files changed, 135 insertions(+), 3 deletions(-)
  create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvt_mf8.c
  create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtl_mf8.c


Reply via email to