https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115691
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2024-06-27 Ever confirmed|0 |1 Status|UNCONFIRMED |NEW --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (define_insn "" [(set (match_operand:DI 0 "register_operand" "=f") (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "f")) (match_operand:DI 2 "uint32_operand" "f")))] "TARGET_PA_11 && ! TARGET_SOFT_FLOAT && ! TARGET_SOFT_MULT && TARGET_64BIT" "xmpyu %1,%2R,%0" [(set_attr "type" "fpmuldbl") (set_attr "length" "4")]) (define_predicate "uint32_operand" (if_then_else (match_test "HOST_BITS_PER_WIDE_INT > 32") (and (match_code "const_int") (match_test "INTVAL (op) >= 0 && INTVAL (op) < (HOST_WIDE_INT) 1 << 32")) (and (match_code "const_int,const_double") (match_test "CONST_INT_P (op) || CONST_DOUBLE_HIGH (op) == 0")))) (define_register_constraint "f" "FP_REGS" "Floating-point register.") Huh? The predicate and the constraints are not subset of each other at all. I don't see how that could work before hand. This was most like exposed by late-combine (r15-1579-g792f97b44ffc5e). Note there is some cleanup since HOST_BITS_PER_WIDE_INT is always 64 for a long time now (maybe >= 10 years).