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).

Reply via email to