[Mlir-commits] [mlir] [mlir][llvm] Add operations for coroutine intrinsics (PR #214099)
Tobias Gysi
llvmlistbot at llvm.org
Wed Aug 5 04:10:52 PDT 2026
================
@@ -881,6 +890,69 @@ define void @coro_promise(ptr %0, i32 %1, i1 %2) {
ret void
}
+; CHECK-LABEL: llvm.func @coro_frame
+define void @coro_frame() {
+ ; CHECK: llvm.intr.coro.frame : !llvm.ptr
+ %1 = call ptr @llvm.coro.frame()
+ ret void
+}
+
+; CHECK-LABEL: llvm.func @coro_noop
+define void @coro_noop() {
+ ; CHECK: llvm.intr.coro.noop : !llvm.ptr
+ %1 = call ptr @llvm.coro.noop()
+ ret void
+}
+
+; CHECK-LABEL: llvm.func @coro_destroy
+define void @coro_destroy(ptr %0) {
+ ; CHECK: llvm.intr.coro.destroy %{{.*}}
+ call void @llvm.coro.destroy(ptr %0)
+ ret void
+}
+
+; CHECK-LABEL: llvm.func @coro_done
+define void @coro_done(ptr %0) {
+ ; CHECK: llvm.intr.coro.done %{{.*}} : (!llvm.ptr) -> i1
+ %2 = call i1 @llvm.coro.done(ptr %0)
+ ret void
+}
+
+; CHECK-LABEL: llvm.func @coro_is_in_ramp
+define void @coro_is_in_ramp() {
+ ; CHECK: llvm.intr.coro.is_in_ramp : i1
+ %1 = call i1 @llvm.coro.is_in_ramp()
+ ret void
+}
+
+; CHECK-LABEL: llvm.func @coro_dead
+define void @coro_dead(ptr %0) {
+ ; CHECK: llvm.intr.coro.dead %{{.*}}
+ call void @llvm.coro.dead(ptr %0)
+ ret void
+}
+
+; CHECK-LABEL: llvm.func @coro_await_suspend_void
+define void @coro_await_suspend_void(ptr %0, ptr %1, ptr %2) {
+ ; CHECK: llvm.intr.coro.await.suspend.void
+ call void @llvm.coro.await.suspend.void(ptr %0, ptr %1, ptr %2)
----------------
gysit wrote:
nit: this is also a good example where matching the function arguments and how they are writed to the intrinsic would be nice.
https://github.com/llvm/llvm-project/pull/214099
More information about the Mlir-commits
mailing list