fuse-negated-product ( insn definitions use-counts -- insn' )


Vocabulary
compiler.cfg.multiply-negate

Inputs
insnan object
definitionsan object
use-countsan object


Outputs
insn'an object


Definition


:: fuse-negated-product
( insn definitions use-counts -- insn' )
insn ##neg? [
insn src>> :> product product definitions at
:> multiply multiply ##mul? product use-counts at 1 =
and [
insn dst>> multiply src1>> multiply src2>> ##mneg
new-insn
] [ insn ] if
] [ insn ] if ;