[Mlir-commits] [mlir] [mlir][vector] NFC - Add more structured interface support to vector.… (PR #145313)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Mon Jun 23 04:43:47 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-mlir-vector
Author: Nicolas Vasilache (nicolasvasilache)
<details>
<summary>Changes</summary>
…contract
---
Full diff: https://github.com/llvm/llvm-project/pull/145313.diff
1 Files Affected:
- (modified) mlir/include/mlir/Dialect/Vector/IR/VectorOps.td (+33)
``````````diff
diff --git a/mlir/include/mlir/Dialect/Vector/IR/VectorOps.td b/mlir/include/mlir/Dialect/Vector/IR/VectorOps.td
index 926a92eff2ebb..7ac661d8bbf69 100644
--- a/mlir/include/mlir/Dialect/Vector/IR/VectorOps.td
+++ b/mlir/include/mlir/Dialect/Vector/IR/VectorOps.td
@@ -207,6 +207,39 @@ def Vector_ContractionOp :
.template getAsValueRange<IteratorTypeAttr, IteratorType>();
return {range.begin(), range.end()};
}
+
+ //===------------------------------------------------------------------===//
+ // The code below is shared with LinalgStructuredInterface.
+ // vector.contract is really a linalg.generic on vectors without region.
+ // TODO: factor out in a common interface to inherit from ince identified.
+ //===------------------------------------------------------------------===//
+ ArrayRef<int64_t> getShape(OpOperand * opOperand) {
+ assert(opOperand->getOwner() == this->getOperation());
+ Type t = opOperand->get().getType();
+ return cast<VectorType>(t).getShape();
+ }
+
+ AffineMap getLoopsToShapesMap() {
+ auto maps = getIndexingMapsArray();
+ return concatAffineMaps(maps);
+ }
+
+ AffineMap getShapesToLoopsMap() {
+ return inversePermutation(getLoopsToShapesMap());
+ }
+
+ SmallVector<int64_t> getStaticShape(){
+ SmallVector<int64_t> res;
+ for (OpOperand &opOperand : this->getOperation()->getOpOperands())
+ llvm::append_range(res, getShape(&opOperand));
+ return res;
+ }
+
+ SmallVector<int64_t> getStaticLoopRanges() {
+ SmallVector<int64_t> viewSizes = getStaticShape();
+ AffineMap invertedMap = getShapesToLoopsMap();
+ return invertedMap.compose(viewSizes);
+ }
}];
let hasCanonicalizer = 1;
``````````
</details>
https://github.com/llvm/llvm-project/pull/145313
More information about the Mlir-commits
mailing list