If the addend of the fma is zero, common sense would suggest that we can convert fma x, y, 0.0 to fmul x, y. This comes up with some user code that was expecting the first fma in an unrolled loop to simplify to a fmul.
Floating point often does not follow naive common sense though. Alive suggests that this should be guarded by nsz (as fadd -0.0, 0.0 = 0.0). However it also did not complete running, so I have only validated this against fadd nsz (fmul(x,y), 0) -> fmul nsz (x,y), not with fma nsz (x, y, 0.0) -> fmul nsz (x, y).
Can reduce this to something like: