summaryrefslogtreecommitdiff
path: root/backend/src/backend/program.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'backend/src/backend/program.cpp')
-rw-r--r--backend/src/backend/program.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/backend/src/backend/program.cpp b/backend/src/backend/program.cpp
index 20471f94..40adc1d0 100644
--- a/backend/src/backend/program.cpp
+++ b/backend/src/backend/program.cpp
@@ -555,6 +555,7 @@ namespace gbe {
//Handle -cl-opt-disable in llvmToGen, skip here
const std::string unsupportedOptions("-cl-denorms-are-zero, -cl-strict-aliasing, -cl-opt-disable,"
"-cl-no-signed-zeros, -cl-fp32-correctly-rounded-divide-sqrt");
+ bool useDefaultCLCVersion = true;
while (end != std::string::npos) {
end = options.find(' ', start);
std::string str = options.substr(start, end - start);
@@ -564,9 +565,24 @@ namespace gbe {
if(str == "-cl-fast-relaxed-math") bFastMath = true;
if(unsupportedOptions.find(str) != std::string::npos)
continue;
+ if(str.find("-cl-std=") != std::string::npos) {
+ useDefaultCLCVersion = false;
+ if (str == "-cl-std=CL1.1")
+ args.push_back("-D__OPENCL_C_VERSION__=110");
+ else if (str == "-cl-std=CL1.2")
+ args.push_back("-D__OPENCL_C_VERSION__=120");
+ else {
+ if (err && stringSize > 0 && errSize)
+ *errSize = snprintf(err, stringSize, "Invalid build option: %s\n", str.c_str());
+ return false;
+ }
+ continue;
+ }
useless.push_back(str);
args.push_back(str.c_str());
}
+ if (useDefaultCLCVersion)
+ args.push_back("-D__OPENCL_C_VERSION__=120");
args.push_back("-mllvm");
args.push_back("-inline-threshold=200000");
#ifdef GEN7_SAMPLER_CLAMP_BORDER_WORKAROUND
@@ -759,7 +775,6 @@ namespace gbe {
"-cl-single-precision-constant",
// "-cl-denorms-are-zero",
"-cl-fast-relaxed-math",
- "-cl-std=",
};
const char * incompatible_defs[] = {
"GET_FLOAT_WORD",