[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