https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120999

--- Comment #2 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Kyrylo Tkachov <ktkac...@gcc.gnu.org>:

https://gcc.gnu.org/g:b7bd72ce71df5266e7a7039da318e49862389a72

commit r16-2165-gb7bd72ce71df5266e7a7039da318e49862389a72
Author: Kyrylo Tkachov <ktkac...@nvidia.com>
Date:   Wed Jul 9 10:04:01 2025 -0700

    aarch64: PR target/120999: Adjust operands for movprfx alternative of NBSL
implementation of NOR

    While the SVE2 NBSL instruction accepts MOVPRFX to add more flexibility
    due to its tied operands, the destination of the movprfx cannot be also
    a source operand.  But the offending pattern in aarch64-sve2.md tries
    to do exactly that for the "=?&w,w,w" alternative and gas warns for the
    attached testcase.

    This patch adjusts that alternative to avoid taking operand 0 as an input
    in the NBSL again.

    So for the testcase in the patch we now generate:
    nor_z:
            movprfx z0, z1
            nbsl    z0.d, z0.d, z2.d, z1.d
            ret

    instead of the previous:
    nor_z:
            movprfx z0, z1
            nbsl    z0.d, z0.d, z2.d, z0.d
            ret

    which generated a gas warning.

    Bootstrapped and tested on aarch64-none-linux-gnu.

    Signed-off-by: Kyrylo Tkachov <ktkac...@nvidia.com>

    gcc/

            PR target/120999
            * config/aarch64/aarch64-sve2.md (*aarch64_sve2_nor<mode>):
            Adjust movprfx alternative.

    gcc/testsuite/

            PR target/120999
            * gcc.target/aarch64/sve2/pr120999.c: New test.

Reply via email to