[Mlir-commits] [mlir] c1b7037 - [MLIR][Affine] Add affine value map difference operator (#127163)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Thu Feb 13 21:55:10 PST 2025
Author: Uday Bondhugula
Date: 2025-02-14T11:25:07+05:30
New Revision: c1b7037520100dd035a87d40252772b85a5b95bb
URL: https://github.com/llvm/llvm-project/commit/c1b7037520100dd035a87d40252772b85a5b95bb
DIFF: https://github.com/llvm/llvm-project/commit/c1b7037520100dd035a87d40252772b85a5b95bb.diff
LOG: [MLIR][Affine] Add affine value map difference operator (#127163)
Add affine value map difference operator. NFC otherwise.
Added:
Modified:
mlir/include/mlir/Dialect/Affine/IR/AffineValueMap.h
mlir/lib/Dialect/Affine/Analysis/Utils.cpp
mlir/lib/Dialect/Affine/IR/AffineValueMap.cpp
Removed:
################################################################################
diff --git a/mlir/include/mlir/Dialect/Affine/IR/AffineValueMap.h b/mlir/include/mlir/Dialect/Affine/IR/AffineValueMap.h
index 7ad0e4a1e5ea0..ac480d6997ef4 100644
--- a/mlir/include/mlir/Dialect/Affine/IR/AffineValueMap.h
+++ b/mlir/include/mlir/Dialect/Affine/IR/AffineValueMap.h
@@ -84,6 +84,13 @@ class AffineValueMap {
/// and/or operands have been modified.
LogicalResult canonicalize();
+ /// Checks if the application of this map to its operands is semantically
+ /// equal to `other`'s.
+ bool operator==(const AffineValueMap &other) const;
+ bool operator!=(const AffineValueMap &other) const {
+ return !(*this == other);
+ }
+
private:
// A mutable affine map.
MutableAffineMap map;
diff --git a/mlir/lib/Dialect/Affine/Analysis/Utils.cpp b/mlir/lib/Dialect/Affine/Analysis/Utils.cpp
index b829633252fdd..93d8bffdcd8a4 100644
--- a/mlir/lib/Dialect/Affine/Analysis/Utils.cpp
+++ b/mlir/lib/Dialect/Affine/Analysis/Utils.cpp
@@ -2001,9 +2001,7 @@ bool MemRefAccess::operator==(const MemRefAccess &rhs) const {
AffineValueMap
diff , thisMap, rhsMap;
getAccessMap(&thisMap);
rhs.getAccessMap(&rhsMap);
- AffineValueMap::
diff erence(thisMap, rhsMap, &
diff );
- return llvm::all_of(
diff .getAffineMap().getResults(),
- [](AffineExpr e) { return e == 0; });
+ return thisMap == rhsMap;
}
void mlir::affine::getAffineIVs(Operation &op, SmallVectorImpl<Value> &ivs) {
diff --git a/mlir/lib/Dialect/Affine/IR/AffineValueMap.cpp b/mlir/lib/Dialect/Affine/IR/AffineValueMap.cpp
index 6a52849186872..6d2d3212c696b 100644
--- a/mlir/lib/Dialect/Affine/IR/AffineValueMap.cpp
+++ b/mlir/lib/Dialect/Affine/IR/AffineValueMap.cpp
@@ -109,4 +109,12 @@ ArrayRef<Value> AffineValueMap::getOperands() const {
AffineMap AffineValueMap::getAffineMap() const { return map.getAffineMap(); }
+bool AffineValueMap::operator==(const AffineValueMap &other) const {
+ AffineValueMap
diff ;
+ AffineValueMap::
diff erence(*this, other, &
diff );
+ return llvm::all_of(
diff .getAffineMap().getResults(), [](AffineExpr e) {
+ return e == getAffineConstantExpr(0, e.getContext());
+ });
+}
+
AffineValueMap::~AffineValueMap() = default;
More information about the Mlir-commits
mailing list