[Mlir-commits] [mlir] [mlir][vector][NFC] `isDisjointTransferIndices`: Use `getConstantIntValue` (PR #65931)
Matthias Springer
llvmlistbot at llvm.org
Mon Sep 11 01:13:05 PDT 2023
https://github.com/matthias-springer created https://github.com/llvm/llvm-project/pull/65931:
Use `getConstantIntValue` instead of matching for `arith::ConstantOp`.
>From 15033f1e06082cb06fbe6857ab0957e073ee6cfe Mon Sep 17 00:00:00 2001
From: Matthias Springer <me at m-sp.org>
Date: Mon, 11 Sep 2023 10:11:33 +0200
Subject: [PATCH] [mlir][vector][NFC] `isDisjointTransferIndices`: Use
`getConstantIntValue`
Use `getConstantIntValue` instead of matching for `arith::ConstantOp`.
---
mlir/lib/Dialect/Vector/IR/VectorOps.cpp | 13 +++++--------
1 file changed, 5 insertions(+), 8 deletions(-)
diff --git a/mlir/lib/Dialect/Vector/IR/VectorOps.cpp b/mlir/lib/Dialect/Vector/IR/VectorOps.cpp
index 2aaf1cb7e5878e4..de78df611778b00 100644
--- a/mlir/lib/Dialect/Vector/IR/VectorOps.cpp
+++ b/mlir/lib/Dialect/Vector/IR/VectorOps.cpp
@@ -172,24 +172,21 @@ bool mlir::vector::isDisjointTransferIndices(
return false;
unsigned rankOffset = transferA.getLeadingShapedRank();
for (unsigned i = 0, e = transferA.indices().size(); i < e; i++) {
- auto indexA = transferA.indices()[i].getDefiningOp<arith::ConstantOp>();
- auto indexB = transferB.indices()[i].getDefiningOp<arith::ConstantOp>();
+ auto indexA = getConstantIntValue(transferA.indices()[i]);
+ auto indexB = getConstantIntValue(transferB.indices()[i]);
// If any of the indices are dynamic we cannot prove anything.
- if (!indexA || !indexB)
+ if (!indexA.has_value() || !indexB.has_value())
continue;
if (i < rankOffset) {
// For leading dimensions, if we can prove that index are different we
// know we are accessing disjoint slices.
- if (llvm::cast<IntegerAttr>(indexA.getValue()).getInt() !=
- llvm::cast<IntegerAttr>(indexB.getValue()).getInt())
+ if (*indexA != *indexB)
return true;
} else {
// For this dimension, we slice a part of the memref we need to make sure
// the intervals accessed don't overlap.
- int64_t distance =
- std::abs(llvm::cast<IntegerAttr>(indexA.getValue()).getInt() -
- llvm::cast<IntegerAttr>(indexB.getValue()).getInt());
+ int64_t distance = std::abs(*indexA - *indexB);
if (distance >= transferA.getVectorType().getDimSize(i - rankOffset))
return true;
}
More information about the Mlir-commits
mailing list