[Mlir-commits] [mlir] [MLIR][XeGPU] Distribute vector.step & vector.shape_cast op from wg to sg (PR #155443)
Nishant Patel
llvmlistbot at llvm.org
Thu Sep 4 09:36:33 PDT 2025
================
@@ -475,43 +476,28 @@ struct WgToSgVectorBroadcastOp
if (!layout || !layout.isForWorkgroup())
return failure();
- // TODO: Currently only supports cases where the source and result ranks
- // are the same.
- auto srcType =
- dyn_cast<VectorType>(adaptor.getOperands().front()[0].getType());
- if (!srcType || srcType.getRank() != resultType.getRank())
- return failure();
-
SmallVector<int64_t> sgShape = getSgShapeAndCount(wgShape, layout).first;
VectorType newResultType =
VectorType::get(sgShape, resultType.getElementType());
- // Check if the output layout is distributable
- SmallVector<int64_t> sgLayout = layout.getSgLayoutAsInt();
- if (sgLayout.empty())
- return failure();
-
if (!xegpu::XeGPUDialect::isEvenlyDistributable(wgShape, layout))
return failure();
- // Check if the srcShape has unit dim in dimensions being broadcasted,
- // and the other dimensions are the same as the destination type
- // TODO: Generalize it
- auto srcShape = srcType.getShape();
- for (size_t i = 0; i < srcShape.size(); ++i) {
- if (srcShape[i] != 1 && srcShape[i] != sgShape[i])
- return failure();
- }
-
SmallVector<Value> newBroadcastOps;
for (auto operand : adaptor.getOperands().front()) {
auto newBroadcast = vector::BroadcastOp::create(rewriter, op.getLoc(),
newResultType, operand);
- xegpu::setDistributeLayoutAttr(newBroadcast->getResult(0),
- layout.dropSgLayoutAndData());
+ if (auto sliceAttr = dyn_cast_if_present<xegpu::SliceAttr>(layout)) {
+ if (sliceAttr.isForSubgroup())
+ xegpu::setDistributeLayoutAttr(newBroadcast->getResult(0),
+ sliceAttr.dropSgLayoutAndData());
----------------
nbpatel wrote:
that check is checking if the SubgroupLayout is present in the original IR, if it is, remove WGLayout (dropSgLayoutAndData) from the IR and keep the rest for sg to wi transformation,
https://github.com/llvm/llvm-project/pull/155443
More information about the Mlir-commits
mailing list