Many thanks to Uros for spotting that I'd forgotten to add constraints to the new define_insn_and_split *andn<dwi>_doubleword_bmi when moving it from pre-reload to post-reload. I've pushed this obvious fix after a make bootstrap on x86_64-pc-linux-gnu. Sorry for the inconvenience to anyone building the tree with a non-default architecture that enables BMI.
2022-07-01 Roger Sayle <ro...@nextmovesoftware.com> Uroš Bizjak <ubiz...@gmail.com> gcc/ChangeLog * config/i386/i386.md (*andn<mode>3_doubleword_bmi): Add constraints to post-reload define_insn_and_split. Roger --
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 3401814..352a21c 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -10405,10 +10405,10 @@ }) (define_insn_and_split "*andn<mode>3_doubleword_bmi" - [(set (match_operand:<DWI> 0 "register_operand") + [(set (match_operand:<DWI> 0 "register_operand" "=r") (and:<DWI> - (not:<DWI> (match_operand:<DWI> 1 "register_operand")) - (match_operand:<DWI> 2 "nonimmediate_operand"))) + (not:<DWI> (match_operand:<DWI> 1 "register_operand" "0")) + (match_operand:<DWI> 2 "nonimmediate_operand" "ro"))) (clobber (reg:CC FLAGS_REG))] "TARGET_BMI" "#"