From d2d88e9da0f90ee46c34025cd76d0f20caac445b Mon Sep 17 00:00:00 2001 From: foreman Date: Thu, 8 Feb 2018 10:57:08 -0500 Subject: [PATCH] P4 to Git Change 1513893 by emankov@em-hsa on 2018/02/08 10:45:50 SWDEV-143465 - HSAIL - Add checks for OpenCL extension and device family FAMILY_SI devices and OpenCL extensions clc++ and spir are not supported by HSAIL. Affected only offline compilation via ACL API. [Reviewed] by Stas, http://ocltc.amd.com/reviews/r/14240 [Testing] aoc2, rga Affected files ... ... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/v0_8/if_acl.cpp#96 edit --- .../lib/backends/common/v0_8/if_acl.cpp | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/rocclr/compiler/lib/backends/common/v0_8/if_acl.cpp b/rocclr/compiler/lib/backends/common/v0_8/if_acl.cpp index 955fde6cae..c491d8f2c9 100644 --- a/rocclr/compiler/lib/backends/common/v0_8/if_acl.cpp +++ b/rocclr/compiler/lib/backends/common/v0_8/if_acl.cpp @@ -1420,7 +1420,29 @@ internal_compile_failure: acl_error IsValidCompilationOptions(aclBinary *bin, aclLogFunction compile_callback) { - return ACL_SUCCESS; + acl_error error_code = ACL_SUCCESS; +#if defined(WITH_TARGET_HSAIL) + amd::option::Options* opts = reinterpret_cast(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 (ACL_SUCCESS != error_code && compile_callback) { + compile_callback(error_msg.c_str(), error_msg.size()); + } +#endif + return error_code; } acl_error ACL_API_ENTRY