llvm-project/mlir/lib/Transforms
Uday Bondhugula 8b3f841daf Generate dealloc's for the alloc's of dma-generate.
- for the DMA buffers being allocated (and their tags), generate corresponding deallocs
- minor related update to replaceAllMemRefUsesWith and PipelineDataTransfer pass

Code generation for DMA transfers was being done with the initial simplifying
assumption that the alloc's would map to scoped allocations, and so no
deallocations would be necessary. Drop this assumption to generalize. Note that
even with scoped allocations, unrolling loops that have scoped allocations
could create a series of allocations and exhaustion of fast memory. Having a
end of lifetime marker like a dealloc in fact allows creating new scopes if
necessary when lowering to a backend and still utilize scoped allocation.
DMA buffers created by -dma-generate are guaranteed to have either
non-overlapping lifetimes or nested lifetimes.

PiperOrigin-RevId: 233502632
2019-03-29 16:24:08 -07:00
..
Utils Generate dealloc's for the alloc's of dma-generate. 2019-03-29 16:24:08 -07:00
Vectorization NFC: Move AffineApplyOp to the AffineOps dialect. This also moves the isValidDim/isValidSymbol methods from Value to the AffineOps dialect. 2019-03-29 16:12:40 -07:00
CSE.cpp Remove InstWalker and move all instruction walking to the api facilities on Function/Block/Instruction. 2019-03-29 16:12:59 -07:00
Canonicalizer.cpp Split "rewrite" functionality out of Pattern into a new RewritePattern derived 2019-03-29 14:12:07 -07:00
ConstantFold.cpp Move the AffineFor loop bound folding to a canonicalization pattern on the AffineForOp. 2019-03-29 16:16:11 -07:00
DialectConversion.cpp Remove the restriction that only registered terminator operations may terminate a block and have block operands. This allows for any operation to hold block operands. It also introduces the notion that unregistered operations may terminate a block. As such, the 'isTerminator' api on Instruction has been split into 'isKnownTerminator' and 'isKnownNonTerminator'. 2019-03-29 16:22:23 -07:00
DmaGeneration.cpp Generate dealloc's for the alloc's of dma-generate. 2019-03-29 16:24:08 -07:00
LoopFusion.cpp Automated rollback of changelist 232717775. 2019-03-29 16:19:33 -07:00
LoopTiling.cpp Automated rollback of changelist 232717775. 2019-03-29 16:19:33 -07:00
LoopUnroll.cpp Automated rollback of changelist 232717775. 2019-03-29 16:19:33 -07:00
LoopUnrollAndJam.cpp Automated rollback of changelist 232717775. 2019-03-29 16:19:33 -07:00
LowerAffine.cpp Automated rollback of changelist 232728977. 2019-03-29 16:21:38 -07:00
LowerVectorTransfers.cpp Automated rollback of changelist 232717775. 2019-03-29 16:19:33 -07:00
MaterializeVectors.cpp Automated rollback of changelist 232717775. 2019-03-29 16:19:33 -07:00
MemRefDataFlowOpt.cpp Automated rollback of changelist 232728977. 2019-03-29 16:21:38 -07:00
PipelineDataTransfer.cpp Generate dealloc's for the alloc's of dma-generate. 2019-03-29 16:24:08 -07:00
SimplifyAffineStructures.cpp Refactor the affine analysis by moving some functionality to IR and some to AffineOps. This is important for allowing the affine dialect to define canonicalizations directly on the operations instead of relying on transformation passes, e.g. ComposeAffineMaps. A summary of the refactoring: 2019-03-29 16:15:41 -07:00
StripDebugInfo.cpp Replace the walkOps/visitOperationInst variants from the InstWalkers with the Instruction variants. 2019-03-29 16:10:24 -07:00
Vectorize.cpp Automated rollback of changelist 232717775. 2019-03-29 16:19:33 -07:00
ViewFunctionGraph.cpp Update and generalize various passes to work on both CFG and ML functions, 2019-03-29 14:49:52 -07:00