From 726cb092cadd367ee3784a603de2374ac77e8920 Mon Sep 17 00:00:00 2001 From: mwojcik Date: Fri, 26 Jan 2024 16:48:04 +0800 Subject: [PATCH] tests: add message passing tests --- .../lit/embedding/subkernel_message_recv.py | 22 +++++++++++++++++++ .../lit/embedding/subkernel_message_send.py | 20 +++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 artiq/test/lit/embedding/subkernel_message_recv.py create mode 100644 artiq/test/lit/embedding/subkernel_message_send.py diff --git a/artiq/test/lit/embedding/subkernel_message_recv.py b/artiq/test/lit/embedding/subkernel_message_recv.py new file mode 100644 index 000000000..2331001e7 --- /dev/null +++ b/artiq/test/lit/embedding/subkernel_message_recv.py @@ -0,0 +1,22 @@ +# RUN: env ARTIQ_DUMP_LLVM=%t %python -m artiq.compiler.testbench.embedding +compile %s +# RUN: OutputCheck %s --file-to-check=%t.ll + +from artiq.language.core import * +from artiq.language.types import * + +@kernel +def entrypoint(): + # CHECK: call void @subkernel_load_run\(i32 1, i8 1, i1 true\), !dbg !. + message_pass() + # CHECK-NOT: call void @subkernel_send_message\(i32 ., i1 false, i8 1, i8 1, .*\), !dbg !. + # CHECK: call i8 @subkernel_await_message\(i32 2, i64 10000, { i8\*, i32 }\* nonnull .*, i8 1, i8 1\), !dbg !. + subkernel_recv("message", TInt32) + + +# CHECK-L: declare void @subkernel_load_run(i32, i8, i1) local_unnamed_addr +# CHECK-NOT-L: declare void @subkernel_send_message(i32, i1, i8, i8, { i8*, i32 }*, i8**) local_unnamed_addr +# CHECK-L: declare i8 @subkernel_await_message(i32, i64, { i8*, i32 }*, i8, i8) local_unnamed_addr +# CHECK-NOT-L: declare void @subkernel_await_finish(i32, i64) local_unnamed_addr +@subkernel(destination=1) +def message_pass() -> TNone: + subkernel_send(0, "message", 15) diff --git a/artiq/test/lit/embedding/subkernel_message_send.py b/artiq/test/lit/embedding/subkernel_message_send.py new file mode 100644 index 000000000..3f0f77e35 --- /dev/null +++ b/artiq/test/lit/embedding/subkernel_message_send.py @@ -0,0 +1,20 @@ +# RUN: env ARTIQ_DUMP_LLVM=%t %python -m artiq.compiler.testbench.embedding +compile %s +# RUN: OutputCheck %s --file-to-check=%t.ll + +from artiq.language.core import * +from artiq.language.types import * + +@kernel +def entrypoint(): + # CHECK: call void @subkernel_load_run\(i32 1, i8 1, i1 true\), !dbg !. + message_pass() + # CHECK: call void @subkernel_send_message\(i32 2, i1 false, i8 1, i8 1, .*\), !dbg !. + # CHECK-NOT: call i8 @subkernel_await_message\(i32 1, i64 10000, { i8\*, i32 }\* nonnull .*, i8 1, i8 1\), !dbg !. + subkernel_send(1, "message", 15) + + +# CHECK-L: declare void @subkernel_load_run(i32, i8, i1) local_unnamed_addr +# CHECK-L: declare void @subkernel_send_message(i32, i1, i8, i8, { i8*, i32 }*, i8**) local_unnamed_addr +@subkernel(destination=1) +def message_pass() -> TNone: + subkernel_recv("message", TInt32)