[Mlir-commits] [mlir] [mlir][Interfaces] `LoopLikeOpInterface`: Add helper to get yielded values (PR #67305)

Felix Schneider llvmlistbot at llvm.org
Fri Oct 6 02:43:59 PDT 2023


================
@@ -20,6 +20,19 @@ def LoopLikeOpInterface : OpInterface<"LoopLikeOpInterface"> {
     Contains helper functions to query properties and perform transformations
     of a loop. Operations that implement this interface will be considered by
     loop-invariant code motion.
+
+    Loop-carried variables can be exposed through this interface. There are
+    3 components to a loop-carried variable.
+    - The "region iter_arg" is the block argument of the entry block that
+      represents the loop-carried variable in each iteration.
+    - The "init value" is an operand of the loop op that serves as the initial
+      region iter_arg value for the first iteration (if any).
+    - The "yielded" value is the value that is forwarded from one iteration to
+      serve as the region iter_arg of the next iteration.
+
+    If one of the respective interface methods is implemented, so must the other
+    two. The interface verifier ensures that the number of types of the region
----------------
ubfx wrote:

I see, but does it make sense to ban Ops like `ForallOp` from implementing `getInits()`? When looking at the `LoopLikeOp` from the outside, it takes an init operand, then works on it (either by passing it along the iterations or in parallel) and then produces a result.

https://github.com/llvm/llvm-project/pull/67305


More information about the Mlir-commits mailing list