llvm-project/mlir/lib
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
..
AffineOps 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
Analysis Fix + cleanup for getMemRefRegion() 2019-03-29 16:23:53 -07:00
Dialect Add binary broadcastable builder. 2019-03-29 16:23:38 -07:00
EDSC Implemented __eq__ and __ne__ in EDSC Python bindings 2019-03-29 16:13:34 -07:00
ExecutionEngine Cleanups in ExecutionEngine. 2019-03-29 16:22:08 -07:00
IR 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
LLVMIR Convert MemRefCastOp to the LLVM IR dialect 2019-03-29 16:22:38 -07:00
Parser 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
StandardOps Modify the canonicalizations of select and muli to use the fold hook. 2019-03-29 16:20:06 -07:00
SuperVectorOps Remove remaining references to OperationInst in all directories except for lib/Transforms. 2019-03-29 16:10:38 -07:00
Support Extract openInputFile() into Support/FileUtilities 2019-03-29 15:09:11 -07:00
TableGen [TableGen] Assign created ops to variables and rewrite with PatternRewriter::replaceOp() 2019-03-29 16:22:53 -07:00
Target/LLVMIR Remove remaining references to OperationInst in all directories except for lib/Transforms. 2019-03-29 16:10:38 -07:00
Transforms Generate dealloc's for the alloc's of dma-generate. 2019-03-29 16:24:08 -07:00
Translation Separate translators into "from MLIR" and "to MLIR". 2019-03-29 14:06:33 -07:00