arm_compute v20.11
diff --git a/SConstruct b/SConstruct
index 373e561..3b2be11 100644
--- a/SConstruct
+++ b/SConstruct
@@ -25,12 +25,14 @@
import subprocess
def version_at_least(version, required):
- end = min(len(version), len(required))
- for i in range(0, end, 2):
- if int(version[i]) < int(required[i]):
+ version_list = version.split('.')
+ required_list = required.split('.')
+ end = min(len(version_list), len(required_list))
+ for i in range(0, end):
+ if int(version_list[i]) < int(required_list[i]):
return False
- elif int(version[i]) > int(required[i]):
+ elif int(version_list[i]) > int(required_list[i]):
return True
return True
@@ -42,7 +44,7 @@
BoolVariable("logging", "Logging (this flag is forced to 1 for debug=1)", False),
EnumVariable("arch", "Target Architecture", "armv7a",
allowed_values=("armv7a", "arm64-v8a", "arm64-v8.2-a", "arm64-v8.2-a-sve", "x86_32", "x86_64",
- "armv8a", "armv8.2-a", "armv8.2-a-sve", "armv8.6-a", "x86")),
+ "armv8a", "armv8.2-a", "armv8.2-a-sve", "armv8.6-a", "armv8.6-a-sve", "x86")),
EnumVariable("estate", "Execution State", "auto", allowed_values=("auto", "32", "64")),
EnumVariable("os", "Target OS", "linux", allowed_values=("linux", "android", "tizen", "bare_metal")),
EnumVariable("build", "Build type", "cross_compile", allowed_values=("native", "cross_compile", "embed_only")),
@@ -62,6 +64,8 @@
PathVariable("install_dir", "Specify sub-folder for the install", "", PathVariable.PathAccept),
BoolVariable("exceptions", "Enable/disable C++ exception support", True),
PathVariable("linker_script", "Use an external linker script", "", PathVariable.PathAccept),
+ ListVariable("custom_options", "Custom options that can be used to turn on/off features", "none", ["disable_mmla_fp"]),
+ ListVariable("data_type_support", "Enable a list of data types to support", "all", ["qasymm8", "qasymm8_signed", "qsymm16", "fp16", "fp32"]),
("toolchain_prefix", "Override the toolchain prefix", ""),
("compiler_prefix", "Override the compiler prefix", ""),
("extra_cxx_flags", "Extra CXX flags to be appended to the build command", ""),
@@ -204,7 +208,9 @@
env.Append(CXXFLAGS = ['-march=armv8-a'])
if 'v8.6-a' in env['arch']:
- env.Append(CPPDEFINES = ['MMLA_INT8', 'MMLA_FP32', 'V8P6', 'V8P6_BF', 'ARM_COMPUTE_FORCE_BF16'])
+ env.Append(CPPDEFINES = ['MMLA_INT8', 'V8P6', 'V8P6_BF', 'ARM_COMPUTE_FORCE_BF16'])
+ if "disable_mmla_fp" not in env['custom_options']:
+ env.Append(CPPDEFINES = ['MMLA_FP32'])
elif 'x86' in env['arch']:
if env['estate'] == '32':
@@ -256,7 +262,7 @@
if not GetOption("help"):
try:
- compiler_ver = subprocess.check_output(env['CXX'].split() + ["-dumpversion"]).strip()
+ compiler_ver = subprocess.check_output(env['CXX'].split() + ["-dumpversion"]).decode().strip()
except OSError:
print("ERROR: Compiler '%s' not found" % env['CXX'])
Exit(1)
@@ -277,6 +283,21 @@
if compiler_ver == '4.8.3':
env.Append(CXXFLAGS = ['-Wno-array-bounds'])
+ if not version_at_least(compiler_ver, '7.0.0') and env['os'] == 'bare_metal':
+ env.Append(LINKFLAGS = ['-fstack-protector-strong'])
+
+if env['data_type_support']:
+ if any(i in env['data_type_support'] for i in ['all', 'fp16']):
+ env.Append(CXXFLAGS = ['-DENABLE_FP16_KERNELS'])
+ if any(i in env['data_type_support'] for i in ['all', 'fp32']):
+ env.Append(CXXFLAGS = ['-DENABLE_FP32_KERNELS'])
+ if any(i in env['data_type_support'] for i in ['all', 'qasymm8']):
+ env.Append(CXXFLAGS = ['-DENABLE_QASYMM8_KERNELS'])
+ if any(i in env['data_type_support'] for i in ['all', 'qasymm8_signed']):
+ env.Append(CXXFLAGS = ['-DENABLE_QASYMM8_SIGNED_KERNELS'])
+ if any(i in env['data_type_support'] for i in ['all', 'qsymm16']):
+ env.Append(CXXFLAGS = ['-DENABLE_QSYMM16_KERNELS'])
+
if env['standalone']:
env.Append(CXXFLAGS = ['-fPIC'])
env.Append(LINKFLAGS = ['-static-libgcc','-static-libstdc++'])
@@ -293,6 +314,8 @@
env.Append(CXXFLAGS = ['-fPIC'])
env.Append(CPPDEFINES = ['NO_MULTI_THREADING'])
env.Append(CPPDEFINES = ['BARE_METAL'])
+if env['os'] == 'linux' and env['arch'] == 'armv7a':
+ env.Append(CXXFLAGS = [ '-Wno-psabi' ])
if env['opencl']:
if env['os'] in ['bare_metal'] or env['standalone']:
@@ -338,7 +361,6 @@
Export('version_at_least')
-
if env['gles_compute'] and env['os'] != 'android':
env.Append(CPPPATH = ['#/include/linux'])