aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--SConscript8
-rw-r--r--SConstruct14
-rw-r--r--docs/user_guide/library.dox4
-rw-r--r--filedefs.json2
4 files changed, 19 insertions, 9 deletions
diff --git a/SConscript b/SConscript
index 7ea59d2ef3..c774a55d22 100644
--- a/SConscript
+++ b/SConscript
@@ -94,8 +94,12 @@ def build_lib_objects():
'ARM_COMPUTE_ENABLE_I8MM', 'ARM_COMPUTE_ENABLE_SVEF32MM'])
# Build all the common files for the base architecture
- lib_static_objs += build_obj_list(filedefs["armv8.2-a"], lib_files, static=True)
- lib_shared_objs += build_obj_list(filedefs["armv8.2-a"], lib_files, static=False)
+ if env['arch'] == 'armv8a':
+ lib_static_objs += build_obj_list(filedefs["armv8-a"], lib_files, static=True)
+ lib_shared_objs += build_obj_list(filedefs["armv8-a"], lib_files, static=False)
+ else:
+ lib_static_objs += build_obj_list(filedefs["armv8.2-a"], lib_files, static=True)
+ lib_shared_objs += build_obj_list(filedefs["armv8.2-a"], lib_files, static=False)
# Build the SVE specific files
lib_static_objs += build_obj_list(filedefs["armv8.2-a-sve"], lib_files_sve, static=True)
diff --git a/SConstruct b/SConstruct
index d6f15c0caf..f6c90c3098 100644
--- a/SConstruct
+++ b/SConstruct
@@ -98,7 +98,7 @@ vars.AddVariables(
BoolVariable("examples", "Build example programs", True),
BoolVariable("gemm_tuner", "Build gemm_tuner programs", True),
BoolVariable("Werror", "Enable/disable the -Werror compilation flag", True),
- BoolVariable("multi_isa", "Build Multi ISA binary version of library. Note works only for armv8.2-a", False),
+ BoolVariable("multi_isa", "Build Multi ISA binary version of library. Works for armv8a without the support for FP16 vector arithmetic. Use armv8.2-a or beyond to enable FP16 vector arithmetic support", False),
BoolVariable("standalone", "Builds the tests as standalone executables, links statically with libgcc, libstdc++ and libarm_compute", False),
BoolVariable("opencl", "Enable OpenCL support", True),
BoolVariable("neon", "Enable Arm® Neon™ support", False),
@@ -306,11 +306,15 @@ if env['multi_isa']:
print("Currently Multi ISA binary is only supported for arm v8 family")
Exit(1)
- if 'v8.6-a' in env['arch']:
- if "disable_mmla_fp" not in env['custom_options']:
- env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_SVEF32MM'])
+ if 'v8a' in env['arch']:
+ print("INFO: multi_isa armv8-a architecture build doesn't enable __ARM_FEATURE_FP16_VECTOR_ARITHMETIC. Use armv8.2-a or beyond to enable FP16 vector arithmetic support")
+ env.Append(CXXFLAGS = ['-march=armv8-a']) # note: this will disable fp16 extension __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
+ else:
+ if 'v8.6-a' in env['arch']:
+ if "disable_mmla_fp" not in env['custom_options']:
+ env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_SVEF32MM'])
- env.Append(CXXFLAGS = ['-march=armv8.2-a+fp16']) # explicitly enable fp16 extension otherwise __ARM_FEATURE_FP16_VECTOR_ARITHMETIC is undefined
+ env.Append(CXXFLAGS = ['-march=armv8.2-a+fp16']) # explicitly enable fp16 extension otherwise __ARM_FEATURE_FP16_VECTOR_ARITHMETIC is undefined
else: # NONE "multi_isa" builds
diff --git a/docs/user_guide/library.dox b/docs/user_guide/library.dox
index 0501322254..11948d7136 100644
--- a/docs/user_guide/library.dox
+++ b/docs/user_guide/library.dox
@@ -570,7 +570,9 @@ The responsibilities of the operators can be summarized as follows:
Selecting multi_isa when building Compute Library, will create a library that contains all the supported ISA features.
Based on the CPU support, the appropriate kernel will be selected at runtime for execution. Currently this option is
-only supported with armv8.2-a as the base architecture.
+supported in two configurations: (i) with armv8.2-a as the base architecture where all the supported ISA features are enabled and
+(ii) with armv8-a as the base architecture where only a subset of ISA features (everything except FP16 vector arithmetic)
+are enabled in the build.
@subsection architecture_experimental_per_operator_build Per-operator build
diff --git a/filedefs.json b/filedefs.json
index 3422eeb252..8ffa3d9cd9 100644
--- a/filedefs.json
+++ b/filedefs.json
@@ -2,7 +2,7 @@
"cpu": {
"arch" : {
"armv8-a": {
- "cxxflags": ["-march=armv8.2-a"]
+ "cxxflags": ["-march=armv8-a"]
},
"armv8.2-a": {
"cxxflags": ["-march=armv8.2-a+fp16"],