Skip to content

Commit bba40ab

Browse files
authored
[MLIR][XeGPU] Decouple inst_data and lane_layout in propagation (#166941)
1 parent be84705 commit bba40ab

File tree

6 files changed

+166
-94
lines changed

6 files changed

+166
-94
lines changed

mlir/include/mlir/Dialect/XeGPU/IR/XeGPUAttrs.td

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,17 @@ def XeGPU_LayoutAttr : XeGPUAttr<"Layout", "layout", [DistributeLayoutAttr]> {
379379
);
380380

381381
let builders = [
382+
AttrBuilder<(ins "llvm::ArrayRef<int32_t>": $inst_data),
383+
[{
384+
auto sg_layout = DenseI32ArrayAttr();
385+
auto sg_data = DenseI32ArrayAttr();
386+
auto order = DenseI32ArrayAttr();
387+
auto lane_layout = DenseI32ArrayAttr();
388+
auto lane_data = DenseI32ArrayAttr();
389+
return $_get($_ctxt, sg_layout, sg_data,
390+
DenseI32ArrayAttr::get($_ctxt, inst_data),
391+
lane_layout, lane_data, order);
392+
}]>,
382393
AttrBuilder<(ins "llvm::ArrayRef<int32_t>": $inst_data,
383394
"llvm::ArrayRef<int32_t>": $lane_layout,
384395
"llvm::ArrayRef<int32_t>": $lane_data),

mlir/include/mlir/Dialect/XeGPU/Transforms/Passes.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def XeGPUPropagateLayout : Pass<"xegpu-propagate-layout"> {
4747
Option<
4848
"layoutKind", "layout-kind", "std::string",
4949
/*default=*/"\"lane\"",
50-
"Propagate a `sg` / `inst` / `lane` level of xegpu layouts.">
50+
"Propagate `inst` / `lane` level of xegpu layouts.">
5151
];
5252
}
5353

mlir/lib/Dialect/GPU/Pipelines/GPUToXeVMPipeline.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,20 @@ void buildGPUPassPipeline(OpPassManager &pm,
6363
if (options.xegpuOpLevel == "workgroup") {
6464
pm.addNestedPass<gpu::GPUModuleOp>(xegpu::createXeGPUWgToSgDistribute());
6565
pm.addNestedPass<gpu::GPUModuleOp>(createCSEPass());
66+
xegpu::XeGPUPropagateLayoutOptions layoutOptions;
67+
layoutOptions.layoutKind = "inst";
68+
pm.addNestedPass<gpu::GPUModuleOp>(
69+
xegpu::createXeGPUPropagateLayout(layoutOptions));
6670
pm.addNestedPass<gpu::GPUModuleOp>(xegpu::createXeGPUBlocking());
6771
pm.addNestedPass<gpu::GPUModuleOp>(createCanonicalizerPass());
6872
pm.addNestedPass<gpu::GPUModuleOp>(createCSEPass());
6973
}
7074
if (options.xegpuOpLevel == "subgroup" ||
7175
options.xegpuOpLevel == "workgroup") {
72-
pm.addNestedPass<gpu::GPUModuleOp>(xegpu::createXeGPUPropagateLayout());
76+
xegpu::XeGPUPropagateLayoutOptions layoutOptions;
77+
layoutOptions.layoutKind = "lane";
78+
pm.addNestedPass<gpu::GPUModuleOp>(
79+
xegpu::createXeGPUPropagateLayout(layoutOptions));
7380
pm.addNestedPass<gpu::GPUModuleOp>(xegpu::createXeGPUSubgroupDistribute());
7481
pm.addNestedPass<gpu::GPUModuleOp>(createCanonicalizerPass());
7582
pm.addNestedPass<gpu::GPUModuleOp>(createCSEPass());

0 commit comments

Comments
 (0)