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 =