Skip to content

Commit f73bcdb

Browse files
authored
[ROCDL] Added missing s.get.named.barrier.state op (gfx1250) (llvm#167876)
This patch introduces some missing s.get.named.barrier.state instructions in the ROCDL dialect
1 parent c0f7d51 commit f73bcdb

File tree

3 files changed

+23
-0
lines changed

3 files changed

+23
-0
lines changed

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,15 @@ def ROCDL_GetBarrierStateOp : ROCDL_ConcreteNonMemIntrOp<"s.get.barrier.state",
390390
let assemblyFormat = "$id attr-dict `:` type($res)";
391391
}
392392

393+
def ROCDL_GetNamedBarrierStateOp : ROCDL_ConcreteNonMemIntrOp<"s.get.named.barrier.state", [], 1, [], []>,
394+
Arguments<(ins Arg<ROCDLBufferLDS, "", []>:$ptr)> {
395+
let description = [{
396+
Available on gfx1250+.
397+
}];
398+
let results = (outs I32:$res);
399+
let assemblyFormat = "$ptr attr-dict `:` type($res)";
400+
}
401+
393402
def ROCDL_WaitDscntOp: ROCDL_ConcreteNonMemIntrOp<"s.wait.dscnt", [], 0, [0], ["count"]>,
394403
Arguments<(ins I16Attr:$count)> {
395404
let summary = "Wait until DSCNT is less than or equal to `count`";

mlir/test/Dialect/LLVMIR/rocdl.mlir

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1083,6 +1083,13 @@ llvm.func @rocdl.s.get.barrier.state() {
10831083
llvm.return
10841084
}
10851085

1086+
llvm.func @rocdl.s.get.named.barrier.state(%ptr : !llvm.ptr<3>) {
1087+
// CHECK-LABEL: rocdl.s.get.named.barrier.state
1088+
// CHECK: rocdl.s.get.named.barrier.state %[[PTR:.+]]
1089+
%0 = rocdl.s.get.named.barrier.state %ptr : i32
1090+
llvm.return
1091+
}
1092+
10861093
llvm.func @rocdl.s.wait.dscnt() {
10871094
// CHECK-LABEL: rocdl.s.wait.dscnt
10881095
// CHECK: rocdl.s.wait.dscnt 0

mlir/test/Target/LLVMIR/rocdl.mlir

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,13 @@ llvm.func @rocdl.s.get.barrier.state() {
248248
llvm.return
249249
}
250250

251+
llvm.func @rocdl.s.get.named.barrier.state(%ptr : !llvm.ptr<3>) {
252+
// CHECK-LABEL: rocdl.s.get.named.barrier.state
253+
// CHECK: %[[STATE:.+]] = call i32 @llvm.amdgcn.s.get.named.barrier.state(ptr addrspace(3) %[[PTR:.+]])
254+
%0 = rocdl.s.get.named.barrier.state %ptr : i32
255+
llvm.return
256+
}
257+
251258
llvm.func @rocdl.s.wait.dscnt() {
252259
// CHECK-LABEL: rocdl.s.wait.dscnt
253260
// CHECK-NEXT: call void @llvm.amdgcn.s.wait.dscnt(i16 0)

0 commit comments

Comments
 (0)