TL;DR I've prepared a patch that allows arbitrary intrinsics to have a
non-default fp environment - not just constrained fp intrinsics. It's up
for review here: https://reviews.llvm.org/D93455
Right now, the only way to have fp ops with a non-default rounding mode
or exception behavior is constrained fp intrinsics (all of
llvm.experimental.constrained.*). These intrinsics have up to two
metadata parameters in their operand list to specify the fp environment.
This RFC proposes to use operand bundles (cfp-except and cfp-round)
instead. We will use this for constrained-fp VP intrinsics
(llvm.vp.fadd) - however, there is more, we may even do away with all
constrained fp intrinsics that are basically a copy of libm functions
(eg we can replace llvm.experimental.constrained.sqrt with just
llvm.sqrt + constrained fp bundles).