On Tue, Jun 18, 2019 at 12:31:13PM +0000, Joel Hutton wrote: > from bar.c.263r.combine: > Trying 10 -> 12: > 10: r97:V4SF=float(r96:V4SI) > REG_DEAD r96:V4SI > 12: r98:V4SF=r97:V4SF*r99:V4SF > REG_DEAD r97:V4SF > REG_EQUAL r97:V4SF*const_vector > Failed to match this instruction: > (set (reg:V4SF 98 [ D.3424 ]) > (mult:V4SF (float:V4SF (reg:V4SI 96 [ D.3422 ])) > (reg:V4SF 99))) > I would expect combine to try this pattern: > (set (reg:V4SF 98 [ D.3424 ]) > (mult:V4SF (float:V4SF (reg:V4SI 96 [ D.3422 ])) > (const_vector:V4SF [ > (const_double:SF 2.5e-1 [0x0.8p-1]) repeated x4 > ]))) > > but it does not.
Like I said, if combine tried these things, it would replace *every* i3 with its REG_EQUAL note, and that is not likely successful. Segher