[Mlir-commits] [mlir] [MLIR][XeGPU] Add blocking and subgroup to lane distribution support for ConvertLayout operation (PR #183837)
Artem Kroviakov
llvmlistbot at llvm.org
Sat Feb 28 01:14:35 PST 2026
================
@@ -1032,15 +1032,59 @@ struct UnrollStoreMatrixOp : public UnrollPattern<xegpu::StoreMatrixOp> {
}
};
+struct UnrollConvertLayoutOp : public UnrollPattern<xegpu::ConvertLayoutOp> {
+ using UnrollPattern<xegpu::ConvertLayoutOp>::UnrollPattern;
+ LogicalResult matchAndRewrite(xegpu::ConvertLayoutOp op,
+ PatternRewriter &rewriter) const override {
+ Location loc = op.getLoc();
+ VectorType valueTy = llvm::dyn_cast<VectorType>(op.getType());
+ assert(valueTy && "the value type must be vector type!");
+
+ std::optional<SmallVector<int64_t>> targetShape = getTargetShape(op);
+ if (!targetShape || targetShape->size() != (size_t)valueTy.getRank())
+ return failure();
+
+ xegpu::DistributeLayoutAttr inputLayout = op.getInputLayoutAttr();
+ xegpu::DistributeLayoutAttr targetLayout = op.getTargetLayoutAttr();
+ if (!inputLayout || !targetLayout)
+ return rewriter.notifyMatchFailure(op, "missing layout attributes.");
+
+ if (inputLayout.getEffectiveInstDataAsInt().empty() ||
+ targetLayout.getEffectiveInstDataAsInt().empty())
+ return rewriter.notifyMatchFailure(op, "Not a target ConvertLayoutOp.");
+
+ inputLayout = inputLayout.dropInstData();
+ targetLayout = targetLayout.dropInstData();
+
+ Value newSource = op.getSource();
+ SmallVector<Value> newOps;
+ if (inputLayout && targetLayout) {
+ SmallVector<Type> convertedValTypes =
+ getUnrolledTypes(valueTy, *targetShape);
+ SmallVector<Value> convertedValues =
+ pack(op.getOperand(), convertedValTypes, *targetShape, loc, rewriter);
+ for (auto [v, t] : llvm::zip(convertedValues, convertedValTypes)) {
+ auto newOp = xegpu::ConvertLayoutOp::create(rewriter, op.getLoc(), t, v,
----------------
akroviakov wrote:
```suggestion
auto newOp = xegpu::ConvertLayoutOp::create(rewriter, loc, t, v,
```
https://github.com/llvm/llvm-project/pull/183837
More information about the Mlir-commits
mailing list