[Mlir-commits] [mlir] [MLIR][XeGPU] Add transformation pattern for vector.broadcast in Wg to Sg pass (PR #144417)
Chao Chen
llvmlistbot at llvm.org
Mon Jul 21 10:54:03 PDT 2025
================
@@ -331,6 +331,65 @@ struct WgToSgPrefetchNdOp : public OpConversionPattern<xegpu::PrefetchNdOp> {
}
};
+/// This pattern transforms vector.broadcast ops to work at subgroup level.
+struct WgToSgVectorBroadcastOp
+ : public OpConversionPattern<vector::BroadcastOp> {
+ using OpConversionPattern<vector::BroadcastOp>::OpConversionPattern;
+
+ LogicalResult
+ matchAndRewrite(vector::BroadcastOp op, OneToNOpAdaptor adaptor,
+ ConversionPatternRewriter &rewriter) const override {
+ VectorType resultType = op.getResult().getType();
+ ArrayRef<int64_t> wgShape = resultType.getShape();
+
+ xegpu::LayoutAttr layout = xegpu::getLayoutAttr(op.getResult());
+ if (!layout || !layout.getSgLayout())
+ 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());
----------------
chencha3 wrote:
can `adaptor.getSource()` be used here and later instead of using `adaptor.getOperands().front()`
https://github.com/llvm/llvm-project/pull/144417
More information about the Mlir-commits
mailing list