llvm/mlir/docs
Stephen Neuendorffer 628288658c [MLIR] Add RegionKindInterface
Some dialects have semantics which is not well represented by common
SSA structures with dominance constraints.  This patch allows
operations to declare the 'kind' of their contained regions.
Currently, two kinds are allowed: "SSACFG" and "Graph".  The only
difference between them at the moment is that SSACFG regions are
required to have dominance, while Graph regions are not required to
have dominance.  The intention is that this Interface would be
generated by ODS for existing operations, although this has not yet
been implemented. Presumably, if someone were interested in code
generation, we might also have a "CFG" dialect, which defines control
flow, but does not require SSA.

The new behavior is mostly identical to the previous behavior, since
registered operations without a RegionKindInterface are assumed to
contain SSACFG regions.  However, the behavior has changed for
unregistered operations.  Previously, these were checked for
dominance, however the new behavior allows dominance violations, in
order to allow the processing of unregistered dialects with Graph
regions.  One implication of this is that regions in unregistered
operations with more than one op are no longer CSE'd (since it
requires dominance info).

I've also reorganized the LangRef documentation to remove assertions
about "sequential execution", "SSA Values", and "Dominance".  Instead,
the core IR is simply "ordered" (i.e. totally ordered) and consists of
"Values".  I've also clarified some things about how control flow
passes between blocks in an SSACFG region. Control Flow must enter a
region at the entry block and follow terminator operation successors
or be returned to the containing op.  Graph regions do not define a
notion of control flow.

see discussion here:
https://llvm.discourse.group/t/rfc-allowing-dialects-to-relax-the-ssa-dominance-condition/833/53

Differential Revision: https://reviews.llvm.org/D80358
2020-07-15 14:27:05 -07:00
..
Bindings Add Python bindings guide. 2020-07-09 20:49:39 -07:00
Dialects [mlir] LLVM dialect: use addressof instead of constant to create function pointers 2020-06-29 12:21:33 +02:00
includes/img
Rationale [mlir][NFC] Remove usernames and google bug numbers from TODO comments. 2020-07-07 01:40:52 -07:00
Tutorials [mlir] Remove the default template parameters from AttrBase and TypeBase. 2020-06-30 21:55:32 -07:00
Canonicalization.md
CMakeLists.txt
ConversionToLLVMDialect.md [mlir] minor tweaks in standard-to-llvm lowering 2020-06-30 21:19:19 +02:00
DeclarativeRewrites.md
Diagnostics.md
DialectConversion.md [mlir][DialectConversion] Refactor how block argument types get converted 2020-06-18 15:59:22 -07:00
doxygen-mainpage.dox
doxygen.cfg.in
EDSC.md
GenericDAGRewriter.md
Interfaces.md [MLIR] Add RegionKindInterface 2020-07-15 14:27:05 -07:00
LangRef.md [MLIR] Add RegionKindInterface 2020-07-15 14:27:05 -07:00
OpDefinitions.md [mlir] Add support for parsing optional Attribute values. 2020-07-14 13:14:59 -07:00
Passes.md Revert "Revert "[MLIR] Lower shape.num_elements -> shape.reduce."" 2020-06-08 12:19:54 +02:00
PassManagement.md
Quantization.md [mlir][NFC] Remove usernames and google bug numbers from TODO comments. 2020-07-07 01:40:52 -07:00
README.txt
ShapeInference.md
SymbolsAndSymbolTables.md
Traits.md [mlir] Refactor InterfaceGen to support generating interfaces for Attributes and Types. 2020-06-30 15:52:33 -07:00

MLIR documentation
==================

Please note mlir.llvm.org is where MLIR's rendered documentation is displayed.
The viewing experience on GitHub or elsewhere may not match those of the
website. For any changes please verify instead that they work on the main
website first.

See https://github.com/llvm/mlir-www for the website generation information.