Hi gcc-patches mailing list, ricbal02 via Sourceware Forge <[email protected]> has requested that the following forgejo pull request be published on the mailing list.
Created on: 2026-05-31 11:13:03+00:00 Latest update: 2026-05-31 11:16:07+00:00 Changes: 32 changed files, 1111 additions, 6 deletions Head revision: ricbal02/gcc-TEST ref sve2p3-conversions commit 3ec880aa37706cc0f116f6e320842263b21b72f8 Base revision: gcc/gcc-TEST ref trunk commit fd6d39208ba4edd9527171cc0f5426a48e63a6a2 r17-1049-gfd6d39208ba4ed Merge base: fd6d39208ba4edd9527171cc0f5426a48e63a6a2 Full diff url: https://forge.sourceware.org/gcc/gcc-TEST/pulls/165.diff Discussion: https://forge.sourceware.org/gcc/gcc-TEST/pulls/165 Requested Reviewers: This patch adds support for new intrinsics which make use of the conversion instructions introduced in SVE2p3/SME2p3. Include in the patch series is a required dependency patch which has also been sent in a separate email. gcc/ChangeLog: * config/aarch64/aarch64-sve-builtins-sve2.cc (class svcvtt_impl): New function impl. (class svcvtb_impl): Likewise. (FUNCTION): Likewise. * config/aarch64/aarch64-sve-builtins-sve2.def (REQUIRED_EXTENSIONS): List new functions. (svdot): Moved to correct location. (svdot_lane): Likewise. (svcvtn): New function. (svcvtt): Likewise. (svcvtb): Likewise. * config/aarch64/aarch64-sve-builtins-sve2.h: Likewise. * config/aarch64/aarch64-sve-builtins.cc (TYPES_cvtzn): New function types. (TYPES_cvttb): Likewise. (cvtzn): Likewise. (cvttb): Likewise. * config/aarch64/aarch64-sve2.md (@aarch64_sve2_scvtfb<mode>): New pattern. (@aarch64_sve2_scvtflt<mode>): Likewise. (@aarch64_sve2_ucvtfb<mode>): Likewise. (@aarch64_sve2_ucvtflt<mode>): Likewise. (@aarch64_sve2_fcvtzsn<mode>): Likewise. (@aarch64_sve2_fcvtzun<mode>): Likewise. * config/aarch64/iterators.md (b): Ventype changes. (VNx16HF): Likewise. (VNx16QI): Likewise. gcc/testsuite/ChangeLog: * gcc.target/aarch64/sme2/acle-asm/cvtb_f16_s8.c: New test. * gcc.target/aarch64/sme2/acle-asm/cvtb_f16_u8.c: New test. * gcc.target/aarch64/sme2/acle-asm/cvtb_f32_s16.c: New test. * gcc.target/aarch64/sme2/acle-asm/cvtb_f32_u16.c: New test. * gcc.target/aarch64/sme2/acle-asm/cvtb_f64_s32.c: New test. * gcc.target/aarch64/sme2/acle-asm/cvtb_f64_u32.c: New test. * gcc.target/aarch64/sme2/acle-asm/cvtn_s16_f32_x2.c: New test. * gcc.target/aarch64/sme2/acle-asm/cvtn_s32_f64_x2.c: New test. * gcc.target/aarch64/sme2/acle-asm/cvtn_s8_f16_x2.c: New test. * gcc.target/aarch64/sme2/acle-asm/cvtn_u16_f32_x2.c: New test. * gcc.target/aarch64/sme2/acle-asm/cvtn_u32_f64_x2.c: New test. * gcc.target/aarch64/sme2/acle-asm/cvtn_u8_f16_x2.c: New test. * gcc.target/aarch64/sme2/acle-asm/cvtt_f16_s8.c: New test. * gcc.target/aarch64/sme2/acle-asm/cvtt_f16_u8.c: New test. * gcc.target/aarch64/sme2/acle-asm/cvtt_f32_s16.c: New test. * gcc.target/aarch64/sme2/acle-asm/cvtt_f32_u16.c: New test. * gcc.target/aarch64/sme2/acle-asm/cvtt_f64_s32.c: New test. * gcc.target/aarch64/sme2/acle-asm/cvtt_f64_u32.c: New test. Changed files: - A: gcc/testsuite/gcc.target/aarch64/dotproduct_intrinsicless.c - A: gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f16_s8.c - A: gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f16_u8.c - A: gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f32_s16.c - A: gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f32_u16.c - A: gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f64_s32.c - A: gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f64_u32.c - A: gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_s16_f32_x2.c - A: gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_s32_f64_x2.c - A: gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_s8_f16_x2.c - A: gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_u16_f32_x2.c - A: gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_u32_f64_x2.c - A: gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_u8_f16_x2.c - A: gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f16_s8.c - A: gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f16_u8.c - A: gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f32_s16.c - A: gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f32_u16.c - A: gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f64_s32.c - A: gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f64_u32.c - A: gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_lane_s16.c - A: gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_lane_u16.c - A: gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_s16.c - A: gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_u16.c - M: gcc/config/aarch64/aarch64-sve-builtins-base.cc - M: gcc/config/aarch64/aarch64-sve-builtins-sve2.cc - M: gcc/config/aarch64/aarch64-sve-builtins-sve2.def - M: gcc/config/aarch64/aarch64-sve-builtins-sve2.h - M: gcc/config/aarch64/aarch64-sve-builtins.cc - M: gcc/config/aarch64/aarch64-sve2.md - M: gcc/config/aarch64/aarch64.h - M: gcc/config/aarch64/iterators.md - M: gcc/doc/invoke.texi Richard Ball (2): aarch64: Add Support for SVE2p3/SME2p3 dot product intrinsics aarch64: Add support for sve2p3 and sme2p3 conversion intrinsics .../aarch64/aarch64-sve-builtins-base.cc | 29 ++++- .../aarch64/aarch64-sve-builtins-sve2.cc | 38 +++++- .../aarch64/aarch64-sve-builtins-sve2.def | 8 ++ .../aarch64/aarch64-sve-builtins-sve2.h | 2 + gcc/config/aarch64/aarch64-sve-builtins.cc | 24 ++++ gcc/config/aarch64/aarch64-sve2.md | 110 ++++++++++++++++++ gcc/config/aarch64/aarch64.h | 8 ++ gcc/config/aarch64/iterators.md | 16 ++- gcc/doc/invoke.texi | 4 + .../aarch64/dotproduct_intrinsicless.c | 30 +++++ .../aarch64/sme2/acle-asm/cvtb_f16_s8.c | 22 ++++ .../aarch64/sme2/acle-asm/cvtb_f16_u8.c | 22 ++++ .../aarch64/sme2/acle-asm/cvtb_f32_s16.c | 22 ++++ .../aarch64/sme2/acle-asm/cvtb_f32_u16.c | 22 ++++ .../aarch64/sme2/acle-asm/cvtb_f64_s32.c | 22 ++++ .../aarch64/sme2/acle-asm/cvtb_f64_u32.c | 22 ++++ .../aarch64/sme2/acle-asm/cvtn_s16_f32_x2.c | 51 ++++++++ .../aarch64/sme2/acle-asm/cvtn_s32_f64_x2.c | 51 ++++++++ .../aarch64/sme2/acle-asm/cvtn_s8_f16_x2.c | 51 ++++++++ .../aarch64/sme2/acle-asm/cvtn_u16_f32_x2.c | 51 ++++++++ .../aarch64/sme2/acle-asm/cvtn_u32_f64_x2.c | 51 ++++++++ .../aarch64/sme2/acle-asm/cvtn_u8_f16_x2.c | 51 ++++++++ .../aarch64/sme2/acle-asm/cvtt_f16_s8.c | 22 ++++ .../aarch64/sme2/acle-asm/cvtt_f16_u8.c | 22 ++++ .../aarch64/sme2/acle-asm/cvtt_f32_s16.c | 22 ++++ .../aarch64/sme2/acle-asm/cvtt_f32_u16.c | 22 ++++ .../aarch64/sme2/acle-asm/cvtt_f64_s32.c | 22 ++++ .../aarch64/sme2/acle-asm/cvtt_f64_u32.c | 22 ++++ .../aarch64/sme2/acle-asm/dot_lane_s16.c | 94 +++++++++++++++ .../aarch64/sme2/acle-asm/dot_lane_u16.c | 94 +++++++++++++++ .../aarch64/sme2/acle-asm/dot_s16.c | 45 +++++++ .../aarch64/sme2/acle-asm/dot_u16.c | 45 +++++++ 32 files changed, 1111 insertions(+), 6 deletions(-) create mode 100644 gcc/testsuite/gcc.target/aarch64/dotproduct_intrinsicless.c create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f16_s8.c create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f16_u8.c create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f32_s16.c create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f32_u16.c create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f64_s32.c create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtb_f64_u32.c create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_s16_f32_x2.c create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_s32_f64_x2.c create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_s8_f16_x2.c create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_u16_f32_x2.c create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_u32_f64_x2.c create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtn_u8_f16_x2.c create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f16_s8.c create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f16_u8.c create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f32_s16.c create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f32_u16.c create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f64_s32.c create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/cvtt_f64_u32.c create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_lane_s16.c create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_lane_u16.c create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_s16.c create mode 100644 gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/dot_u16.c -- 2.54.0
