SWDEV-254185 - Added support to pass include headers to hipRTC
Change-Id: Ia19e6806a476d3c6ecd3e9a89c3ed72953a4900c
[ROCm/hip commit: dc1459cfb1]
This commit is contained in:
committed by
Anusha Godavarthy Surya
parent
4a8a95a8e9
commit
81b6ad7d35
@@ -41,9 +41,6 @@ public:
|
||||
std::map<std::string, std::pair<std::string, std::string>> nameExpresssion_;
|
||||
|
||||
static ProgramState& instance();
|
||||
void createProgramHeaders(amd::Program* program, int numHeaders,
|
||||
const char** headers, const char** headerNames);
|
||||
void getProgramHeaders(amd::Program* program, int* numHeaders, char** headers, char ** headerNames);
|
||||
uint32_t addNameExpression(const char* name_expression);
|
||||
char* getLoweredName(const char* name_expression);
|
||||
};
|
||||
@@ -57,30 +54,6 @@ ProgramState& ProgramState::instance() {
|
||||
return *programState_;
|
||||
}
|
||||
|
||||
void ProgramState::createProgramHeaders(amd::Program* program, int numHeaders,
|
||||
const char** headers, const char** headerNames) {
|
||||
amd::ScopedLock lock(lock_);
|
||||
std::vector<std::string> vHeaderNames;
|
||||
std::vector<std::string> vHeaders;
|
||||
for (auto i = 0; i != numHeaders; ++i) {
|
||||
vHeaders.emplace_back(headers[i]);
|
||||
vHeaderNames.emplace_back(headerNames[i]);
|
||||
progHeaders_[program] = std::make_pair(std::move(vHeaders), std::move(vHeaderNames));
|
||||
}
|
||||
}
|
||||
|
||||
void ProgramState::getProgramHeaders(amd::Program* program, int* numHeaders,
|
||||
char** headers, char ** headerNames) {
|
||||
amd::ScopedLock lock(lock_);
|
||||
|
||||
const auto it = progHeaders_.find(program);
|
||||
if (it != progHeaders_.cend()) {
|
||||
*numHeaders = it->second.first.size();
|
||||
*headers = reinterpret_cast<char*>(it->second.first.data());
|
||||
*headerNames = reinterpret_cast<char*>(it->second.second.data());
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t ProgramState::addNameExpression(const char* name_expression) {
|
||||
amd::ScopedLock lock(lock_);
|
||||
|
||||
@@ -218,7 +191,8 @@ hiprtcResult hiprtcCreateProgram(hiprtcProgram* prog, const char* src, const cha
|
||||
HIPRTC_RETURN(HIPRTC_ERROR_INVALID_INPUT);
|
||||
}
|
||||
|
||||
amd::Program* program = new amd::Program(*hip::getCurrentDevice()->asContext(), src, amd::Program::HIP);
|
||||
amd::Program* program = new amd::Program(*hip::getCurrentDevice()->asContext(), src, amd::Program::HIP,
|
||||
numHeaders, headers, headerNames);
|
||||
if (program == NULL) {
|
||||
HIPRTC_RETURN(HIPRTC_ERROR_INVALID_INPUT);
|
||||
}
|
||||
@@ -228,8 +202,6 @@ hiprtcResult hiprtcCreateProgram(hiprtcProgram* prog, const char* src, const cha
|
||||
HIPRTC_RETURN(HIPRTC_ERROR_PROGRAM_CREATION_FAILURE);
|
||||
}
|
||||
|
||||
ProgramState::instance().createProgramHeaders(program, numHeaders, headers, headerNames);
|
||||
|
||||
*prog = reinterpret_cast<hiprtcProgram>(as_cl(program));
|
||||
|
||||
HIPRTC_RETURN(HIPRTC_SUCCESS);
|
||||
|
||||
Reference in New Issue
Block a user