Skip to content

Commit

Permalink
Modify CmpFOpConversion
Browse files Browse the repository at this point in the history
Restrict "cmpf [true|false]" code to only allow returning i1 and nothing else.
  • Loading branch information
josel-amd committed Apr 15, 2024
1 parent 7a17cb7 commit 3c8dc44
Showing 1 changed file with 6 additions and 10 deletions.
16 changes: 6 additions & 10 deletions mlir/lib/Conversion/ArithToEmitC/ArithToEmitC.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
#include "mlir/IR/BuiltinTypes.h"
#include "mlir/Support/LogicalResult.h"
#include "mlir/Transforms/DialectConversion.h"
#include "llvm/ADT/APInt.h"

using namespace mlir;

Expand Down Expand Up @@ -80,13 +79,6 @@ Value createCheckIsOrdered(ConversionPatternRewriter &rewriter, Location loc,
firstIsNaN, secondIsNaN);
}

emitc::ConstantOp getConstant(OpBuilder rewriter, Location loc,
llvm::APInt val) {
auto type = rewriter.getIntegerType(val.getBitWidth());
return rewriter.create<emitc::ConstantOp>(loc, type,
rewriter.getIntegerAttr(type, val));
}

class CmpFOpConversion : public OpConversionPattern<arith::CmpFOp> {
public:
using OpConversionPattern::OpConversionPattern;
Expand All @@ -105,7 +97,9 @@ class CmpFOpConversion : public OpConversionPattern<arith::CmpFOp> {
emitc::CmpPredicate predicate;
switch (op.getPredicate()) {
case arith::CmpFPredicate::AlwaysFalse: {
auto constant = getConstant(rewriter, op->getLoc(), llvm::APInt(1, 0));
auto constant = rewriter.create<emitc::ConstantOp>(
op.getLoc(), rewriter.getI1Type(),
rewriter.getBoolAttr(/*value=*/false));
rewriter.replaceOp(op, constant);
return success();
}
Expand Down Expand Up @@ -174,7 +168,9 @@ class CmpFOpConversion : public OpConversionPattern<arith::CmpFOp> {
return success();
}
case arith::CmpFPredicate::AlwaysTrue: {
auto constant = getConstant(rewriter, op->getLoc(), llvm::APInt(1, 1));
auto constant = rewriter.create<emitc::ConstantOp>(
op.getLoc(), rewriter.getI1Type(),
rewriter.getBoolAttr(/*value=*/true));
rewriter.replaceOp(op, constant);
return success();
}
Expand Down

0 comments on commit 3c8dc44

Please sign in to comment.