diff options
Diffstat (limited to 'mlir/lib/Interfaces')
| -rw-r--r-- | mlir/lib/Interfaces/AlignmentAttrInterface.cpp | 13 | ||||
| -rw-r--r-- | mlir/lib/Interfaces/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | mlir/lib/Interfaces/InferTypeOpInterface.cpp | 16 | ||||
| -rw-r--r-- | mlir/lib/Interfaces/ValueBoundsOpInterface.cpp | 2 |
4 files changed, 32 insertions, 1 deletions
diff --git a/mlir/lib/Interfaces/AlignmentAttrInterface.cpp b/mlir/lib/Interfaces/AlignmentAttrInterface.cpp new file mode 100644 index 0000000..fe985ad --- /dev/null +++ b/mlir/lib/Interfaces/AlignmentAttrInterface.cpp @@ -0,0 +1,13 @@ +//===- AlignmentAttrInterface.cpp -----------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "mlir/Interfaces/AlignmentAttrInterface.h" + +using namespace mlir; + +#include "mlir/Interfaces/AlignmentAttrInterface.cpp.inc" diff --git a/mlir/lib/Interfaces/CMakeLists.txt b/mlir/lib/Interfaces/CMakeLists.txt index f96af02..ad3e2b6 100644 --- a/mlir/lib/Interfaces/CMakeLists.txt +++ b/mlir/lib/Interfaces/CMakeLists.txt @@ -1,4 +1,5 @@ set(LLVM_OPTIONAL_SOURCES + AlignmentAttrInterface.cpp CallInterfaces.cpp CastInterfaces.cpp ControlFlowInterfaces.cpp @@ -41,6 +42,7 @@ function(add_mlir_interface_library name) endfunction(add_mlir_interface_library) +add_mlir_interface_library(AlignmentAttrInterface) add_mlir_interface_library(CallInterfaces) add_mlir_interface_library(CastInterfaces) add_mlir_interface_library(ControlFlowInterfaces) diff --git a/mlir/lib/Interfaces/InferTypeOpInterface.cpp b/mlir/lib/Interfaces/InferTypeOpInterface.cpp index 9f4f672..c31e0ae7 100644 --- a/mlir/lib/Interfaces/InferTypeOpInterface.cpp +++ b/mlir/lib/Interfaces/InferTypeOpInterface.cpp @@ -58,6 +58,22 @@ mlir::reifyResultShapes(OpBuilder &b, Operation *op, return status; } +FailureOr<SmallVector<OpFoldResult>> +mlir::reifyShapeOfResult(OpBuilder &b, Operation *op, int resultIndex) { + auto reifiableOp = dyn_cast<ReifyRankedShapedTypeOpInterface>(op); + if (!reifiableOp) + return failure(); + return reifiableOp.reifyShapeOfResult(b, resultIndex); +} + +FailureOr<OpFoldResult> mlir::reifyDimOfResult(OpBuilder &b, Operation *op, + int resultIndex, int dim) { + auto reifiableOp = dyn_cast<ReifyRankedShapedTypeOpInterface>(op); + if (!reifiableOp) + return failure(); + return reifiableOp.reifyDimOfResult(b, resultIndex, dim); +} + bool ShapeAdaptor::hasRank() const { if (val.isNull()) return false; diff --git a/mlir/lib/Interfaces/ValueBoundsOpInterface.cpp b/mlir/lib/Interfaces/ValueBoundsOpInterface.cpp index a5bfde1..cfe808b 100644 --- a/mlir/lib/Interfaces/ValueBoundsOpInterface.cpp +++ b/mlir/lib/Interfaces/ValueBoundsOpInterface.cpp @@ -129,7 +129,7 @@ ValueBoundsConstraintSet::Variable::Variable(AffineMap map, assert(var.map.getNumDims() == 0 && "expected only symbols"); SmallVector<AffineExpr> symReplacements; for (auto valueDim : var.mapOperands) { - auto it = llvm::find(this->mapOperands, valueDim); + auto *it = llvm::find(this->mapOperands, valueDim); if (it != this->mapOperands.end()) { // There is already a symbol for this operand. symReplacements.push_back(b.getAffineSymbolExpr( |
