[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