P4 to Git Change 1516358 by emankov@em-hsa on 2018/02/15 08:04:51
SWDEV-143465 - Revert of #1516121
[Reason]
A plenty of tests are failed.
After the changing stack logic a lot of tests should be fixed, a lot - to be removed from testing.
#1516121 will be submitted again after renewal/removal of all the failed tests.
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/legacy-lib/backends/common/v0_8/if_acl.cpp#10 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/v0_8/if_acl.cpp#98 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.cpp#583 edit
[ROCm/clr commit: f63eb0e998]
Este commit está contenido en:
@@ -1425,47 +1425,18 @@ IsValidCompilationOptions(aclBinary *bin, aclLogFunction compile_callback)
|
||||
amd::option::Options* opts = reinterpret_cast<amd::option::Options*>(bin->options);
|
||||
std::string error_msg;
|
||||
if (isHSAILTarget(bin->target)) {
|
||||
if (opts->oVariables->XLang) {
|
||||
std::string ext = std::string(opts->oVariables->XLang);
|
||||
if (ext == "clc++" || ext == "spir") {
|
||||
error_msg = "Error: HSAIL doesn't support OpenCL extension " + ext + ".";
|
||||
error_code = ACL_INVALID_OPTION;
|
||||
}
|
||||
}
|
||||
if (getFamilyEnum(&bin->target) == FAMILY_SI) {
|
||||
std::string device = std::string(getDeviceName(bin->target));
|
||||
error_msg = "Error: HSAIL doesn't support device " + device + ".";
|
||||
error_code = ACL_INVALID_TARGET;
|
||||
}
|
||||
if (opts->oVariables->Legacy) {
|
||||
if (error_msg.empty()) {
|
||||
error_code = ACL_INVALID_OPTION;
|
||||
}
|
||||
else {
|
||||
error_msg += "\n";
|
||||
}
|
||||
error_msg += "Error: AMDIL wasn't forced by -legacy option due to the following conflicting HSAIL only option(s):";
|
||||
if (opts->oVariables->Frontend) {
|
||||
std::string frontend = std::string(opts->oVariables->Frontend);
|
||||
if (frontend == "clang") {
|
||||
error_msg += " -frontend=clang";
|
||||
}
|
||||
}
|
||||
if (opts->oVariables->CLStd) {
|
||||
std::string sCL = std::string(opts->oVariables->CLStd);
|
||||
std::string major = sCL.substr(2, 1);
|
||||
if (std::stoul(major) >= 2) {
|
||||
error_msg += " -cl-std=" + sCL;
|
||||
}
|
||||
}
|
||||
if (opts->oVariables->BinaryIsSpirv) {
|
||||
error_msg += " -binary_is_spirv";
|
||||
}
|
||||
}
|
||||
if (opts->oVariables->XLang) {
|
||||
std::string ext = std::string(opts->oVariables->XLang);
|
||||
if (ext == "clc++" || ext == "spir") {
|
||||
if (error_msg.empty()) {
|
||||
error_code = ACL_INVALID_OPTION;
|
||||
} else {
|
||||
error_msg += "\n";
|
||||
}
|
||||
error_msg += "Error: HSAIL doesn't support OpenCL extension " + ext + ".";
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ACL_SUCCESS != error_code && compile_callback) {
|
||||
compile_callback(error_msg.c_str(), error_msg.size());
|
||||
|
||||
@@ -242,6 +242,7 @@ bool NullDevice::isHsailProgram(amd::option::Options* options) {
|
||||
bool isHSAILcapable = settings().hsail_;
|
||||
bool isBlit = false;
|
||||
bool isSPIRV = false;
|
||||
bool isLangExt = false;
|
||||
bool isClang = false;
|
||||
bool isEDG = false;
|
||||
bool isLegacy = false;
|
||||
@@ -269,6 +270,10 @@ bool NullDevice::isHsailProgram(amd::option::Options* options) {
|
||||
if (!isLegacy) {
|
||||
isLegacy = op->oVariables->Legacy;
|
||||
}
|
||||
if (!isLangExt) {
|
||||
isLangExt = op->isCStrOptionsEqual(op->oVariables->XLang, "clc++") ||
|
||||
op->isCStrOptionsEqual(op->oVariables->XLang, "spir");
|
||||
}
|
||||
// Checks Frontend option only from input *options, not from Env,
|
||||
// because they might be only calculated by RT based on the binaries to link.
|
||||
// -frontend is being queried now instead of -cl-std=CL2.0, because the last one
|
||||
@@ -291,7 +296,7 @@ bool NullDevice::isHsailProgram(amd::option::Options* options) {
|
||||
if (isSPIRV || (isBlit && isCIPlus && isHSAILcapable) || isClang || isOCL20) {
|
||||
return true;
|
||||
}
|
||||
if (isLegacy || !isHSAILcapable || isEDG) {
|
||||
if (isLegacy || !isHSAILcapable || isEDG || isLangExt) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
||||
Referencia en una nueva incidencia
Block a user