[Mlir-commits] [mlir] [MLIR][NVVM] Add nvvm.addf and nvvm.subf Ops (PR #179162)
Durgadoss R
llvmlistbot at llvm.org
Wed Feb 4 02:06:34 PST 2026
================
@@ -6247,6 +6176,98 @@ def NVVM_Tcgen05MMAWsSparseOp : NVVM_Op<"tcgen05.mma.ws.sp",
}];
}
+def SIMTFloatType : AnyTypeOf<[F16, BF16, F32, F64, VectorOfLengthAndType<[2], [F16, BF16, F32, F64]>]>;
+
+class ResultAtLeastAsWideAs<string operandArg> :
+ TypesMatchWith<"result type must be at least as wide as " # operandArg # " operand",
+ operandArg, "res", "$_self",
+ "::mlir::NVVM::isResultTypeAtLeastAsWideAsOperand">;
+
+class AllScalarsOrAllVectors<string lhsArg, string rhsArg> :
+ TypesMatchWith<"cannot mix vector and scalar operands",
+ lhsArg, rhsArg, "$_self",
+ "::mlir::NVVM::areBothScalarsOrBothVectors">;
+
+class NVVM_FloatBinaryOp<string mnemonic, list<Trait> traits = []> :
+ NVVM_Op<mnemonic, traits # [Pure, ResultsAreFloatLike,
+ ResultAtLeastAsWideAs<"lhs">,
+ ResultAtLeastAsWideAs<"rhs">,
+ AllScalarsOrAllVectors<"lhs", "rhs">]>,
+ Arguments<(ins SIMTFloatType:$lhs, SIMTFloatType:$rhs,
+ DefaultValuedAttr<FPRoundingModeAttr, "FPRoundingMode::NONE">:$rnd,
+ DefaultValuedAttr<SaturationModeAttr, "SaturationMode::NONE">:$sat,
+ DefaultValuedAttr<BoolAttr, "false">:$ftz)>,
+ Results<(outs SIMTFloatType:$res)> {
+ let assemblyFormat = "$lhs `,` $rhs attr-dict `:` type(operands) `->` type($res)";
+}
----------------
durga4github wrote:
This looks a lot more terse and clean now!
https://github.com/llvm/llvm-project/pull/179162
More information about the Mlir-commits
mailing list