[ArrayPartition] start of array partition pass

This commit is contained in:
Hanchen Ye 2020-12-07 00:03:51 -06:00
parent 7cb98f3a87
commit a06d34e837
4 changed files with 43 additions and 0 deletions

View File

@ -20,6 +20,7 @@ std::unique_ptr<mlir::Pass> createAffineLoopPerfectionPass();
std::unique_ptr<mlir::Pass> createPartialAffineLoopTilePass();
std::unique_ptr<mlir::Pass> createRemoveVarLoopBoundPass();
std::unique_ptr<mlir::Pass> createInsertPipelinePragmaPass();
std::unique_ptr<mlir::Pass> createArrayPartitionPass();
void registerTransformsPasses();

View File

@ -20,6 +20,17 @@ def PragmaDSE : Pass<"pragma-dse", "ModuleOp"> {
let constructor = "mlir::scalehls::createPragmaDSEPass()";
}
def ArrayPartition : Pass<"array-partition", "ModuleOp"> {
let summary = "Insert pipeline pragma";
let description = [{
This array-partition pass will automatically search for the best array
partition solution of each on-chip memory instance and insert array
partition pragmas.
}];
let constructor = "mlir::scalehls::createArrayPartitionPass()";
}
def InsertPipelinePragma : Pass<"insert-pipeline-pragma", "ModuleOp"> {
let summary = "Insert pipeline pragma";
let description = [{

View File

@ -0,0 +1,25 @@
//===------------------------------------------------------------*- C++ -*-===//
//
//===----------------------------------------------------------------------===//
#include "Transforms/Passes.h"
#include "mlir/Dialect/Affine/IR/AffineOps.h"
#include "mlir/Dialect/Affine/Passes.h"
#include "mlir/IR/Builders.h"
#include "mlir/Transforms/LoopUtils.h"
using namespace std;
using namespace mlir;
using namespace scalehls;
namespace {
struct ArrayPartition : public ArrayPartitionBase<ArrayPartition> {
void runOnOperation() override;
};
} // namespace
void ArrayPartition::runOnOperation() { return; }
std::unique_ptr<mlir::Pass> scalehls::createArrayPartitionPass() {
return std::make_unique<ArrayPartition>();
}

View File

@ -0,0 +1,6 @@
// RUN: scalehls-opt -array-partition %s | FileCheck %s
// CHECK-LABEL: func @test_for
func @test_for() {
return
}