(-X) * (-Y) + Z --> X * Y + Z
This is a missing optimization that shows up as a potential regression in D66050, so I think we should solve it first. We appear to be partly missing this fold in IR as well.
We do handle the simpler case of:
(-X) * (-Y) --> X * Y
Maybe a comment here? Not critical though...
Something like: -X * -Y + Z --> X * Y + Z