(-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