@@ -61,17 +61,22 @@ Example:
61
61
62
62
The affine dialect imposes certain restrictions on dimension and symbolic
63
63
identifiers to enable powerful analysis and transformation. An SSA value's use
64
- can be bound to a symbolic identifier if that SSA value is either 1. a region
65
- argument for an op with trait ` AffineScope ` (eg. ` FuncOp ` ), 2. a value defined
66
- at the top level of an ` AffineScope ` op (i.e., immediately enclosed by the
67
- latter), 3. a value that dominates the ` AffineScope ` op enclosing the value's
68
- use, 4. the result of a
69
- constant operation, 5. the result of an
64
+ can be bound to a symbolic identifier if that SSA value is either:
65
+
66
+ 1 . a region argument for an op with trait ` AffineScope ` (eg. ` FuncOp ` ),
67
+ 2 . a value defined at the top level of an ` AffineScope ` op (i.e.,
68
+ immediately enclosed by the latter),
69
+ 3 . a value that dominates the ` AffineScope ` op enclosing the value's
70
+ use,
71
+ 4 . the result of a constant operation,
72
+ 5 . the result of an
70
73
[ ` affine.apply ` operation] ( #affineapply-mliraffineapplyop ) that recursively takes as
71
- arguments any valid symbolic identifiers, or 6. the result of a
74
+ arguments any valid symbolic identifiers, or
75
+ 6 . the result of a
72
76
[ ` dim ` operation] ( MemRef.md/#memrefdim-mlirmemrefdimop ) on either a memref that
73
77
is an argument to a ` AffineScope ` op or a memref where the corresponding
74
78
dimension is either static or a dynamic one in turn bound to a valid symbol.
79
+
75
80
* Note:* if the use of an SSA value is not contained in any op with the
76
81
` AffineScope ` trait, only the rules 4-6 can be applied.
77
82
0 commit comments