================
@@ -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

Reply via email to