[PATCH v1 0/1] arm: [MVE] Fix carry-in support for vadcq / vsbcq
Christophe Lyon
christophe.lyon@linaro.org
Wed Oct 15 12:54:42 GMT 2025
On Wed, 15 Oct 2025 at 14:38, Christophe Lyon via Sourceware Forge
<forge-bot@forge-test.rdfm.org> wrote:
>
> Hi gcc-patches mailing list,
> Christophe Lyon <clyon@gcc.gnu.org> has requested that the following forgejo pull request
> be published on the mailing list.
>
> Created on: 2025-10-06 16:12:29+00:00
> Latest update: 2025-10-15 12:36:35+00:00
> Changes: 8 changed files, 121 additions, 28 deletions
> Head revision: clyon/gcc-TEST ref MVE-vadcq-carry commit 948553c3ffe2da3574a3886ddd0ae581dfd19306
> Base revision: gcc/gcc-TEST ref trunk commit 0088e4a419eb5cc3563a8b4b90fe71f0e33a9a84 r16-4080-g0088e4a419eb5c
> Merge base: 0088e4a419eb5cc3563a8b4b90fe71f0e33a9a84
> Full diff url: https://forge.sourceware.org/gcc/gcc-TEST/pulls/91.diff
> Discussion: https://forge.sourceware.org/gcc/gcc-TEST/pulls/91
> Requested Reviewers: rearnsha
>
The patch was approved in forgejo, and I pushed it as
r16-4440-g027205879733933ec991c230795da6c01ac50029
Thanks,
Christophe
> The vadcq and vsbcq patterns had two problems:
> - the adc / sbc part of the pattern did not mention the use of vfpcc
> - the carry calcultation part should use a different unspec code
>
> In addtion, the get_fpscr_nzcvqc and set_fpscr_nzcvqc were
> over-cautious by using unspec_volatile when unspec is really what they
> need. Making them unspec enables to remove redundant accesses to
> FPSCR_nzcvqc.
>
> gcc/ChangeLog:
> * config/arm/iterators.md (VxCIQ_carry, VxCIQ_M_carry, VxCQ_carry)
> (VxCQ_M_carry): New iterators.
> * config/arm/mve.md (get_fpscr_nzcvqc, set_fpscr_nzcvqc): Use
> unspec instead of unspec_volatile.
> (vadciq, vadciq_m, vadcq, vadcq_m): Use vfpcc in operation. Use a
> different unspec code for carry calcultation.
> * config/arm/unspecs.md (VADCQ_U_carry, VADCQ_M_U_carry)
> (VADCQ_S_carry, VADCQ_M_S_carry, VSBCIQ_U_carry ,VSBCIQ_S_carry
> ,VSBCIQ_M_U_carry ,VSBCIQ_M_S_carry ,VSBCQ_U_carry ,VSBCQ_S_carry
> ,VSBCQ_M_U_carry ,VSBCQ_M_S_carry ,VADCIQ_U_carry
> ,VADCIQ_M_U_carry ,VADCIQ_S_carry ,VADCIQ_M_S_carry): New unspec
> codes.
>
> gcc/testsuite/ChangeLog:
> * gcc.target/arm/mve/intrinsics/vadcq-check-carry.c: New test.
> * gcc.target/arm/mve/intrinsics/vadcq_m_s32.c: Adjust instructions
> order.
> * gcc.target/arm/mve/intrinsics/vadcq_m_u32.c: Likewise.
> * gcc.target/arm/mve/intrinsics/vsbcq_m_s32.c: Likewise.
> * gcc.target/arm/mve/intrinsics/vsbcq_m_u32.c: Likewise.
>
>
> Changed files:
> - A: gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq-check-carry.c
> - M: gcc/config/arm/iterators.md
> - M: gcc/config/arm/mve.md
> - M: gcc/config/arm/unspecs.md
> - M: gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_s32.c
> - M: gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_u32.c
> - M: gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_s32.c
> - M: gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_u32.c
>
>
> Christophe Lyon (1):
> arm: [MVE] Fix carry-in support for vadcq / vsbcq [PR122189]
>
> gcc/config/arm/iterators.md | 17 +++++++
> gcc/config/arm/mve.md | 36 +++++++++-----
> gcc/config/arm/unspecs.md | 16 +++++++
> .../arm/mve/intrinsics/vadcq-check-carry.c | 48 +++++++++++++++++++
> .../arm/mve/intrinsics/vadcq_m_s32.c | 8 ++--
> .../arm/mve/intrinsics/vadcq_m_u32.c | 8 ++--
> .../arm/mve/intrinsics/vsbcq_m_s32.c | 8 ++--
> .../arm/mve/intrinsics/vsbcq_m_u32.c | 8 ++--
> 8 files changed, 121 insertions(+), 28 deletions(-)
> create mode 100644 gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq-check-carry.c
>
> --
> 2.50.1
>
More information about the Test-list
mailing list