diff --git a/mlir/lib/Conversion/ArithToEmitC/ArithToEmitC.cpp b/mlir/lib/Conversion/ArithToEmitC/ArithToEmitC.cpp index b68933d0fb0a0..819525651ff0b 100644 --- a/mlir/lib/Conversion/ArithToEmitC/ArithToEmitC.cpp +++ b/mlir/lib/Conversion/ArithToEmitC/ArithToEmitC.cpp @@ -340,6 +340,25 @@ class NegFOpConversion : public OpConversionPattern { } }; +class MaximumFOpLowering : public OpConversionPattern { +public: + using OpConversionPattern::OpConversionPattern; + + LogicalResult + matchAndRewrite(arith::MaximumFOp op, OpAdaptor adaptor, + ConversionPatternRewriter &rewriter) const override { + Location loc = op.getLoc(); + + auto newOp = emitc::CallOpaqueOp::create( + rewriter, loc, op.getType(), rewriter.getStringAttr("fmax"), + ValueRange{adaptor.getLhs(), adaptor.getRhs()}); + + rewriter.replaceOp(op, newOp); + + return success(); + } +}; + template class CastConversion : public OpConversionPattern { public: