aboutsummaryrefslogtreecommitdiff
path: root/src/core/CL/CLCompileContext.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/CL/CLCompileContext.cpp')
-rw-r--r--src/core/CL/CLCompileContext.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/core/CL/CLCompileContext.cpp b/src/core/CL/CLCompileContext.cpp
index 3db0fe515a..bf3a866e4b 100644
--- a/src/core/CL/CLCompileContext.cpp
+++ b/src/core/CL/CLCompileContext.cpp
@@ -29,6 +29,8 @@
#include "arm_compute/core/Utils.h"
#include "support/StringSupport.h"
+#include <regex>
+
namespace arm_compute
{
CLBuildOptions::CLBuildOptions()
@@ -263,6 +265,19 @@ std::string CLCompileContext::generate_build_options(const StringSet &build_opti
ARM_COMPUTE_ERROR("Non uniform workgroup size is not supported!!");
}
+ const GPUTarget arch = get_arch_from_target(_device.target());
+ if(arch != GPUTarget::UNKNOWN && arch != GPUTarget::MIDGARD)
+ {
+ const std::string device_vers = _device.device_version();
+ const std::regex ddk_regex("r([0-9]*)p[0-9]");
+ std::smatch ddk_match;
+
+ if(std::regex_search(device_vers, ddk_match, ddk_regex) && std::stoi(ddk_match[1]) >= 9)
+ {
+ concat_str += " -DUNROLL_WITH_PRAGMA ";
+ }
+ }
+
std::string build_options = stringify_set(build_options_set, kernel_path) + concat_str;
return build_options;