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

--- Comment #6 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Stam Markianos-Wright
<stamm...@gcc.gnu.org>:

https://gcc.gnu.org/g:4269a6567eb991e6838f40bda5be9e3a7972530c

commit r13-4935-g4269a6567eb991e6838f40bda5be9e3a7972530c
Author: Stam Markianos-Wright <stam.markianos-wri...@arm.com>
Date:   Fri Dec 30 11:25:22 2022 +0000

    Fix memory constraint on MVE v[ld/st][2/4] instructions [PR107714]

    In the M-Class Arm-ARM:

    https://developer.arm.com/documentation/ddi0553/bu/?lang=en

    these MVE instructions only have '!' writeback variant and at:

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

    we found that the Um constraint would also allow through a
    register offset writeback, resulting in an assembler error.

    Here I have added a new constraint and predicate for these
    instructions, which (uniquely, AFAICT), only support a `!` writeback
    increment by the data size (inside the compiler this is a POST_INC).

    No regressions in arm-none-eabi with MVE and MVE.FP.

    gcc/ChangeLog:
            PR target/107714
            * config/arm/arm-protos.h (mve_struct_mem_operand): New protoype.
            * config/arm/arm.cc (mve_struct_mem_operand): New function.
            * config/arm/constraints.md (Ug): New constraint.
            * config/arm/mve.md (mve_vst4q<mode>): Change constraint.
            (mve_vst2q<mode>): Likewise.
            (mve_vld4q<mode>): Likewise.
            (mve_vld2q<mode>): Likewise.
            * config/arm/predicates.md (mve_struct_operand): New predicate.

    gcc/testsuite/ChangeLog:
            PR target/107714
            * gcc.target/arm/mve/intrinsics/vldst24q_reg_offset.c: New test.

Reply via email to