@@ -175,9 +175,11 @@ static int MemoryMapCounter = MemoryMapCounterBase;
175175static constexpr int PauseWaitOnIdx = KernelLaunchCounterBase + 1 ;
176176
177177// Mock redifinitions
178- static pi_result redefinedKernelGetGroupInfoAfter (
179- pi_kernel kernel, pi_device device, pi_kernel_group_info param_name,
180- size_t param_value_size, void *param_value, size_t *param_value_size_ret) {
178+ static pi_result redefinedKernelGetGroupInfo (pi_kernel kernel, pi_device device,
179+ pi_kernel_group_info param_name,
180+ size_t param_value_size,
181+ void *param_value,
182+ size_t *param_value_size_ret) {
181183 if (param_name == PI_KERNEL_GROUP_INFO_COMPILE_WORK_GROUP_SIZE) {
182184 if (param_value_size_ret) {
183185 *param_value_size_ret = 3 * sizeof (size_t );
@@ -192,23 +194,25 @@ static pi_result redefinedKernelGetGroupInfoAfter(
192194 return PI_SUCCESS;
193195}
194196
195- static pi_result
196- redefinedEnqueueKernelLaunchAfter (pi_queue, pi_kernel, pi_uint32 ,
197- const size_t *, const size_t *,
198- const size_t *LocalSize, pi_uint32 NDeps ,
199- const pi_event *Deps, pi_event *RetEvent) {
200- static pi_event UserKernelEvent = *RetEvent ;
201- int Val = KernelLaunchCounter++;
197+ static pi_result redefinedEnqueueKernelLaunch (pi_queue, pi_kernel, pi_uint32,
198+ const size_t *, const size_t * ,
199+ const size_t *LocalSize ,
200+ pi_uint32 N, const pi_event *Deps ,
201+ pi_event *RetEvent) {
202+ int *Ret = new int [ 1 ] ;
203+ *Ret = KernelLaunchCounter++;
202204 // This output here is to reduce amount of time requried to debug/reproduce a
203205 // failing test upon feature break
204- printf (" Enqueued %i\n " , Val );
206+ printf (" Enqueued %i\n " , *Ret );
205207
206- if (PauseWaitOnIdx == Val ) {
208+ if (PauseWaitOnIdx == *Ret ) {
207209 // It should be copier kernel. Check if it depends on user's one.
208- EXPECT_EQ (NDeps, 1U );
209- EXPECT_EQ (Deps[0 ], UserKernelEvent);
210+ EXPECT_EQ (N, 1U );
211+ int EventIdx = reinterpret_cast <int *>(Deps[0 ])[0 ];
212+ EXPECT_EQ (EventIdx, 0 );
210213 }
211214
215+ *RetEvent = reinterpret_cast <pi_event>(Ret);
212216 return PI_SUCCESS;
213217}
214218
@@ -239,30 +243,56 @@ static pi_result redefinedEventsWaitNegative(pi_uint32 num_events,
239243 return PI_SUCCESS;
240244}
241245
242- static pi_result redefinedEnqueueMemBufferMapAfter (
246+ static pi_result
247+ redefinedMemBufferCreate (pi_context context, pi_mem_flags flags, size_t size,
248+ void *host_ptr, pi_mem *ret_mem,
249+ const pi_mem_properties *properties = nullptr ) {
250+ static size_t MemAddrCounter = 1 ;
251+ *ret_mem = (pi_mem)MemAddrCounter++;
252+ return PI_SUCCESS;
253+ }
254+
255+ static pi_result redefinedMemRelease (pi_mem mem) { return PI_SUCCESS; }
256+
257+ static pi_result redefinedKernelSetArg (pi_kernel kernel, pi_uint32 arg_index,
258+ size_t arg_size, const void *arg_value) {
259+ return PI_SUCCESS;
260+ }
261+
262+ static pi_result redefinedEnqueueMemBufferMap (
243263 pi_queue command_queue, pi_mem buffer, pi_bool blocking_map,
244264 pi_map_flags map_flags, size_t offset, size_t size,
245265 pi_uint32 num_events_in_wait_list, const pi_event *event_wait_list,
246266 pi_event *RetEvent, void **RetMap) {
247- MemoryMapCounter++;
267+ int *Ret = new int [1 ];
268+ *Ret = MemoryMapCounter++;
248269 // This output here is to reduce amount of time requried to debug/reproduce a
249270 // failing test upon feature break
250- printf (" Memory map %i\n " , MemoryMapCounter);
271+ printf (" Memory map %i\n " , *Ret);
272+ *RetEvent = reinterpret_cast <pi_event>(Ret);
251273
252274 *RetMap = (void *)&ExpectedToOutput;
253275
254276 return PI_SUCCESS;
255277}
256278
279+ static pi_result redefinedExtKernelSetArgMemObj (pi_kernel kernel,
280+ pi_uint32 arg_index,
281+ const pi_mem *arg_value) {
282+ return PI_SUCCESS;
283+ }
284+
257285static void setupMock (sycl::unittest::PiMock &Mock) {
258286 using namespace sycl ::detail;
259- Mock.redefineAfter <PiApiKind::piKernelGetGroupInfo>(
260- redefinedKernelGetGroupInfoAfter);
261- Mock.redefineAfter <PiApiKind::piEnqueueKernelLaunch>(
262- redefinedEnqueueKernelLaunchAfter);
263- Mock.redefineAfter <PiApiKind::piEnqueueMemBufferMap>(
264- redefinedEnqueueMemBufferMapAfter);
265- Mock.redefineBefore <PiApiKind::piEventsWait>(redefinedEventsWaitPositive);
287+ Mock.redefine <PiApiKind::piKernelGetGroupInfo>(redefinedKernelGetGroupInfo);
288+ Mock.redefine <PiApiKind::piEnqueueKernelLaunch>(redefinedEnqueueKernelLaunch);
289+ Mock.redefine <PiApiKind::piMemBufferCreate>(redefinedMemBufferCreate);
290+ Mock.redefine <PiApiKind::piMemRelease>(redefinedMemRelease);
291+ Mock.redefine <PiApiKind::piKernelSetArg>(redefinedKernelSetArg);
292+ Mock.redefine <PiApiKind::piEnqueueMemBufferMap>(redefinedEnqueueMemBufferMap);
293+ Mock.redefine <PiApiKind::piEventsWait>(redefinedEventsWaitPositive);
294+ Mock.redefine <PiApiKind::piextKernelSetArgMemObj>(
295+ redefinedExtKernelSetArgMemObj);
266296}
267297
268298namespace TestInteropKernel {
@@ -287,15 +317,12 @@ static pi_result redefinedKernelGetInfo(pi_kernel Kernel,
287317 }
288318
289319 if (PI_KERNEL_INFO_PROGRAM == ParamName) {
290- pi_program PIProgram = nullptr ;
291- pi_result Res = mock_piProgramCreate (/* pi_context=*/ 0x0 , /* *il*/ nullptr ,
292- /* length=*/ 0 , &PIProgram);
293- assert (PI_SUCCESS == Res);
320+ cl_program X = (cl_program)1 ;
294321
295322 if (ParamValue)
296- memcpy (ParamValue, &PIProgram , sizeof (PIProgram ));
323+ memcpy (ParamValue, &X , sizeof (X ));
297324 if (ParamValueSizeRet)
298- *ParamValueSizeRet = sizeof (PIProgram );
325+ *ParamValueSizeRet = sizeof (X );
299326
300327 return PI_SUCCESS;
301328 }
@@ -323,11 +350,13 @@ static pi_result redefinedEnqueueKernelLaunch(pi_queue, pi_kernel, pi_uint32,
323350 const size_t *LocalSize,
324351 pi_uint32 N, const pi_event *Deps,
325352 pi_event *RetEvent) {
326- int Val = KernelLaunchCounter++;
353+ int *Ret = new int [1 ];
354+ *Ret = KernelLaunchCounter++;
327355 // This output here is to reduce amount of time requried to debug/reproduce a
328356 // failing test upon feature break
329- printf (" Enqueued %i\n " , Val );
357+ printf (" Enqueued %i\n " , *Ret );
330358
359+ *RetEvent = reinterpret_cast <pi_event>(Ret);
331360 return PI_SUCCESS;
332361}
333362
@@ -397,18 +426,21 @@ static void setupMockForInterop(sycl::unittest::PiMock &Mock,
397426 TestInteropKernel::Device = &Dev;
398427 TestInteropKernel::Context = &Ctx;
399428
400- Mock.redefineAfter <PiApiKind::piKernelGetGroupInfo>(
401- redefinedKernelGetGroupInfoAfter);
402- Mock.redefineBefore <PiApiKind::piEnqueueKernelLaunch>(
429+ Mock.redefine <PiApiKind::piKernelGetGroupInfo>(redefinedKernelGetGroupInfo);
430+ Mock.redefine <PiApiKind::piEnqueueKernelLaunch>(
403431 TestInteropKernel::redefinedEnqueueKernelLaunch);
404- Mock.redefineAfter <PiApiKind::piEnqueueMemBufferMap>(
405- redefinedEnqueueMemBufferMapAfter);
406- Mock.redefineBefore <PiApiKind::piEventsWait>(redefinedEventsWaitNegative);
407- Mock.redefineBefore <PiApiKind::piKernelGetInfo>(
432+ Mock.redefine <PiApiKind::piMemBufferCreate>(redefinedMemBufferCreate);
433+ Mock.redefine <PiApiKind::piMemRelease>(redefinedMemRelease);
434+ Mock.redefine <PiApiKind::piKernelSetArg>(redefinedKernelSetArg);
435+ Mock.redefine <PiApiKind::piEnqueueMemBufferMap>(redefinedEnqueueMemBufferMap);
436+ Mock.redefine <PiApiKind::piEventsWait>(redefinedEventsWaitNegative);
437+ Mock.redefine <PiApiKind::piextKernelSetArgMemObj>(
438+ redefinedExtKernelSetArgMemObj);
439+ Mock.redefine <PiApiKind::piKernelGetInfo>(
408440 TestInteropKernel::redefinedKernelGetInfo);
409- Mock.redefineBefore <PiApiKind::piProgramGetInfo>(
441+ Mock.redefine <PiApiKind::piProgramGetInfo>(
410442 TestInteropKernel::redefinedProgramGetInfo);
411- Mock.redefineBefore <PiApiKind::piProgramGetBuildInfo>(
443+ Mock.redefine <PiApiKind::piProgramGetBuildInfo>(
412444 TestInteropKernel::redefinedProgramGetBuildInfo);
413445}
414446
@@ -549,15 +581,10 @@ TEST(Assert, TestInteropKernelNegative) {
549581
550582 sycl::queue Queue{Ctx, Dev};
551583
552- pi_kernel PIKernel = nullptr ;
553-
554- pi_result Res = mock_piKernelCreate (
555- /* pi_program=*/ 0x0 , /* kernel_name=*/ " dummy_kernel" , &PIKernel);
556- assert (PI_SUCCESS == Res);
557-
584+ cl_kernel CLKernel = (cl_kernel)(0x01 );
558585 // TODO use make_kernel. This requires a fix in backend.cpp to get plugin
559586 // from context instead of free getPlugin to alllow for mocking of its methods
560- sycl::kernel KInterop ((cl_kernel)PIKernel , Ctx);
587+ sycl::kernel KInterop (CLKernel , Ctx);
561588
562589 Queue.submit ([&](sycl::handler &H) { H.single_task (KInterop); });
563590
0 commit comments