https://github.com/makslevental updated 
https://github.com/llvm/llvm-project/pull/166618

>From 186a5f9dd5545db6e3ccb228174e9f6edbce95d5 Mon Sep 17 00:00:00 2001
From: makslevental <[email protected]>
Date: Wed, 5 Nov 2025 11:13:09 -0800
Subject: [PATCH 1/2] check float cast

---
 mlir/lib/Conversion/ArithToLLVM/ArithToLLVM.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/mlir/lib/Conversion/ArithToLLVM/ArithToLLVM.cpp 
b/mlir/lib/Conversion/ArithToLLVM/ArithToLLVM.cpp
index 632e1a7f02602..99d181f6262cd 100644
--- a/mlir/lib/Conversion/ArithToLLVM/ArithToLLVM.cpp
+++ b/mlir/lib/Conversion/ArithToLLVM/ArithToLLVM.cpp
@@ -583,9 +583,11 @@ struct FancyAddFLowering : public 
ConvertOpToLLVMPattern<arith::AddFOp> {
     auto parent = op->getParentOfType<ModuleOp>();
     if (!parent)
       return failure();
+    auto floatTy = dyn_cast<FloatType>(op.getType());
+    if (!floatTy)
+      return failure();
     FailureOr<Operation *> adder =
         LLVM::lookupOrCreateApFloatAddFFn(rewriter, parent);
-    auto floatTy = cast<FloatType>(op.getType());
 
     // Cast operands to 64-bit integers.
     Location loc = op.getLoc();

>From 45b3830b7cc440bc62b975d169837159201e0f3c Mon Sep 17 00:00:00 2001
From: makslevental <[email protected]>
Date: Wed, 5 Nov 2025 13:26:59 -0800
Subject: [PATCH 2/2] fix creates

---
 mlir/lib/Conversion/ArithToLLVM/ArithToLLVM.cpp | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/mlir/lib/Conversion/ArithToLLVM/ArithToLLVM.cpp 
b/mlir/lib/Conversion/ArithToLLVM/ArithToLLVM.cpp
index 99d181f6262cd..6fe4c22178c03 100644
--- a/mlir/lib/Conversion/ArithToLLVM/ArithToLLVM.cpp
+++ b/mlir/lib/Conversion/ArithToLLVM/ArithToLLVM.cpp
@@ -591,16 +591,16 @@ struct FancyAddFLowering : public 
ConvertOpToLLVMPattern<arith::AddFOp> {
 
     // Cast operands to 64-bit integers.
     Location loc = op.getLoc();
-    Value lhsBits = rewriter.create<LLVM::ZExtOp>(loc, rewriter.getI64Type(),
-                                                  adaptor.getLhs());
-    Value rhsBits = rewriter.create<LLVM::ZExtOp>(loc, rewriter.getI64Type(),
-                                                  adaptor.getRhs());
+    Value lhsBits = LLVM::ZExtOp::create(rewriter, loc, rewriter.getI64Type(),
+                                         adaptor.getLhs());
+    Value rhsBits = LLVM::ZExtOp::create(rewriter, loc, rewriter.getI64Type(),
+                                         adaptor.getRhs());
 
     // Call software implementation of floating point addition.
     int32_t sem =
         llvm::APFloatBase::SemanticsToEnum(floatTy.getFloatSemantics());
-    Value semValue = rewriter.create<LLVM::ConstantOp>(
-        loc, rewriter.getI32Type(),
+    Value semValue = LLVM::ConstantOp::create(
+        rewriter, loc, rewriter.getI32Type(),
         rewriter.getIntegerAttr(rewriter.getI32Type(), sem));
     SmallVector<Value> params = {semValue, lhsBits, rhsBits};
     auto resultOp =
@@ -608,8 +608,8 @@ struct FancyAddFLowering : public 
ConvertOpToLLVMPattern<arith::AddFOp> {
                              SymbolRefAttr::get(*adder), params);
 
     // Truncate result to the original width.
-    Value truncatedBits = rewriter.create<LLVM::TruncOp>(
-        loc, rewriter.getIntegerType(floatTy.getWidth()),
+    Value truncatedBits = LLVM::TruncOp::create(
+        rewriter, loc, rewriter.getIntegerType(floatTy.getWidth()),
         resultOp->getResult(0));
     rewriter.replaceOp(op, truncatedBits);
     return success();

_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to