https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115439
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- I think something like this: ``` [apinski@xeond2 arm]$ git diff mve.md diff --git a/gcc/config/arm/mve.md b/gcc/config/arm/mve.md index 9fe51298cdc..8af4797e935 100644 --- a/gcc/config/arm/mve.md +++ b/gcc/config/arm/mve.md @@ -6897,6 +6897,12 @@ (define_expand "vcond_mask_<mode><MVE_vpred>" (match_operand:MVE_VLD_ST 2 "s_register_operand")))] "TARGET_HAVE_MVE" { + if (!register_operand (operands[3], <MVE_VPRED>mode)) + operands[3] = force_reg (operands[3]); + if (!register_operand (operands[1], <MODE>mode)) + operands[1] = force_reg (operands[1]); + if (!register_operand (operands[2], <MODE>mode)) + operands[1] = force_reg (operands[2]); switch (GET_MODE_CLASS (<MODE>mode)) { case MODE_VECTOR_INT: ``` Signed-off-by: Andrew Pinski <quic_apin...@quicinc.com>