1818#include " mlir/IR/TypeUtilities.h"
1919#include " mlir/Pass/Pass.h"
2020
21+ #include " llvm/ADT/FloatingPointMode.h"
22+
2123namespace mlir {
2224#define GEN_PASS_DEF_CONVERTMATHTOLLVMPASS
2325#include " mlir/Conversion/Passes.h.inc"
@@ -297,8 +299,8 @@ struct IsNaNOpLowering : public ConvertOpToLLVMPattern<math::IsNaNOp> {
297299 if (!operandType || !LLVM::isCompatibleType (operandType))
298300 return failure ();
299301
300- rewriter.replaceOpWithNewOp <LLVM::IsFPClass>(op, op. getType (),
301- adaptor.getOperand (), 3 );
302+ rewriter.replaceOpWithNewOp <LLVM::IsFPClass>(
303+ op, op. getType (), adaptor.getOperand (), llvm::fcNan );
302304 return success ();
303305 }
304306};
@@ -314,8 +316,8 @@ struct IsFiniteOpLowering : public ConvertOpToLLVMPattern<math::IsFiniteOp> {
314316 if (!operandType || !LLVM::isCompatibleType (operandType))
315317 return failure ();
316318
317- rewriter.replaceOpWithNewOp <LLVM::IsFPClass>(op, op. getType (),
318- adaptor.getOperand (), 504 );
319+ rewriter.replaceOpWithNewOp <LLVM::IsFPClass>(
320+ op, op. getType (), adaptor.getOperand (), llvm::fcFinite );
319321 return success ();
320322 }
321323};
@@ -341,10 +343,10 @@ void mlir::populateMathToLLVMConversionPatterns(
341343 bool approximateLog1p, PatternBenefit benefit) {
342344 if (approximateLog1p)
343345 patterns.add <Log1pOpLowering>(converter, benefit);
344- patterns.add <IsNaNOpLowering, IsFiniteOpLowering>(converter);
345-
346346 // clang-format off
347347 patterns.add <
348+ IsNaNOpLowering,
349+ IsFiniteOpLowering,
348350 AbsFOpLowering,
349351 AbsIOpLowering,
350352 CeilOpLowering,
0 commit comments