[AArch64][SVE] Combine predicated FMUL/FADD into FMA
Combine FADD and FMUL intrinsics into FMA when the result of the FMUL is an FADD operand with one only use and both use the same predicate.
 Differential  D111638  
[AArch64][SVE] Combine predicated FMUL/FADD into FMA Authored by MattDevereau on Oct 12 2021, 6:25 AM. 
Details [AArch64][SVE] Combine predicated FMUL/FADD into FMA Combine FADD and FMUL intrinsics into FMA when the result of the FMUL is an FADD operand with one only use and both use the same predicate. 
Diff Detail 
 Event Timeline
 
 
 
 
 
 Comment Actions Restructured logic path by adding instCombineSVEVectorFAdd 
 
 Comment Actions Added != operator to FastMathFlags Comment Actions Wrong argument order needs fixing, and some nits. Please also run clang-format. 
 
 
 
 Comment Actions Thanks for your review @bsmith, a couple of thoughts on your queries. 
 
 Comment Actions Added Global Fusion check before instCombineSVEVectorFMLA 
 
 Comment Actions Sorry @MattDevereau for the too late review but this is the first time I've had chance to look at the patch and I think there's an issue that needs fixing. 
 
 
  | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Please add a comment around your combine of the form // fold (fadd a (fmul b c)) -> (fma a b c)