Skip to content

Commit

Permalink
Split krnlToLLVM.cpp file (llvm#1199)
Browse files Browse the repository at this point in the history
Signed-off-by: Ettore Tiotto <etiotto@ca.ibm.com>
  • Loading branch information
Ettore Tiotto authored Feb 25, 2022
1 parent 80b8c18 commit 7f909cd
Show file tree
Hide file tree
Showing 41 changed files with 2,698 additions and 541 deletions.
36 changes: 19 additions & 17 deletions src/Compiler/CompilerUtils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@

#include "ExternalUtil.hpp"
#include "src/Compiler/CompilerUtils.hpp"
#include "src/Conversion/KrnlToLLVM/ConvertKrnlToLLVM.hpp"
#include "src/Support/OMOptions.hpp"

#define DEBUG_TYPE "compiler_utils"
Expand Down Expand Up @@ -713,23 +714,23 @@ void addONNXToMLIRPasses(mlir::PassManager &pm) {
// In future, only the dynamic pass, ONNXOpTransformPass, will be used for
// this function.

pm.addNestedPass<FuncOp>(mlir::createDecomposeONNXToONNXPass());
pm.addPass(mlir::createShapeInferencePass());
pm.addNestedPass<FuncOp>(onnx_mlir::createDecomposeONNXToONNXPass());
pm.addPass(onnx_mlir::createShapeInferencePass());
pm.addPass(mlir::createCanonicalizerPass());
pm.addPass(mlir::createShapeInferencePass());
pm.addPass(onnx_mlir::createShapeInferencePass());
// There are more opportunities for const propagation once all tensors have
// inferred shapes.
pm.addNestedPass<FuncOp>(mlir::createConstPropONNXToONNXPass());
pm.addNestedPass<FuncOp>(onnx_mlir::createConstPropONNXToONNXPass());

if (onnxOpTransformThreshold > 0) {
// Dynamic iterate in ONNXOpTransformPass
pm.addPass(mlir::createONNXOpTransformPass(onnxOpTransformThreshold));
pm.addPass(onnx_mlir::createONNXOpTransformPass(onnxOpTransformThreshold));
} else {
// Statically add extra passes
for (int i = 0; i < repeatOnnxTransform; i++) {
pm.addPass(mlir::createCanonicalizerPass());
pm.addPass(mlir::createShapeInferencePass());
pm.addNestedPass<FuncOp>(mlir::createConstPropONNXToONNXPass());
pm.addPass(onnx_mlir::createShapeInferencePass());
pm.addNestedPass<FuncOp>(onnx_mlir::createConstPropONNXToONNXPass());
}
}

Expand All @@ -738,10 +739,10 @@ void addONNXToMLIRPasses(mlir::PassManager &pm) {
}

void addONNXToKrnlPasses(mlir::PassManager &pm, int optLevel) {
pm.addNestedPass<FuncOp>(mlir::createONNXPreKrnlVerifyPass());
pm.addNestedPass<FuncOp>(onnx_mlir::createONNXPreKrnlVerifyPass());
// Add instrumentation for Onnx Ops
pm.addNestedPass<FuncOp>(mlir::createInstrumentONNXPass());
pm.addPass(mlir::createLowerToKrnlPass(optLevel));
pm.addNestedPass<FuncOp>(onnx_mlir::createInstrumentONNXPass());
pm.addPass(onnx_mlir::createLowerToKrnlPass(optLevel));
// An additional pass of canonicalization is helpful because lowering
// from ONNX dialect to Standard dialect exposes additional canonicalization
// opportunities.
Expand All @@ -751,7 +752,7 @@ void addONNXToKrnlPasses(mlir::PassManager &pm, int optLevel) {
}

void addKrnlToAffinePasses(mlir::PassManager &pm) {
pm.addNestedPass<FuncOp>(mlir::createConvertKrnlToAffinePass());
pm.addNestedPass<FuncOp>(onnx_mlir::createConvertKrnlToAffinePass());
// Fuse loops in Affine dialect.
// pm.addPass(mlir::createLoopFusionPass());
}
Expand All @@ -766,15 +767,15 @@ void addKrnlToLLVMPasses(mlir::OpPassManager &pm) {
// https://mlir.llvm.org/docs/BufferDeallocationInternals.
pm.addNestedPass<FuncOp>(mlir::bufferization::createBufferDeallocationPass());
if (enableMemoryBundling) {
pm.addNestedPass<FuncOp>(mlir::createKrnlEnableMemoryPoolPass());
pm.addNestedPass<FuncOp>(mlir::createKrnlBundleMemoryPoolsPass());
pm.addNestedPass<FuncOp>(krnl::createKrnlEnableMemoryPoolPass());
pm.addNestedPass<FuncOp>(krnl::createKrnlBundleMemoryPoolsPass());
pm.addPass(mlir::createCanonicalizerPass());
pm.addNestedPass<FuncOp>(mlir::createKrnlOptimizeMemoryPoolsPass());
pm.addNestedPass<FuncOp>(krnl::createKrnlOptimizeMemoryPoolsPass());
}

pm.addNestedPass<FuncOp>(mlir::createConvertSCFToCFPass());

pm.addPass(mlir::createConvertKrnlToLLVMPass());
pm.addPass(krnl::createConvertKrnlToLLVMPass());
pm.addPass(mlir::createReconcileUnrealizedCastsPass());
pm.addPass(mlir::createCanonicalizerPass());
}
Expand Down Expand Up @@ -910,10 +911,11 @@ void emitOutputFiles(string outputBaseName, EmissionTargetType emissionTarget,
mlir::PassManager cleanSourcePM(
&context, mlir::OpPassManager::Nesting::Implicit);
if (emissionTarget == EmitONNXIR || emissionTarget == EmitONNXBasic)
cleanSourcePM.addNestedPass<FuncOp>(mlir::createElideConstantValuePass());
cleanSourcePM.addNestedPass<FuncOp>(
onnx_mlir::createElideConstantValuePass());
if (emissionTarget == EmitMLIR)
cleanSourcePM.addNestedPass<FuncOp>(
mlir::createElideConstGlobalValuePass());
onnx_mlir::createElideConstGlobalValuePass());

if (emissionTarget == EmitONNXBasic || emissionTarget == EmitONNXIR ||
emissionTarget == EmitMLIR) {
Expand Down
2 changes: 1 addition & 1 deletion src/Conversion/KrnlToAffine/KrnlToAffine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1533,6 +1533,6 @@ void ConvertKrnlToAffinePass::runOnOperation() {

} // namespace

std::unique_ptr<Pass> mlir::createConvertKrnlToAffinePass() {
std::unique_ptr<Pass> onnx_mlir::createConvertKrnlToAffinePass() {
return std::make_unique<ConvertKrnlToAffinePass>();
}
17 changes: 14 additions & 3 deletions src/Conversion/KrnlToLLVM/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,10 +1,21 @@
# SPDX-License-Identifier: Apache-2.0

add_onnx_mlir_library(OMKrnlToLLVM
KrnlToLLVM.cpp
KrnlToLLVMHelper.cpp
ConvertKrnlToLLVM.cpp
KrnlFindIndex.cpp
KrnlEntryPoint.cpp
KrnlGetRef.cpp
KrnlGlobal.cpp
KrnlInstrument.cpp
KrnlMemcpy.cpp
KrnlPrintTensor.cpp
KrnlPrint.cpp
KrnlPrint.cpp
KrnlRandomNormal.cpp
KrnlStrlen.cpp
KrnlStrncmp.cpp
KrnlToLLVMHelper.cpp
KrnlUnaryMath.cpp
KrnlVectorTypeCast.cpp
RuntimeAPI.cpp

LINK_LIBS PUBLIC
Expand Down
Loading

0 comments on commit 7f909cd

Please sign in to comment.