From 051db45cd59725dc767948ee138617742eb177a6 Mon Sep 17 00:00:00 2001 From: Ivan Butygin Date: Thu, 10 Jul 2025 12:47:49 +0200 Subject: [PATCH] [mlir][rocdl] Add `s.sleep` intrinsic --- mlir/include/mlir/Dialect/LLVMIR/ROCDLOps.td | 5 +++++ mlir/test/Dialect/LLVMIR/rocdl.mlir | 7 +++++++ mlir/test/Target/LLVMIR/rocdl.mlir | 7 +++++++ 3 files changed, 19 insertions(+) diff --git a/mlir/include/mlir/Dialect/LLVMIR/ROCDLOps.td b/mlir/include/mlir/Dialect/LLVMIR/ROCDLOps.td index 1dadb7d9e8852..906aaca21187b 100644 --- a/mlir/include/mlir/Dialect/LLVMIR/ROCDLOps.td +++ b/mlir/include/mlir/Dialect/LLVMIR/ROCDLOps.td @@ -251,6 +251,11 @@ def ROCDL_SWaitcntOp : ROCDL_ConcreteNonMemIntrOp<"s.waitcnt", [], 0, [0], ["bit let assemblyFormat = "attr-dict $bitfield"; } +def ROCDL_SSleepOp : ROCDL_ConcreteNonMemIntrOp<"s.sleep", [], 0, [0], ["count"]>, + Arguments<(ins I32Attr:$count)> { + let assemblyFormat = "attr-dict $count"; +} + def ROCDL_SBarrierOp : ROCDL_ConcreteNonMemIntrOp<"s.barrier", [], 0> { let assemblyFormat = "attr-dict"; } diff --git a/mlir/test/Dialect/LLVMIR/rocdl.mlir b/mlir/test/Dialect/LLVMIR/rocdl.mlir index 0503c2a15860b..a6a29bf858e59 100644 --- a/mlir/test/Dialect/LLVMIR/rocdl.mlir +++ b/mlir/test/Dialect/LLVMIR/rocdl.mlir @@ -923,6 +923,13 @@ llvm.func @rocdl.s.waitcnt() { llvm.return } +llvm.func @rocdl.s.sleep() { + // CHECK-LABEL: rocdl.s.sleep + // CHECK: rocdl.s.sleep 0 + rocdl.s.sleep 0 + llvm.return +} + llvm.func @rocdl.s.barrier() { // CHECK-LABEL: rocdl.s.barrier // CHECK: rocdl.s.barrier diff --git a/mlir/test/Target/LLVMIR/rocdl.mlir b/mlir/test/Target/LLVMIR/rocdl.mlir index a6a03c586dd25..0742eb3620a7c 100644 --- a/mlir/test/Target/LLVMIR/rocdl.mlir +++ b/mlir/test/Target/LLVMIR/rocdl.mlir @@ -151,6 +151,13 @@ llvm.func @rocdl.s.waitcnt() { llvm.return } +llvm.func @rocdl.s.sleep() { + // CHECK-LABEL: rocdl.s.sleep + // CHECK-NEXT: call void @llvm.amdgcn.s.sleep(i32 0) + rocdl.s.sleep 0 + llvm.return +} + llvm.func @rocdl.s.barrier() { // CHECK-LABEL: rocdl.s.barrier // CHECK-NEXT: call void @llvm.amdgcn.s.barrier()