[RaiseImplicitCopy] Start of this pass

This commit is contained in:
Hanchen Ye 2022-03-18 11:16:54 -05:00
parent f9880d3b2b
commit 9500860fb6
4 changed files with 36 additions and 0 deletions

View File

@ -69,6 +69,7 @@ std::unique_ptr<Pass> createCreateMemrefSubviewPass();
std::unique_ptr<Pass> createPromoteBufferPass();
std::unique_ptr<Pass> createAffineStoreForwardPass();
std::unique_ptr<Pass> createSimplifyMemrefAccessPass();
std::unique_ptr<Pass> createRaiseImplicitCopyPass();
std::unique_ptr<Pass> createReduceInitialIntervalPass();
/// Directive optimization passes.

View File

@ -381,6 +381,16 @@ def SimplifyMemrefAccess : Pass<"scalehls-simplify-memref-access", "FuncOp"> {
let constructor = "mlir::scalehls::createSimplifyMemrefAccessPass()";
}
def RaiseImplicitCopy : Pass<"scalehls-raise-implicit-copy", "FuncOp"> {
let summary = "Raise copy in affine loops to memref.copy";
let description = [{
This raise-implicit-copy pass will detect implicit copy in affine loops and
raise to memref.copy in order to eliminate redundant copies.
}];
let constructor = "mlir::scalehls::createRaiseImplicitCopyPass()";
}
def ReduceInitialInterval : Pass<"scalehls-reduce-initial-interval", "FuncOp"> {
let summary = "Try to reduce the intiail interval";
let description = [{

View File

@ -20,6 +20,7 @@ add_mlir_library(MLIRScaleHLSTransforms
Memory/AffineStoreForward.cpp
Memory/CreateMemrefSubview.cpp
Memory/PromoteBuffer.cpp
Memory/RaiseImplicitCopy.cpp
Memory/ReduceInitialInterval.cpp
Memory/SimplifyMemrefAccess.cpp
CreateRuntimeMain.cpp

View File

@ -0,0 +1,24 @@
//===----------------------------------------------------------------------===//
//
// Copyright 2020-2021 The ScaleHLS Authors.
//
//===----------------------------------------------------------------------===//
#include "mlir/Dialect/Affine/Analysis/LoopAnalysis.h"
#include "mlir/Dialect/Affine/LoopUtils.h"
#include "mlir/Dialect/Affine/Utils.h"
#include "scalehls/Transforms/Passes.h"
#include "scalehls/Transforms/Utils.h"
using namespace mlir;
using namespace scalehls;
namespace {
struct RaiseImplicitCopy : public RaiseImplicitCopyBase<RaiseImplicitCopy> {
void runOnOperation() override {}
};
} // namespace
std::unique_ptr<Pass> scalehls::createRaiseImplicitCopyPass() {
return std::make_unique<RaiseImplicitCopy>();
}