From 948482f6a20f25b7115d21a0edce508c5c676a5f Mon Sep 17 00:00:00 2001 From: foreman Date: Tue, 25 Oct 2016 21:41:52 -0400 Subject: [PATCH] P4 to Git Change 1331723 by lmoriche@lmoriche_opencl_dev on 2016/10/25 21:34:48 SWDEV-105604 - OpenCL program manager for LC on PAL - Set the global offsets hidden arguments. Affected files ... ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palkernel.cpp#15 edit --- rocclr/runtime/device/pal/palkernel.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/rocclr/runtime/device/pal/palkernel.cpp b/rocclr/runtime/device/pal/palkernel.cpp index 46e95682dc..46d7337ec5 100644 --- a/rocclr/runtime/device/pal/palkernel.cpp +++ b/rocclr/runtime/device/pal/palkernel.cpp @@ -1162,14 +1162,21 @@ HSAILKernel::loadArguments( #if defined(WITH_LIGHTNING_COMPILER) //!!!!!FIXME_lmoriche: fix the hidden args - size_t zero = 0; - WriteAqlArg(&aqlArgBuf, &zero, sizeof(zero)); - WriteAqlArg(&aqlArgBuf, &zero, sizeof(zero)); - WriteAqlArg(&aqlArgBuf, &zero, sizeof(zero)); + size_t extraArgs[] = { 0, 0, 0, 0 }; + // The HLC generates up to 3 additional arguments for the global offsets + for (uint i = 0; i < sizes.dimensions(); ++i) { + extraArgs[i] = sizes.offset()[i]; + } + WriteAqlArg(&aqlArgBuf, &extraArgs[0], sizeof(size_t)); + WriteAqlArg(&aqlArgBuf, &extraArgs[1], sizeof(size_t)); + WriteAqlArg(&aqlArgBuf, &extraArgs[2], sizeof(size_t)); + WriteAqlArg(&aqlArgBuf, &extraArgs[3], sizeof(size_t)); #endif // defined(WITH_LIGHTNING_COMPILER) +#if !defined(WITH_LIGHTNING_COMPILER) // HSAIL kernarg segment size is rounded up to multiple of 16. aqlArgBuf = amd::alignUp(aqlArgBuf, 16); +#endif // !defined(WITH_LIGHTNING_COMPILER) assert((aqlArgBuf == (gpu.cb(0)->sysMemCopy() + argsBufferSize())) && "Size and the number of arguments don't match!"); hsa_kernel_dispatch_packet_t* hsaDisp =