Expansion of narrowing math built-ins into power instructions
Joseph Myers
joseph@codesourcery.com
Mon Aug 12 21:20:00 GMT 2019
On Mon, 12 Aug 2019, Segher Boessenkool wrote:
> (define_insn "add_truncdfsf3"
> [(set (match_operand:SF 0 "gpc_reg_operand" "=f,wa")
> (float_truncate:SF
> (plus:DF (match_operand:DF 1 "gpc_reg_operand" "%d,wa")
> (match_operand:DF 2 "gpc_reg_operand" "d,wa"))))]
That sort of pattern is incorrect for a fused operation such as fadd,
because combine could match it for code that is supposed to do separate
addition and narrowing conversion. The RTL needs to be something that
does *not* match the combination of separate operations (just as fma has
its own RTL, and a separate pass is responsible for converting separate
operations to fused ones in the -ffp-contract=fast case where it's
permitted).
--
Joseph S. Myers
joseph@codesourcery.com
More information about the Gcc
mailing list