https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108443
Bug ID: 108443 Summary: arm: MVE wrongly re-interprets predicate constants Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: avieira at gcc dot gnu.org Target Milestone: --- compiling: $ cat t.c #include <arm_mve.h> uint32x4_t foo (uint32_t *a) { mve_pred16_t p = 0x00cc; return vldrwq_z_u32 (a, p); } with: $ arm-none-eabi-gcc -march=armv8.1-m.main+mve -mfloat-abi=hard -O2 -S will yield: foo: mov r3, #-4 @ movhi vmsr p0, r3 @ movhi vpst vldrwt.32 q0, [r0] bx lr That leads to a P0 mask of 0xFFFC and not 0x00CC as it should be.