[Mlir-commits] [flang] [mlir] [mlir][TilingInterface] Use `LoopLikeOpInterface` in tiling using SCF to unify tiling with `scf.for` and `scf.forall`. (PR #77874)
Matthias Springer
llvmlistbot at llvm.org
Mon Jan 22 03:04:43 PST 2024
================
@@ -78,21 +79,22 @@ LogicalResult detail::verifyLoopLikeOpInterface(Operation *op) {
// Verify types of inits/iter_args/yielded values/loop results.
int64_t i = 0;
- for (const auto it :
- llvm::zip_equal(loopLikeOp.getInits(), loopLikeOp.getRegionIterArgs(),
- loopLikeOp.getYieldedValues())) {
- if (std::get<0>(it).getType() != std::get<1>(it).getType())
- return op->emitOpError(std::to_string(i))
- << "-th init and " << i
- << "-th region iter_arg have different type: "
- << std::get<0>(it).getType()
- << " != " << std::get<1>(it).getType();
- if (std::get<1>(it).getType() != std::get<2>(it).getType())
- return op->emitOpError(std::to_string(i))
- << "-th region iter_arg and " << i
- << "-th yielded value have different type: "
- << std::get<1>(it).getType()
- << " != " << std::get<2>(it).getType();
+ auto yieldedValues = loopLikeOp.getYieldedValues();
+ for (const auto [index, init, regionIterArg] :
+ llvm::enumerate(loopLikeOp.getInits(), loopLikeOp.getRegionIterArgs())) {
+ if (init.getType() != regionIterArg.getType())
+ return op->emitOpError(std::to_string(index))
+ << "-th init and " << index
+ << "-th region iter_arg have different type: " << init.getType()
+ << " != " << regionIterArg.getType();
+ if (!yieldedValues.empty()) {
----------------
matthias-springer wrote:
Same here: `!loopLikeOp.getYieldedValuesMutable().has_value()`.
https://github.com/llvm/llvm-project/pull/77874
More information about the Mlir-commits
mailing list