[llvm-branch-commits] [mlir] check float cast (PR #166618)
Maksim Levental via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Wed Nov 5 13:27:13 PST 2025
https://github.com/makslevental updated https://github.com/llvm/llvm-project/pull/166618
>From 186a5f9dd5545db6e3ccb228174e9f6edbce95d5 Mon Sep 17 00:00:00 2001
From: makslevental <maksim.levental at gmail.com>
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 <maksim.levental at gmail.com>
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();
More information about the llvm-branch-commits
mailing list