Rationale:
The LLVM dialect supports passing fastmath flags from floating point ops to LLVMIR instructions. However, not all LLVM ops have the required attribute. This change adds support for fastmath flags to llvm.intr.vector.reduce.{fmin,fmax}. One scenario where this is useful is in lowering llvm.intr.vector.reduce.{fmax,fmin} to LLVMIR with nnan (NoNans) flag so it may be lowered to a shuffle reduction.
Changes:
- Make LLVM_VecReductionF implement the FastmathFlagsInterface; change is modeled on LLVM_UnaryIntrOpF
- Add an assembly format for LLVM_VecReductionF ops. The purpose is to keep existing functionality: avoid printing the fastmath flags attribute when it has its default value (none). Change is modeled on LLVM_UnaryIntrOpBase
nit: drop spaces