[Mlir-commits] [mlir] [math] lower rsqrt to sqrt + fdiv (PR #91344)

Corentin Ferry llvmlistbot at llvm.org
Wed May 8 01:26:19 PDT 2024


================
@@ -615,6 +615,24 @@ static LogicalResult convertRoundEvenOp(math::RoundEvenOp op,
   return success();
 }
 
+// Convert `math.rsqrt` into `arith.divf` + `math.sqrt`
+static LogicalResult convertRsqrtOp(math::RsqrtOp op,
+                                    PatternRewriter &rewriter) {
+
+  auto operand = op.getOperand();
+  auto operandTy = operand.getType();
+  auto eTy = getElementTypeOrSelf(operandTy);
+  if (!isa<FloatType>(eTy))
+    return failure();
+
+  Location loc = op->getLoc();
+  auto constOneFloat = createFloatConst(loc, operandTy, 1.0, rewriter);
+  auto sqrtOp = rewriter.create<math::SqrtOp>(loc, op->getOperand(0));
+  rewriter.replaceOpWithNewOp<arith::DivFOp>(op, operandTy,
----------------
cferry-AMD wrote:

Added within `test-expand-math-approx.mlir`.

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


More information about the Mlir-commits mailing list