This patch is adding a new pattern matching in DAGCombiner to look for opportunities to fuse fmul and fadd to fma aggressively.
The matching is very specific to the following pattern: FADD X, (FMA A, B, (FMA C, D, (MUL Y, Z))) can be converted to FMA Y, Z (FMA A, B, (FMA C, D, X))
This transformation is also changing the orders of operations, so it will only be enabled for FADD, when it's fast-math attribute has reassoc or contract flag enabled.