[Mlir-commits] [mlir] Make isValidLoopInterchangePermutation efficient (PR #128863)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Wed Feb 26 03:20:16 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-mlir-affine
Author: Arnab Dutta (arnab-polymage)
<details>
<summary>Changes</summary>
Avoid doing dependency checks for the trivial case when size of `loops` is 1.
---
Full diff: https://github.com/llvm/llvm-project/pull/128863.diff
1 Files Affected:
- (modified) mlir/lib/Dialect/Affine/Utils/LoopUtils.cpp (+4-2)
``````````diff
diff --git a/mlir/lib/Dialect/Affine/Utils/LoopUtils.cpp b/mlir/lib/Dialect/Affine/Utils/LoopUtils.cpp
index 82b96e9876a6f..6833d6583c27a 100644
--- a/mlir/lib/Dialect/Affine/Utils/LoopUtils.cpp
+++ b/mlir/lib/Dialect/Affine/Utils/LoopUtils.cpp
@@ -1351,10 +1351,12 @@ static bool checkLoopInterchangeDependences(
/// nested sequence of loops in 'loops' would violate dependences.
bool mlir::affine::isValidLoopInterchangePermutation(
ArrayRef<AffineForOp> loops, ArrayRef<unsigned> loopPermMap) {
+ assert(loopPermMap.size() == loops.size() && "invalid loop perm map");
+ unsigned maxLoopDepth = loops.size();
+ if (maxLoopDepth == 1)
+ return true;
// Gather dependence components for dependences between all ops in loop nest
// rooted at 'loops[0]', at loop depths in range [1, maxLoopDepth].
- assert(loopPermMap.size() == loops.size());
- unsigned maxLoopDepth = loops.size();
std::vector<SmallVector<DependenceComponent, 2>> depCompsVec;
getDependenceComponents(loops[0], maxLoopDepth, &depCompsVec);
return checkLoopInterchangeDependences(depCompsVec, loops, loopPermMap);
``````````
</details>
https://github.com/llvm/llvm-project/pull/128863
More information about the Mlir-commits
mailing list