https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107704
--- Comment #10 from Oleg Endo <olegendo at gcc dot gnu.org> ---
(In reply to Richard Sandiford from comment #9)
> I think the .md pattern either has to treat both appearances of the T
> register as operands or hard-code both of them.
Do you mean to make it a multi-set pattern, like
(define_insn_and_split "mov_neg_si_t"
[(set (match_operand:SI 0 "arith_reg_dest" "=r")
(neg:SI (match_operand 1 "treg_set_expr")))
(set (reg:SI T_REG) (... ))]
...
... or something like that?