llvm-capstone/mlir/lib/Transforms
Alexandre E. Eichenberger a14a2805b0 [MLIR] MemRef Normalization for Dialects
When dealing with dialects that will results in function calls to
external libraries, it is important to be able to handle maps as some
dialects may require mapped data.  Before this patch, the detection of
whether normalization can apply or not, operations are compared to an
explicit list of operations (`alloc`, `dealloc`, `return`) or to the
presence of specific operation interfaces (`AffineReadOpInterface`,
`AffineWriteOpInterface`, `AffineDMAStartOp`, or `AffineDMAWaitOp`).

This patch add a trait, `MemRefsNormalizable` to determine if an
operation can have its `memrefs` normalized.

This trait can be used in turn by dialects to assert that such
operations are compatible with normalization of `memrefs` with
nontrivial memory layout specification. An example is given in the
literal tests.

Differential Revision: https://reviews.llvm.org/D86236
2020-08-27 20:26:59 +05:30
..
Utils [MLIR] MemRef Normalization for Dialects 2020-08-27 20:26:59 +05:30
BufferPlacement.cpp Remove spurious empty line at the beginning of source file (NFC) 2020-08-14 08:02:59 +00:00
Canonicalizer.cpp [MLIR][NFC] applyPatternsGreedily -> applyPatternsAndFoldGreedily 2020-04-10 12:55:21 +05:30
CMakeLists.txt [MLIR] Introduce inter-procedural memref layout normalization 2020-07-30 18:12:56 +05:30
CopyRemoval.cpp [mlir][NFC] Polish copy removal transform 2020-07-28 08:34:44 +02:00
CSE.cpp [MLIR] Add RegionKindInterface 2020-07-15 14:27:05 -07:00
DialectConversion.cpp [mlir][DialectConversion] Remove usage of std::distance to track position. 2020-08-03 10:06:05 -07:00
Inliner.cpp [mlir][NFC] Remove usernames and google bug numbers from TODO comments. 2020-07-07 01:40:52 -07:00
LocationSnapshot.cpp [mlir][Pass] Update the PassGen to generate base classes instead of utilities 2020-04-07 14:08:52 -07:00
LoopCoalescing.cpp [mlir] NFC: Rename LoopOps dialect to SCF (Structured Control Flow) 2020-05-11 15:04:27 +02:00
LoopFusion.cpp [MLIR][Affine] Fix createPrivateMemRef in affine fusion 2020-08-04 12:17:48 -07:00
LoopInvariantCodeMotion.cpp [NFC][MLIR] Undo anonymous namespace change from https://reviews.llvm.org/D82417 2020-06-23 20:21:42 -07:00
MemRefDataFlowOpt.cpp [MLIR] Vector store to load forwarding 2020-07-28 11:30:54 -07:00
NormalizeMemRefs.cpp [MLIR] MemRef Normalization for Dialects 2020-08-27 20:26:59 +05:30
OpStats.cpp [mlir][Pass] Update the PassGen to generate base classes instead of utilities 2020-04-07 14:08:52 -07:00
ParallelLoopCollapsing.cpp [mlir] NFC: Rename LoopOps dialect to SCF (Structured Control Flow) 2020-05-11 15:04:27 +02:00
PassDetail.h Separate the Registration from Loading dialects in the Context 2020-08-19 01:19:03 +00:00
PipelineDataTransfer.cpp [mlir][NFC] Remove usernames and google bug numbers from TODO comments. 2020-07-07 01:40:52 -07:00
SCCP.cpp [MLIR] Add argument related API to Region 2020-07-14 09:28:29 -07:00
StripDebugInfo.cpp [mlir][Pass] Update the PassGen to generate base classes instead of utilities 2020-04-07 14:08:52 -07:00
SymbolDCE.cpp [mlir][Symbol] Change Symbol from a Trait into an OpInterface. 2020-04-27 13:04:49 -07:00
ViewOpGraph.cpp [NFC] Use llvm::hasSingleElement() in place of .size() == 1 2020-06-17 13:26:10 -07:00
ViewRegionGraph.cpp [mlir][Pass] Update the PassGen to generate base classes instead of utilities 2020-04-07 14:08:52 -07:00