-
Notifications
You must be signed in to change notification settings - Fork 15.3k
[mlir][rocdl] Add more gfx12 wait intrinsics #149984
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: Ivan Butygin (Hardcode84) ChangesFull diff: https://github.com/llvm/llvm-project/pull/149984.diff 2 Files Affected:
diff --git a/mlir/include/mlir/Dialect/LLVMIR/ROCDLOps.td b/mlir/include/mlir/Dialect/LLVMIR/ROCDLOps.td
index 906aaca21187b..eb9745a1b0425 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/ROCDLOps.td
+++ b/mlir/include/mlir/Dialect/LLVMIR/ROCDLOps.td
@@ -284,10 +284,28 @@ def ROCDL_BarrierWaitOp : ROCDL_ConcreteNonMemIntrOp<"s.barrier.wait", [], 0, [0
let assemblyFormat = "$id attr-dict";
}
-def ROCDL_WaitDscntOp: ROCDL_ConcreteNonMemIntrOp<"s.wait.dscnt", [], 0, [0], ["id"]>,
- Arguments<(ins I16Attr:$id)> {
+def ROCDL_WaitDscntOp: ROCDL_ConcreteNonMemIntrOp<"s.wait.dscnt", [], 0, [0], ["count"]>,
+ Arguments<(ins I16Attr:$count)> {
let results = (outs);
- let assemblyFormat = "$id attr-dict";
+ let assemblyFormat = "$count attr-dict";
+}
+
+def ROCDL_WaitLoadcntOp: ROCDL_ConcreteNonMemIntrOp<"s.wait.loadcnt", [], 0, [0], ["count"]>,
+ Arguments<(ins I16Attr:$count)> {
+ let results = (outs);
+ let assemblyFormat = "$count attr-dict";
+}
+
+def ROCDL_WaitStorecntOp: ROCDL_ConcreteNonMemIntrOp<"s.wait.storecnt", [], 0, [0], ["count"]>,
+ Arguments<(ins I16Attr:$count)> {
+ let results = (outs);
+ let assemblyFormat = "$count attr-dict";
+}
+
+def ROCDL_WaitExpcntOp: ROCDL_ConcreteNonMemIntrOp<"s.wait.expcnt", [], 0, [0], ["count"]>,
+ Arguments<(ins I16Attr:$count)> {
+ let results = (outs);
+ let assemblyFormat = "$count attr-dict";
}
def ROCDL_SetPrioOp : ROCDL_ConcreteNonMemIntrOp<"s.setprio", [], 0, [0], ["priority"]>,
diff --git a/mlir/test/Target/LLVMIR/rocdl.mlir b/mlir/test/Target/LLVMIR/rocdl.mlir
index 0742eb3620a7c..740990a6e589b 100644
--- a/mlir/test/Target/LLVMIR/rocdl.mlir
+++ b/mlir/test/Target/LLVMIR/rocdl.mlir
@@ -196,6 +196,27 @@ llvm.func @rocdl.s.wait.dscnt() {
llvm.return
}
+llvm.func @rocdl.s.wait.loadcnt() {
+ // CHECK-LABEL: rocdl.s.wait.loadcnt
+ // CHECK-NEXT: call void @llvm.amdgcn.s.wait.loadcnt(i16 0)
+ rocdl.s.wait.loadcnt 0
+ llvm.return
+}
+
+llvm.func @rocdl.s.wait.storecnt() {
+ // CHECK-LABEL: rocdl.s.wait.storecnt
+ // CHECK-NEXT: call void @llvm.amdgcn.s.wait.storecnt(i16 0)
+ rocdl.s.wait.storecnt 0
+ llvm.return
+}
+
+llvm.func @rocdl.s.wait.expcnt() {
+ // CHECK-LABEL: rocdl.s.wait.expcnt
+ // CHECK-NEXT: call void @llvm.amdgcn.s.wait.expcnt(i16 0)
+ rocdl.s.wait.expcnt 0
+ llvm.return
+}
+
llvm.func @rocdl.setprio() {
// CHECK: call void @llvm.amdgcn.s.setprio(i16 0)
rocdl.s.setprio 0
|
|
@llvm/pr-subscribers-mlir-llvm Author: Ivan Butygin (Hardcode84) ChangesFull diff: https://github.com/llvm/llvm-project/pull/149984.diff 2 Files Affected:
diff --git a/mlir/include/mlir/Dialect/LLVMIR/ROCDLOps.td b/mlir/include/mlir/Dialect/LLVMIR/ROCDLOps.td
index 906aaca21187b..eb9745a1b0425 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/ROCDLOps.td
+++ b/mlir/include/mlir/Dialect/LLVMIR/ROCDLOps.td
@@ -284,10 +284,28 @@ def ROCDL_BarrierWaitOp : ROCDL_ConcreteNonMemIntrOp<"s.barrier.wait", [], 0, [0
let assemblyFormat = "$id attr-dict";
}
-def ROCDL_WaitDscntOp: ROCDL_ConcreteNonMemIntrOp<"s.wait.dscnt", [], 0, [0], ["id"]>,
- Arguments<(ins I16Attr:$id)> {
+def ROCDL_WaitDscntOp: ROCDL_ConcreteNonMemIntrOp<"s.wait.dscnt", [], 0, [0], ["count"]>,
+ Arguments<(ins I16Attr:$count)> {
let results = (outs);
- let assemblyFormat = "$id attr-dict";
+ let assemblyFormat = "$count attr-dict";
+}
+
+def ROCDL_WaitLoadcntOp: ROCDL_ConcreteNonMemIntrOp<"s.wait.loadcnt", [], 0, [0], ["count"]>,
+ Arguments<(ins I16Attr:$count)> {
+ let results = (outs);
+ let assemblyFormat = "$count attr-dict";
+}
+
+def ROCDL_WaitStorecntOp: ROCDL_ConcreteNonMemIntrOp<"s.wait.storecnt", [], 0, [0], ["count"]>,
+ Arguments<(ins I16Attr:$count)> {
+ let results = (outs);
+ let assemblyFormat = "$count attr-dict";
+}
+
+def ROCDL_WaitExpcntOp: ROCDL_ConcreteNonMemIntrOp<"s.wait.expcnt", [], 0, [0], ["count"]>,
+ Arguments<(ins I16Attr:$count)> {
+ let results = (outs);
+ let assemblyFormat = "$count attr-dict";
}
def ROCDL_SetPrioOp : ROCDL_ConcreteNonMemIntrOp<"s.setprio", [], 0, [0], ["priority"]>,
diff --git a/mlir/test/Target/LLVMIR/rocdl.mlir b/mlir/test/Target/LLVMIR/rocdl.mlir
index 0742eb3620a7c..740990a6e589b 100644
--- a/mlir/test/Target/LLVMIR/rocdl.mlir
+++ b/mlir/test/Target/LLVMIR/rocdl.mlir
@@ -196,6 +196,27 @@ llvm.func @rocdl.s.wait.dscnt() {
llvm.return
}
+llvm.func @rocdl.s.wait.loadcnt() {
+ // CHECK-LABEL: rocdl.s.wait.loadcnt
+ // CHECK-NEXT: call void @llvm.amdgcn.s.wait.loadcnt(i16 0)
+ rocdl.s.wait.loadcnt 0
+ llvm.return
+}
+
+llvm.func @rocdl.s.wait.storecnt() {
+ // CHECK-LABEL: rocdl.s.wait.storecnt
+ // CHECK-NEXT: call void @llvm.amdgcn.s.wait.storecnt(i16 0)
+ rocdl.s.wait.storecnt 0
+ llvm.return
+}
+
+llvm.func @rocdl.s.wait.expcnt() {
+ // CHECK-LABEL: rocdl.s.wait.expcnt
+ // CHECK-NEXT: call void @llvm.amdgcn.s.wait.expcnt(i16 0)
+ rocdl.s.wait.expcnt 0
+ llvm.return
+}
+
llvm.func @rocdl.setprio() {
// CHECK: call void @llvm.amdgcn.s.setprio(i16 0)
rocdl.s.setprio 0
|
krzysz00
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There should also be a test in test/Dialect/LLVMIR/rocdl.mlir just to verify parsing/printing. Otherwise, approved.
No description provided.