@@ -38,36 +38,19 @@ struct LaunchKernelTestBase : OffloadQueueTest {
3838 ol_kernel_launch_size_args_t LaunchArgs{};
3939};
4040
41- struct olLaunchKernelTest : LaunchKernelTestBase {
42- void SetUp () override {
43- RETURN_ON_FATAL_FAILURE (LaunchKernelTestBase::SetUpKernel (" foo" ));
44- }
45- };
46- OFFLOAD_TESTS_INSTANTIATE_DEVICE_FIXTURE (olLaunchKernelTest);
47-
48- struct olLaunchKernelNoArgsTest : LaunchKernelTestBase {
49- void SetUp () override {
50- RETURN_ON_FATAL_FAILURE (LaunchKernelTestBase::SetUpKernel (" noargs" ));
51- }
52- };
53- OFFLOAD_TESTS_INSTANTIATE_DEVICE_FIXTURE (olLaunchKernelNoArgsTest);
54-
55- struct olLaunchKernelLocalMemTest : LaunchKernelTestBase {
56- void SetUp () override {
57- RETURN_ON_FATAL_FAILURE (LaunchKernelTestBase::SetUpKernel (" localmem" ));
58- }
59- };
60- OFFLOAD_TESTS_INSTANTIATE_DEVICE_FIXTURE (olLaunchKernelLocalMemTest);
61-
62- struct olLaunchKernelLocalMemReductionTest : LaunchKernelTestBase {
63- void SetUp () override {
64- RETURN_ON_FATAL_FAILURE (
65- LaunchKernelTestBase::SetUpKernel (" localmem_reduction" ));
66- }
67- };
68- OFFLOAD_TESTS_INSTANTIATE_DEVICE_FIXTURE (olLaunchKernelLocalMemReductionTest);
69-
70- TEST_P (olLaunchKernelTest, Success) {
41+ #define KERNEL_TEST (NAME, KERNEL ) \
42+ struct olLaunchKernel ##NAME##Test : LaunchKernelTestBase { \
43+ void SetUp () override { LaunchKernelTestBase::SetUpKernel (#KERNEL); } \
44+ }; \
45+ OFFLOAD_TESTS_INSTANTIATE_DEVICE_FIXTURE (olLaunchKernel##NAME##Test);
46+
47+ KERNEL_TEST (Foo, foo)
48+ KERNEL_TEST(NoArgs, noargs)
49+ KERNEL_TEST(LocalMem, localmem)
50+ KERNEL_TEST(LocalMemReduction, localmem_reduction)
51+ KERNEL_TEST(LocalMemStatic, localmem_static)
52+
53+ TEST_P(olLaunchKernelFooTest, Success) {
7154 void *Mem;
7255 ASSERT_SUCCESS (olMemAlloc (Device, OL_ALLOC_TYPE_MANAGED,
7356 LaunchArgs.GroupSize .x * sizeof (uint32_t ), &Mem));
@@ -95,7 +78,7 @@ TEST_P(olLaunchKernelNoArgsTest, Success) {
9578 ASSERT_SUCCESS (olWaitQueue (Queue));
9679}
9780
98- TEST_P (olLaunchKernelTest , SuccessSynchronous) {
81+ TEST_P (olLaunchKernelFooTest , SuccessSynchronous) {
9982 void *Mem;
10083 ASSERT_SUCCESS (olMemAlloc (Device, OL_ALLOC_TYPE_MANAGED,
10184 LaunchArgs.GroupSize .x * sizeof (uint32_t ), &Mem));
@@ -162,3 +145,26 @@ TEST_P(olLaunchKernelLocalMemReductionTest, Success) {
162145
163146 ASSERT_SUCCESS (olMemFree (Mem));
164147}
148+
149+ TEST_P (olLaunchKernelLocalMemStaticTest, Success) {
150+ LaunchArgs.NumGroups .x = 4 ;
151+ LaunchArgs.DynSharedMemory = 0 ;
152+
153+ void *Mem;
154+ ASSERT_SUCCESS (olMemAlloc (Device, OL_ALLOC_TYPE_MANAGED,
155+ LaunchArgs.NumGroups .x * sizeof (uint32_t ), &Mem));
156+ struct {
157+ void *Mem;
158+ } Args{Mem};
159+
160+ ASSERT_SUCCESS (olLaunchKernel (Queue, Device, Kernel, &Args, sizeof (Args),
161+ &LaunchArgs, nullptr ));
162+
163+ ASSERT_SUCCESS (olWaitQueue (Queue));
164+
165+ uint32_t *Data = (uint32_t *)Mem;
166+ for (uint32_t i = 0 ; i < LaunchArgs.NumGroups .x ; i++)
167+ ASSERT_EQ (Data[i], 2 * LaunchArgs.GroupSize .x );
168+
169+ ASSERT_SUCCESS (olMemFree (Mem));
170+ }
0 commit comments