11#include "mlir/Dialect/Affine/Utils.h" 
   12#include "mlir/Dialect/Arith/IR/Arith.h" 
   13#include "mlir/Dialect/Arith/Transforms/Passes.h" 
   14#include "mlir/Dialect/Func/IR/FuncOps.h" 
   15#include "mlir/Dialect/MemRef/IR/MemRef.h" 
   16#include "mlir/Dialect/SCF/IR/SCF.h" 
   17#include "mlir/IR/PatternMatch.h" 
   18#include "mlir/Pass/PassManager.h" 
   19#include "mlir/Support/LogicalResult.h" 
   20#include "mlir/Transforms/DialectConversion.h" 
   21#include "mlir/Transforms/GreedyPatternRewriteDriver.h" 
   25#define GEN_PASS_DEF_EXCLUDEEXECUTEREGIONCANONICALIZE 
   26#include "circt/Dialect/Calyx/CalyxPasses.h.inc" 
   31using namespace mlir::arith;
 
   32using namespace mlir::memref;
 
   33using namespace mlir::scf;
 
   39class ExcludeExecuteRegionCanonicalizePass
 
   40    : 
public circt::calyx::impl::ExcludeExecuteRegionCanonicalizeBase<
 
   41          ExcludeExecuteRegionCanonicalizePass> {
 
   42  void runOnOperation() 
override;
 
   46void ExcludeExecuteRegionCanonicalizePass::runOnOperation() {
 
   47  MLIRContext *ctx = &getContext();
 
   51  for (Dialect *dialect : ctx->getLoadedDialects())
 
   52    dialect->getCanonicalizationPatterns(
patterns);
 
   55  for (
const RegisteredOperationName &op : ctx->getRegisteredOperations()) {
 
   56    if (op.getStringRef() == 
"scf.execute_region" ||
 
   57        op.getStringRef() == 
"scf.parallel")
 
   60    op.getCanonicalizationPatterns(
patterns, ctx);
 
   63  if (failed(applyPatternsGreedily(getOperation(), std::move(
patterns)))) {
 
   64    getOperation()->emitError(
"Failed to apply canonicalization.");
 
   68  ConversionTarget target(*ctx);
 
   69  target.addLegalDialect<arith::ArithDialect, memref::MemRefDialect,
 
   70                         scf::SCFDialect, affine::AffineDialect>();
 
   73std::unique_ptr<mlir::Pass>
 
   75  return std::make_unique<ExcludeExecuteRegionCanonicalizePass>();
 
 
std::unique_ptr< mlir::Pass > createExcludeExecuteRegionCanonicalizePass()
 
The InstanceGraph op interface, see InstanceGraphInterface.td for more details.