Add AffineMap::isIdentity helper function.
PiperOrigin-RevId: 208694482
diff --git a/lib/IR/AffineMap.cpp b/lib/IR/AffineMap.cpp
index 4bd224d..8dc0d1f 100644
--- a/lib/IR/AffineMap.cpp
+++ b/lib/IR/AffineMap.cpp
@@ -27,6 +27,19 @@
: numDims(numDims), numSymbols(numSymbols), numResults(numResults),
results(results), rangeSizes(rangeSizes) {}
+bool AffineMap::isIdentity() const {
+ if (getNumDims() != getNumResults())
+ return false;
+ ArrayRef<AffineExpr *> results = getResults();
+ for (unsigned i = 0; i < getNumDims(); ++i) {
+ auto *expr = results[i];
+ if (!isa<AffineDimExpr>(expr) ||
+ cast<AffineDimExpr>(expr)->getPosition() != i)
+ return false;
+ }
+ return true;
+}
+
/// Simplify add expression. Return nullptr if it can't be simplified.
AffineExpr *AffineBinaryOpExpr::simplifyAdd(AffineExpr *lhs, AffineExpr *rhs,
MLIRContext *context) {