[Mlir-commits] [mlir] [mlir][tosa] Add error if and level checks for COND_IF & WHILE_LOOP (PR #136194)
TatWai Chong
llvmlistbot at llvm.org
Sun Apr 27 14:13:15 PDT 2025
================
@@ -449,6 +449,42 @@ struct TosaValidation : public tosa::impl::TosaValidationBase<TosaValidation> {
return true;
}
+ // Preform depth-first search in Tosa IR structure to find the maximum nesting
+ // depth. Tosa nesting_depth starts at 0 and increase by one each time a new
+ // nested `region` is encountered.
+
+ static int32_t getMaxNestedDepth(Operation *op) {
+ int32_t depth = 0;
+ for (Region ®ion : op->getRegions())
+ depth = std::max(depth, getMaxNestedDepth(region));
+ return depth;
+ }
+
+ static int32_t getMaxNestedDepth(Block &block) {
+ int32_t depth = 0;
+ for (Operation &op : block.getOperations())
+ depth = std::max(depth, getMaxNestedDepth(&op));
+ return depth;
+ }
+
+ static int32_t getMaxNestedDepth(Region ®ion) {
+ int32_t depth = 0;
+ for (Block &block : region.getBlocks())
+ depth = std::max(depth, getMaxNestedDepth(block));
+ // Increase the nested depth.
+ return depth + 1;
+ }
+
+ bool levelCheckMaxNesting(Operation *op) {
----------------
tatwaichong wrote:
Turn out following your suggestion to implement this manner is easy.
https://github.com/llvm/llvm-project/pull/136194
More information about the Mlir-commits
mailing list