[Mlir-commits] [mlir] [mlir][vector] Use `ShapeCastOp` in `castAwayContractionLeadingOneDim` (PR #226524)

Federico Bruzzone llvmlistbot at llvm.org
Sun Sep 27 00:41:22 PDT 2026


================
@@ -458,23 +503,25 @@ mlir::vector::castAwayContractionLeadingOneDim(vector::ContractionOp contractOp,
       rewriter.getArrayAttr(newIteratorTypes), contractOp.getKind());
 
   if (maskingOp) {
-    auto newMask = vector::ExtractOp::create(rewriter, loc, maskingOp.getMask(),
-                                             splatZero(dropDim));
+    auto newMask = rewriter.createOrFold<ShapeCastOp>(
+        loc,
+        trimLeadingUnitDims(cast<VectorType>(maskingOp.getMask().getType()),
+                            /*trimOnlyOneDim=*/true, /*allowRank0=*/true),
+        maskingOp.getMask());
 
     newOp = mlir::vector::maskOperation(rewriter, newOp, newMask);
   }
 
-  return vector::BroadcastOp::create(rewriter, loc,
-                                     contractOp->getResultTypes()[0],
-                                     newOp->getResults()[0])
-      .getResult();
+  return restoerLeadingUnitDimViaShapeCastOrBcast(
+      rewriter, loc, newOp->getResult(0), contractOp->getResultTypes()[0]);
 }
 
 namespace {
 
 /// Turns vector.contract on vector with leading 1 dimensions into
-/// vector.extract followed by vector.contract on vector without leading
-/// 1 dimensions. Also performs transpose of lhs and rhs operands if required
+/// vector.shape_cast followed by vector.contract on vector without leading
+/// 1 dimensions.
+/// TODO (check): Also performs transpose of lhs and rhs operands if required
----------------
FedericoBruzzone wrote:

[nit] It's not clear whether this is a note
1. for yourself, 
2. for the reviewers before the merge, or
3. for the future

The `(check)` is ambiguous from my POV.

https://github.com/llvm/llvm-project/pull/226524


More information about the Mlir-commits mailing list