Skip to content

Commit 83c40b5

Browse files
committed
[mlir][rocdl] Add more gfx12 wait intrinsics
1 parent b5348e7 commit 83c40b5

File tree

2 files changed

+42
-3
lines changed

2 files changed

+42
-3
lines changed

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

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -284,10 +284,28 @@ def ROCDL_BarrierWaitOp : ROCDL_ConcreteNonMemIntrOp<"s.barrier.wait", [], 0, [0
284284
let assemblyFormat = "$id attr-dict";
285285
}
286286

287-
def ROCDL_WaitDscntOp: ROCDL_ConcreteNonMemIntrOp<"s.wait.dscnt", [], 0, [0], ["id"]>,
288-
Arguments<(ins I16Attr:$id)> {
287+
def ROCDL_WaitDscntOp: ROCDL_ConcreteNonMemIntrOp<"s.wait.dscnt", [], 0, [0], ["count"]>,
288+
Arguments<(ins I16Attr:$count)> {
289289
let results = (outs);
290-
let assemblyFormat = "$id attr-dict";
290+
let assemblyFormat = "$count attr-dict";
291+
}
292+
293+
def ROCDL_WaitLoadcntOp: ROCDL_ConcreteNonMemIntrOp<"s.wait.loadcnt", [], 0, [0], ["count"]>,
294+
Arguments<(ins I16Attr:$count)> {
295+
let results = (outs);
296+
let assemblyFormat = "$count attr-dict";
297+
}
298+
299+
def ROCDL_WaitStorecntOp: ROCDL_ConcreteNonMemIntrOp<"s.wait.storecnt", [], 0, [0], ["count"]>,
300+
Arguments<(ins I16Attr:$count)> {
301+
let results = (outs);
302+
let assemblyFormat = "$count attr-dict";
303+
}
304+
305+
def ROCDL_WaitExpcntOp: ROCDL_ConcreteNonMemIntrOp<"s.wait.expcnt", [], 0, [0], ["count"]>,
306+
Arguments<(ins I16Attr:$count)> {
307+
let results = (outs);
308+
let assemblyFormat = "$count attr-dict";
291309
}
292310

293311
def ROCDL_SetPrioOp : ROCDL_ConcreteNonMemIntrOp<"s.setprio", [], 0, [0], ["priority"]>,

mlir/test/Target/LLVMIR/rocdl.mlir

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,27 @@ llvm.func @rocdl.s.wait.dscnt() {
196196
llvm.return
197197
}
198198

199+
llvm.func @rocdl.s.wait.loadcnt() {
200+
// CHECK-LABEL: rocdl.s.wait.loadcnt
201+
// CHECK-NEXT: call void @llvm.amdgcn.s.wait.loadcnt(i16 0)
202+
rocdl.s.wait.loadcnt 0
203+
llvm.return
204+
}
205+
206+
llvm.func @rocdl.s.wait.storecnt() {
207+
// CHECK-LABEL: rocdl.s.wait.storecnt
208+
// CHECK-NEXT: call void @llvm.amdgcn.s.wait.storecnt(i16 0)
209+
rocdl.s.wait.storecnt 0
210+
llvm.return
211+
}
212+
213+
llvm.func @rocdl.s.wait.expcnt() {
214+
// CHECK-LABEL: rocdl.s.wait.expcnt
215+
// CHECK-NEXT: call void @llvm.amdgcn.s.wait.expcnt(i16 0)
216+
rocdl.s.wait.expcnt 0
217+
llvm.return
218+
}
219+
199220
llvm.func @rocdl.setprio() {
200221
// CHECK: call void @llvm.amdgcn.s.setprio(i16 0)
201222
rocdl.s.setprio 0

0 commit comments

Comments
 (0)