-
Notifications
You must be signed in to change notification settings - Fork 15.3k
[ROCDL] Added missing s.get.named.barrier.state op (gfx1250) #167876
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
@llvm/pr-subscribers-mlir Author: Ravil Dorozhinskii (ravil-mobile) ChangesThis patch introduces some missing s.get.named.barrier.state instructions in the ROCDL dialect Full diff: https://github.com/llvm/llvm-project/pull/167876.diff 3 Files Affected:
diff --git a/mlir/include/mlir/Dialect/LLVMIR/ROCDLOps.td b/mlir/include/mlir/Dialect/LLVMIR/ROCDLOps.td
index 3d8bf9c169406..963078882c59d 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/ROCDLOps.td
+++ b/mlir/include/mlir/Dialect/LLVMIR/ROCDLOps.td
@@ -390,6 +390,15 @@ def ROCDL_GetBarrierStateOp : ROCDL_ConcreteNonMemIntrOp<"s.get.barrier.state",
let assemblyFormat = "$id attr-dict `:` type($res)";
}
+def ROCDL_GetNamedBarrierStateOp : ROCDL_ConcreteNonMemIntrOp<"s.get.named.barrier.state", [], 1, [], []>,
+ Arguments<(ins Arg<ROCDLBufferLDS, "", []>:$ptr)> {
+ let description = [{
+ Available on gfx1250+.
+ }];
+ let results = (outs I32:$res);
+ let assemblyFormat = "$ptr attr-dict `:` type($res)";
+}
+
def ROCDL_WaitDscntOp: ROCDL_ConcreteNonMemIntrOp<"s.wait.dscnt", [], 0, [0], ["count"]>,
Arguments<(ins I16Attr:$count)> {
let summary = "Wait until DSCNT is less than or equal to `count`";
diff --git a/mlir/test/Dialect/LLVMIR/rocdl.mlir b/mlir/test/Dialect/LLVMIR/rocdl.mlir
index d50cc41684e3c..9131c8ee9e598 100644
--- a/mlir/test/Dialect/LLVMIR/rocdl.mlir
+++ b/mlir/test/Dialect/LLVMIR/rocdl.mlir
@@ -1083,6 +1083,13 @@ llvm.func @rocdl.s.get.barrier.state() {
llvm.return
}
+llvm.func @rocdl.s.get.named.barrier.state(%ptr : !llvm.ptr<3>) {
+ // CHECK-LABEL: rocdl.s.get.named.barrier.state
+ // CHECK: rocdl.s.get.named.barrier.state %[[PTR:.+]]
+ %0 = rocdl.s.get.named.barrier.state %ptr : i32
+ llvm.return
+}
+
llvm.func @rocdl.s.wait.dscnt() {
// CHECK-LABEL: rocdl.s.wait.dscnt
// CHECK: rocdl.s.wait.dscnt 0
diff --git a/mlir/test/Target/LLVMIR/rocdl.mlir b/mlir/test/Target/LLVMIR/rocdl.mlir
index db02918d7186c..ca1620b81c318 100644
--- a/mlir/test/Target/LLVMIR/rocdl.mlir
+++ b/mlir/test/Target/LLVMIR/rocdl.mlir
@@ -248,6 +248,13 @@ llvm.func @rocdl.s.get.barrier.state() {
llvm.return
}
+llvm.func @rocdl.s.get.named.barrier.state(%ptr : !llvm.ptr<3>) {
+ // CHECK-LABEL: rocdl.s.get.named.barrier.state
+ // CHECK: %[[STATE:.+]] = call i32 @llvm.amdgcn.s.get.named.barrier.state(ptr addrspace(3) %[[PTR:.+]])
+ %0 = rocdl.s.get.named.barrier.state %ptr : i32
+ llvm.return
+}
+
llvm.func @rocdl.s.wait.dscnt() {
// CHECK-LABEL: rocdl.s.wait.dscnt
// CHECK-NEXT: call void @llvm.amdgcn.s.wait.dscnt(i16 0)
|
|
@llvm/pr-subscribers-mlir-llvm Author: Ravil Dorozhinskii (ravil-mobile) ChangesThis patch introduces some missing s.get.named.barrier.state instructions in the ROCDL dialect Full diff: https://github.com/llvm/llvm-project/pull/167876.diff 3 Files Affected:
diff --git a/mlir/include/mlir/Dialect/LLVMIR/ROCDLOps.td b/mlir/include/mlir/Dialect/LLVMIR/ROCDLOps.td
index 3d8bf9c169406..963078882c59d 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/ROCDLOps.td
+++ b/mlir/include/mlir/Dialect/LLVMIR/ROCDLOps.td
@@ -390,6 +390,15 @@ def ROCDL_GetBarrierStateOp : ROCDL_ConcreteNonMemIntrOp<"s.get.barrier.state",
let assemblyFormat = "$id attr-dict `:` type($res)";
}
+def ROCDL_GetNamedBarrierStateOp : ROCDL_ConcreteNonMemIntrOp<"s.get.named.barrier.state", [], 1, [], []>,
+ Arguments<(ins Arg<ROCDLBufferLDS, "", []>:$ptr)> {
+ let description = [{
+ Available on gfx1250+.
+ }];
+ let results = (outs I32:$res);
+ let assemblyFormat = "$ptr attr-dict `:` type($res)";
+}
+
def ROCDL_WaitDscntOp: ROCDL_ConcreteNonMemIntrOp<"s.wait.dscnt", [], 0, [0], ["count"]>,
Arguments<(ins I16Attr:$count)> {
let summary = "Wait until DSCNT is less than or equal to `count`";
diff --git a/mlir/test/Dialect/LLVMIR/rocdl.mlir b/mlir/test/Dialect/LLVMIR/rocdl.mlir
index d50cc41684e3c..9131c8ee9e598 100644
--- a/mlir/test/Dialect/LLVMIR/rocdl.mlir
+++ b/mlir/test/Dialect/LLVMIR/rocdl.mlir
@@ -1083,6 +1083,13 @@ llvm.func @rocdl.s.get.barrier.state() {
llvm.return
}
+llvm.func @rocdl.s.get.named.barrier.state(%ptr : !llvm.ptr<3>) {
+ // CHECK-LABEL: rocdl.s.get.named.barrier.state
+ // CHECK: rocdl.s.get.named.barrier.state %[[PTR:.+]]
+ %0 = rocdl.s.get.named.barrier.state %ptr : i32
+ llvm.return
+}
+
llvm.func @rocdl.s.wait.dscnt() {
// CHECK-LABEL: rocdl.s.wait.dscnt
// CHECK: rocdl.s.wait.dscnt 0
diff --git a/mlir/test/Target/LLVMIR/rocdl.mlir b/mlir/test/Target/LLVMIR/rocdl.mlir
index db02918d7186c..ca1620b81c318 100644
--- a/mlir/test/Target/LLVMIR/rocdl.mlir
+++ b/mlir/test/Target/LLVMIR/rocdl.mlir
@@ -248,6 +248,13 @@ llvm.func @rocdl.s.get.barrier.state() {
llvm.return
}
+llvm.func @rocdl.s.get.named.barrier.state(%ptr : !llvm.ptr<3>) {
+ // CHECK-LABEL: rocdl.s.get.named.barrier.state
+ // CHECK: %[[STATE:.+]] = call i32 @llvm.amdgcn.s.get.named.barrier.state(ptr addrspace(3) %[[PTR:.+]])
+ %0 = rocdl.s.get.named.barrier.state %ptr : i32
+ llvm.return
+}
+
llvm.func @rocdl.s.wait.dscnt() {
// CHECK-LABEL: rocdl.s.wait.dscnt
// CHECK-NEXT: call void @llvm.amdgcn.s.wait.dscnt(i16 0)
|
This patch introduces some missing s.get.named.barrier.state instructions in the ROCDL dialect