Hi all, 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. Ok for trunk, and backport to GCC11 and GCC12 (testing pending)? Thanks, Stam 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): Change constraint.         (mve_vst2q): Likewise.         (mve_vld4q): Likewise.         (mve_vld2q): 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.