11#include "mlir/Transforms/GreedyPatternRewriteDriver.h"
18#define GEN_PASS_DEF_ASSUMETWOVALUED
19#include "circt/Dialect/Comb/Passes.h.inc"
27 LogicalResult matchAndRewrite(ICmpOp op,
28 PatternRewriter &rewriter)
const override {
29 ICmpPredicate newPredicate;
30 switch (op.getPredicate()) {
31 case ICmpPredicate::ceq:
32 case ICmpPredicate::weq:
33 newPredicate = ICmpPredicate::eq;
35 case ICmpPredicate::cne:
36 case ICmpPredicate::wne:
37 newPredicate = ICmpPredicate::ne;
42 rewriter.replaceOpWithNewOp<ICmpOp>(op, newPredicate, op.getLhs(),
50class AssumeTwoValued :
public impl::AssumeTwoValuedBase<AssumeTwoValued> {
52 using AssumeTwoValuedBase::AssumeTwoValuedBase;
54 void runOnOperation()
override;
58void AssumeTwoValued::runOnOperation() {
59 auto *ctx = &getContext();
63 if (failed(applyPatternsGreedily(getOperation(), std::move(
patterns))))
64 return signalPassFailure();
The InstanceGraph op interface, see InstanceGraphInterface.td for more details.