On Wed, 15 Oct 2025 at 14:38, Christophe Lyon via Sourceware Forge <[email protected]> wrote: > > Hi gcc-patches mailing list, > Christophe Lyon <[email protected]> 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 >
