18
18
#include " mlir/IR/TypeUtilities.h"
19
19
#include " mlir/Pass/Pass.h"
20
20
21
+ #include " llvm/ADT/FloatingPointMode.h"
22
+
21
23
namespace mlir {
22
24
#define GEN_PASS_DEF_CONVERTMATHTOLLVMPASS
23
25
#include " mlir/Conversion/Passes.h.inc"
@@ -297,8 +299,8 @@ struct IsNaNOpLowering : public ConvertOpToLLVMPattern<math::IsNaNOp> {
297
299
if (!operandType || !LLVM::isCompatibleType (operandType))
298
300
return failure ();
299
301
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 );
302
304
return success ();
303
305
}
304
306
};
@@ -314,8 +316,8 @@ struct IsFiniteOpLowering : public ConvertOpToLLVMPattern<math::IsFiniteOp> {
314
316
if (!operandType || !LLVM::isCompatibleType (operandType))
315
317
return failure ();
316
318
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 );
319
321
return success ();
320
322
}
321
323
};
@@ -341,10 +343,10 @@ void mlir::populateMathToLLVMConversionPatterns(
341
343
bool approximateLog1p, PatternBenefit benefit) {
342
344
if (approximateLog1p)
343
345
patterns.add <Log1pOpLowering>(converter, benefit);
344
- patterns.add <IsNaNOpLowering, IsFiniteOpLowering>(converter);
345
-
346
346
// clang-format off
347
347
patterns.add <
348
+ IsNaNOpLowering,
349
+ IsFiniteOpLowering,
348
350
AbsFOpLowering,
349
351
AbsIOpLowering,
350
352
CeilOpLowering,
0 commit comments