[Mlir-commits] [clang] [llvm] [mlir] [clang][NVPTX][MLIR][NVVM] Add overloaded fadd intrinsics (PR #217336)
Durgadoss R
llvmlistbot at llvm.org
Fri Aug 21 06:01:10 PDT 2026
================
@@ -2117,49 +2144,70 @@ let Predicates = [SM100, doNoF32FTZ] in {
// Sub
//
+// These nodes are created by combineFAddWithNeg.
def sub_rn_sat : SDNode<"NVPTXISD::SUB_RN_SAT", SDTFPBinOp>;
def sub_rn_ftz_sat :
SDNode<"NVPTXISD::SUB_RN_FTZ_SAT", SDTFPBinOp>;
-
-class INT_NVVM_SUB_RN<RegTyInfo TyInfo, string variant> :
+
+foreach rnd = ["_rn", "_rz", "_rm", "_rp"] in
+ foreach ftz = ["", "_ftz"] in
+ def sub # rnd # ftz :
+ SDNode<"NVPTXISD::SUB" # !toupper(rnd # ftz), SDTFPBinOp>;
+
+class INT_NVVM_SUB<RegTyInfo TyInfo, string variant> :
BasicNVPTXInst<(outs TyInfo.RC:$dst), (ins TyInfo.RC:$a, TyInfo.RC:$b),
- !subst("_", ".", "sub.rn" # variant # "." # TyInfo.PtxType),
+ !subst("_", ".", "sub" # variant # "." # TyInfo.PtxType),
[(set TyInfo.Ty:$dst,
- (!cast<SDNode>("sub_rn" # variant) TyInfo.Ty:$a, TyInfo.Ty:$b))]>;
+ (!cast<SDNode>("sub" # variant) TyInfo.Ty:$a, TyInfo.Ty:$b))]>;
-def INT_NVVM_SUB_RN_SAT_F16 : INT_NVVM_SUB_RN<F16RT, "_sat">;
-def INT_NVVM_SUB_RN_FTZ_SAT_F16 : INT_NVVM_SUB_RN<F16RT, "_ftz_sat">;
-def INT_NVVM_SUB_RN_SAT_F16X2 : INT_NVVM_SUB_RN<F16X2RT, "_sat">;
-def INT_NVVM_SUB_RN_FTZ_SAT_F16X2 : INT_NVVM_SUB_RN<F16X2RT, "_ftz_sat">;
+foreach t = [F16RT, F16X2RT] in
+ foreach ftz = ["", "_ftz"] in
+ foreach sat = ["", "_sat"] in
+ def INT_NVVM_SUB_RN # !toupper(ftz # sat # "_" # t.PtxType) :
+ INT_NVVM_SUB<t, "_rn" # ftz # sat>;
+
+let Predicates = BF16ArithPreds in
+ foreach t = [BF16RT, BF16X2RT] in
+ def INT_NVVM_SUB_RN_ # !toupper(t.PtxType) : INT_NVVM_SUB<t, "_rn">;
+
+let Predicates = [hasF32x2Instructions] in
+ foreach rnd = ["_rn", "_rz", "_rm", "_rp"] in
----------------
durga4github wrote:
ok, we have this list being iterated in many places now.. Let us defvar once and use it everywhere
https://github.com/llvm/llvm-project/pull/217336
More information about the Mlir-commits
mailing list