On 3/3/24 12:43, Uros Bizjak wrote:
umuldi3_highpart expander does:

    if (REG_P (operands[2]))
      operands[2] = gen_rtx_ZERO_EXTEND (TImode, operands[2]);

on register_operand predicate, which also allows SUBREG RTX. So,
subregs were emitted without ZERO_EXTEND RTX.

But nowadays we have UMUL_HIGHPART that allows us to fix this
issue while also simplifying the instruction RTX.

     PR target/113720

gcc/ChangeLog:

     * config/alpha/alpha.md (umuldi3_highpart): Remove expander.
     (*umuldi3_highpart_reg): Rename to umuldi3_highpart and
     simplify insn RTX using UMUL_HIGHPART rtx_code.
     (*umuldi3_highpart_const): Remove.

Tested by building a cross-compiler to alpha-linux-gnu.
Thanks. I'd been meaning to track this down and report it for a month and just keep getting preempted!

Jeff

Reply via email to