From: William S. Moses Date: Thu, 17 Mar 2022 03:29:42 +0000 (-0400) Subject: [MLIR][Affine] Expose region-based isTopLevelValue X-Git-Tag: upstream/15.0.7~13350 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=86706561705db270357ab6a4dfd7d8206faa4ae0;p=platform%2Fupstream%2Fllvm.git [MLIR][Affine] Expose region-based isTopLevelValue This PR exposes the region-based isTopLevelValue, which is useful for other code that performs Affine transformations, but is not within AffineOps.cpp Reviewed By: bondhugula Differential Revision: https://reviews.llvm.org/D121877 --- diff --git a/mlir/include/mlir/Dialect/Affine/IR/AffineOps.h b/mlir/include/mlir/Dialect/Affine/IR/AffineOps.h index 27f6857..05e31c9 100644 --- a/mlir/include/mlir/Dialect/Affine/IR/AffineOps.h +++ b/mlir/include/mlir/Dialect/Affine/IR/AffineOps.h @@ -32,6 +32,12 @@ class AffineValueMap; /// uses. bool isTopLevelValue(Value value); +/// A utility function to check if a value is defined at the top level of +/// `region` or is an argument of `region`. A value of index type defined at the +/// top level of a `AffineScope` region is always a valid symbol for all +/// uses in that region. +bool isTopLevelValue(Value value, Region *region); + /// Returns the closest region enclosing `op` that is held by an operation with /// trait `AffineScope`; `nullptr` if there is no such region. Region *getAffineScope(Operation *op); diff --git a/mlir/lib/Dialect/Affine/IR/AffineOps.cpp b/mlir/lib/Dialect/Affine/IR/AffineOps.cpp index 6dbfebf..6a2e243 100644 --- a/mlir/lib/Dialect/Affine/IR/AffineOps.cpp +++ b/mlir/lib/Dialect/Affine/IR/AffineOps.cpp @@ -33,7 +33,7 @@ using namespace mlir; /// `region` or is an argument of `region`. A value of index type defined at the /// top level of a `AffineScope` region is always a valid symbol for all /// uses in that region. -static bool isTopLevelValue(Value value, Region *region) { +bool mlir::isTopLevelValue(Value value, Region *region) { if (auto arg = value.dyn_cast()) return arg.getParentRegion() == region; return value.getDefiningOp()->getParentRegion() == region;