[Mlir-commits] [mlir] [MLIR][NVVM] Add div Ops (PR #198744)

Guray Ozen llvmlistbot at llvm.org
Wed May 20 04:17:44 PDT 2026


================
@@ -6579,6 +6579,62 @@ def NVVM_SqrtApproxOp : NVVM_F32UnaryApproxOp<"sqrt.approx"> {
   }];
 }
 
+//===----------------------------------------------------------------------===//
+// NVVM div op definitions
+//===----------------------------------------------------------------------===//
+
+def NVVM_DivFOp
+    : NVVM_SingleResultIntrinsicOp<"divf", [Pure, SameOperandsAndResultType]> {
+  let summary = "Divide one value by another";
+  let description = [{
+    Divides lhs by rhs, stores result in res (`res = lhs / rhs`).
+
+    For more information, see PTX ISA:
+    [div](https://docs.nvidia.com/cuda/parallel-thread-execution/#floating-point-instructions-div)
+  }];
+  let arguments = (ins AnyTypeOf<[F32, F64]>:$lhs, AnyTypeOf<[F32, F64]>:$rhs,
+      FPArithRoundingMode:$rnd, DefaultValuedAttr<BoolAttr, "false">:$ftz);
+  let results = (outs AnyTypeOf<[F32, F64]>:$res);
+  let assemblyFormat = "$lhs `,` $rhs attr-dict `:` type($res)";
+  let hasVerifier = 1;
+}
+
+def NVVM_DivFApproxOp
+    : NVVM_SingleResultIntrinsicOp<"divf.approx", [Pure,
+                                                   SameOperandsAndResultType]> {
+  let summary = "Fast, approximate divide";
+  let description = [{
+    Implements a fast approximation to divide, computed as `res = lhs * (1/rhs)`.
+    The maximum ulp error is 2 in the normal range.
+
+    For more information, see PTX ISA:
+    [div](https://docs.nvidia.com/cuda/parallel-thread-execution/#floating-point-instructions-div)
+  }];
+  let arguments = (ins F32:$lhs, F32:$rhs,
+      DefaultValuedAttr<BoolAttr, "false">:$ftz);
+  let results = (outs F32:$res);
+  let assemblyFormat = "$lhs `,` $rhs attr-dict `:` type($res)";
+}
+
+def NVVM_DivFFullOp
----------------
grypp wrote:

Can we have a single OP for div?  

https://github.com/llvm/llvm-project/pull/198744


More information about the Mlir-commits mailing list