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.
This commit is contained in:
Brandon Potter 2016-12-02 18:01:42 -05:00
parent 38708f369b
commit 35ba103009

View file

@ -176,8 +176,10 @@ BrigObject::processDirectives(const BrigBase *dirPtr, const BrigBase *endPtr,
p->firstCodeBlockEntry, p->nextModuleEntry); p->firstCodeBlockEntry, p->nextModuleEntry);
if (p->firstCodeBlockEntry != p->nextModuleEntry) { if (p->firstCodeBlockEntry != p->nextModuleEntry) {
panic("Function calls are not fully supported yet!!: %s\n", // Function calls are not supported. We allow the BRIG
getString(p->name)); // 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); 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", panic("Multiple definition of Function!!: %s\n",
getString(p->name)); getString(p->name));
} }
} }
nextDirPtr = getCodeSectionEntry(p->nextModuleEntry); nextDirPtr = getCodeSectionEntry(p->nextModuleEntry);
} }
break; break;