Skip to content
This repository has been archived by the owner on Jan 30, 2025. It is now read-only.

Commit

Permalink
Draft bufferization changes to Pipeline
Browse files Browse the repository at this point in the history
  • Loading branch information
sjain-stanford committed Jun 20, 2024
1 parent bb1787f commit a9ae356
Showing 1 changed file with 15 additions and 8 deletions.
23 changes: 15 additions & 8 deletions lib/Pipeline/Pipeline.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,15 @@
#include "mlir/Conversion/MathToLLVM/MathToLLVM.h"
#include "mlir/Conversion/MathToLibm/MathToLibm.h"
#include "mlir/Conversion/MemRefToLLVM/MemRefToLLVM.h"
#include "mlir/Conversion/BufferizationToMemRef/BufferizationToMemRef.h"
#include "mlir/Conversion/ReconcileUnrealizedCasts/ReconcileUnrealizedCasts.h"
#include "mlir/Conversion/SCFToControlFlow/SCFToControlFlow.h"
#include "mlir/Dialect/Arith/Transforms/Passes.h"
#include "mlir/Dialect/Bufferization/Transforms/Passes.h"
#include "mlir/Dialect/Func/IR/FuncOps.h"
#include "mlir/Dialect/Func/Transforms/Passes.h"
#include "mlir/Dialect/Linalg/Passes.h"
#include "mlir/Dialect/Bufferization/Transforms/OneShotAnalysis.h"
#include "mlir/Dialect/MemRef/Transforms/Passes.h"
#include "mlir/Dialect/Tensor/Transforms/Passes.h"
#include "mlir/Pass/PassManager.h"
Expand Down Expand Up @@ -72,16 +74,21 @@ static void createTcpToLlvmPipeline(OpPassManager &pm) {
pm.addNestedPass<func::FuncOp>(tcp::createConvertTcpToArithPass());

// Bufferize tensor -> memref.
pm.addNestedPass<func::FuncOp>(
bufferization::createEmptyTensorToAllocTensorPass());
pm.addNestedPass<func::FuncOp>(
bufferization::createBufferizationBufferizePass());
pm.addNestedPass<func::FuncOp>(createLinalgBufferizePass());
pm.addNestedPass<func::FuncOp>(tensor::createTensorBufferizePass());
pm.addPass(arith::createConstantBufferizePass());
pm.addPass(func::createFuncBufferizePass());
bufferization::OneShotBufferizationOptions bufferizationOptions;
bufferizationOptions.bufferizeFunctionBoundaries = true;
bufferizationOptions.setFunctionBoundaryTypeConversion(
bufferization::LayoutMapOption::IdentityLayoutMap);
pm.addNestedPass<func::FuncOp>(bufferization::createOneShotBufferizePass(bufferizationOptions));
pm.addNestedPass<func::FuncOp>(
bufferization::createFinalizingBufferizePass());
pm.addNestedPass<func::FuncOp>(createCanonicalizerPass());
pm.addNestedPass<func::FuncOp>(bufferization::createOwnershipBasedBufferDeallocationPass());
pm.addNestedPass<func::FuncOp>(createCanonicalizerPass());
pm.addNestedPass<func::FuncOp>(bufferization::createBufferDeallocationSimplificationPass());
pm.addNestedPass<func::FuncOp>(bufferization::createLowerDeallocationsPass());
pm.addPass(createCSEPass());
pm.addPass(createCanonicalizerPass());
pm.addPass(createBufferizationToMemRefPass());

// Blanket-convert any remaining linalg ops to loops if any remain.
pm.addNestedPass<func::FuncOp>(createConvertLinalgToLoopsPass());
Expand Down

0 comments on commit a9ae356

Please sign in to comment.