llvm-project/mlir/test/IR
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
..
affine-map.mlir Add a flag on the context to protect against creation of operations in unregistered dialects 2020-03-30 19:37:31 +00:00
attribute.mlir Make ops with StructAttr's actually verify `isa<TheStruct>`. 2020-04-28 14:00:18 -07:00
check-help-output.mlir Add custom lilith script. 2019-03-29 13:02:57 -07:00
core-ops.mlir Enable FileCheck -enable-var-scope by default in MLIR test 2020-06-12 00:43:09 +00:00
dense-elements-hex.mlir [mlir] Fix representation of BF16 constants 2020-06-05 17:43:06 -07:00
diagnostic-handler.mlir [mlir][Diagnostics] Don't print note source line if it is the same as the previous diagnostic 2020-03-29 21:43:44 -07:00
invalid-affinemap.mlir [mlir][NFC] Remove usernames and google bug numbers from TODO comments. 2020-07-07 01:40:52 -07:00
invalid-func-op.mlir Rename the current parseSymbolName to parseOptionalSymbolName 2019-11-13 09:32:20 -08:00
invalid-locations.mlir Rename -verify mlir-opt flag to -verify-expected-diagnostics 2019-06-19 23:08:03 -07:00
invalid-module-op.mlir [MLIR] Add a NoRegionArguments trait 2020-07-06 09:05:38 -07:00
invalid-ops.mlir [mlir] Mark CastOp class's shape constraint 2020-06-12 06:50:07 -07:00
invalid.mlir [MLIR] Add RegionKindInterface 2020-07-15 14:27:05 -07:00
locations.mlir Add a flag on the context to protect against creation of operations in unregistered dialects 2020-03-30 19:37:31 +00:00
memory-ops.mlir [MLIR] Add missing colon after CHECKs. 2020-04-08 11:16:06 +02:00
module-op.mlir Add a flag on the context to protect against creation of operations in unregistered dialects 2020-03-30 19:37:31 +00:00
op-stats.mlir Add a flag on the context to protect against creation of operations in unregistered dialects 2020-03-30 19:37:31 +00:00
opaque_locations.mlir Add a flag on the context to protect against creation of operations in unregistered dialects 2020-03-30 19:37:31 +00:00
operand.mlir Split test-specific passes out of mlir-opt 2019-06-24 17:47:12 -07:00
parser.mlir [MLIR] Add RegionKindInterface 2020-07-15 14:27:05 -07:00
pretty-attributes.mlir Print out large elementsattr's such that they are parseable. 2019-12-04 10:19:54 -08:00
pretty-locations.mlir Add a flag on the context to protect against creation of operations in unregistered dialects 2020-03-30 19:37:31 +00:00
pretty-region-args.mlir Add a flag on the context to protect against creation of operations in unregistered dialects 2020-03-30 19:37:31 +00:00
print-op-local-scope.mlir Change filecheck default to dump input on failure 2020-06-09 18:57:46 +00:00
print-op-on-diagnostic.mlir [mlir][IR] Manually register command line options for MLIRContext and AsmPrinter 2020-04-11 23:13:00 -07:00
region.mlir [mlir][ODS] Add support for variadic regions. 2020-04-05 01:03:38 -07:00
repro_b120295301.mlir Change the attribute dictionary syntax to separate name and value with '='. 2019-06-25 19:06:34 -07:00
result.mlir Split test-specific passes out of mlir-opt 2019-06-24 17:47:12 -07:00
test-func-erase-arg.mlir Add FuncOp::eraseArgument 2019-11-13 10:59:55 -08:00
test-func-set-type.mlir Enable FileCheck -enable-var-scope by default in MLIR test 2020-06-12 00:43:09 +00:00
test-matchers.mlir [mlir] Add a new context flag for disabling/enabling multi-threading 2020-05-02 12:32:25 -07:00
test-side-effects.mlir [mlir][SideEffects] Define a set of interfaces and traits for defining side effects 2020-03-06 14:04:36 -08:00
test-symbol-rauw.mlir Add a flag on the context to protect against creation of operations in unregistered dialects 2020-03-30 19:37:31 +00:00
test-symbol-uses.mlir Add a flag on the context to protect against creation of operations in unregistered dialects 2020-03-30 19:37:31 +00:00
traits.mlir [MLIR] Add RegionKindInterface 2020-07-15 14:27:05 -07:00
wrapping_op.mlir Add a flag on the context to protect against creation of operations in unregistered dialects 2020-03-30 19:37:31 +00:00
zero_whitespace.mlir Isolate zero_whitespace parser test into its own file. 2020-04-22 19:58:40 -07:00