@@ -0,0 +1,67 @@
|
||||
#include "hsacompilerlib.hpp"
|
||||
#include "utils/flags.hpp"
|
||||
|
||||
#include "acl.h"
|
||||
|
||||
namespace oclhsa {
|
||||
|
||||
void* g_complibModule = NULL;
|
||||
struct CompLibApi g_complibApi;
|
||||
|
||||
|
||||
//
|
||||
// g_complibModule is defined in LoadCompLib(). This macro must be used only in LoadCompLib() function.
|
||||
//
|
||||
#define LOADSYMBOL(api) \
|
||||
g_complibApi._##api = (pfn_##api) amd::Os::getSymbol(g_complibModule, #api); \
|
||||
if( g_complibApi._##api == NULL ) { \
|
||||
LogError ("amd::Os::getSymbol() for exported func " #api " failed."); \
|
||||
amd::Os::unloadLibrary(g_complibModule); \
|
||||
return false; \
|
||||
}
|
||||
|
||||
|
||||
bool LoadCompLib(bool offline)
|
||||
{
|
||||
g_complibModule = amd::Os::loadLibrary("amdhsacl" LP64_SWITCH(LINUX_SWITCH("32",""), "64"));
|
||||
if( g_complibModule == NULL ) {
|
||||
if (!offline) {
|
||||
LogError( "amd::Os::loadLibrary() for loading of amdhsacl.dll failed.");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
LOADSYMBOL(aclCompilerInit)
|
||||
LOADSYMBOL(aclGetTargetInfo)
|
||||
LOADSYMBOL(aclBinaryInit)
|
||||
LOADSYMBOL(aclInsertSection)
|
||||
LOADSYMBOL(aclCompile)
|
||||
LOADSYMBOL(aclCompilerFini)
|
||||
LOADSYMBOL(aclBinaryFini)
|
||||
LOADSYMBOL(aclExtractSection)
|
||||
LOADSYMBOL(aclWriteToMem)
|
||||
LOADSYMBOL(aclQueryInfo)
|
||||
LOADSYMBOL(aclGetDeviceBinary)
|
||||
LOADSYMBOL(aclExtractSymbol)
|
||||
LOADSYMBOL(aclGetCompilerLog)
|
||||
LOADSYMBOL(aclCreateFromBinary)
|
||||
LOADSYMBOL(aclReadFromMem)
|
||||
|
||||
LOADSYMBOL(aclRemoveSymbol)
|
||||
LOADSYMBOL(aclInsertSymbol)
|
||||
LOADSYMBOL(aclWriteToFile)
|
||||
LOADSYMBOL(aclBinaryVersion)
|
||||
LOADSYMBOL(aclLink)
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void UnloadCompLib()
|
||||
{
|
||||
if( g_complibModule )
|
||||
{
|
||||
amd::Os::unloadLibrary(g_complibModule);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace oclhsa
|
||||
Verwijs in nieuw issue
Block a user