In-loop vector reductions which use the llvm.fmuladd intrinsic involve
the creation of two recipes; a VPReductionRecipe for the fadd and a
VPInstruction for the fmul. If the call to llvm.fmuladd has fast-math flags
these should be propagated through to the fmul instruction, so an
interface setFastMathFlags has been added to the VPInstruction class to
enable this.
Depends on D111555
can we assert that this is only used for opcodes that can take fast-math flags? On the IR side this is done by checking for FPMathOperator, but there's no helper to check if an opcode is a FP operation. Perhaps it would be sufficient to check for the relevant opcodes?
Also, for now we only need to set fast-math flags at construction time I think, so could this be set directly in the constructor?