================
@@ -1386,6 +1386,14 @@ let TargetPrefix = "nvvm" in {
PureIntrinsic<[llvm_double_ty],
[llvm_double_ty, llvm_double_ty, llvm_double_ty]>;
}
+
+ foreach rnd = ["_rn", "_rz", "_rm", "_rp"] in {
+ foreach sat = ["", "_sat"] in {
+ def int_nvvm_fma_mixed # rnd # sat # _f32 :
+ PureIntrinsic<[llvm_float_ty],
+ [llvm_anyfloat_ty, LLVMMatchType<0>, llvm_float_ty]>;
+ }
+ }
----------------
Wolfram70 wrote:
Agreed, that makes a lot of sense. We could do the same for the `add` and `sub`
operations too since they are equivalent to a conversion followed by the fp
operation as well. It looks like we are missing intrinsics some variants of
these base operations currently (`fma` and `add` with `.sat` and all of `sub`)
so I've just added those and used this pattern to lower to the mixed precision
instructions.
Please take a look, thanks!
https://github.com/llvm/llvm-project/pull/168359
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits