summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrandon Potter <brandon.potter@amd.com>2016-12-02 18:01:42 -0500
committerBrandon Potter <brandon.potter@amd.com>2016-12-02 18:01:42 -0500
commit35ba10300977bfbaf0e02ed52de7ea1cd3817d29 (patch)
treedb8df9accdde22613adcc2a8e41dad8b22583496
parent38708f369bc5ec6f6a4db973d0413f0b3ce7f97a (diff)
downloadgem5-35ba10300977bfbaf0e02ed52de7ea1cd3817d29.tar.xz
hsail: remove the panic guarding function directives
HSA functions calls are still not supported properly with HSAIL, but the recent AMP runtime modifications rely on being able to parse the BRIG/HSAIL files that are extracted from the application binaries. We need to parse the function call HSAIL definitions, but we do not actually need to make the function calls. The reason that this happens is that HCC appends a set of routines to every HSAIL binary that it creates. These extra, unnecessary routines exist in the HCC source as a file; this file is cat'd onto everything that the compiler outputs before being assembled into the application's binary. HCC does this because it might call these helper functions. However, it doesn't actually appear to do so in the AMP codes so we just parse these functions with the HSAIL parser and then ignore them.
-rw-r--r--src/gpu-compute/brig_object.cc8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/gpu-compute/brig_object.cc b/src/gpu-compute/brig_object.cc
index 7cc9b7cc4..21b7d4433 100644
--- a/src/gpu-compute/brig_object.cc
+++ b/src/gpu-compute/brig_object.cc
@@ -176,8 +176,10 @@ BrigObject::processDirectives(const BrigBase *dirPtr, const BrigBase *endPtr,
p->firstCodeBlockEntry, p->nextModuleEntry);
if (p->firstCodeBlockEntry != p->nextModuleEntry) {
- panic("Function calls are not fully supported yet!!: %s\n",
- getString(p->name));
+ // Function calls are not supported. We allow the BRIG
+ // object file to create stubs, but the function calls will
+ // not work properly if the application makes use of them.
+ warn("HSA function invocations are unsupported.\n");
const char *name = getString(p->name);
@@ -199,8 +201,8 @@ BrigObject::processDirectives(const BrigBase *dirPtr, const BrigBase *endPtr,
panic("Multiple definition of Function!!: %s\n",
getString(p->name));
}
-
}
+
nextDirPtr = getCodeSectionEntry(p->nextModuleEntry);
}
break;