Skip to content

Commit cfa590e

Browse files
authored
[ROCDL] Added missing cluster.ids op (gfx1250) (llvm#167890)
Added missing cluster.ids op - i.e., along x, y, and z dims. Extended all rocdl tests
1 parent 5ad56ca commit cfa590e

File tree

3 files changed

+33
-17
lines changed

3 files changed

+33
-17
lines changed

mlir/include/mlir/Dialect/LLVMIR/ROCDLOps.td

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ def ROCDL_ReadlaneOp : ROCDL_IntrOp<"readlane", [], [0], [AllTypesMatch<["res",
254254
}
255255

256256
//===----------------------------------------------------------------------===//
257-
// Thread index and Block index
257+
// Thread, Block and Cluster index
258258
//===----------------------------------------------------------------------===//
259259

260260
def ROCDL_ThreadIdXOp : ROCDL_SpecialIdRegisterOp<"workitem.id.x">;
@@ -265,6 +265,10 @@ def ROCDL_BlockIdXOp : ROCDL_SpecialIdRegisterOp<"workgroup.id.x">;
265265
def ROCDL_BlockIdYOp : ROCDL_SpecialIdRegisterOp<"workgroup.id.y">;
266266
def ROCDL_BlockIdZOp : ROCDL_SpecialIdRegisterOp<"workgroup.id.z">;
267267

268+
def ROCDL_ClusterIdXOp : ROCDL_SpecialIdRegisterOp<"cluster.id.x">;
269+
def ROCDL_ClusterIdYOp : ROCDL_SpecialIdRegisterOp<"cluster.id.y">;
270+
def ROCDL_ClusterIdZOp : ROCDL_SpecialIdRegisterOp<"cluster.id.z">;
271+
268272
def ROCDL_WavefrontSizeOp : ROCDL_SpecialIdRegisterOp<"wavefrontsize">;
269273

270274
//===----------------------------------------------------------------------===//

mlir/test/Dialect/LLVMIR/rocdl.mlir

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,24 @@ func.func @rocdl_special_regs() -> i32 {
1414
%4 = rocdl.workgroup.id.y : i32
1515
// CHECK: rocdl.workgroup.id.z : i32
1616
%5 = rocdl.workgroup.id.z : i32
17+
// CHECK: rocdl.cluster.id.x : i32
18+
%6 = rocdl.cluster.id.x : i32
19+
// CHECK: rocdl.cluster.id.y : i32
20+
%7 = rocdl.cluster.id.y : i32
21+
// CHECK: rocdl.cluster.id.z : i32
22+
%8 = rocdl.cluster.id.z : i32
1723
// CHECK: rocdl.workgroup.dim.x : i32
18-
%6 = rocdl.workgroup.dim.x : i32
24+
%9 = rocdl.workgroup.dim.x : i32
1925
// CHECK: rocdl.workgroup.dim.y : i32
20-
%7 = rocdl.workgroup.dim.y : i32
26+
%10 = rocdl.workgroup.dim.y : i32
2127
// CHECK: rocdl.workgroup.dim.z : i32
22-
%8 = rocdl.workgroup.dim.z : i32
28+
%11 = rocdl.workgroup.dim.z : i32
2329
// CHECK: rocdl.grid.dim.x : i32
24-
%9 = rocdl.grid.dim.x : i32
30+
%12 = rocdl.grid.dim.x : i32
2531
// CHECK: rocdl.grid.dim.y : i32
26-
%10 = rocdl.grid.dim.y : i32
32+
%13 = rocdl.grid.dim.y : i32
2733
// CHECK: rocdl.grid.dim.z : i32
28-
%11 = rocdl.grid.dim.z : i32
34+
%14 = rocdl.grid.dim.z : i32
2935
llvm.return %0 : i32
3036
}
3137

mlir/test/Target/LLVMIR/rocdl.mlir

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,30 +14,36 @@ llvm.func @rocdl_special_regs() -> i32 {
1414
%5 = rocdl.workgroup.id.y : i32
1515
// CHECK: call i32 @llvm.amdgcn.workgroup.id.z()
1616
%6 = rocdl.workgroup.id.z : i32
17+
// CHECK: call i32 @llvm.amdgcn.cluster.id.x()
18+
%7 = rocdl.cluster.id.x : i32
19+
// CHECK: call i32 @llvm.amdgcn.cluster.id.y()
20+
%8 = rocdl.cluster.id.y : i32
21+
// CHECK: call i32 @llvm.amdgcn.cluster.id.z()
22+
%9 = rocdl.cluster.id.z : i32
1723
// CHECK: call i64 @__ockl_get_local_size(i32 0)
18-
%7 = rocdl.workgroup.dim.x : i64
24+
%10 = rocdl.workgroup.dim.x : i64
1925
// CHECK: call i64 @__ockl_get_local_size(i32 1)
20-
%8 = rocdl.workgroup.dim.y : i64
26+
%11 = rocdl.workgroup.dim.y : i64
2127
// CHECK: call i64 @__ockl_get_local_size(i32 2)
22-
%9 = rocdl.workgroup.dim.z : i64
28+
%12 = rocdl.workgroup.dim.z : i64
2329
// CHECK: call i64 @__ockl_get_num_groups(i32 0)
24-
%10 = rocdl.grid.dim.x : i64
30+
%13 = rocdl.grid.dim.x : i64
2531
// CHECK: call i64 @__ockl_get_num_groups(i32 1)
26-
%11 = rocdl.grid.dim.y : i64
32+
%14 = rocdl.grid.dim.y : i64
2733
// CHECK: call i64 @__ockl_get_num_groups(i32 2)
28-
%12 = rocdl.grid.dim.z : i64
34+
%15 = rocdl.grid.dim.z : i64
2935

3036
// CHECK: call range(i32 0, 64) i32 @llvm.amdgcn.workitem.id.x()
31-
%13 = rocdl.workitem.id.x range <i32, 0, 64> : i32
37+
%16 = rocdl.workitem.id.x range <i32, 0, 64> : i32
3238

3339
// CHECK: call range(i64 1, 65) i64 @__ockl_get_local_size(i32 0)
34-
%14 = rocdl.workgroup.dim.x range <i32, 1, 65> : i64
40+
%17 = rocdl.workgroup.dim.x range <i32, 1, 65> : i64
3541

3642
// CHECK: call i32 @llvm.amdgcn.wavefrontsize()
37-
%15 = rocdl.wavefrontsize : i32
43+
%18 = rocdl.wavefrontsize : i32
3844

3945
// CHECK: call range(i32 32, 65) i32 @llvm.amdgcn.wavefrontsize()
40-
%16 = rocdl.wavefrontsize range <i32, 32, 65> : i32
46+
%19 = rocdl.wavefrontsize range <i32, 32, 65> : i32
4147

4248
llvm.return %1 : i32
4349
}

0 commit comments

Comments
 (0)