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
