llvm-project/mlir/lib
Uday Bondhugula 18c8c934d8 [MLIR] Introduce scf.execute_region op
Introduce the execute_region op that is able to hold a region which it
executes exactly once. The op encapsulates a CFG within itself while
isolating it from the surrounding control flow. Proposal discussed here:
https://llvm.discourse.group/t/introduce-std-inlined-call-op-proposal/282

execute_region enables one to inline a function without lowering out all
other higher level control flow constructs (affine.for/if, scf.for/if)
to the flat list of blocks / CFG form. It thus allows the benefit of
transforms on higher level control flow ops available in the presence of
the inlined calls. The inlined calls continue to benefit from
propagation of SSA values across their top boundary. Functions won’t
have to remain outlined until later than desired.  Abstractions like
affine execute_regions, lambdas with implicit captures could be lowered
to this without first lowering out structured loops/ifs or outlining.
But two potential early use cases are of: (1) an early inliner (which
can inline functions by introducing execute_region ops), (2) lowering of
an affine.execute_region, which cleanly maps to an scf.execute_region
when going from the affine dialect to the scf dialect.

Differential Revision: https://reviews.llvm.org/D75837
2021-06-18 15:22:33 +05:30
..
Analysis [mlir] fix shared-libs build 2021-06-08 11:30:31 +02:00
Bindings [MLIR] Execution engine python binding support for shared libraries 2021-06-12 05:46:38 +05:30
CAPI [MLIR] Execution engine python binding support for shared libraries 2021-06-12 05:46:38 +05:30
Conversion [mlir][linalg] Purge linalg.indexed_generic. 2021-06-17 14:45:37 +02:00
Dialect [MLIR] Introduce scf.execute_region op 2021-06-18 15:22:33 +05:30
ExecutionEngine [mlir][sparse] add more type combinations to sparse storage scheme 2021-06-03 08:34:10 -07:00
IR [mlir] Enable delayed registration of attribute/operation/type interfaces 2021-06-17 13:19:24 +02:00
Interfaces [mlir] fix a crash if the dialect is missing a data layout interface 2021-06-09 17:46:27 +02:00
Parser [mlir-lsp-server] Add support for textDocument/documentSymbols 2021-06-10 10:58:39 -07:00
Pass Improve error reporting on pass registration collision (NFC) 2021-06-17 02:42:43 +00:00
Reducer [mlir-reduce] Create MlirReduceLib 2021-06-03 15:58:26 +08:00
Rewrite [mlir] Add support for filtering patterns based on debug names and labels 2021-06-02 12:05:25 -07:00
Support [mlir] Split things dependent on LLVM_DEBUG into a .cpp file 2021-06-17 15:06:40 +02:00
TableGen [mlir] Support dialect-wide canonicalization pattern registration 2021-05-27 17:35:21 +09:00
Target [mlir][spirv] Use SingleBlock + NoTerminator for spv.module 2021-06-09 14:00:06 -04:00
Tools [mlir-lsp-server] Add support for textDocument/documentSymbols 2021-06-10 10:58:39 -07:00
Transforms Add hook for dialect specializing processing blocks post inlining calls 2021-06-16 12:53:21 -07:00
Translation [mlir] avoid exposing mutable DialectRegistry from MLIRContext 2021-02-10 12:07:34 +01:00
CMakeLists.txt [mlir][Standard] NFC - Drop remaining EDSC usage 2021-05-21 10:40:39 +00:00