| Message ID | 20241220164910.318809-3-afd@ti.com |
|---|---|
| State | Superseded |
| Delegated to: | Ryan Eatmon |
| Headers | show |
| Series | Add ARM Compute Library | expand |
This fails to build for omapl138-lcdk. Do we need a v2 that address this? On 12/20/2024 10:49 AM, Andrew Davis wrote: > The Compute Library is a collection of low-level machine learning > functions optimized for Arm. This will be used for ARMNN and > other machine learning applications and frameworks. > > Signed-off-by: Andrew Davis <afd@ti.com> > --- > ...-indention-in-cmake-generator-script.patch | 130 ++++++++++++ > ...ENABLE_NEON-in-code-for-checking-NEO.patch | 114 ++++++++++ > ...ENABLE_SVE-in-code-for-checking-SVE-.patch | 197 ++++++++++++++++++ > ...rce-files-at-library-definition-time.patch | 167 +++++++++++++++ > ...ptions-for-SVE-SVE2-and-BF16-support.patch | 112 ++++++++++ > ...SVE2-support-to-be-disabled-in-CMake.patch | 91 ++++++++ > .../0007-Allow-ARMv7-builds-using-CMake.patch | 86 ++++++++ > ...ymbol-error-when-building-TensorInfo.patch | 46 ++++ > .../arm-compute-library_24.12.bb | 79 +++++++ > .../recipes-core/packagegroups/ti-test.bb | 1 + > 10 files changed, 1023 insertions(+) > create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0001-fix-Fix-indention-in-cmake-generator-script.patch > create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0002-Use-ARM_COMPUTE_ENABLE_NEON-in-code-for-checking-NEO.patch > create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0003-Use-ARM_COMPUTE_ENABLE_SVE-in-code-for-checking-SVE-.patch > create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0004-Add-source-files-at-library-definition-time.patch > create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0005-Add-CMake-options-for-SVE-SVE2-and-BF16-support.patch > create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0006-Allow-SVE-and-SVE2-support-to-be-disabled-in-CMake.patch > create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0007-Allow-ARMv7-builds-using-CMake.patch > create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0008-Fix-undefined-symbol-error-when-building-TensorInfo.patch > create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library_24.12.bb > > diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0001-fix-Fix-indention-in-cmake-generator-script.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0001-fix-Fix-indention-in-cmake-generator-script.patch > new file mode 100644 > index 00000000..9e36d254 > --- /dev/null > +++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0001-fix-Fix-indention-in-cmake-generator-script.patch > @@ -0,0 +1,130 @@ > +From 1e4c3016547b5f75e515d4b9a7202733c47f5a18 Mon Sep 17 00:00:00 2001 > +From: Andrew Davis <afd@ti.com> > +Date: Wed, 4 Dec 2024 14:46:17 -0600 > +Subject: [PATCH] fix: Fix indention in cmake generator script > + > +All other items in these lists use tabs, the first couple > +lines should match. Switch them to tabs then regenerate > +the CMakeLists.txt file. > + > +While here fix the missing ending newline. > + > +Upstream-Status: Pending > + > +Signed-off-by: Andrew Davis <afd@ti.com> > +Change-Id: Icab852fc43ae08e7858857881c996d233c835289 > +--- > + scripts/generate_build_files.py | 27 ++++++++++++++------------- > + src/CMakeLists.txt | 26 +++++++++++++------------- > + 2 files changed, 27 insertions(+), 26 deletions(-) > + > +diff --git a/scripts/generate_build_files.py b/scripts/generate_build_files.py > +index f88cf1af44..52a8cc14da 100644 > +--- a/scripts/generate_build_files.py > ++++ b/scripts/generate_build_files.py > +@@ -168,28 +168,29 @@ def build_from_template_cmake(srcs_graph, srcs_sve, srcs_sve2, srcs_core): > + template = f"""{get_template_header()} > + > + target_sources( > +- arm_compute_graph > +- PRIVATE > +- {line_separator.join(srcs_graph)} > ++ arm_compute_graph > ++ PRIVATE > ++ {line_separator.join(srcs_graph)} > + ) > + > + target_sources( > +- arm_compute_sve > +- PRIVATE > +- {line_separator.join(srcs_sve)} > ++ arm_compute_sve > ++ PRIVATE > ++ {line_separator.join(srcs_sve)} > + ) > + > + target_sources( > +- arm_compute_sve2 > +- PRIVATE > +- {line_separator.join(srcs_sve2)} > ++ arm_compute_sve2 > ++ PRIVATE > ++ {line_separator.join(srcs_sve2)} > + ) > + > + target_sources( > +- arm_compute > +- PRIVATE > +- {line_separator.join(srcs_core)} > +-)""" > ++ arm_compute > ++ PRIVATE > ++ {line_separator.join(srcs_core)} > ++) > ++""" > + return template > + > + > +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt > +index ff3bed96df..f1b275532a 100644 > +--- a/src/CMakeLists.txt > ++++ b/src/CMakeLists.txt > +@@ -21,9 +21,9 @@ > + # SOFTWARE. > + > + target_sources( > +- arm_compute_graph > +- PRIVATE > +- graph/DataLayerVisitor.cpp > ++ arm_compute_graph > ++ PRIVATE > ++ graph/DataLayerVisitor.cpp > + graph/Graph.cpp > + graph/GraphBuilder.cpp > + graph/GraphContext.cpp > +@@ -101,9 +101,9 @@ target_sources( > + ) > + > + target_sources( > +- arm_compute_sve > +- PRIVATE > +- core/NEON/kernels/arm_conv/depthwise/interleaves/sve_s8q_3x3_dot.cpp > ++ arm_compute_sve > ++ PRIVATE > ++ core/NEON/kernels/arm_conv/depthwise/interleaves/sve_s8q_3x3_dot.cpp > + core/NEON/kernels/arm_conv/depthwise/interleaves/sve_u8q_3x3_dot.cpp > + core/NEON/kernels/arm_conv/depthwise/kernels/sme2_fp16_nhwc_3x3_s1_output2x2_mla_depthfirst/generic_direct.cpp > + core/NEON/kernels/arm_conv/depthwise/kernels/sme2_fp16_nhwc_3x3_s1_output2x2_mla_depthfirst/generic_indirect.cpp > +@@ -332,9 +332,9 @@ target_sources( > + ) > + > + target_sources( > +- arm_compute_sve2 > +- PRIVATE > +- cpu/kernels/activation/generic/sve2/lut.cpp > ++ arm_compute_sve2 > ++ PRIVATE > ++ cpu/kernels/activation/generic/sve2/lut.cpp > + cpu/kernels/activation/generic/sve2/qasymm8.cpp > + cpu/kernels/activation/generic/sve2/qasymm8_signed.cpp > + cpu/kernels/activation/generic/sve2/qsymm16.cpp > +@@ -357,9 +357,9 @@ target_sources( > + ) > + > + target_sources( > +- arm_compute > +- PRIVATE > +- c/AclContext.cpp > ++ arm_compute > ++ PRIVATE > ++ c/AclContext.cpp > + c/AclOperator.cpp > + c/AclQueue.cpp > + c/AclTensor.cpp > +@@ -1049,4 +1049,4 @@ target_sources( > + runtime/experimental/operators/CpuSub.cpp > + runtime/experimental/operators/CpuTranspose.cpp > + runtime/experimental/operators/CpuWinogradConv2d.cpp > +-) > +\ No newline at end of file > ++) > diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0002-Use-ARM_COMPUTE_ENABLE_NEON-in-code-for-checking-NEO.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0002-Use-ARM_COMPUTE_ENABLE_NEON-in-code-for-checking-NEO.patch > new file mode 100644 > index 00000000..174327c5 > --- /dev/null > +++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0002-Use-ARM_COMPUTE_ENABLE_NEON-in-code-for-checking-NEO.patch > @@ -0,0 +1,114 @@ > +From 4350c56d14b7b68acd060d8331f3ade1fb74e167 Mon Sep 17 00:00:00 2001 > +From: Andrew Davis <afd@ti.com> > +Date: Thu, 5 Dec 2024 09:21:23 -0600 > +Subject: [PATCH] Use ARM_COMPUTE_ENABLE_NEON in code for checking NEON support > + > +ENABLE_NEON is a flag used by the build systems. The flag is not used > +in code, instead ARM_COMPUTE_ENABLE_NEON is used everywhere. > + > +Drop the ENABLE_NEON compiler definition to prevent any accidental > +use in code. > + > +Upstream-Status: Pending > + > +Signed-off-by: Andrew Davis <afd@ti.com> > +Change-Id: I65f5e7411c99280e2dd8c187140909cefd1c6892 > +--- > + Android.bp | 1 - > + BUILD.bazel | 1 - > + SConscript | 2 +- > + SConstruct | 2 +- > + cmake/Options.cmake | 6 +----- > + scripts/generate_android_bp.py | 1 - > + 6 files changed, 3 insertions(+), 10 deletions(-) > + > +diff --git a/Android.bp b/Android.bp > +index 69379472b0..9288bba2d4 100644 > +--- a/Android.bp > ++++ b/Android.bp > +@@ -157,7 +157,6 @@ arm_compute_library_defaults { > + "-DEMBEDDED_KERNELS", > + "-DARM_COMPUTE_ASSERTS_ENABLED", > + "-DARM_COMPUTE_CPP_SCHEDULER", > +- "-DENABLE_NEON", > + "-DARM_COMPUTE_ENABLE_NEON", > + "-Wno-unused-parameter", > + "-DNO_DOT_IN_TOOLCHAIN", > +diff --git a/BUILD.bazel b/BUILD.bazel > +index f553b7bfad..2262a09655 100644 > +--- a/BUILD.bazel > ++++ b/BUILD.bazel > +@@ -170,7 +170,6 @@ config_setting( > + cc_library( > + name = "common_defines", > + defines = [ > +- "ENABLE_NEON", > + "ARM_COMPUTE_CPU_ENABLED", > + "ARM_COMPUTE_ENABLE_NEON", > + "ARM_COMPUTE_ENABLE_I8MM", > +diff --git a/SConscript b/SConscript > +index 12e8fd1025..69a564873f 100644 > +--- a/SConscript > ++++ b/SConscript > +@@ -97,7 +97,7 @@ def build_multiisa_lib_objects(): > + > + # note that ARM_COMPUTE_ENABLE_FP16 is enabled in update_data_type_layout_flags() to make > + # sure the environment is progated to the validation suite > +- arm_compute_env.Append(CPPDEFINES = ['ENABLE_NEON', 'ARM_COMPUTE_ENABLE_NEON', > ++ arm_compute_env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_NEON', > + 'ENABLE_SVE', 'ARM_COMPUTE_ENABLE_SVE','ARM_COMPUTE_ENABLE_BF16', > + 'ARM_COMPUTE_ENABLE_I8MM', 'ARM_COMPUTE_ENABLE_SVEF32MM']) > + > +diff --git a/SConstruct b/SConstruct > +index 8d7bd291e8..7381300fc8 100644 > +--- a/SConstruct > ++++ b/SConstruct > +@@ -302,7 +302,7 @@ if 'v7a' in env['estate'] and env['estate'] == '64': > + print("ERROR: armv7a architecture has only 32-bit execution state") > + Exit(1) > + > +-env.Append(CPPDEFINES = ['ENABLE_NEON', 'ARM_COMPUTE_ENABLE_NEON']) > ++env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_NEON']) > + > + if 'sve' in env['arch']: > + env.Append(CPPDEFINES = ['ENABLE_SVE', 'ARM_COMPUTE_ENABLE_SVE']) > +diff --git a/cmake/Options.cmake b/cmake/Options.cmake > +index 5d685be48d..121d527718 100644 > +--- a/cmake/Options.cmake > ++++ b/cmake/Options.cmake > +@@ -53,7 +53,6 @@ option(ARM_COMPUTE_ENABLE_SVE_VALIDATION "" OFF) > + > + option(ENABLE_NEON "Enable Arm® Neon™ support" ON) > + option(ARM_COMPUTE_CPU_ENABLED "" ON) > +-option(ARM_COMPUTE_ENABLE_NEON "" ON) > + option(ARM_COMPUTE_ENABLE_I8MM "" ON) > + option(ENABLE_FP32_KERNELS "" ON) > + option(ENABLE_QASYMM8_KERNELS "" ON) > +@@ -70,14 +69,11 @@ option(ENABLE_FP16_KERNELS "" OFF) > + option(ARM_COMPUTE_ENABLE_FP16 "" OFF) > + > + if(ENABLE_NEON) > +- add_definitions(-DENABLE_NEON) > ++ add_definitions(-DARM_COMPUTE_ENABLE_NEON) > + endif() > + if(ARM_COMPUTE_CPU_ENABLED) > + add_definitions(-DARM_COMPUTE_CPU_ENABLED) > + endif() > +-if(ARM_COMPUTE_ENABLE_NEON) > +- add_definitions(-DARM_COMPUTE_ENABLE_NEON) > +-endif() > + if(ARM_COMPUTE_ENABLE_FP16) > + add_definitions(-DARM_COMPUTE_ENABLE_FP16) > + endif() > +diff --git a/scripts/generate_android_bp.py b/scripts/generate_android_bp.py > +index d5b268f522..99a04e7071 100755 > +--- a/scripts/generate_android_bp.py > ++++ b/scripts/generate_android_bp.py > +@@ -94,7 +94,6 @@ arm_compute_library_defaults { > + "-DEMBEDDED_KERNELS", > + "-DARM_COMPUTE_ASSERTS_ENABLED", > + "-DARM_COMPUTE_CPP_SCHEDULER", > +- "-DENABLE_NEON", > + "-DARM_COMPUTE_ENABLE_NEON", > + "-Wno-unused-parameter", > + "-DNO_DOT_IN_TOOLCHAIN", > diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0003-Use-ARM_COMPUTE_ENABLE_SVE-in-code-for-checking-SVE-.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0003-Use-ARM_COMPUTE_ENABLE_SVE-in-code-for-checking-SVE-.patch > new file mode 100644 > index 00000000..b51e4534 > --- /dev/null > +++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0003-Use-ARM_COMPUTE_ENABLE_SVE-in-code-for-checking-SVE-.patch > @@ -0,0 +1,197 @@ > +From 92a881cebfee5504b188a046a96d39dd9361ddb1 Mon Sep 17 00:00:00 2001 > +From: Andrew Davis <afd@ti.com> > +Date: Thu, 5 Dec 2024 08:57:38 -0600 > +Subject: [PATCH] Use ARM_COMPUTE_ENABLE_SVE in code for checking SVE support > + > +ENABLE_SVE is a flag used by the build systems. The flag used in code > +is ARM_COMPUTE_ENABLE_SVE. There are just a couple spots where the > +build system flag is used instead causing the need to define both. > + > +Switch these last users of ENABLE_SVE over to ARM_COMPUTE_ENABLE_SVE > +then drop the ENABLE_SVE definition to prevent any more instances > +being added in the future. > + > +Upstream-Status: Pending > + > +Signed-off-by: Andrew Davis <afd@ti.com> > +Change-Id: I00da7580c4520647b62c6989bc7fbdd5efc7935e > +--- > + BUILD.bazel | 3 --- > + SConscript | 2 +- > + SConstruct | 2 +- > + .../batchnormalization/impl/SVE/fp16.cpp | 2 +- > + .../batchnormalization/impl/SVE/fp32.cpp | 2 +- > + tests/BUILD.bazel | 1 - > + tests/validation/NEON/ActivationLayer.cpp | 24 +++++++++---------- > + tests/validation/NEON/ArithmeticAddition.cpp | 6 ++--- > + 8 files changed, 19 insertions(+), 23 deletions(-) > + > +diff --git a/BUILD.bazel b/BUILD.bazel > +index 2262a09655..c04a52e084 100644 > +--- a/BUILD.bazel > ++++ b/BUILD.bazel > +@@ -297,7 +297,6 @@ cc_library( > + "//conditions:default": [], > + }), > + local_defines = [ > +- "ENABLE_SVE", > + "ARM_COMPUTE_ENABLE_SVE", > + "ARM_COMPUTE_ENABLE_SVE2", > + "ARM_COMPUTE_ENABLE_BF16", > +@@ -348,7 +347,6 @@ cc_library( > + "//conditions:default": [], > + }), > + local_defines = [ > +- "ENABLE_SVE", > + "ARM_COMPUTE_ENABLE_SVE", > + "ARM_COMPUTE_ENABLE_BF16", > + ], > +@@ -409,7 +407,6 @@ cc_library( > + "//conditions:default": [], > + }), > + local_defines = [ > +- "ENABLE_SVE", > + "ARM_COMPUTE_ENABLE_SVE", > + "ARM_COMPUTE_ENABLE_BF16", > + ], > +diff --git a/SConscript b/SConscript > +index 69a564873f..c2ca549b71 100644 > +--- a/SConscript > ++++ b/SConscript > +@@ -98,7 +98,7 @@ def build_multiisa_lib_objects(): > + # note that ARM_COMPUTE_ENABLE_FP16 is enabled in update_data_type_layout_flags() to make > + # sure the environment is progated to the validation suite > + arm_compute_env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_NEON', > +- 'ENABLE_SVE', 'ARM_COMPUTE_ENABLE_SVE','ARM_COMPUTE_ENABLE_BF16', > ++ 'ARM_COMPUTE_ENABLE_SVE','ARM_COMPUTE_ENABLE_BF16', > + 'ARM_COMPUTE_ENABLE_I8MM', 'ARM_COMPUTE_ENABLE_SVEF32MM']) > + > + # Build all the common files for the base architecture > +diff --git a/SConstruct b/SConstruct > +index 7381300fc8..17f5615acf 100644 > +--- a/SConstruct > ++++ b/SConstruct > +@@ -305,7 +305,7 @@ if 'v7a' in env['estate'] and env['estate'] == '64': > + env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_NEON']) > + > + if 'sve' in env['arch']: > +- env.Append(CPPDEFINES = ['ENABLE_SVE', 'ARM_COMPUTE_ENABLE_SVE']) > ++ env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_SVE']) > + if 'sve2' in env['arch']: > + env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_SVE2']) > + > +diff --git a/src/core/NEON/kernels/batchnormalization/impl/SVE/fp16.cpp b/src/core/NEON/kernels/batchnormalization/impl/SVE/fp16.cpp > +index 48caaa3e63..e07593312c 100644 > +--- a/src/core/NEON/kernels/batchnormalization/impl/SVE/fp16.cpp > ++++ b/src/core/NEON/kernels/batchnormalization/impl/SVE/fp16.cpp > +@@ -128,4 +128,4 @@ void fp16_sve_batch_normalization(ITensor *src, > + } > + } // namespace cpu > + } // namespace arm_compute > +-#endif // ENABLE_SVE > ++#endif // ARM_COMPUTE_ENABLE_SVE > +diff --git a/src/core/NEON/kernels/batchnormalization/impl/SVE/fp32.cpp b/src/core/NEON/kernels/batchnormalization/impl/SVE/fp32.cpp > +index df4fbfe607..0d52d2c3c0 100644 > +--- a/src/core/NEON/kernels/batchnormalization/impl/SVE/fp32.cpp > ++++ b/src/core/NEON/kernels/batchnormalization/impl/SVE/fp32.cpp > +@@ -128,4 +128,4 @@ void fp32_sve_batch_normalization(ITensor *src, > + } > + } // namespace cpu > + } // namespace arm_compute > +-#endif // ENABLE_SVE > ++#endif // ARM_COMPUTE_ENABLE_SVE > +diff --git a/tests/BUILD.bazel b/tests/BUILD.bazel > +index 7085f1facc..4b4be8b257 100644 > +--- a/tests/BUILD.bazel > ++++ b/tests/BUILD.bazel > +@@ -114,7 +114,6 @@ cc_binary( > + }) + > + select({ > + "//:sve_validation_flag": [ > +- "ENABLE_SVE", > + "ARM_COMPUTE_ENABLE_SVE", > + ], > + "//conditions:default": [], > +diff --git a/tests/validation/NEON/ActivationLayer.cpp b/tests/validation/NEON/ActivationLayer.cpp > +index 119d51808a..69a8b52354 100644 > +--- a/tests/validation/NEON/ActivationLayer.cpp > ++++ b/tests/validation/NEON/ActivationLayer.cpp > +@@ -73,11 +73,11 @@ RelativeTolerance<float> relative_tolerance(DataType data_type, ActivationLayerI > + switch(data_type) > + { > + case DataType::F16: > +-#if defined(ENABLE_SVE) > ++#if defined(ARM_COMPUTE_ENABLE_SVE) > + return RelativeTolerance<float>(0.25f); > +-#else // !defined(ENABLE_SVE) > ++#else // !defined(ARM_COMPUTE_ENABLE_SVE) > + return RelativeTolerance<float>(0.1f); > +-#endif // defined(ENABLE_SVE) > ++#endif // defined(ARM_COMPUTE_ENABLE_SVE) > + default: > + return RelativeTolerance<float>(0.05f); > + } > +@@ -85,11 +85,11 @@ RelativeTolerance<float> relative_tolerance(DataType data_type, ActivationLayerI > + switch(data_type) > + { > + case DataType::F16: > +-#if defined(ENABLE_SVE) > ++#if defined(ARM_COMPUTE_ENABLE_SVE) > + return RelativeTolerance<float>(0.9f); > +-#else // !defined(ENABLE_SVE) > ++#else // !defined(ARM_COMPUTE_ENABLE_SVE) > + return RelativeTolerance<float>(0.01f); > +-#endif // defined(ENABLE_SVE) > ++#endif // defined(ARM_COMPUTE_ENABLE_SVE) > + default: > + return RelativeTolerance<float>(0.00001f); > + } > +@@ -117,11 +117,11 @@ AbsoluteTolerance<float> absolute_tolerance(DataType data_type, ActivationLayerI > + switch(data_type) > + { > + case DataType::F16: > +-#if defined(ENABLE_SVE) > ++#if defined(ARM_COMPUTE_ENABLE_SVE) > + return AbsoluteTolerance<float>(0.25f); > +-#else // !defined(ENABLE_SVE) > ++#else // !defined(ARM_COMPUTE_ENABLE_SVE) > + return AbsoluteTolerance<float>(0.01f); > +-#endif // defined(ENABLE_SVE) > ++#endif // defined(ARM_COMPUTE_ENABLE_SVE) > + default: > + return AbsoluteTolerance<float>(0.00001f); > + } > +@@ -129,11 +129,11 @@ AbsoluteTolerance<float> absolute_tolerance(DataType data_type, ActivationLayerI > + switch(data_type) > + { > + case DataType::F16: > +-#if defined(ENABLE_SVE) > ++#if defined(ARM_COMPUTE_ENABLE_SVE) > + return AbsoluteTolerance<float>(0.9f); > +-#else // !defined(ENABLE_SVE) > ++#else // !defined(ARM_COMPUTE_ENABLE_SVE) > + return AbsoluteTolerance<float>(0.01f); > +-#endif // defined(ENABLE_SVE) > ++#endif // defined(ARM_COMPUTE_ENABLE_SVE) > + default: > + return AbsoluteTolerance<float>(0.00001f); > + } > +diff --git a/tests/validation/NEON/ArithmeticAddition.cpp b/tests/validation/NEON/ArithmeticAddition.cpp > +index c0033daab0..bae8535ff3 100644 > +--- a/tests/validation/NEON/ArithmeticAddition.cpp > ++++ b/tests/validation/NEON/ArithmeticAddition.cpp > +@@ -48,11 +48,11 @@ namespace validation > + using framework::dataset::make; > + namespace > + { > +-#if !defined(__aarch64__) || defined(ENABLE_SVE) > ++#if !defined(__aarch64__) || defined(ARM_COMPUTE_ENABLE_SVE) > + constexpr AbsoluteTolerance<float> tolerance_quant(1); /**< Tolerance value for comparing reference's output against implementation's output for quantized data types */ > +-#else // !defined(__aarch64__) || defined(ENABLE_SVE) > ++#else // !defined(__aarch64__) || defined(ARM_COMPUTE_ENABLE_SVE) > + constexpr AbsoluteTolerance<float> tolerance_quant(1); > +-#endif // !defined(__aarch64__) || defined(ENABLE_SVE) > ++#endif // !defined(__aarch64__) || defined(ARM_COMPUTE_ENABLE_SVE) > + const auto InPlaceDataSet = framework::dataset::make("InPlace", { false, true }); > + const auto OutOfPlaceDataSet = framework::dataset::make("InPlace", { false }); > + } // namespace > diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0004-Add-source-files-at-library-definition-time.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0004-Add-source-files-at-library-definition-time.patch > new file mode 100644 > index 00000000..971658b4 > --- /dev/null > +++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0004-Add-source-files-at-library-definition-time.patch > @@ -0,0 +1,167 @@ > +From a3c7d6aefc289dcce6656fc6d9f9c8c9b1af8f0b Mon Sep 17 00:00:00 2001 > +From: Andrew Davis <afd@ti.com> > +Date: Thu, 5 Dec 2024 09:38:26 -0600 > +Subject: [PATCH] Add source files at library definition time > + > +This allows for easier conditional disabling of these libraries. > + > +Upstream-Status: Pending > + > +Signed-off-by: Andrew Davis <afd@ti.com> > +Change-Id: I442aaa03060f2cb7db4ed0c1d93e64dbc223fdc6 > +--- > + CMakeLists.txt | 20 ++++++++++---------- > + scripts/generate_build_files.py | 16 ++++------------ > + src/CMakeLists.txt | 16 ++++------------ > + 3 files changed, 18 insertions(+), 34 deletions(-) > + > +diff --git a/CMakeLists.txt b/CMakeLists.txt > +index e8bdf2af1a..4073e06b17 100644 > +--- a/CMakeLists.txt > ++++ b/CMakeLists.txt > +@@ -46,6 +46,12 @@ set(CMAKE_CXX_EXTENSIONS OFF) > + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") > + include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Options.cmake) > + include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Version.cmake) > ++include(${CMAKE_CURRENT_SOURCE_DIR}/src/CMakeLists.txt) > ++ > ++list(TRANSFORM ARM_COMPUTE_GRAPH_SOURCES PREPEND "src/") > ++list(TRANSFORM ARM_COMPUTE_SVE_SOURCES PREPEND "src/") > ++list(TRANSFORM ARM_COMPUTE_SVE2_SOURCES PREPEND "src/") > ++list(TRANSFORM ARM_COMPUTE_SOURCES PREPEND "src/") > + > + # Require at least gcc/g++ 11) CMAKE_CXX_COMPILER_VERSION OR > + if(CMAKE_C_COMPILER_VERSION VERSION_LESS 10.2 OR CMAKE_CXX_COMPILER_VERSION > +@@ -139,8 +145,7 @@ endif() > + > + # --------------------------------------------------------------------- > + # SVE Object Library > +- > +-add_library(arm_compute_sve OBJECT "") > ++add_library(arm_compute_sve OBJECT ${ARM_COMPUTE_SVE_SOURCES}) > + target_compile_options(arm_compute_sve > + PRIVATE "-march=armv8.2-a+sve+fp16+dotprod" > + PRIVATE "-fPIC") > +@@ -162,8 +167,7 @@ target_include_directories( > + > + # --------------------------------------------------------------------- > + # SVE2 Object Library > +- > +-add_library(arm_compute_sve2 OBJECT "") > ++add_library(arm_compute_sve2 OBJECT ${ARM_COMPUTE_SVE2_SOURCES}) > + target_compile_options(arm_compute_sve2 > + PRIVATE "-march=armv8.6-a+sve2+fp16+dotprod" > + PRIVATE "-fPIC") > +@@ -187,7 +191,7 @@ target_include_directories( > + # --------------------------------------------------------------------- > + # Core Library > + > +-add_library(arm_compute "") > ++add_library(arm_compute ${ARM_COMPUTE_SOURCES}) > + target_compile_options(arm_compute PRIVATE "-march=${ARM_COMPUTE_ARCH}") > + target_compile_definitions(arm_compute PRIVATE ARM_COMPUTE_ENABLE_BF16) > + target_compile_definitions(arm_compute PRIVATE ENABLE_SVE) > +@@ -216,7 +220,7 @@ target_link_libraries( > + # --------------------------------------------------------------------- > + # Graph Library > + > +-add_library(arm_compute_graph "") > ++add_library(arm_compute_graph ${ARM_COMPUTE_GRAPH_SOURCES}) > + target_compile_options(arm_compute_graph PRIVATE "-march=${ARM_COMPUTE_ARCH}") > + target_compile_definitions(arm_compute_graph PRIVATE ENABLE_SVE) > + target_compile_definitions(arm_compute_graph PRIVATE ARM_COMPUTE_ENABLE_SVE) > +@@ -238,10 +242,6 @@ target_compile_options(arm_compute_graph PUBLIC ${COMMON_CXX_FLAGS}) > + > + add_library(ArmCompute::Graph ALIAS arm_compute_graph) > + > +-# --------------------------------------------------------------------- > +-# Library Target Sources > +-add_subdirectory(src) > +- > + if(ARM_COMPUTE_BUILD_TESTING) > + # --------------------------------------------------------------------- > + # Validation Framework Library > +diff --git a/scripts/generate_build_files.py b/scripts/generate_build_files.py > +index 52a8cc14da..4c4a14623f 100644 > +--- a/scripts/generate_build_files.py > ++++ b/scripts/generate_build_files.py > +@@ -167,27 +167,19 @@ def build_from_template_cmake(srcs_graph, srcs_sve, srcs_sve2, srcs_core): > + > + template = f"""{get_template_header()} > + > +-target_sources( > +- arm_compute_graph > +- PRIVATE > ++set(ARM_COMPUTE_GRAPH_SOURCES > + {line_separator.join(srcs_graph)} > + ) > + > +-target_sources( > +- arm_compute_sve > +- PRIVATE > ++set(ARM_COMPUTE_SVE_SOURCES > + {line_separator.join(srcs_sve)} > + ) > + > +-target_sources( > +- arm_compute_sve2 > +- PRIVATE > ++set(ARM_COMPUTE_SVE2_SOURCES > + {line_separator.join(srcs_sve2)} > + ) > + > +-target_sources( > +- arm_compute > +- PRIVATE > ++set(ARM_COMPUTE_SOURCES > + {line_separator.join(srcs_core)} > + ) > + """ > +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt > +index f1b275532a..73871563e1 100644 > +--- a/src/CMakeLists.txt > ++++ b/src/CMakeLists.txt > +@@ -20,9 +20,7 @@ > + # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE > + # SOFTWARE. > + > +-target_sources( > +- arm_compute_graph > +- PRIVATE > ++set(ARM_COMPUTE_GRAPH_SOURCES > + graph/DataLayerVisitor.cpp > + graph/Graph.cpp > + graph/GraphBuilder.cpp > +@@ -100,9 +98,7 @@ target_sources( > + graph/printers/DotGraphPrinter.cpp > + ) > + > +-target_sources( > +- arm_compute_sve > +- PRIVATE > ++set(ARM_COMPUTE_SVE_SOURCES > + core/NEON/kernels/arm_conv/depthwise/interleaves/sve_s8q_3x3_dot.cpp > + core/NEON/kernels/arm_conv/depthwise/interleaves/sve_u8q_3x3_dot.cpp > + core/NEON/kernels/arm_conv/depthwise/kernels/sme2_fp16_nhwc_3x3_s1_output2x2_mla_depthfirst/generic_direct.cpp > +@@ -331,9 +327,7 @@ target_sources( > + cpu/kernels/softmax/generic/sve/impl_bf16.cpp > + ) > + > +-target_sources( > +- arm_compute_sve2 > +- PRIVATE > ++set(ARM_COMPUTE_SVE2_SOURCES > + cpu/kernels/activation/generic/sve2/lut.cpp > + cpu/kernels/activation/generic/sve2/qasymm8.cpp > + cpu/kernels/activation/generic/sve2/qasymm8_signed.cpp > +@@ -356,9 +350,7 @@ target_sources( > + cpu/kernels/softmax/generic/sve2/impl.cpp > + ) > + > +-target_sources( > +- arm_compute > +- PRIVATE > ++set(ARM_COMPUTE_SOURCES > + c/AclContext.cpp > + c/AclOperator.cpp > + c/AclQueue.cpp > diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0005-Add-CMake-options-for-SVE-SVE2-and-BF16-support.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0005-Add-CMake-options-for-SVE-SVE2-and-BF16-support.patch > new file mode 100644 > index 00000000..29ca02f5 > --- /dev/null > +++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0005-Add-CMake-options-for-SVE-SVE2-and-BF16-support.patch > @@ -0,0 +1,112 @@ > +From cdb765df59d8ce5f388ac2a820b5da76eb8d610c Mon Sep 17 00:00:00 2001 > +From: Andrew Davis <afd@ti.com> > +Date: Thu, 5 Dec 2024 09:47:25 -0600 > +Subject: [PATCH] Add CMake options for SVE, SVE2, and BF16 support > + > +These should be optional, add options for these. Remove the hard-coded > +definitions of these for the libraries. This also makes it so validation > +options are not needed, if SVE is enabled it will be validated. > + > +Upstream-Status: Pending > + > +Signed-off-by: Andrew Davis <afd@ti.com> > +Change-Id: I03182ac6ece843e813c027ef6a573cbba254dee9 > +--- > + CMakeLists.txt | 19 ------------------- > + cmake/Options.cmake | 16 +++++++++++++--- > + 2 files changed, 13 insertions(+), 22 deletions(-) > + > +diff --git a/CMakeLists.txt b/CMakeLists.txt > +index 4073e06b17..4d95fb1bfd 100644 > +--- a/CMakeLists.txt > ++++ b/CMakeLists.txt > +@@ -149,9 +149,6 @@ add_library(arm_compute_sve OBJECT ${ARM_COMPUTE_SVE_SOURCES}) > + target_compile_options(arm_compute_sve > + PRIVATE "-march=armv8.2-a+sve+fp16+dotprod" > + PRIVATE "-fPIC") > +-target_compile_definitions(arm_compute_sve PRIVATE ARM_COMPUTE_ENABLE_BF16) > +-target_compile_definitions(arm_compute_sve PRIVATE ENABLE_SVE) > +-target_compile_definitions(arm_compute_sve PRIVATE ARM_COMPUTE_ENABLE_SVE) > + target_include_directories( > + arm_compute_sve > + PUBLIC $<INSTALL_INTERFACE:include> > +@@ -171,10 +168,6 @@ add_library(arm_compute_sve2 OBJECT ${ARM_COMPUTE_SVE2_SOURCES}) > + target_compile_options(arm_compute_sve2 > + PRIVATE "-march=armv8.6-a+sve2+fp16+dotprod" > + PRIVATE "-fPIC") > +-target_compile_definitions(arm_compute_sve2 PRIVATE ARM_COMPUTE_ENABLE_SVE2) > +-target_compile_definitions(arm_compute_sve2 PRIVATE ARM_COMPUTE_ENABLE_BF16) > +-target_compile_definitions(arm_compute_sve2 PRIVATE ENABLE_SVE) > +-target_compile_definitions(arm_compute_sve2 PRIVATE ARM_COMPUTE_ENABLE_SVE) > + target_include_directories( > + arm_compute_sve2 > + PUBLIC $<INSTALL_INTERFACE:include> > +@@ -193,9 +186,6 @@ target_include_directories( > + > + add_library(arm_compute ${ARM_COMPUTE_SOURCES}) > + target_compile_options(arm_compute PRIVATE "-march=${ARM_COMPUTE_ARCH}") > +-target_compile_definitions(arm_compute PRIVATE ARM_COMPUTE_ENABLE_BF16) > +-target_compile_definitions(arm_compute PRIVATE ENABLE_SVE) > +-target_compile_definitions(arm_compute PRIVATE ARM_COMPUTE_ENABLE_SVE) > + target_include_directories( > + arm_compute > + PUBLIC $<INSTALL_INTERFACE:include> > +@@ -222,8 +212,6 @@ target_link_libraries( > + > + add_library(arm_compute_graph ${ARM_COMPUTE_GRAPH_SOURCES}) > + target_compile_options(arm_compute_graph PRIVATE "-march=${ARM_COMPUTE_ARCH}") > +-target_compile_definitions(arm_compute_graph PRIVATE ENABLE_SVE) > +-target_compile_definitions(arm_compute_graph PRIVATE ARM_COMPUTE_ENABLE_SVE) > + # add_subdirectory(src/graph) > + > + target_include_directories( > +@@ -268,13 +256,6 @@ if(ARM_COMPUTE_BUILD_TESTING) > + > + add_executable(arm_compute_validation "") > + target_compile_options(arm_compute_validation PRIVATE "-march=${ARM_COMPUTE_ARCH}") > +- if(ARM_COMPUTE_ENABLE_BF16_VALIDATION) > +- target_compile_definitions(arm_compute_validation PRIVATE ARM_COMPUTE_ENABLE_BF16) > +- endif() > +- if(ARM_COMPUTE_ENABLE_SVE_VALIDATION) > +- target_compile_definitions(arm_compute_validation PRIVATE ENABLE_SVE) > +- target_compile_definitions(arm_compute_validation PRIVATE ARM_COMPUTE_ENABLE_SVE) > +- endif() > + add_subdirectory(tests/validation) > + target_compile_options(arm_compute_validation PUBLIC ${COMMON_CXX_FLAGS}) > + set_target_properties( > +diff --git a/cmake/Options.cmake b/cmake/Options.cmake > +index 121d527718..5c23fcb490 100644 > +--- a/cmake/Options.cmake > ++++ b/cmake/Options.cmake > +@@ -48,11 +48,12 @@ set(ARM_COMPUTE_ARCH armv8-a CACHE STRING "Architecture to use") > + # --------------------------------------------------------------------- > + # Backends > + > +-option(ARM_COMPUTE_ENABLE_BF16_VALIDATION "" ON) > +-option(ARM_COMPUTE_ENABLE_SVE_VALIDATION "" OFF) > +- > + option(ENABLE_NEON "Enable Arm® Neon™ support" ON) > ++option(ENABLE_SVE "Enable Arm® SVE support" ON) > ++option(ENABLE_SVE2 "Enable Arm® SVE2 support" ON) > ++ > + option(ARM_COMPUTE_CPU_ENABLED "" ON) > ++option(ARM_COMPUTE_ENABLE_BF16 "" ON) > + option(ARM_COMPUTE_ENABLE_I8MM "" ON) > + option(ENABLE_FP32_KERNELS "" ON) > + option(ENABLE_QASYMM8_KERNELS "" ON) > +@@ -74,6 +75,15 @@ endif() > + if(ARM_COMPUTE_CPU_ENABLED) > + add_definitions(-DARM_COMPUTE_CPU_ENABLED) > + endif() > ++if(ENABLE_SVE) > ++ add_definitions(-DARM_COMPUTE_ENABLE_SVE) > ++endif() > ++if(ENABLE_SVE2) > ++ add_definitions(-DARM_COMPUTE_ENABLE_SVE2) > ++endif() > ++if(ARM_COMPUTE_ENABLE_BF16) > ++ add_definitions(-DARM_COMPUTE_ENABLE_BF16) > ++endif() > + if(ARM_COMPUTE_ENABLE_FP16) > + add_definitions(-DARM_COMPUTE_ENABLE_FP16) > + endif() > diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0006-Allow-SVE-and-SVE2-support-to-be-disabled-in-CMake.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0006-Allow-SVE-and-SVE2-support-to-be-disabled-in-CMake.patch > new file mode 100644 > index 00000000..06370adb > --- /dev/null > +++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0006-Allow-SVE-and-SVE2-support-to-be-disabled-in-CMake.patch > @@ -0,0 +1,91 @@ > +From ab5bf5b8f86337a31bfd48277650f583a040e658 Mon Sep 17 00:00:00 2001 > +From: Andrew Davis <afd@ti.com> > +Date: Thu, 5 Dec 2024 09:59:48 -0600 > +Subject: [PATCH] Allow SVE and SVE2 support to be disabled in CMake > + > +Currently these are hard-coded as enabled. The SVE and SVE2 libraries > +are built unconditionally. These should only be built when SVE or > +SVE2 is available. > + > +Upstream-Status: Pending > + > +Signed-off-by: Andrew Davis <afd@ti.com> > +Change-Id: I176259f872a84f736028622694d65d4c5b57e379 > +--- > + CMakeLists.txt | 25 ++++++++++++++++++------- > + 1 file changed, 18 insertions(+), 7 deletions(-) > + > +diff --git a/CMakeLists.txt b/CMakeLists.txt > +index 4d95fb1bfd..d233d6bc67 100644 > +--- a/CMakeLists.txt > ++++ b/CMakeLists.txt > +@@ -145,6 +145,7 @@ endif() > + > + # --------------------------------------------------------------------- > + # SVE Object Library > ++if(ENABLE_SVE) > + add_library(arm_compute_sve OBJECT ${ARM_COMPUTE_SVE_SOURCES}) > + target_compile_options(arm_compute_sve > + PRIVATE "-march=armv8.2-a+sve+fp16+dotprod" > +@@ -161,9 +162,11 @@ target_include_directories( > + src/core/cpu/kernels/assembly > + src/cpu/kernels/assembly > + src/core/NEON/kernels/arm_gemm/merges) > ++endif() # ENABLE_SVE > + > + # --------------------------------------------------------------------- > + # SVE2 Object Library > ++if(ENABLE_SVE2) > + add_library(arm_compute_sve2 OBJECT ${ARM_COMPUTE_SVE2_SOURCES}) > + target_compile_options(arm_compute_sve2 > + PRIVATE "-march=armv8.6-a+sve2+fp16+dotprod" > +@@ -180,6 +183,7 @@ target_include_directories( > + src/core/cpu/kernels/assembly > + src/cpu/kernels/assembly > + src/core/NEON/kernels/arm_gemm/merges) > ++endif() # ENABLE_SVE2 > + > + # --------------------------------------------------------------------- > + # Core Library > +@@ -203,9 +207,12 @@ target_compile_options(arm_compute PUBLIC ${COMMON_CXX_FLAGS}) > + add_library(ArmCompute::Core ALIAS arm_compute) > + > + # arm_compute_sve and arm_compute_sve2 obj files will not be public in the arm_compute.so > +-target_link_libraries( > +- arm_compute PRIVATE $<TARGET_OBJECTS:arm_compute_sve> > +- PRIVATE $<TARGET_OBJECTS:arm_compute_sve2>) > ++if(ENABLE_SVE) > ++ target_link_libraries(arm_compute PRIVATE $<TARGET_OBJECTS:arm_compute_sve>) > ++endif() > ++if(ENABLE_SVE2) > ++ target_link_libraries(arm_compute PRIVATE $<TARGET_OBJECTS:arm_compute_sve2>) > ++endif() > + > + # --------------------------------------------------------------------- > + # Graph Library > +@@ -263,8 +270,10 @@ if(ARM_COMPUTE_BUILD_TESTING) > + "${CMAKE_BINARY_DIR}/validation") > + target_link_libraries( > + arm_compute_validation > +- PUBLIC arm_compute arm_compute_graph arm_compute_validation_framework > +- arm_compute_sve) > ++ PUBLIC arm_compute arm_compute_graph arm_compute_validation_framework) > ++ if(ENABLE_SVE) > ++ target_link_libraries(arm_compute_validation PUBLIC arm_compute_sve) > ++ endif() > + target_link_directories(arm_compute_validation PUBLIC tests) > + > + # --------------------------------------------------------------------- > +@@ -299,8 +308,10 @@ if(ARM_COMPUTE_BUILD_EXAMPLES) > + set_target_properties( > + ${test_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY > + "${CMAKE_BINARY_DIR}/examples") > +- target_link_libraries(${test_name} PUBLIC arm_compute > +- arm_compute_graph arm_compute_sve) > ++ target_link_libraries(${test_name} PUBLIC arm_compute arm_compute_graph) > ++ if(ENABLE_SVE) > ++ target_link_libraries(${test_name} PUBLIC arm_compute_sve) > ++ endif() > + endforeach() > + > + # NEON Examples > diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0007-Allow-ARMv7-builds-using-CMake.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0007-Allow-ARMv7-builds-using-CMake.patch > new file mode 100644 > index 00000000..07dd4bee > --- /dev/null > +++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0007-Allow-ARMv7-builds-using-CMake.patch > @@ -0,0 +1,86 @@ > +From 416cffe2a75a4ec66a75e00bc00297f2f0187e0f Mon Sep 17 00:00:00 2001 > +From: Andrew Davis <afd@ti.com> > +Date: Thu, 5 Dec 2024 10:05:03 -0600 > +Subject: [PATCH] Allow ARMv7 builds using CMake > + > +Upstream-Status: Pending > + > +Signed-off-by: Andrew Davis <afd@ti.com> > +Change-Id: Ib6bae5820569a8eadd53afdfe31e611a3089140e > +--- > + CMakeLists.txt | 25 +++++++++++++++++-- > + .../fixtures/CpuGemmAssemblyDispatchFixture.h | 3 +++ > + 2 files changed, 26 insertions(+), 2 deletions(-) > + > +diff --git a/CMakeLists.txt b/CMakeLists.txt > +index d233d6bc67..4fc27553f3 100644 > +--- a/CMakeLists.txt > ++++ b/CMakeLists.txt > +@@ -148,7 +148,7 @@ endif() > + if(ENABLE_SVE) > + add_library(arm_compute_sve OBJECT ${ARM_COMPUTE_SVE_SOURCES}) > + target_compile_options(arm_compute_sve > +- PRIVATE "-march=armv8.2-a+sve+fp16+dotprod" > ++ PRIVATE "-march=${ARM_COMPUTE_ARCH}" > + PRIVATE "-fPIC") > + target_include_directories( > + arm_compute_sve > +@@ -169,7 +169,7 @@ endif() # ENABLE_SVE > + if(ENABLE_SVE2) > + add_library(arm_compute_sve2 OBJECT ${ARM_COMPUTE_SVE2_SOURCES}) > + target_compile_options(arm_compute_sve2 > +- PRIVATE "-march=armv8.6-a+sve2+fp16+dotprod" > ++ PRIVATE "-march=${ARM_COMPUTE_ARCH}" > + PRIVATE "-fPIC") > + target_include_directories( > + arm_compute_sve2 > +@@ -204,6 +204,15 @@ target_include_directories( > + src/core/NEON/kernels/convolution/winograd) > + target_compile_options(arm_compute PUBLIC ${COMMON_CXX_FLAGS}) > + > ++if(ARM_COMPUTE_ARCH MATCHES "armv7") > ++ target_sources( > ++ arm_compute > ++ PRIVATE > ++ src/core/NEON/kernels/arm_gemm/kernels/a32_sgemm_8x6/a53.cpp > ++ src/core/NEON/kernels/arm_gemm/kernels/a32_sgemm_8x6/a55r1.cpp > ++ src/core/NEON/kernels/arm_gemm/kernels/a32_sgemm_8x6/generic.cpp) > ++endif() > ++ > + add_library(ArmCompute::Core ALIAS arm_compute) > + > + # arm_compute_sve and arm_compute_sve2 obj files will not be public in the arm_compute.so > +@@ -264,6 +273,18 @@ if(ARM_COMPUTE_BUILD_TESTING) > + add_executable(arm_compute_validation "") > + target_compile_options(arm_compute_validation PRIVATE "-march=${ARM_COMPUTE_ARCH}") > + add_subdirectory(tests/validation) > ++ target_include_directories( > ++ arm_compute_validation > ++ PUBLIC $<INSTALL_INTERFACE:include> > ++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> > ++ ${CMAKE_CURRENT_SOURCE_DIR} > ++ PRIVATE src > ++ src/cpu/kernels/assembly > ++ src/core/NEON/kernels/arm_gemm > ++ src/core/NEON/kernels/assembly > ++ src/core/NEON/kernels/convolution/common > ++ src/core/NEON/kernels/arm_conv/depthwise > ++ src/core/NEON/kernels/convolution/winograd) > + target_compile_options(arm_compute_validation PUBLIC ${COMMON_CXX_FLAGS}) > + set_target_properties( > + arm_compute_validation PROPERTIES RUNTIME_OUTPUT_DIRECTORY > +diff --git a/tests/validation/fixtures/CpuGemmAssemblyDispatchFixture.h b/tests/validation/fixtures/CpuGemmAssemblyDispatchFixture.h > +index 5d74e210d5..0b45cdf356 100644 > +--- a/tests/validation/fixtures/CpuGemmAssemblyDispatchFixture.h > ++++ b/tests/validation/fixtures/CpuGemmAssemblyDispatchFixture.h > +@@ -25,7 +25,10 @@ > + #define ACL_TESTS_VALIDATION_FIXTURES_CPUGEMMASSEMBLYDISPATCHFIXTURE_H > + > + #include "arm_compute/core/Helpers.h" > ++ > ++#ifdef ARM_COMPUTE_ENABLE_FIXED_FORMAT_KERNELS > + #include "arm_compute/runtime/NEON/functions/NEReorderLayer.h" > ++#endif //ARM_COMPUTE_ENABLE_FIXED_FORMAT_KERNELS > + #include "arm_compute/runtime/NEON/functions/NETranspose.h" > + > + #include "src/core/NEON/kernels/arm_gemm/utils.hpp" > diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0008-Fix-undefined-symbol-error-when-building-TensorInfo.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0008-Fix-undefined-symbol-error-when-building-TensorInfo.patch > new file mode 100644 > index 00000000..9883a44d > --- /dev/null > +++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0008-Fix-undefined-symbol-error-when-building-TensorInfo.patch > @@ -0,0 +1,46 @@ > +From 58698788adaeb2f74cf9fcddf06f3e9a2e78b984 Mon Sep 17 00:00:00 2001 > +From: Andrew Davis <afd@ti.com> > +Date: Mon, 16 Dec 2024 09:42:22 -0600 > +Subject: [PATCH] Fix undefined symbol error when building TensorInfo > + > +Upstream-Status: Pending > + > +Signed-off-by: Andrew Davis <afd@ti.com> > +Change-Id: I657d1b7faaad94147c685c4826916d3c21da82e1 > +--- > + arm_compute/core/TensorInfo.h | 5 +---- > + src/core/TensorInfo.cpp | 5 +++++ > + 2 files changed, 6 insertions(+), 4 deletions(-) > + > +diff --git a/arm_compute/core/TensorInfo.h b/arm_compute/core/TensorInfo.h > +index e4c9cbe879..2bfe83c4b1 100644 > +--- a/arm_compute/core/TensorInfo.h > ++++ b/arm_compute/core/TensorInfo.h > +@@ -242,10 +242,7 @@ public: > + { > + return _num_channels; > + } > +- const TensorShape &tensor_shape() const override > +- { > +- return _tensor_shape; > +- } > ++ const TensorShape &tensor_shape() const override; > + const TensorDimsState &tensor_dims_state() const override > + { > + return _dims_state; > +diff --git a/src/core/TensorInfo.cpp b/src/core/TensorInfo.cpp > +index 31bddbde40..884203fd7c 100644 > +--- a/src/core/TensorInfo.cpp > ++++ b/src/core/TensorInfo.cpp > +@@ -395,6 +395,11 @@ ITensorInfo &TensorInfo::set_tensor_dims_state(const TensorDimsState &state) > + return *this; > + } > + > ++const TensorShape &TensorInfo::tensor_shape() const > ++{ > ++ return _tensor_shape; > ++} > ++ > + ITensorInfo &TensorInfo::set_quantization_info(const QuantizationInfo &quantization_info) > + { > + _quantization_info = quantization_info; > diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library_24.12.bb b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library_24.12.bb > new file mode 100644 > index 00000000..d069da4c > --- /dev/null > +++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library_24.12.bb > @@ -0,0 +1,79 @@ > +SUMMARY = "The ARM Computer Vision and Machine Learning library" > +DESCRIPTION = "The ARM Computer Vision and Machine Learning library is a set of functions optimised for both ARM CPUs and GPUs." > +LICENSE = "MIT" > +LIC_FILES_CHKSUM = "file://LICENSES/MIT.txt;md5=35f8944fae972976691f3483b0ac9dba" > + > +SRC_URI = " \ > + git://github.com/ARM-software/ComputeLibrary.git;branch=main;protocol=https \ > + file://0001-fix-Fix-indention-in-cmake-generator-script.patch \ > + file://0002-Use-ARM_COMPUTE_ENABLE_NEON-in-code-for-checking-NEO.patch \ > + file://0003-Use-ARM_COMPUTE_ENABLE_SVE-in-code-for-checking-SVE-.patch \ > + file://0004-Add-source-files-at-library-definition-time.patch \ > + file://0005-Add-CMake-options-for-SVE-SVE2-and-BF16-support.patch \ > + file://0006-Allow-SVE-and-SVE2-support-to-be-disabled-in-CMake.patch \ > + file://0007-Allow-ARMv7-builds-using-CMake.patch \ > + file://0008-Fix-undefined-symbol-error-when-building-TensorInfo.patch \ > +" > +SRCREV = "32bcced2af7feea6969dd1d22e58d0718dc488e3" > + > +S = "${WORKDIR}/git" > + > +COMPATIBLE_HOST = "(arm|aarch64).*-linux" > + > +inherit cmake > + > +PACKAGECONFIG ??= "examples tests cppthreads openmp" > + > +PACKAGECONFIG[Werror] = "-DARM_COMPUTE_WERROR=ON,-DARM_COMPUTE_WERROR=OFF" > +PACKAGECONFIG[examples] = "-DARM_COMPUTE_BUILD_EXAMPLES=ON,-DARM_COMPUTE_BUILD_EXAMPLES=OFF" > +PACKAGECONFIG[tests] = "-DARM_COMPUTE_BUILD_TESTING=ON,-DARM_COMPUTE_BUILD_TESTING=OFF" > +PACKAGECONFIG[cppthreads] = "-DARM_COMPUTE_CPPTHREADS=ON,-DARM_COMPUTE_CPPTHREADS=OFF" > +PACKAGECONFIG[openmp] = "-DARM_COMPUTE_OPENMP=ON,-DARM_COMPUTE_OPENMP=OFF" > + > +EXTRA_OECMAKE:append:aarch64 = " \ > + -DARM_COMPUTE_ARCH=armv8-a \ > + -DENABLE_NEON=ON \ > + -DENABLE_SVE=OFF \ > + -DENABLE_SVE2=OFF \ > +" > +EXTRA_OECMAKE:append:arm = " \ > + -DARM_COMPUTE_ARCH=armv7-a \ > + -DENABLE_NEON=ON \ > + -DENABLE_SVE=OFF \ > + -DENABLE_SVE2=OFF \ > + -DARM_COMPUTE_ENABLE_BF16=OFF \ > + -DARM_COMPUTE_ENABLE_FIXED_FORMAT_KERNELS=OFF \ > +" > + > +INHIBIT_PACKAGE_DEBUG_SPLIT = "1" > + > +# package unversioned .so files in PN (they are not dev symlinks) > +FILES_SOLIBSDEV = "" > +FILES:${PN} += "${libdir}/*.so" > + > +# Install headers and examples > +do_install:append() { > + # Install headers > + CP_ARGS="-Prf --preserve=mode,timestamps --no-preserve=ownership" > + install -d ${D}${includedir} > + cp $CP_ARGS ${S}/arm_compute ${D}${includedir} > + cp $CP_ARGS ${S}/support ${D}${includedir}/support > + > + # Install examples > + if ${@bb.utils.contains('PACKAGECONFIG', 'examples', 'true', 'false', d)}; then > + install -d ${D}${bindir}/${PN}-${PV}/examples > + for example in ${B}/examples/*; do > + if [ -d "$example" ]; then > + continue > + fi > + case "$example" in > + (*.o|*.a|*.cmake) continue;; > + esac > + install -m 0555 $example ${D}${bindir}/${PN}-${PV}/examples > + done > + fi > +} > + > +PACKAGES =+ "${PN}-tests ${PN}-examples" > +FILES:${PN}-tests += "${libdir}/tests" > +FILES:${PN}-examples += "${bindir}/*/examples" > diff --git a/meta-arago-test/recipes-core/packagegroups/ti-test.bb b/meta-arago-test/recipes-core/packagegroups/ti-test.bb > index e8458cef..37f75a39 100644 > --- a/meta-arago-test/recipes-core/packagegroups/ti-test.bb > +++ b/meta-arago-test/recipes-core/packagegroups/ti-test.bb > @@ -61,6 +61,7 @@ TI_TEST_EXTRAS = " \ > piglit \ > python3-numpy \ > wayland-utils \ > + arm-compute-library-tests \ > " > > TI_TEST_BASE:append:armv7a = " \
On 1/9/25 12:27 PM, Ryan Eatmon wrote: > > This fails to build for omapl138-lcdk. Do we need a v2 that address this? > Ah, forgot about that old thing.. ACL is ARMv7+ only, so I'll update COMPATIBLE_HOST to drop armv5 in v2. Thanks, Andrew > > On 12/20/2024 10:49 AM, Andrew Davis wrote: >> The Compute Library is a collection of low-level machine learning >> functions optimized for Arm. This will be used for ARMNN and >> other machine learning applications and frameworks. >> >> Signed-off-by: Andrew Davis <afd@ti.com> >> --- >> ...-indention-in-cmake-generator-script.patch | 130 ++++++++++++ >> ...ENABLE_NEON-in-code-for-checking-NEO.patch | 114 ++++++++++ >> ...ENABLE_SVE-in-code-for-checking-SVE-.patch | 197 ++++++++++++++++++ >> ...rce-files-at-library-definition-time.patch | 167 +++++++++++++++ >> ...ptions-for-SVE-SVE2-and-BF16-support.patch | 112 ++++++++++ >> ...SVE2-support-to-be-disabled-in-CMake.patch | 91 ++++++++ >> .../0007-Allow-ARMv7-builds-using-CMake.patch | 86 ++++++++ >> ...ymbol-error-when-building-TensorInfo.patch | 46 ++++ >> .../arm-compute-library_24.12.bb | 79 +++++++ >> .../recipes-core/packagegroups/ti-test.bb | 1 + >> 10 files changed, 1023 insertions(+) >> create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0001-fix-Fix-indention-in-cmake-generator-script.patch >> create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0002-Use-ARM_COMPUTE_ENABLE_NEON-in-code-for-checking-NEO.patch >> create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0003-Use-ARM_COMPUTE_ENABLE_SVE-in-code-for-checking-SVE-.patch >> create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0004-Add-source-files-at-library-definition-time.patch >> create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0005-Add-CMake-options-for-SVE-SVE2-and-BF16-support.patch >> create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0006-Allow-SVE-and-SVE2-support-to-be-disabled-in-CMake.patch >> create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0007-Allow-ARMv7-builds-using-CMake.patch >> create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0008-Fix-undefined-symbol-error-when-building-TensorInfo.patch >> create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library_24.12.bb >> >> diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0001-fix-Fix-indention-in-cmake-generator-script.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0001-fix-Fix-indention-in-cmake-generator-script.patch >> new file mode 100644 >> index 00000000..9e36d254 >> --- /dev/null >> +++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0001-fix-Fix-indention-in-cmake-generator-script.patch >> @@ -0,0 +1,130 @@ >> +From 1e4c3016547b5f75e515d4b9a7202733c47f5a18 Mon Sep 17 00:00:00 2001 >> +From: Andrew Davis <afd@ti.com> >> +Date: Wed, 4 Dec 2024 14:46:17 -0600 >> +Subject: [PATCH] fix: Fix indention in cmake generator script >> + >> +All other items in these lists use tabs, the first couple >> +lines should match. Switch them to tabs then regenerate >> +the CMakeLists.txt file. >> + >> +While here fix the missing ending newline. >> + >> +Upstream-Status: Pending >> + >> +Signed-off-by: Andrew Davis <afd@ti.com> >> +Change-Id: Icab852fc43ae08e7858857881c996d233c835289 >> +--- >> + scripts/generate_build_files.py | 27 ++++++++++++++------------- >> + src/CMakeLists.txt | 26 +++++++++++++------------- >> + 2 files changed, 27 insertions(+), 26 deletions(-) >> + >> +diff --git a/scripts/generate_build_files.py b/scripts/generate_build_files.py >> +index f88cf1af44..52a8cc14da 100644 >> +--- a/scripts/generate_build_files.py >> ++++ b/scripts/generate_build_files.py >> +@@ -168,28 +168,29 @@ def build_from_template_cmake(srcs_graph, srcs_sve, srcs_sve2, srcs_core): >> + template = f"""{get_template_header()} >> + >> + target_sources( >> +- arm_compute_graph >> +- PRIVATE >> +- {line_separator.join(srcs_graph)} >> ++ arm_compute_graph >> ++ PRIVATE >> ++ {line_separator.join(srcs_graph)} >> + ) >> + >> + target_sources( >> +- arm_compute_sve >> +- PRIVATE >> +- {line_separator.join(srcs_sve)} >> ++ arm_compute_sve >> ++ PRIVATE >> ++ {line_separator.join(srcs_sve)} >> + ) >> + >> + target_sources( >> +- arm_compute_sve2 >> +- PRIVATE >> +- {line_separator.join(srcs_sve2)} >> ++ arm_compute_sve2 >> ++ PRIVATE >> ++ {line_separator.join(srcs_sve2)} >> + ) >> + >> + target_sources( >> +- arm_compute >> +- PRIVATE >> +- {line_separator.join(srcs_core)} >> +-)""" >> ++ arm_compute >> ++ PRIVATE >> ++ {line_separator.join(srcs_core)} >> ++) >> ++""" >> + return template >> + >> + >> +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt >> +index ff3bed96df..f1b275532a 100644 >> +--- a/src/CMakeLists.txt >> ++++ b/src/CMakeLists.txt >> +@@ -21,9 +21,9 @@ >> + # SOFTWARE. >> + >> + target_sources( >> +- arm_compute_graph >> +- PRIVATE >> +- graph/DataLayerVisitor.cpp >> ++ arm_compute_graph >> ++ PRIVATE >> ++ graph/DataLayerVisitor.cpp >> + graph/Graph.cpp >> + graph/GraphBuilder.cpp >> + graph/GraphContext.cpp >> +@@ -101,9 +101,9 @@ target_sources( >> + ) >> + >> + target_sources( >> +- arm_compute_sve >> +- PRIVATE >> +- core/NEON/kernels/arm_conv/depthwise/interleaves/sve_s8q_3x3_dot.cpp >> ++ arm_compute_sve >> ++ PRIVATE >> ++ core/NEON/kernels/arm_conv/depthwise/interleaves/sve_s8q_3x3_dot.cpp >> + core/NEON/kernels/arm_conv/depthwise/interleaves/sve_u8q_3x3_dot.cpp >> + core/NEON/kernels/arm_conv/depthwise/kernels/sme2_fp16_nhwc_3x3_s1_output2x2_mla_depthfirst/generic_direct.cpp >> + core/NEON/kernels/arm_conv/depthwise/kernels/sme2_fp16_nhwc_3x3_s1_output2x2_mla_depthfirst/generic_indirect.cpp >> +@@ -332,9 +332,9 @@ target_sources( >> + ) >> + >> + target_sources( >> +- arm_compute_sve2 >> +- PRIVATE >> +- cpu/kernels/activation/generic/sve2/lut.cpp >> ++ arm_compute_sve2 >> ++ PRIVATE >> ++ cpu/kernels/activation/generic/sve2/lut.cpp >> + cpu/kernels/activation/generic/sve2/qasymm8.cpp >> + cpu/kernels/activation/generic/sve2/qasymm8_signed.cpp >> + cpu/kernels/activation/generic/sve2/qsymm16.cpp >> +@@ -357,9 +357,9 @@ target_sources( >> + ) >> + >> + target_sources( >> +- arm_compute >> +- PRIVATE >> +- c/AclContext.cpp >> ++ arm_compute >> ++ PRIVATE >> ++ c/AclContext.cpp >> + c/AclOperator.cpp >> + c/AclQueue.cpp >> + c/AclTensor.cpp >> +@@ -1049,4 +1049,4 @@ target_sources( >> + runtime/experimental/operators/CpuSub.cpp >> + runtime/experimental/operators/CpuTranspose.cpp >> + runtime/experimental/operators/CpuWinogradConv2d.cpp >> +-) >> +\ No newline at end of file >> ++) >> diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0002-Use-ARM_COMPUTE_ENABLE_NEON-in-code-for-checking-NEO.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0002-Use-ARM_COMPUTE_ENABLE_NEON-in-code-for-checking-NEO.patch >> new file mode 100644 >> index 00000000..174327c5 >> --- /dev/null >> +++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0002-Use-ARM_COMPUTE_ENABLE_NEON-in-code-for-checking-NEO.patch >> @@ -0,0 +1,114 @@ >> +From 4350c56d14b7b68acd060d8331f3ade1fb74e167 Mon Sep 17 00:00:00 2001 >> +From: Andrew Davis <afd@ti.com> >> +Date: Thu, 5 Dec 2024 09:21:23 -0600 >> +Subject: [PATCH] Use ARM_COMPUTE_ENABLE_NEON in code for checking NEON support >> + >> +ENABLE_NEON is a flag used by the build systems. The flag is not used >> +in code, instead ARM_COMPUTE_ENABLE_NEON is used everywhere. >> + >> +Drop the ENABLE_NEON compiler definition to prevent any accidental >> +use in code. >> + >> +Upstream-Status: Pending >> + >> +Signed-off-by: Andrew Davis <afd@ti.com> >> +Change-Id: I65f5e7411c99280e2dd8c187140909cefd1c6892 >> +--- >> + Android.bp | 1 - >> + BUILD.bazel | 1 - >> + SConscript | 2 +- >> + SConstruct | 2 +- >> + cmake/Options.cmake | 6 +----- >> + scripts/generate_android_bp.py | 1 - >> + 6 files changed, 3 insertions(+), 10 deletions(-) >> + >> +diff --git a/Android.bp b/Android.bp >> +index 69379472b0..9288bba2d4 100644 >> +--- a/Android.bp >> ++++ b/Android.bp >> +@@ -157,7 +157,6 @@ arm_compute_library_defaults { >> + "-DEMBEDDED_KERNELS", >> + "-DARM_COMPUTE_ASSERTS_ENABLED", >> + "-DARM_COMPUTE_CPP_SCHEDULER", >> +- "-DENABLE_NEON", >> + "-DARM_COMPUTE_ENABLE_NEON", >> + "-Wno-unused-parameter", >> + "-DNO_DOT_IN_TOOLCHAIN", >> +diff --git a/BUILD.bazel b/BUILD.bazel >> +index f553b7bfad..2262a09655 100644 >> +--- a/BUILD.bazel >> ++++ b/BUILD.bazel >> +@@ -170,7 +170,6 @@ config_setting( >> + cc_library( >> + name = "common_defines", >> + defines = [ >> +- "ENABLE_NEON", >> + "ARM_COMPUTE_CPU_ENABLED", >> + "ARM_COMPUTE_ENABLE_NEON", >> + "ARM_COMPUTE_ENABLE_I8MM", >> +diff --git a/SConscript b/SConscript >> +index 12e8fd1025..69a564873f 100644 >> +--- a/SConscript >> ++++ b/SConscript >> +@@ -97,7 +97,7 @@ def build_multiisa_lib_objects(): >> + >> + # note that ARM_COMPUTE_ENABLE_FP16 is enabled in update_data_type_layout_flags() to make >> + # sure the environment is progated to the validation suite >> +- arm_compute_env.Append(CPPDEFINES = ['ENABLE_NEON', 'ARM_COMPUTE_ENABLE_NEON', >> ++ arm_compute_env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_NEON', >> + 'ENABLE_SVE', 'ARM_COMPUTE_ENABLE_SVE','ARM_COMPUTE_ENABLE_BF16', >> + 'ARM_COMPUTE_ENABLE_I8MM', 'ARM_COMPUTE_ENABLE_SVEF32MM']) >> + >> +diff --git a/SConstruct b/SConstruct >> +index 8d7bd291e8..7381300fc8 100644 >> +--- a/SConstruct >> ++++ b/SConstruct >> +@@ -302,7 +302,7 @@ if 'v7a' in env['estate'] and env['estate'] == '64': >> + print("ERROR: armv7a architecture has only 32-bit execution state") >> + Exit(1) >> + >> +-env.Append(CPPDEFINES = ['ENABLE_NEON', 'ARM_COMPUTE_ENABLE_NEON']) >> ++env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_NEON']) >> + >> + if 'sve' in env['arch']: >> + env.Append(CPPDEFINES = ['ENABLE_SVE', 'ARM_COMPUTE_ENABLE_SVE']) >> +diff --git a/cmake/Options.cmake b/cmake/Options.cmake >> +index 5d685be48d..121d527718 100644 >> +--- a/cmake/Options.cmake >> ++++ b/cmake/Options.cmake >> +@@ -53,7 +53,6 @@ option(ARM_COMPUTE_ENABLE_SVE_VALIDATION "" OFF) >> + >> + option(ENABLE_NEON "Enable Arm® Neon™ support" ON) >> + option(ARM_COMPUTE_CPU_ENABLED "" ON) >> +-option(ARM_COMPUTE_ENABLE_NEON "" ON) >> + option(ARM_COMPUTE_ENABLE_I8MM "" ON) >> + option(ENABLE_FP32_KERNELS "" ON) >> + option(ENABLE_QASYMM8_KERNELS "" ON) >> +@@ -70,14 +69,11 @@ option(ENABLE_FP16_KERNELS "" OFF) >> + option(ARM_COMPUTE_ENABLE_FP16 "" OFF) >> + >> + if(ENABLE_NEON) >> +- add_definitions(-DENABLE_NEON) >> ++ add_definitions(-DARM_COMPUTE_ENABLE_NEON) >> + endif() >> + if(ARM_COMPUTE_CPU_ENABLED) >> + add_definitions(-DARM_COMPUTE_CPU_ENABLED) >> + endif() >> +-if(ARM_COMPUTE_ENABLE_NEON) >> +- add_definitions(-DARM_COMPUTE_ENABLE_NEON) >> +-endif() >> + if(ARM_COMPUTE_ENABLE_FP16) >> + add_definitions(-DARM_COMPUTE_ENABLE_FP16) >> + endif() >> +diff --git a/scripts/generate_android_bp.py b/scripts/generate_android_bp.py >> +index d5b268f522..99a04e7071 100755 >> +--- a/scripts/generate_android_bp.py >> ++++ b/scripts/generate_android_bp.py >> +@@ -94,7 +94,6 @@ arm_compute_library_defaults { >> + "-DEMBEDDED_KERNELS", >> + "-DARM_COMPUTE_ASSERTS_ENABLED", >> + "-DARM_COMPUTE_CPP_SCHEDULER", >> +- "-DENABLE_NEON", >> + "-DARM_COMPUTE_ENABLE_NEON", >> + "-Wno-unused-parameter", >> + "-DNO_DOT_IN_TOOLCHAIN", >> diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0003-Use-ARM_COMPUTE_ENABLE_SVE-in-code-for-checking-SVE-.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0003-Use-ARM_COMPUTE_ENABLE_SVE-in-code-for-checking-SVE-.patch >> new file mode 100644 >> index 00000000..b51e4534 >> --- /dev/null >> +++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0003-Use-ARM_COMPUTE_ENABLE_SVE-in-code-for-checking-SVE-.patch >> @@ -0,0 +1,197 @@ >> +From 92a881cebfee5504b188a046a96d39dd9361ddb1 Mon Sep 17 00:00:00 2001 >> +From: Andrew Davis <afd@ti.com> >> +Date: Thu, 5 Dec 2024 08:57:38 -0600 >> +Subject: [PATCH] Use ARM_COMPUTE_ENABLE_SVE in code for checking SVE support >> + >> +ENABLE_SVE is a flag used by the build systems. The flag used in code >> +is ARM_COMPUTE_ENABLE_SVE. There are just a couple spots where the >> +build system flag is used instead causing the need to define both. >> + >> +Switch these last users of ENABLE_SVE over to ARM_COMPUTE_ENABLE_SVE >> +then drop the ENABLE_SVE definition to prevent any more instances >> +being added in the future. >> + >> +Upstream-Status: Pending >> + >> +Signed-off-by: Andrew Davis <afd@ti.com> >> +Change-Id: I00da7580c4520647b62c6989bc7fbdd5efc7935e >> +--- >> + BUILD.bazel | 3 --- >> + SConscript | 2 +- >> + SConstruct | 2 +- >> + .../batchnormalization/impl/SVE/fp16.cpp | 2 +- >> + .../batchnormalization/impl/SVE/fp32.cpp | 2 +- >> + tests/BUILD.bazel | 1 - >> + tests/validation/NEON/ActivationLayer.cpp | 24 +++++++++---------- >> + tests/validation/NEON/ArithmeticAddition.cpp | 6 ++--- >> + 8 files changed, 19 insertions(+), 23 deletions(-) >> + >> +diff --git a/BUILD.bazel b/BUILD.bazel >> +index 2262a09655..c04a52e084 100644 >> +--- a/BUILD.bazel >> ++++ b/BUILD.bazel >> +@@ -297,7 +297,6 @@ cc_library( >> + "//conditions:default": [], >> + }), >> + local_defines = [ >> +- "ENABLE_SVE", >> + "ARM_COMPUTE_ENABLE_SVE", >> + "ARM_COMPUTE_ENABLE_SVE2", >> + "ARM_COMPUTE_ENABLE_BF16", >> +@@ -348,7 +347,6 @@ cc_library( >> + "//conditions:default": [], >> + }), >> + local_defines = [ >> +- "ENABLE_SVE", >> + "ARM_COMPUTE_ENABLE_SVE", >> + "ARM_COMPUTE_ENABLE_BF16", >> + ], >> +@@ -409,7 +407,6 @@ cc_library( >> + "//conditions:default": [], >> + }), >> + local_defines = [ >> +- "ENABLE_SVE", >> + "ARM_COMPUTE_ENABLE_SVE", >> + "ARM_COMPUTE_ENABLE_BF16", >> + ], >> +diff --git a/SConscript b/SConscript >> +index 69a564873f..c2ca549b71 100644 >> +--- a/SConscript >> ++++ b/SConscript >> +@@ -98,7 +98,7 @@ def build_multiisa_lib_objects(): >> + # note that ARM_COMPUTE_ENABLE_FP16 is enabled in update_data_type_layout_flags() to make >> + # sure the environment is progated to the validation suite >> + arm_compute_env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_NEON', >> +- 'ENABLE_SVE', 'ARM_COMPUTE_ENABLE_SVE','ARM_COMPUTE_ENABLE_BF16', >> ++ 'ARM_COMPUTE_ENABLE_SVE','ARM_COMPUTE_ENABLE_BF16', >> + 'ARM_COMPUTE_ENABLE_I8MM', 'ARM_COMPUTE_ENABLE_SVEF32MM']) >> + >> + # Build all the common files for the base architecture >> +diff --git a/SConstruct b/SConstruct >> +index 7381300fc8..17f5615acf 100644 >> +--- a/SConstruct >> ++++ b/SConstruct >> +@@ -305,7 +305,7 @@ if 'v7a' in env['estate'] and env['estate'] == '64': >> + env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_NEON']) >> + >> + if 'sve' in env['arch']: >> +- env.Append(CPPDEFINES = ['ENABLE_SVE', 'ARM_COMPUTE_ENABLE_SVE']) >> ++ env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_SVE']) >> + if 'sve2' in env['arch']: >> + env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_SVE2']) >> + >> +diff --git a/src/core/NEON/kernels/batchnormalization/impl/SVE/fp16.cpp b/src/core/NEON/kernels/batchnormalization/impl/SVE/fp16.cpp >> +index 48caaa3e63..e07593312c 100644 >> +--- a/src/core/NEON/kernels/batchnormalization/impl/SVE/fp16.cpp >> ++++ b/src/core/NEON/kernels/batchnormalization/impl/SVE/fp16.cpp >> +@@ -128,4 +128,4 @@ void fp16_sve_batch_normalization(ITensor *src, >> + } >> + } // namespace cpu >> + } // namespace arm_compute >> +-#endif // ENABLE_SVE >> ++#endif // ARM_COMPUTE_ENABLE_SVE >> +diff --git a/src/core/NEON/kernels/batchnormalization/impl/SVE/fp32.cpp b/src/core/NEON/kernels/batchnormalization/impl/SVE/fp32.cpp >> +index df4fbfe607..0d52d2c3c0 100644 >> +--- a/src/core/NEON/kernels/batchnormalization/impl/SVE/fp32.cpp >> ++++ b/src/core/NEON/kernels/batchnormalization/impl/SVE/fp32.cpp >> +@@ -128,4 +128,4 @@ void fp32_sve_batch_normalization(ITensor *src, >> + } >> + } // namespace cpu >> + } // namespace arm_compute >> +-#endif // ENABLE_SVE >> ++#endif // ARM_COMPUTE_ENABLE_SVE >> +diff --git a/tests/BUILD.bazel b/tests/BUILD.bazel >> +index 7085f1facc..4b4be8b257 100644 >> +--- a/tests/BUILD.bazel >> ++++ b/tests/BUILD.bazel >> +@@ -114,7 +114,6 @@ cc_binary( >> + }) + >> + select({ >> + "//:sve_validation_flag": [ >> +- "ENABLE_SVE", >> + "ARM_COMPUTE_ENABLE_SVE", >> + ], >> + "//conditions:default": [], >> +diff --git a/tests/validation/NEON/ActivationLayer.cpp b/tests/validation/NEON/ActivationLayer.cpp >> +index 119d51808a..69a8b52354 100644 >> +--- a/tests/validation/NEON/ActivationLayer.cpp >> ++++ b/tests/validation/NEON/ActivationLayer.cpp >> +@@ -73,11 +73,11 @@ RelativeTolerance<float> relative_tolerance(DataType data_type, ActivationLayerI >> + switch(data_type) >> + { >> + case DataType::F16: >> +-#if defined(ENABLE_SVE) >> ++#if defined(ARM_COMPUTE_ENABLE_SVE) >> + return RelativeTolerance<float>(0.25f); >> +-#else // !defined(ENABLE_SVE) >> ++#else // !defined(ARM_COMPUTE_ENABLE_SVE) >> + return RelativeTolerance<float>(0.1f); >> +-#endif // defined(ENABLE_SVE) >> ++#endif // defined(ARM_COMPUTE_ENABLE_SVE) >> + default: >> + return RelativeTolerance<float>(0.05f); >> + } >> +@@ -85,11 +85,11 @@ RelativeTolerance<float> relative_tolerance(DataType data_type, ActivationLayerI >> + switch(data_type) >> + { >> + case DataType::F16: >> +-#if defined(ENABLE_SVE) >> ++#if defined(ARM_COMPUTE_ENABLE_SVE) >> + return RelativeTolerance<float>(0.9f); >> +-#else // !defined(ENABLE_SVE) >> ++#else // !defined(ARM_COMPUTE_ENABLE_SVE) >> + return RelativeTolerance<float>(0.01f); >> +-#endif // defined(ENABLE_SVE) >> ++#endif // defined(ARM_COMPUTE_ENABLE_SVE) >> + default: >> + return RelativeTolerance<float>(0.00001f); >> + } >> +@@ -117,11 +117,11 @@ AbsoluteTolerance<float> absolute_tolerance(DataType data_type, ActivationLayerI >> + switch(data_type) >> + { >> + case DataType::F16: >> +-#if defined(ENABLE_SVE) >> ++#if defined(ARM_COMPUTE_ENABLE_SVE) >> + return AbsoluteTolerance<float>(0.25f); >> +-#else // !defined(ENABLE_SVE) >> ++#else // !defined(ARM_COMPUTE_ENABLE_SVE) >> + return AbsoluteTolerance<float>(0.01f); >> +-#endif // defined(ENABLE_SVE) >> ++#endif // defined(ARM_COMPUTE_ENABLE_SVE) >> + default: >> + return AbsoluteTolerance<float>(0.00001f); >> + } >> +@@ -129,11 +129,11 @@ AbsoluteTolerance<float> absolute_tolerance(DataType data_type, ActivationLayerI >> + switch(data_type) >> + { >> + case DataType::F16: >> +-#if defined(ENABLE_SVE) >> ++#if defined(ARM_COMPUTE_ENABLE_SVE) >> + return AbsoluteTolerance<float>(0.9f); >> +-#else // !defined(ENABLE_SVE) >> ++#else // !defined(ARM_COMPUTE_ENABLE_SVE) >> + return AbsoluteTolerance<float>(0.01f); >> +-#endif // defined(ENABLE_SVE) >> ++#endif // defined(ARM_COMPUTE_ENABLE_SVE) >> + default: >> + return AbsoluteTolerance<float>(0.00001f); >> + } >> +diff --git a/tests/validation/NEON/ArithmeticAddition.cpp b/tests/validation/NEON/ArithmeticAddition.cpp >> +index c0033daab0..bae8535ff3 100644 >> +--- a/tests/validation/NEON/ArithmeticAddition.cpp >> ++++ b/tests/validation/NEON/ArithmeticAddition.cpp >> +@@ -48,11 +48,11 @@ namespace validation >> + using framework::dataset::make; >> + namespace >> + { >> +-#if !defined(__aarch64__) || defined(ENABLE_SVE) >> ++#if !defined(__aarch64__) || defined(ARM_COMPUTE_ENABLE_SVE) >> + constexpr AbsoluteTolerance<float> tolerance_quant(1); /**< Tolerance value for comparing reference's output against implementation's output for quantized data types */ >> +-#else // !defined(__aarch64__) || defined(ENABLE_SVE) >> ++#else // !defined(__aarch64__) || defined(ARM_COMPUTE_ENABLE_SVE) >> + constexpr AbsoluteTolerance<float> tolerance_quant(1); >> +-#endif // !defined(__aarch64__) || defined(ENABLE_SVE) >> ++#endif // !defined(__aarch64__) || defined(ARM_COMPUTE_ENABLE_SVE) >> + const auto InPlaceDataSet = framework::dataset::make("InPlace", { false, true }); >> + const auto OutOfPlaceDataSet = framework::dataset::make("InPlace", { false }); >> + } // namespace >> diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0004-Add-source-files-at-library-definition-time.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0004-Add-source-files-at-library-definition-time.patch >> new file mode 100644 >> index 00000000..971658b4 >> --- /dev/null >> +++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0004-Add-source-files-at-library-definition-time.patch >> @@ -0,0 +1,167 @@ >> +From a3c7d6aefc289dcce6656fc6d9f9c8c9b1af8f0b Mon Sep 17 00:00:00 2001 >> +From: Andrew Davis <afd@ti.com> >> +Date: Thu, 5 Dec 2024 09:38:26 -0600 >> +Subject: [PATCH] Add source files at library definition time >> + >> +This allows for easier conditional disabling of these libraries. >> + >> +Upstream-Status: Pending >> + >> +Signed-off-by: Andrew Davis <afd@ti.com> >> +Change-Id: I442aaa03060f2cb7db4ed0c1d93e64dbc223fdc6 >> +--- >> + CMakeLists.txt | 20 ++++++++++---------- >> + scripts/generate_build_files.py | 16 ++++------------ >> + src/CMakeLists.txt | 16 ++++------------ >> + 3 files changed, 18 insertions(+), 34 deletions(-) >> + >> +diff --git a/CMakeLists.txt b/CMakeLists.txt >> +index e8bdf2af1a..4073e06b17 100644 >> +--- a/CMakeLists.txt >> ++++ b/CMakeLists.txt >> +@@ -46,6 +46,12 @@ set(CMAKE_CXX_EXTENSIONS OFF) >> + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") >> + include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Options.cmake) >> + include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Version.cmake) >> ++include(${CMAKE_CURRENT_SOURCE_DIR}/src/CMakeLists.txt) >> ++ >> ++list(TRANSFORM ARM_COMPUTE_GRAPH_SOURCES PREPEND "src/") >> ++list(TRANSFORM ARM_COMPUTE_SVE_SOURCES PREPEND "src/") >> ++list(TRANSFORM ARM_COMPUTE_SVE2_SOURCES PREPEND "src/") >> ++list(TRANSFORM ARM_COMPUTE_SOURCES PREPEND "src/") >> + >> + # Require at least gcc/g++ 11) CMAKE_CXX_COMPILER_VERSION OR >> + if(CMAKE_C_COMPILER_VERSION VERSION_LESS 10.2 OR CMAKE_CXX_COMPILER_VERSION >> +@@ -139,8 +145,7 @@ endif() >> + >> + # --------------------------------------------------------------------- >> + # SVE Object Library >> +- >> +-add_library(arm_compute_sve OBJECT "") >> ++add_library(arm_compute_sve OBJECT ${ARM_COMPUTE_SVE_SOURCES}) >> + target_compile_options(arm_compute_sve >> + PRIVATE "-march=armv8.2-a+sve+fp16+dotprod" >> + PRIVATE "-fPIC") >> +@@ -162,8 +167,7 @@ target_include_directories( >> + >> + # --------------------------------------------------------------------- >> + # SVE2 Object Library >> +- >> +-add_library(arm_compute_sve2 OBJECT "") >> ++add_library(arm_compute_sve2 OBJECT ${ARM_COMPUTE_SVE2_SOURCES}) >> + target_compile_options(arm_compute_sve2 >> + PRIVATE "-march=armv8.6-a+sve2+fp16+dotprod" >> + PRIVATE "-fPIC") >> +@@ -187,7 +191,7 @@ target_include_directories( >> + # --------------------------------------------------------------------- >> + # Core Library >> + >> +-add_library(arm_compute "") >> ++add_library(arm_compute ${ARM_COMPUTE_SOURCES}) >> + target_compile_options(arm_compute PRIVATE "-march=${ARM_COMPUTE_ARCH}") >> + target_compile_definitions(arm_compute PRIVATE ARM_COMPUTE_ENABLE_BF16) >> + target_compile_definitions(arm_compute PRIVATE ENABLE_SVE) >> +@@ -216,7 +220,7 @@ target_link_libraries( >> + # --------------------------------------------------------------------- >> + # Graph Library >> + >> +-add_library(arm_compute_graph "") >> ++add_library(arm_compute_graph ${ARM_COMPUTE_GRAPH_SOURCES}) >> + target_compile_options(arm_compute_graph PRIVATE "-march=${ARM_COMPUTE_ARCH}") >> + target_compile_definitions(arm_compute_graph PRIVATE ENABLE_SVE) >> + target_compile_definitions(arm_compute_graph PRIVATE ARM_COMPUTE_ENABLE_SVE) >> +@@ -238,10 +242,6 @@ target_compile_options(arm_compute_graph PUBLIC ${COMMON_CXX_FLAGS}) >> + >> + add_library(ArmCompute::Graph ALIAS arm_compute_graph) >> + >> +-# --------------------------------------------------------------------- >> +-# Library Target Sources >> +-add_subdirectory(src) >> +- >> + if(ARM_COMPUTE_BUILD_TESTING) >> + # --------------------------------------------------------------------- >> + # Validation Framework Library >> +diff --git a/scripts/generate_build_files.py b/scripts/generate_build_files.py >> +index 52a8cc14da..4c4a14623f 100644 >> +--- a/scripts/generate_build_files.py >> ++++ b/scripts/generate_build_files.py >> +@@ -167,27 +167,19 @@ def build_from_template_cmake(srcs_graph, srcs_sve, srcs_sve2, srcs_core): >> + >> + template = f"""{get_template_header()} >> + >> +-target_sources( >> +- arm_compute_graph >> +- PRIVATE >> ++set(ARM_COMPUTE_GRAPH_SOURCES >> + {line_separator.join(srcs_graph)} >> + ) >> + >> +-target_sources( >> +- arm_compute_sve >> +- PRIVATE >> ++set(ARM_COMPUTE_SVE_SOURCES >> + {line_separator.join(srcs_sve)} >> + ) >> + >> +-target_sources( >> +- arm_compute_sve2 >> +- PRIVATE >> ++set(ARM_COMPUTE_SVE2_SOURCES >> + {line_separator.join(srcs_sve2)} >> + ) >> + >> +-target_sources( >> +- arm_compute >> +- PRIVATE >> ++set(ARM_COMPUTE_SOURCES >> + {line_separator.join(srcs_core)} >> + ) >> + """ >> +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt >> +index f1b275532a..73871563e1 100644 >> +--- a/src/CMakeLists.txt >> ++++ b/src/CMakeLists.txt >> +@@ -20,9 +20,7 @@ >> + # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE >> + # SOFTWARE. >> + >> +-target_sources( >> +- arm_compute_graph >> +- PRIVATE >> ++set(ARM_COMPUTE_GRAPH_SOURCES >> + graph/DataLayerVisitor.cpp >> + graph/Graph.cpp >> + graph/GraphBuilder.cpp >> +@@ -100,9 +98,7 @@ target_sources( >> + graph/printers/DotGraphPrinter.cpp >> + ) >> + >> +-target_sources( >> +- arm_compute_sve >> +- PRIVATE >> ++set(ARM_COMPUTE_SVE_SOURCES >> + core/NEON/kernels/arm_conv/depthwise/interleaves/sve_s8q_3x3_dot.cpp >> + core/NEON/kernels/arm_conv/depthwise/interleaves/sve_u8q_3x3_dot.cpp >> + core/NEON/kernels/arm_conv/depthwise/kernels/sme2_fp16_nhwc_3x3_s1_output2x2_mla_depthfirst/generic_direct.cpp >> +@@ -331,9 +327,7 @@ target_sources( >> + cpu/kernels/softmax/generic/sve/impl_bf16.cpp >> + ) >> + >> +-target_sources( >> +- arm_compute_sve2 >> +- PRIVATE >> ++set(ARM_COMPUTE_SVE2_SOURCES >> + cpu/kernels/activation/generic/sve2/lut.cpp >> + cpu/kernels/activation/generic/sve2/qasymm8.cpp >> + cpu/kernels/activation/generic/sve2/qasymm8_signed.cpp >> +@@ -356,9 +350,7 @@ target_sources( >> + cpu/kernels/softmax/generic/sve2/impl.cpp >> + ) >> + >> +-target_sources( >> +- arm_compute >> +- PRIVATE >> ++set(ARM_COMPUTE_SOURCES >> + c/AclContext.cpp >> + c/AclOperator.cpp >> + c/AclQueue.cpp >> diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0005-Add-CMake-options-for-SVE-SVE2-and-BF16-support.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0005-Add-CMake-options-for-SVE-SVE2-and-BF16-support.patch >> new file mode 100644 >> index 00000000..29ca02f5 >> --- /dev/null >> +++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0005-Add-CMake-options-for-SVE-SVE2-and-BF16-support.patch >> @@ -0,0 +1,112 @@ >> +From cdb765df59d8ce5f388ac2a820b5da76eb8d610c Mon Sep 17 00:00:00 2001 >> +From: Andrew Davis <afd@ti.com> >> +Date: Thu, 5 Dec 2024 09:47:25 -0600 >> +Subject: [PATCH] Add CMake options for SVE, SVE2, and BF16 support >> + >> +These should be optional, add options for these. Remove the hard-coded >> +definitions of these for the libraries. This also makes it so validation >> +options are not needed, if SVE is enabled it will be validated. >> + >> +Upstream-Status: Pending >> + >> +Signed-off-by: Andrew Davis <afd@ti.com> >> +Change-Id: I03182ac6ece843e813c027ef6a573cbba254dee9 >> +--- >> + CMakeLists.txt | 19 ------------------- >> + cmake/Options.cmake | 16 +++++++++++++--- >> + 2 files changed, 13 insertions(+), 22 deletions(-) >> + >> +diff --git a/CMakeLists.txt b/CMakeLists.txt >> +index 4073e06b17..4d95fb1bfd 100644 >> +--- a/CMakeLists.txt >> ++++ b/CMakeLists.txt >> +@@ -149,9 +149,6 @@ add_library(arm_compute_sve OBJECT ${ARM_COMPUTE_SVE_SOURCES}) >> + target_compile_options(arm_compute_sve >> + PRIVATE "-march=armv8.2-a+sve+fp16+dotprod" >> + PRIVATE "-fPIC") >> +-target_compile_definitions(arm_compute_sve PRIVATE ARM_COMPUTE_ENABLE_BF16) >> +-target_compile_definitions(arm_compute_sve PRIVATE ENABLE_SVE) >> +-target_compile_definitions(arm_compute_sve PRIVATE ARM_COMPUTE_ENABLE_SVE) >> + target_include_directories( >> + arm_compute_sve >> + PUBLIC $<INSTALL_INTERFACE:include> >> +@@ -171,10 +168,6 @@ add_library(arm_compute_sve2 OBJECT ${ARM_COMPUTE_SVE2_SOURCES}) >> + target_compile_options(arm_compute_sve2 >> + PRIVATE "-march=armv8.6-a+sve2+fp16+dotprod" >> + PRIVATE "-fPIC") >> +-target_compile_definitions(arm_compute_sve2 PRIVATE ARM_COMPUTE_ENABLE_SVE2) >> +-target_compile_definitions(arm_compute_sve2 PRIVATE ARM_COMPUTE_ENABLE_BF16) >> +-target_compile_definitions(arm_compute_sve2 PRIVATE ENABLE_SVE) >> +-target_compile_definitions(arm_compute_sve2 PRIVATE ARM_COMPUTE_ENABLE_SVE) >> + target_include_directories( >> + arm_compute_sve2 >> + PUBLIC $<INSTALL_INTERFACE:include> >> +@@ -193,9 +186,6 @@ target_include_directories( >> + >> + add_library(arm_compute ${ARM_COMPUTE_SOURCES}) >> + target_compile_options(arm_compute PRIVATE "-march=${ARM_COMPUTE_ARCH}") >> +-target_compile_definitions(arm_compute PRIVATE ARM_COMPUTE_ENABLE_BF16) >> +-target_compile_definitions(arm_compute PRIVATE ENABLE_SVE) >> +-target_compile_definitions(arm_compute PRIVATE ARM_COMPUTE_ENABLE_SVE) >> + target_include_directories( >> + arm_compute >> + PUBLIC $<INSTALL_INTERFACE:include> >> +@@ -222,8 +212,6 @@ target_link_libraries( >> + >> + add_library(arm_compute_graph ${ARM_COMPUTE_GRAPH_SOURCES}) >> + target_compile_options(arm_compute_graph PRIVATE "-march=${ARM_COMPUTE_ARCH}") >> +-target_compile_definitions(arm_compute_graph PRIVATE ENABLE_SVE) >> +-target_compile_definitions(arm_compute_graph PRIVATE ARM_COMPUTE_ENABLE_SVE) >> + # add_subdirectory(src/graph) >> + >> + target_include_directories( >> +@@ -268,13 +256,6 @@ if(ARM_COMPUTE_BUILD_TESTING) >> + >> + add_executable(arm_compute_validation "") >> + target_compile_options(arm_compute_validation PRIVATE "-march=${ARM_COMPUTE_ARCH}") >> +- if(ARM_COMPUTE_ENABLE_BF16_VALIDATION) >> +- target_compile_definitions(arm_compute_validation PRIVATE ARM_COMPUTE_ENABLE_BF16) >> +- endif() >> +- if(ARM_COMPUTE_ENABLE_SVE_VALIDATION) >> +- target_compile_definitions(arm_compute_validation PRIVATE ENABLE_SVE) >> +- target_compile_definitions(arm_compute_validation PRIVATE ARM_COMPUTE_ENABLE_SVE) >> +- endif() >> + add_subdirectory(tests/validation) >> + target_compile_options(arm_compute_validation PUBLIC ${COMMON_CXX_FLAGS}) >> + set_target_properties( >> +diff --git a/cmake/Options.cmake b/cmake/Options.cmake >> +index 121d527718..5c23fcb490 100644 >> +--- a/cmake/Options.cmake >> ++++ b/cmake/Options.cmake >> +@@ -48,11 +48,12 @@ set(ARM_COMPUTE_ARCH armv8-a CACHE STRING "Architecture to use") >> + # --------------------------------------------------------------------- >> + # Backends >> + >> +-option(ARM_COMPUTE_ENABLE_BF16_VALIDATION "" ON) >> +-option(ARM_COMPUTE_ENABLE_SVE_VALIDATION "" OFF) >> +- >> + option(ENABLE_NEON "Enable Arm® Neon™ support" ON) >> ++option(ENABLE_SVE "Enable Arm® SVE support" ON) >> ++option(ENABLE_SVE2 "Enable Arm® SVE2 support" ON) >> ++ >> + option(ARM_COMPUTE_CPU_ENABLED "" ON) >> ++option(ARM_COMPUTE_ENABLE_BF16 "" ON) >> + option(ARM_COMPUTE_ENABLE_I8MM "" ON) >> + option(ENABLE_FP32_KERNELS "" ON) >> + option(ENABLE_QASYMM8_KERNELS "" ON) >> +@@ -74,6 +75,15 @@ endif() >> + if(ARM_COMPUTE_CPU_ENABLED) >> + add_definitions(-DARM_COMPUTE_CPU_ENABLED) >> + endif() >> ++if(ENABLE_SVE) >> ++ add_definitions(-DARM_COMPUTE_ENABLE_SVE) >> ++endif() >> ++if(ENABLE_SVE2) >> ++ add_definitions(-DARM_COMPUTE_ENABLE_SVE2) >> ++endif() >> ++if(ARM_COMPUTE_ENABLE_BF16) >> ++ add_definitions(-DARM_COMPUTE_ENABLE_BF16) >> ++endif() >> + if(ARM_COMPUTE_ENABLE_FP16) >> + add_definitions(-DARM_COMPUTE_ENABLE_FP16) >> + endif() >> diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0006-Allow-SVE-and-SVE2-support-to-be-disabled-in-CMake.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0006-Allow-SVE-and-SVE2-support-to-be-disabled-in-CMake.patch >> new file mode 100644 >> index 00000000..06370adb >> --- /dev/null >> +++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0006-Allow-SVE-and-SVE2-support-to-be-disabled-in-CMake.patch >> @@ -0,0 +1,91 @@ >> +From ab5bf5b8f86337a31bfd48277650f583a040e658 Mon Sep 17 00:00:00 2001 >> +From: Andrew Davis <afd@ti.com> >> +Date: Thu, 5 Dec 2024 09:59:48 -0600 >> +Subject: [PATCH] Allow SVE and SVE2 support to be disabled in CMake >> + >> +Currently these are hard-coded as enabled. The SVE and SVE2 libraries >> +are built unconditionally. These should only be built when SVE or >> +SVE2 is available. >> + >> +Upstream-Status: Pending >> + >> +Signed-off-by: Andrew Davis <afd@ti.com> >> +Change-Id: I176259f872a84f736028622694d65d4c5b57e379 >> +--- >> + CMakeLists.txt | 25 ++++++++++++++++++------- >> + 1 file changed, 18 insertions(+), 7 deletions(-) >> + >> +diff --git a/CMakeLists.txt b/CMakeLists.txt >> +index 4d95fb1bfd..d233d6bc67 100644 >> +--- a/CMakeLists.txt >> ++++ b/CMakeLists.txt >> +@@ -145,6 +145,7 @@ endif() >> + >> + # --------------------------------------------------------------------- >> + # SVE Object Library >> ++if(ENABLE_SVE) >> + add_library(arm_compute_sve OBJECT ${ARM_COMPUTE_SVE_SOURCES}) >> + target_compile_options(arm_compute_sve >> + PRIVATE "-march=armv8.2-a+sve+fp16+dotprod" >> +@@ -161,9 +162,11 @@ target_include_directories( >> + src/core/cpu/kernels/assembly >> + src/cpu/kernels/assembly >> + src/core/NEON/kernels/arm_gemm/merges) >> ++endif() # ENABLE_SVE >> + >> + # --------------------------------------------------------------------- >> + # SVE2 Object Library >> ++if(ENABLE_SVE2) >> + add_library(arm_compute_sve2 OBJECT ${ARM_COMPUTE_SVE2_SOURCES}) >> + target_compile_options(arm_compute_sve2 >> + PRIVATE "-march=armv8.6-a+sve2+fp16+dotprod" >> +@@ -180,6 +183,7 @@ target_include_directories( >> + src/core/cpu/kernels/assembly >> + src/cpu/kernels/assembly >> + src/core/NEON/kernels/arm_gemm/merges) >> ++endif() # ENABLE_SVE2 >> + >> + # --------------------------------------------------------------------- >> + # Core Library >> +@@ -203,9 +207,12 @@ target_compile_options(arm_compute PUBLIC ${COMMON_CXX_FLAGS}) >> + add_library(ArmCompute::Core ALIAS arm_compute) >> + >> + # arm_compute_sve and arm_compute_sve2 obj files will not be public in the arm_compute.so >> +-target_link_libraries( >> +- arm_compute PRIVATE $<TARGET_OBJECTS:arm_compute_sve> >> +- PRIVATE $<TARGET_OBJECTS:arm_compute_sve2>) >> ++if(ENABLE_SVE) >> ++ target_link_libraries(arm_compute PRIVATE $<TARGET_OBJECTS:arm_compute_sve>) >> ++endif() >> ++if(ENABLE_SVE2) >> ++ target_link_libraries(arm_compute PRIVATE $<TARGET_OBJECTS:arm_compute_sve2>) >> ++endif() >> + >> + # --------------------------------------------------------------------- >> + # Graph Library >> +@@ -263,8 +270,10 @@ if(ARM_COMPUTE_BUILD_TESTING) >> + "${CMAKE_BINARY_DIR}/validation") >> + target_link_libraries( >> + arm_compute_validation >> +- PUBLIC arm_compute arm_compute_graph arm_compute_validation_framework >> +- arm_compute_sve) >> ++ PUBLIC arm_compute arm_compute_graph arm_compute_validation_framework) >> ++ if(ENABLE_SVE) >> ++ target_link_libraries(arm_compute_validation PUBLIC arm_compute_sve) >> ++ endif() >> + target_link_directories(arm_compute_validation PUBLIC tests) >> + >> + # --------------------------------------------------------------------- >> +@@ -299,8 +308,10 @@ if(ARM_COMPUTE_BUILD_EXAMPLES) >> + set_target_properties( >> + ${test_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY >> + "${CMAKE_BINARY_DIR}/examples") >> +- target_link_libraries(${test_name} PUBLIC arm_compute >> +- arm_compute_graph arm_compute_sve) >> ++ target_link_libraries(${test_name} PUBLIC arm_compute arm_compute_graph) >> ++ if(ENABLE_SVE) >> ++ target_link_libraries(${test_name} PUBLIC arm_compute_sve) >> ++ endif() >> + endforeach() >> + >> + # NEON Examples >> diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0007-Allow-ARMv7-builds-using-CMake.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0007-Allow-ARMv7-builds-using-CMake.patch >> new file mode 100644 >> index 00000000..07dd4bee >> --- /dev/null >> +++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0007-Allow-ARMv7-builds-using-CMake.patch >> @@ -0,0 +1,86 @@ >> +From 416cffe2a75a4ec66a75e00bc00297f2f0187e0f Mon Sep 17 00:00:00 2001 >> +From: Andrew Davis <afd@ti.com> >> +Date: Thu, 5 Dec 2024 10:05:03 -0600 >> +Subject: [PATCH] Allow ARMv7 builds using CMake >> + >> +Upstream-Status: Pending >> + >> +Signed-off-by: Andrew Davis <afd@ti.com> >> +Change-Id: Ib6bae5820569a8eadd53afdfe31e611a3089140e >> +--- >> + CMakeLists.txt | 25 +++++++++++++++++-- >> + .../fixtures/CpuGemmAssemblyDispatchFixture.h | 3 +++ >> + 2 files changed, 26 insertions(+), 2 deletions(-) >> + >> +diff --git a/CMakeLists.txt b/CMakeLists.txt >> +index d233d6bc67..4fc27553f3 100644 >> +--- a/CMakeLists.txt >> ++++ b/CMakeLists.txt >> +@@ -148,7 +148,7 @@ endif() >> + if(ENABLE_SVE) >> + add_library(arm_compute_sve OBJECT ${ARM_COMPUTE_SVE_SOURCES}) >> + target_compile_options(arm_compute_sve >> +- PRIVATE "-march=armv8.2-a+sve+fp16+dotprod" >> ++ PRIVATE "-march=${ARM_COMPUTE_ARCH}" >> + PRIVATE "-fPIC") >> + target_include_directories( >> + arm_compute_sve >> +@@ -169,7 +169,7 @@ endif() # ENABLE_SVE >> + if(ENABLE_SVE2) >> + add_library(arm_compute_sve2 OBJECT ${ARM_COMPUTE_SVE2_SOURCES}) >> + target_compile_options(arm_compute_sve2 >> +- PRIVATE "-march=armv8.6-a+sve2+fp16+dotprod" >> ++ PRIVATE "-march=${ARM_COMPUTE_ARCH}" >> + PRIVATE "-fPIC") >> + target_include_directories( >> + arm_compute_sve2 >> +@@ -204,6 +204,15 @@ target_include_directories( >> + src/core/NEON/kernels/convolution/winograd) >> + target_compile_options(arm_compute PUBLIC ${COMMON_CXX_FLAGS}) >> + >> ++if(ARM_COMPUTE_ARCH MATCHES "armv7") >> ++ target_sources( >> ++ arm_compute >> ++ PRIVATE >> ++ src/core/NEON/kernels/arm_gemm/kernels/a32_sgemm_8x6/a53.cpp >> ++ src/core/NEON/kernels/arm_gemm/kernels/a32_sgemm_8x6/a55r1.cpp >> ++ src/core/NEON/kernels/arm_gemm/kernels/a32_sgemm_8x6/generic.cpp) >> ++endif() >> ++ >> + add_library(ArmCompute::Core ALIAS arm_compute) >> + >> + # arm_compute_sve and arm_compute_sve2 obj files will not be public in the arm_compute.so >> +@@ -264,6 +273,18 @@ if(ARM_COMPUTE_BUILD_TESTING) >> + add_executable(arm_compute_validation "") >> + target_compile_options(arm_compute_validation PRIVATE "-march=${ARM_COMPUTE_ARCH}") >> + add_subdirectory(tests/validation) >> ++ target_include_directories( >> ++ arm_compute_validation >> ++ PUBLIC $<INSTALL_INTERFACE:include> >> ++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> >> ++ ${CMAKE_CURRENT_SOURCE_DIR} >> ++ PRIVATE src >> ++ src/cpu/kernels/assembly >> ++ src/core/NEON/kernels/arm_gemm >> ++ src/core/NEON/kernels/assembly >> ++ src/core/NEON/kernels/convolution/common >> ++ src/core/NEON/kernels/arm_conv/depthwise >> ++ src/core/NEON/kernels/convolution/winograd) >> + target_compile_options(arm_compute_validation PUBLIC ${COMMON_CXX_FLAGS}) >> + set_target_properties( >> + arm_compute_validation PROPERTIES RUNTIME_OUTPUT_DIRECTORY >> +diff --git a/tests/validation/fixtures/CpuGemmAssemblyDispatchFixture.h b/tests/validation/fixtures/CpuGemmAssemblyDispatchFixture.h >> +index 5d74e210d5..0b45cdf356 100644 >> +--- a/tests/validation/fixtures/CpuGemmAssemblyDispatchFixture.h >> ++++ b/tests/validation/fixtures/CpuGemmAssemblyDispatchFixture.h >> +@@ -25,7 +25,10 @@ >> + #define ACL_TESTS_VALIDATION_FIXTURES_CPUGEMMASSEMBLYDISPATCHFIXTURE_H >> + >> + #include "arm_compute/core/Helpers.h" >> ++ >> ++#ifdef ARM_COMPUTE_ENABLE_FIXED_FORMAT_KERNELS >> + #include "arm_compute/runtime/NEON/functions/NEReorderLayer.h" >> ++#endif //ARM_COMPUTE_ENABLE_FIXED_FORMAT_KERNELS >> + #include "arm_compute/runtime/NEON/functions/NETranspose.h" >> + >> + #include "src/core/NEON/kernels/arm_gemm/utils.hpp" >> diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0008-Fix-undefined-symbol-error-when-building-TensorInfo.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0008-Fix-undefined-symbol-error-when-building-TensorInfo.patch >> new file mode 100644 >> index 00000000..9883a44d >> --- /dev/null >> +++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0008-Fix-undefined-symbol-error-when-building-TensorInfo.patch >> @@ -0,0 +1,46 @@ >> +From 58698788adaeb2f74cf9fcddf06f3e9a2e78b984 Mon Sep 17 00:00:00 2001 >> +From: Andrew Davis <afd@ti.com> >> +Date: Mon, 16 Dec 2024 09:42:22 -0600 >> +Subject: [PATCH] Fix undefined symbol error when building TensorInfo >> + >> +Upstream-Status: Pending >> + >> +Signed-off-by: Andrew Davis <afd@ti.com> >> +Change-Id: I657d1b7faaad94147c685c4826916d3c21da82e1 >> +--- >> + arm_compute/core/TensorInfo.h | 5 +---- >> + src/core/TensorInfo.cpp | 5 +++++ >> + 2 files changed, 6 insertions(+), 4 deletions(-) >> + >> +diff --git a/arm_compute/core/TensorInfo.h b/arm_compute/core/TensorInfo.h >> +index e4c9cbe879..2bfe83c4b1 100644 >> +--- a/arm_compute/core/TensorInfo.h >> ++++ b/arm_compute/core/TensorInfo.h >> +@@ -242,10 +242,7 @@ public: >> + { >> + return _num_channels; >> + } >> +- const TensorShape &tensor_shape() const override >> +- { >> +- return _tensor_shape; >> +- } >> ++ const TensorShape &tensor_shape() const override; >> + const TensorDimsState &tensor_dims_state() const override >> + { >> + return _dims_state; >> +diff --git a/src/core/TensorInfo.cpp b/src/core/TensorInfo.cpp >> +index 31bddbde40..884203fd7c 100644 >> +--- a/src/core/TensorInfo.cpp >> ++++ b/src/core/TensorInfo.cpp >> +@@ -395,6 +395,11 @@ ITensorInfo &TensorInfo::set_tensor_dims_state(const TensorDimsState &state) >> + return *this; >> + } >> + >> ++const TensorShape &TensorInfo::tensor_shape() const >> ++{ >> ++ return _tensor_shape; >> ++} >> ++ >> + ITensorInfo &TensorInfo::set_quantization_info(const QuantizationInfo &quantization_info) >> + { >> + _quantization_info = quantization_info; >> diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library_24.12.bb b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library_24.12.bb >> new file mode 100644 >> index 00000000..d069da4c >> --- /dev/null >> +++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library_24.12.bb >> @@ -0,0 +1,79 @@ >> +SUMMARY = "The ARM Computer Vision and Machine Learning library" >> +DESCRIPTION = "The ARM Computer Vision and Machine Learning library is a set of functions optimised for both ARM CPUs and GPUs." >> +LICENSE = "MIT" >> +LIC_FILES_CHKSUM = "file://LICENSES/MIT.txt;md5=35f8944fae972976691f3483b0ac9dba" >> + >> +SRC_URI = " \ >> + git://github.com/ARM-software/ComputeLibrary.git;branch=main;protocol=https \ >> + file://0001-fix-Fix-indention-in-cmake-generator-script.patch \ >> + file://0002-Use-ARM_COMPUTE_ENABLE_NEON-in-code-for-checking-NEO.patch \ >> + file://0003-Use-ARM_COMPUTE_ENABLE_SVE-in-code-for-checking-SVE-.patch \ >> + file://0004-Add-source-files-at-library-definition-time.patch \ >> + file://0005-Add-CMake-options-for-SVE-SVE2-and-BF16-support.patch \ >> + file://0006-Allow-SVE-and-SVE2-support-to-be-disabled-in-CMake.patch \ >> + file://0007-Allow-ARMv7-builds-using-CMake.patch \ >> + file://0008-Fix-undefined-symbol-error-when-building-TensorInfo.patch \ >> +" >> +SRCREV = "32bcced2af7feea6969dd1d22e58d0718dc488e3" >> + >> +S = "${WORKDIR}/git" >> + >> +COMPATIBLE_HOST = "(arm|aarch64).*-linux" >> + >> +inherit cmake >> + >> +PACKAGECONFIG ??= "examples tests cppthreads openmp" >> + >> +PACKAGECONFIG[Werror] = "-DARM_COMPUTE_WERROR=ON,-DARM_COMPUTE_WERROR=OFF" >> +PACKAGECONFIG[examples] = "-DARM_COMPUTE_BUILD_EXAMPLES=ON,-DARM_COMPUTE_BUILD_EXAMPLES=OFF" >> +PACKAGECONFIG[tests] = "-DARM_COMPUTE_BUILD_TESTING=ON,-DARM_COMPUTE_BUILD_TESTING=OFF" >> +PACKAGECONFIG[cppthreads] = "-DARM_COMPUTE_CPPTHREADS=ON,-DARM_COMPUTE_CPPTHREADS=OFF" >> +PACKAGECONFIG[openmp] = "-DARM_COMPUTE_OPENMP=ON,-DARM_COMPUTE_OPENMP=OFF" >> + >> +EXTRA_OECMAKE:append:aarch64 = " \ >> + -DARM_COMPUTE_ARCH=armv8-a \ >> + -DENABLE_NEON=ON \ >> + -DENABLE_SVE=OFF \ >> + -DENABLE_SVE2=OFF \ >> +" >> +EXTRA_OECMAKE:append:arm = " \ >> + -DARM_COMPUTE_ARCH=armv7-a \ >> + -DENABLE_NEON=ON \ >> + -DENABLE_SVE=OFF \ >> + -DENABLE_SVE2=OFF \ >> + -DARM_COMPUTE_ENABLE_BF16=OFF \ >> + -DARM_COMPUTE_ENABLE_FIXED_FORMAT_KERNELS=OFF \ >> +" >> + >> +INHIBIT_PACKAGE_DEBUG_SPLIT = "1" >> + >> +# package unversioned .so files in PN (they are not dev symlinks) >> +FILES_SOLIBSDEV = "" >> +FILES:${PN} += "${libdir}/*.so" >> + >> +# Install headers and examples >> +do_install:append() { >> + # Install headers >> + CP_ARGS="-Prf --preserve=mode,timestamps --no-preserve=ownership" >> + install -d ${D}${includedir} >> + cp $CP_ARGS ${S}/arm_compute ${D}${includedir} >> + cp $CP_ARGS ${S}/support ${D}${includedir}/support >> + >> + # Install examples >> + if ${@bb.utils.contains('PACKAGECONFIG', 'examples', 'true', 'false', d)}; then >> + install -d ${D}${bindir}/${PN}-${PV}/examples >> + for example in ${B}/examples/*; do >> + if [ -d "$example" ]; then >> + continue >> + fi >> + case "$example" in >> + (*.o|*.a|*.cmake) continue;; >> + esac >> + install -m 0555 $example ${D}${bindir}/${PN}-${PV}/examples >> + done >> + fi >> +} >> + >> +PACKAGES =+ "${PN}-tests ${PN}-examples" >> +FILES:${PN}-tests += "${libdir}/tests" >> +FILES:${PN}-examples += "${bindir}/*/examples" >> diff --git a/meta-arago-test/recipes-core/packagegroups/ti-test.bb b/meta-arago-test/recipes-core/packagegroups/ti-test.bb >> index e8458cef..37f75a39 100644 >> --- a/meta-arago-test/recipes-core/packagegroups/ti-test.bb >> +++ b/meta-arago-test/recipes-core/packagegroups/ti-test.bb >> @@ -61,6 +61,7 @@ TI_TEST_EXTRAS = " \ >> piglit \ >> python3-numpy \ >> wayland-utils \ >> + arm-compute-library-tests \ >> " >> TI_TEST_BASE:append:armv7a = " \ >
On 1/9/2025 12:44 PM, Andrew Davis wrote: > On 1/9/25 12:27 PM, Ryan Eatmon wrote: >> >> This fails to build for omapl138-lcdk. Do we need a v2 that address >> this? >> > > Ah, forgot about that old thing.. > > ACL is ARMv7+ only, so I'll update COMPATIBLE_HOST to drop armv5 in v2. I think you also need to filter the package out for that platform in ti-test as well. > Thanks, > Andrew > >> >> On 12/20/2024 10:49 AM, Andrew Davis wrote: >>> The Compute Library is a collection of low-level machine learning >>> functions optimized for Arm. This will be used for ARMNN and >>> other machine learning applications and frameworks. >>> >>> Signed-off-by: Andrew Davis <afd@ti.com> >>> --- >>> ...-indention-in-cmake-generator-script.patch | 130 ++++++++++++ >>> ...ENABLE_NEON-in-code-for-checking-NEO.patch | 114 ++++++++++ >>> ...ENABLE_SVE-in-code-for-checking-SVE-.patch | 197 ++++++++++++++++++ >>> ...rce-files-at-library-definition-time.patch | 167 +++++++++++++++ >>> ...ptions-for-SVE-SVE2-and-BF16-support.patch | 112 ++++++++++ >>> ...SVE2-support-to-be-disabled-in-CMake.patch | 91 ++++++++ >>> .../0007-Allow-ARMv7-builds-using-CMake.patch | 86 ++++++++ >>> ...ymbol-error-when-building-TensorInfo.patch | 46 ++++ >>> .../arm-compute-library_24.12.bb | 79 +++++++ >>> .../recipes-core/packagegroups/ti-test.bb | 1 + >>> 10 files changed, 1023 insertions(+) >>> create mode 100644 >>> meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0001-fix-Fix-indention-in-cmake-generator-script.patch >>> create mode 100644 >>> meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0002-Use-ARM_COMPUTE_ENABLE_NEON-in-code-for-checking-NEO.patch >>> create mode 100644 >>> meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0003-Use-ARM_COMPUTE_ENABLE_SVE-in-code-for-checking-SVE-.patch >>> create mode 100644 >>> meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0004-Add-source-files-at-library-definition-time.patch >>> create mode 100644 >>> meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0005-Add-CMake-options-for-SVE-SVE2-and-BF16-support.patch >>> create mode 100644 >>> meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0006-Allow-SVE-and-SVE2-support-to-be-disabled-in-CMake.patch >>> create mode 100644 >>> meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0007-Allow-ARMv7-builds-using-CMake.patch >>> create mode 100644 >>> meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0008-Fix-undefined-symbol-error-when-building-TensorInfo.patch >>> create mode 100644 >>> meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library_24.12.bb >>> >>> diff --git >>> a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0001-fix-Fix-indention-in-cmake-generator-script.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0001-fix-Fix-indention-in-cmake-generator-script.patch >>> new file mode 100644 >>> index 00000000..9e36d254 >>> --- /dev/null >>> +++ >>> b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0001-fix-Fix-indention-in-cmake-generator-script.patch >>> @@ -0,0 +1,130 @@ >>> +From 1e4c3016547b5f75e515d4b9a7202733c47f5a18 Mon Sep 17 00:00:00 2001 >>> +From: Andrew Davis <afd@ti.com> >>> +Date: Wed, 4 Dec 2024 14:46:17 -0600 >>> +Subject: [PATCH] fix: Fix indention in cmake generator script >>> + >>> +All other items in these lists use tabs, the first couple >>> +lines should match. Switch them to tabs then regenerate >>> +the CMakeLists.txt file. >>> + >>> +While here fix the missing ending newline. >>> + >>> +Upstream-Status: Pending >>> + >>> +Signed-off-by: Andrew Davis <afd@ti.com> >>> +Change-Id: Icab852fc43ae08e7858857881c996d233c835289 >>> +--- >>> + scripts/generate_build_files.py | 27 ++++++++++++++------------- >>> + src/CMakeLists.txt | 26 +++++++++++++------------- >>> + 2 files changed, 27 insertions(+), 26 deletions(-) >>> + >>> +diff --git a/scripts/generate_build_files.py >>> b/scripts/generate_build_files.py >>> +index f88cf1af44..52a8cc14da 100644 >>> +--- a/scripts/generate_build_files.py >>> ++++ b/scripts/generate_build_files.py >>> +@@ -168,28 +168,29 @@ def build_from_template_cmake(srcs_graph, >>> srcs_sve, srcs_sve2, srcs_core): >>> + template = f"""{get_template_header()} >>> + >>> + target_sources( >>> +- arm_compute_graph >>> +- PRIVATE >>> +- {line_separator.join(srcs_graph)} >>> ++ arm_compute_graph >>> ++ PRIVATE >>> ++ {line_separator.join(srcs_graph)} >>> + ) >>> + >>> + target_sources( >>> +- arm_compute_sve >>> +- PRIVATE >>> +- {line_separator.join(srcs_sve)} >>> ++ arm_compute_sve >>> ++ PRIVATE >>> ++ {line_separator.join(srcs_sve)} >>> + ) >>> + >>> + target_sources( >>> +- arm_compute_sve2 >>> +- PRIVATE >>> +- {line_separator.join(srcs_sve2)} >>> ++ arm_compute_sve2 >>> ++ PRIVATE >>> ++ {line_separator.join(srcs_sve2)} >>> + ) >>> + >>> + target_sources( >>> +- arm_compute >>> +- PRIVATE >>> +- {line_separator.join(srcs_core)} >>> +-)""" >>> ++ arm_compute >>> ++ PRIVATE >>> ++ {line_separator.join(srcs_core)} >>> ++) >>> ++""" >>> + return template >>> + >>> + >>> +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt >>> +index ff3bed96df..f1b275532a 100644 >>> +--- a/src/CMakeLists.txt >>> ++++ b/src/CMakeLists.txt >>> +@@ -21,9 +21,9 @@ >>> + # SOFTWARE. >>> + >>> + target_sources( >>> +- arm_compute_graph >>> +- PRIVATE >>> +- graph/DataLayerVisitor.cpp >>> ++ arm_compute_graph >>> ++ PRIVATE >>> ++ graph/DataLayerVisitor.cpp >>> + graph/Graph.cpp >>> + graph/GraphBuilder.cpp >>> + graph/GraphContext.cpp >>> +@@ -101,9 +101,9 @@ target_sources( >>> + ) >>> + >>> + target_sources( >>> +- arm_compute_sve >>> +- PRIVATE >>> +- >>> core/NEON/kernels/arm_conv/depthwise/interleaves/sve_s8q_3x3_dot.cpp >>> ++ arm_compute_sve >>> ++ PRIVATE >>> ++ >>> core/NEON/kernels/arm_conv/depthwise/interleaves/sve_s8q_3x3_dot.cpp >>> + >>> core/NEON/kernels/arm_conv/depthwise/interleaves/sve_u8q_3x3_dot.cpp >>> + >>> core/NEON/kernels/arm_conv/depthwise/kernels/sme2_fp16_nhwc_3x3_s1_output2x2_mla_depthfirst/generic_direct.cpp >>> + >>> core/NEON/kernels/arm_conv/depthwise/kernels/sme2_fp16_nhwc_3x3_s1_output2x2_mla_depthfirst/generic_indirect.cpp >>> +@@ -332,9 +332,9 @@ target_sources( >>> + ) >>> + >>> + target_sources( >>> +- arm_compute_sve2 >>> +- PRIVATE >>> +- cpu/kernels/activation/generic/sve2/lut.cpp >>> ++ arm_compute_sve2 >>> ++ PRIVATE >>> ++ cpu/kernels/activation/generic/sve2/lut.cpp >>> + cpu/kernels/activation/generic/sve2/qasymm8.cpp >>> + cpu/kernels/activation/generic/sve2/qasymm8_signed.cpp >>> + cpu/kernels/activation/generic/sve2/qsymm16.cpp >>> +@@ -357,9 +357,9 @@ target_sources( >>> + ) >>> + >>> + target_sources( >>> +- arm_compute >>> +- PRIVATE >>> +- c/AclContext.cpp >>> ++ arm_compute >>> ++ PRIVATE >>> ++ c/AclContext.cpp >>> + c/AclOperator.cpp >>> + c/AclQueue.cpp >>> + c/AclTensor.cpp >>> +@@ -1049,4 +1049,4 @@ target_sources( >>> + runtime/experimental/operators/CpuSub.cpp >>> + runtime/experimental/operators/CpuTranspose.cpp >>> + runtime/experimental/operators/CpuWinogradConv2d.cpp >>> +-) >>> +\ No newline at end of file >>> ++) >>> diff --git >>> a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0002-Use-ARM_COMPUTE_ENABLE_NEON-in-code-for-checking-NEO.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0002-Use-ARM_COMPUTE_ENABLE_NEON-in-code-for-checking-NEO.patch >>> new file mode 100644 >>> index 00000000..174327c5 >>> --- /dev/null >>> +++ >>> b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0002-Use-ARM_COMPUTE_ENABLE_NEON-in-code-for-checking-NEO.patch >>> @@ -0,0 +1,114 @@ >>> +From 4350c56d14b7b68acd060d8331f3ade1fb74e167 Mon Sep 17 00:00:00 2001 >>> +From: Andrew Davis <afd@ti.com> >>> +Date: Thu, 5 Dec 2024 09:21:23 -0600 >>> +Subject: [PATCH] Use ARM_COMPUTE_ENABLE_NEON in code for checking >>> NEON support >>> + >>> +ENABLE_NEON is a flag used by the build systems. The flag is not used >>> +in code, instead ARM_COMPUTE_ENABLE_NEON is used everywhere. >>> + >>> +Drop the ENABLE_NEON compiler definition to prevent any accidental >>> +use in code. >>> + >>> +Upstream-Status: Pending >>> + >>> +Signed-off-by: Andrew Davis <afd@ti.com> >>> +Change-Id: I65f5e7411c99280e2dd8c187140909cefd1c6892 >>> +--- >>> + Android.bp | 1 - >>> + BUILD.bazel | 1 - >>> + SConscript | 2 +- >>> + SConstruct | 2 +- >>> + cmake/Options.cmake | 6 +----- >>> + scripts/generate_android_bp.py | 1 - >>> + 6 files changed, 3 insertions(+), 10 deletions(-) >>> + >>> +diff --git a/Android.bp b/Android.bp >>> +index 69379472b0..9288bba2d4 100644 >>> +--- a/Android.bp >>> ++++ b/Android.bp >>> +@@ -157,7 +157,6 @@ arm_compute_library_defaults { >>> + "-DEMBEDDED_KERNELS", >>> + "-DARM_COMPUTE_ASSERTS_ENABLED", >>> + "-DARM_COMPUTE_CPP_SCHEDULER", >>> +- "-DENABLE_NEON", >>> + "-DARM_COMPUTE_ENABLE_NEON", >>> + "-Wno-unused-parameter", >>> + "-DNO_DOT_IN_TOOLCHAIN", >>> +diff --git a/BUILD.bazel b/BUILD.bazel >>> +index f553b7bfad..2262a09655 100644 >>> +--- a/BUILD.bazel >>> ++++ b/BUILD.bazel >>> +@@ -170,7 +170,6 @@ config_setting( >>> + cc_library( >>> + name = "common_defines", >>> + defines = [ >>> +- "ENABLE_NEON", >>> + "ARM_COMPUTE_CPU_ENABLED", >>> + "ARM_COMPUTE_ENABLE_NEON", >>> + "ARM_COMPUTE_ENABLE_I8MM", >>> +diff --git a/SConscript b/SConscript >>> +index 12e8fd1025..69a564873f 100644 >>> +--- a/SConscript >>> ++++ b/SConscript >>> +@@ -97,7 +97,7 @@ def build_multiisa_lib_objects(): >>> + >>> + # note that ARM_COMPUTE_ENABLE_FP16 is enabled in >>> update_data_type_layout_flags() to make >>> + # sure the environment is progated to the validation suite >>> +- arm_compute_env.Append(CPPDEFINES = ['ENABLE_NEON', >>> 'ARM_COMPUTE_ENABLE_NEON', >>> ++ arm_compute_env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_NEON', >>> + 'ENABLE_SVE', >>> 'ARM_COMPUTE_ENABLE_SVE','ARM_COMPUTE_ENABLE_BF16', >>> + 'ARM_COMPUTE_ENABLE_I8MM', >>> 'ARM_COMPUTE_ENABLE_SVEF32MM']) >>> + >>> +diff --git a/SConstruct b/SConstruct >>> +index 8d7bd291e8..7381300fc8 100644 >>> +--- a/SConstruct >>> ++++ b/SConstruct >>> +@@ -302,7 +302,7 @@ if 'v7a' in env['estate'] and env['estate'] == >>> '64': >>> + print("ERROR: armv7a architecture has only 32-bit execution >>> state") >>> + Exit(1) >>> + >>> +-env.Append(CPPDEFINES = ['ENABLE_NEON', 'ARM_COMPUTE_ENABLE_NEON']) >>> ++env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_NEON']) >>> + >>> + if 'sve' in env['arch']: >>> + env.Append(CPPDEFINES = ['ENABLE_SVE', 'ARM_COMPUTE_ENABLE_SVE']) >>> +diff --git a/cmake/Options.cmake b/cmake/Options.cmake >>> +index 5d685be48d..121d527718 100644 >>> +--- a/cmake/Options.cmake >>> ++++ b/cmake/Options.cmake >>> +@@ -53,7 +53,6 @@ option(ARM_COMPUTE_ENABLE_SVE_VALIDATION "" OFF) >>> + >>> + option(ENABLE_NEON "Enable Arm® Neon™ support" ON) >>> + option(ARM_COMPUTE_CPU_ENABLED "" ON) >>> +-option(ARM_COMPUTE_ENABLE_NEON "" ON) >>> + option(ARM_COMPUTE_ENABLE_I8MM "" ON) >>> + option(ENABLE_FP32_KERNELS "" ON) >>> + option(ENABLE_QASYMM8_KERNELS "" ON) >>> +@@ -70,14 +69,11 @@ option(ENABLE_FP16_KERNELS "" OFF) >>> + option(ARM_COMPUTE_ENABLE_FP16 "" OFF) >>> + >>> + if(ENABLE_NEON) >>> +- add_definitions(-DENABLE_NEON) >>> ++ add_definitions(-DARM_COMPUTE_ENABLE_NEON) >>> + endif() >>> + if(ARM_COMPUTE_CPU_ENABLED) >>> + add_definitions(-DARM_COMPUTE_CPU_ENABLED) >>> + endif() >>> +-if(ARM_COMPUTE_ENABLE_NEON) >>> +- add_definitions(-DARM_COMPUTE_ENABLE_NEON) >>> +-endif() >>> + if(ARM_COMPUTE_ENABLE_FP16) >>> + add_definitions(-DARM_COMPUTE_ENABLE_FP16) >>> + endif() >>> +diff --git a/scripts/generate_android_bp.py >>> b/scripts/generate_android_bp.py >>> +index d5b268f522..99a04e7071 100755 >>> +--- a/scripts/generate_android_bp.py >>> ++++ b/scripts/generate_android_bp.py >>> +@@ -94,7 +94,6 @@ arm_compute_library_defaults { >>> + "-DEMBEDDED_KERNELS", >>> + "-DARM_COMPUTE_ASSERTS_ENABLED", >>> + "-DARM_COMPUTE_CPP_SCHEDULER", >>> +- "-DENABLE_NEON", >>> + "-DARM_COMPUTE_ENABLE_NEON", >>> + "-Wno-unused-parameter", >>> + "-DNO_DOT_IN_TOOLCHAIN", >>> diff --git >>> a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0003-Use-ARM_COMPUTE_ENABLE_SVE-in-code-for-checking-SVE-.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0003-Use-ARM_COMPUTE_ENABLE_SVE-in-code-for-checking-SVE-.patch >>> new file mode 100644 >>> index 00000000..b51e4534 >>> --- /dev/null >>> +++ >>> b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0003-Use-ARM_COMPUTE_ENABLE_SVE-in-code-for-checking-SVE-.patch >>> @@ -0,0 +1,197 @@ >>> +From 92a881cebfee5504b188a046a96d39dd9361ddb1 Mon Sep 17 00:00:00 2001 >>> +From: Andrew Davis <afd@ti.com> >>> +Date: Thu, 5 Dec 2024 08:57:38 -0600 >>> +Subject: [PATCH] Use ARM_COMPUTE_ENABLE_SVE in code for checking SVE >>> support >>> + >>> +ENABLE_SVE is a flag used by the build systems. The flag used in code >>> +is ARM_COMPUTE_ENABLE_SVE. There are just a couple spots where the >>> +build system flag is used instead causing the need to define both. >>> + >>> +Switch these last users of ENABLE_SVE over to ARM_COMPUTE_ENABLE_SVE >>> +then drop the ENABLE_SVE definition to prevent any more instances >>> +being added in the future. >>> + >>> +Upstream-Status: Pending >>> + >>> +Signed-off-by: Andrew Davis <afd@ti.com> >>> +Change-Id: I00da7580c4520647b62c6989bc7fbdd5efc7935e >>> +--- >>> + BUILD.bazel | 3 --- >>> + SConscript | 2 +- >>> + SConstruct | 2 +- >>> + .../batchnormalization/impl/SVE/fp16.cpp | 2 +- >>> + .../batchnormalization/impl/SVE/fp32.cpp | 2 +- >>> + tests/BUILD.bazel | 1 - >>> + tests/validation/NEON/ActivationLayer.cpp | 24 +++++++++---------- >>> + tests/validation/NEON/ArithmeticAddition.cpp | 6 ++--- >>> + 8 files changed, 19 insertions(+), 23 deletions(-) >>> + >>> +diff --git a/BUILD.bazel b/BUILD.bazel >>> +index 2262a09655..c04a52e084 100644 >>> +--- a/BUILD.bazel >>> ++++ b/BUILD.bazel >>> +@@ -297,7 +297,6 @@ cc_library( >>> + "//conditions:default": [], >>> + }), >>> + local_defines = [ >>> +- "ENABLE_SVE", >>> + "ARM_COMPUTE_ENABLE_SVE", >>> + "ARM_COMPUTE_ENABLE_SVE2", >>> + "ARM_COMPUTE_ENABLE_BF16", >>> +@@ -348,7 +347,6 @@ cc_library( >>> + "//conditions:default": [], >>> + }), >>> + local_defines = [ >>> +- "ENABLE_SVE", >>> + "ARM_COMPUTE_ENABLE_SVE", >>> + "ARM_COMPUTE_ENABLE_BF16", >>> + ], >>> +@@ -409,7 +407,6 @@ cc_library( >>> + "//conditions:default": [], >>> + }), >>> + local_defines = [ >>> +- "ENABLE_SVE", >>> + "ARM_COMPUTE_ENABLE_SVE", >>> + "ARM_COMPUTE_ENABLE_BF16", >>> + ], >>> +diff --git a/SConscript b/SConscript >>> +index 69a564873f..c2ca549b71 100644 >>> +--- a/SConscript >>> ++++ b/SConscript >>> +@@ -98,7 +98,7 @@ def build_multiisa_lib_objects(): >>> + # note that ARM_COMPUTE_ENABLE_FP16 is enabled in >>> update_data_type_layout_flags() to make >>> + # sure the environment is progated to the validation suite >>> + arm_compute_env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_NEON', >>> +- 'ENABLE_SVE', >>> 'ARM_COMPUTE_ENABLE_SVE','ARM_COMPUTE_ENABLE_BF16', >>> ++ >>> 'ARM_COMPUTE_ENABLE_SVE','ARM_COMPUTE_ENABLE_BF16', >>> + 'ARM_COMPUTE_ENABLE_I8MM', >>> 'ARM_COMPUTE_ENABLE_SVEF32MM']) >>> + >>> + # Build all the common files for the base architecture >>> +diff --git a/SConstruct b/SConstruct >>> +index 7381300fc8..17f5615acf 100644 >>> +--- a/SConstruct >>> ++++ b/SConstruct >>> +@@ -305,7 +305,7 @@ if 'v7a' in env['estate'] and env['estate'] == >>> '64': >>> + env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_NEON']) >>> + >>> + if 'sve' in env['arch']: >>> +- env.Append(CPPDEFINES = ['ENABLE_SVE', 'ARM_COMPUTE_ENABLE_SVE']) >>> ++ env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_SVE']) >>> + if 'sve2' in env['arch']: >>> + env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_SVE2']) >>> + >>> +diff --git >>> a/src/core/NEON/kernels/batchnormalization/impl/SVE/fp16.cpp >>> b/src/core/NEON/kernels/batchnormalization/impl/SVE/fp16.cpp >>> +index 48caaa3e63..e07593312c 100644 >>> +--- a/src/core/NEON/kernels/batchnormalization/impl/SVE/fp16.cpp >>> ++++ b/src/core/NEON/kernels/batchnormalization/impl/SVE/fp16.cpp >>> +@@ -128,4 +128,4 @@ void >>> fp16_sve_batch_normalization(ITensor *src, >>> + } >>> + } // namespace cpu >>> + } // namespace arm_compute >>> +-#endif // ENABLE_SVE >>> ++#endif // ARM_COMPUTE_ENABLE_SVE >>> +diff --git >>> a/src/core/NEON/kernels/batchnormalization/impl/SVE/fp32.cpp >>> b/src/core/NEON/kernels/batchnormalization/impl/SVE/fp32.cpp >>> +index df4fbfe607..0d52d2c3c0 100644 >>> +--- a/src/core/NEON/kernels/batchnormalization/impl/SVE/fp32.cpp >>> ++++ b/src/core/NEON/kernels/batchnormalization/impl/SVE/fp32.cpp >>> +@@ -128,4 +128,4 @@ void >>> fp32_sve_batch_normalization(ITensor *src, >>> + } >>> + } // namespace cpu >>> + } // namespace arm_compute >>> +-#endif // ENABLE_SVE >>> ++#endif // ARM_COMPUTE_ENABLE_SVE >>> +diff --git a/tests/BUILD.bazel b/tests/BUILD.bazel >>> +index 7085f1facc..4b4be8b257 100644 >>> +--- a/tests/BUILD.bazel >>> ++++ b/tests/BUILD.bazel >>> +@@ -114,7 +114,6 @@ cc_binary( >>> + }) + >>> + select({ >>> + "//:sve_validation_flag": [ >>> +- "ENABLE_SVE", >>> + "ARM_COMPUTE_ENABLE_SVE", >>> + ], >>> + "//conditions:default": [], >>> +diff --git a/tests/validation/NEON/ActivationLayer.cpp >>> b/tests/validation/NEON/ActivationLayer.cpp >>> +index 119d51808a..69a8b52354 100644 >>> +--- a/tests/validation/NEON/ActivationLayer.cpp >>> ++++ b/tests/validation/NEON/ActivationLayer.cpp >>> +@@ -73,11 +73,11 @@ RelativeTolerance<float> >>> relative_tolerance(DataType data_type, ActivationLayerI >>> + switch(data_type) >>> + { >>> + case DataType::F16: >>> +-#if defined(ENABLE_SVE) >>> ++#if defined(ARM_COMPUTE_ENABLE_SVE) >>> + return RelativeTolerance<float>(0.25f); >>> +-#else // !defined(ENABLE_SVE) >>> ++#else // !defined(ARM_COMPUTE_ENABLE_SVE) >>> + return RelativeTolerance<float>(0.1f); >>> +-#endif // defined(ENABLE_SVE) >>> ++#endif // defined(ARM_COMPUTE_ENABLE_SVE) >>> + default: >>> + return RelativeTolerance<float>(0.05f); >>> + } >>> +@@ -85,11 +85,11 @@ RelativeTolerance<float> >>> relative_tolerance(DataType data_type, ActivationLayerI >>> + switch(data_type) >>> + { >>> + case DataType::F16: >>> +-#if defined(ENABLE_SVE) >>> ++#if defined(ARM_COMPUTE_ENABLE_SVE) >>> + return RelativeTolerance<float>(0.9f); >>> +-#else // !defined(ENABLE_SVE) >>> ++#else // !defined(ARM_COMPUTE_ENABLE_SVE) >>> + return RelativeTolerance<float>(0.01f); >>> +-#endif // defined(ENABLE_SVE) >>> ++#endif // defined(ARM_COMPUTE_ENABLE_SVE) >>> + default: >>> + return RelativeTolerance<float>(0.00001f); >>> + } >>> +@@ -117,11 +117,11 @@ AbsoluteTolerance<float> >>> absolute_tolerance(DataType data_type, ActivationLayerI >>> + switch(data_type) >>> + { >>> + case DataType::F16: >>> +-#if defined(ENABLE_SVE) >>> ++#if defined(ARM_COMPUTE_ENABLE_SVE) >>> + return AbsoluteTolerance<float>(0.25f); >>> +-#else // !defined(ENABLE_SVE) >>> ++#else // !defined(ARM_COMPUTE_ENABLE_SVE) >>> + return AbsoluteTolerance<float>(0.01f); >>> +-#endif // defined(ENABLE_SVE) >>> ++#endif // defined(ARM_COMPUTE_ENABLE_SVE) >>> + default: >>> + return AbsoluteTolerance<float>(0.00001f); >>> + } >>> +@@ -129,11 +129,11 @@ AbsoluteTolerance<float> >>> absolute_tolerance(DataType data_type, ActivationLayerI >>> + switch(data_type) >>> + { >>> + case DataType::F16: >>> +-#if defined(ENABLE_SVE) >>> ++#if defined(ARM_COMPUTE_ENABLE_SVE) >>> + return AbsoluteTolerance<float>(0.9f); >>> +-#else // !defined(ENABLE_SVE) >>> ++#else // !defined(ARM_COMPUTE_ENABLE_SVE) >>> + return AbsoluteTolerance<float>(0.01f); >>> +-#endif // defined(ENABLE_SVE) >>> ++#endif // defined(ARM_COMPUTE_ENABLE_SVE) >>> + default: >>> + return AbsoluteTolerance<float>(0.00001f); >>> + } >>> +diff --git a/tests/validation/NEON/ArithmeticAddition.cpp >>> b/tests/validation/NEON/ArithmeticAddition.cpp >>> +index c0033daab0..bae8535ff3 100644 >>> +--- a/tests/validation/NEON/ArithmeticAddition.cpp >>> ++++ b/tests/validation/NEON/ArithmeticAddition.cpp >>> +@@ -48,11 +48,11 @@ namespace validation >>> + using framework::dataset::make; >>> + namespace >>> + { >>> +-#if !defined(__aarch64__) || defined(ENABLE_SVE) >>> ++#if !defined(__aarch64__) || defined(ARM_COMPUTE_ENABLE_SVE) >>> + constexpr AbsoluteTolerance<float> tolerance_quant(1); /**< >>> Tolerance value for comparing reference's output against >>> implementation's output for quantized data types */ >>> +-#else // >>> !defined(__aarch64__) || defined(ENABLE_SVE) >>> ++#else // >>> !defined(__aarch64__) || defined(ARM_COMPUTE_ENABLE_SVE) >>> + constexpr AbsoluteTolerance<float> tolerance_quant(1); >>> +-#endif // >>> !defined(__aarch64__) || defined(ENABLE_SVE) >>> ++#endif // >>> !defined(__aarch64__) || defined(ARM_COMPUTE_ENABLE_SVE) >>> + const auto InPlaceDataSet = framework::dataset::make("InPlace", >>> { false, true }); >>> + const auto OutOfPlaceDataSet = framework::dataset::make("InPlace", >>> { false }); >>> + } // namespace >>> diff --git >>> a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0004-Add-source-files-at-library-definition-time.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0004-Add-source-files-at-library-definition-time.patch >>> new file mode 100644 >>> index 00000000..971658b4 >>> --- /dev/null >>> +++ >>> b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0004-Add-source-files-at-library-definition-time.patch >>> @@ -0,0 +1,167 @@ >>> +From a3c7d6aefc289dcce6656fc6d9f9c8c9b1af8f0b Mon Sep 17 00:00:00 2001 >>> +From: Andrew Davis <afd@ti.com> >>> +Date: Thu, 5 Dec 2024 09:38:26 -0600 >>> +Subject: [PATCH] Add source files at library definition time >>> + >>> +This allows for easier conditional disabling of these libraries. >>> + >>> +Upstream-Status: Pending >>> + >>> +Signed-off-by: Andrew Davis <afd@ti.com> >>> +Change-Id: I442aaa03060f2cb7db4ed0c1d93e64dbc223fdc6 >>> +--- >>> + CMakeLists.txt | 20 ++++++++++---------- >>> + scripts/generate_build_files.py | 16 ++++------------ >>> + src/CMakeLists.txt | 16 ++++------------ >>> + 3 files changed, 18 insertions(+), 34 deletions(-) >>> + >>> +diff --git a/CMakeLists.txt b/CMakeLists.txt >>> +index e8bdf2af1a..4073e06b17 100644 >>> +--- a/CMakeLists.txt >>> ++++ b/CMakeLists.txt >>> +@@ -46,6 +46,12 @@ set(CMAKE_CXX_EXTENSIONS OFF) >>> + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") >>> + include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Options.cmake) >>> + include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Version.cmake) >>> ++include(${CMAKE_CURRENT_SOURCE_DIR}/src/CMakeLists.txt) >>> ++ >>> ++list(TRANSFORM ARM_COMPUTE_GRAPH_SOURCES PREPEND "src/") >>> ++list(TRANSFORM ARM_COMPUTE_SVE_SOURCES PREPEND "src/") >>> ++list(TRANSFORM ARM_COMPUTE_SVE2_SOURCES PREPEND "src/") >>> ++list(TRANSFORM ARM_COMPUTE_SOURCES PREPEND "src/") >>> + >>> + # Require at least gcc/g++ 11) CMAKE_CXX_COMPILER_VERSION OR >>> + if(CMAKE_C_COMPILER_VERSION VERSION_LESS 10.2 OR >>> CMAKE_CXX_COMPILER_VERSION >>> +@@ -139,8 +145,7 @@ endif() >>> + >>> + # >>> --------------------------------------------------------------------- >>> + # SVE Object Library >>> +- >>> +-add_library(arm_compute_sve OBJECT "") >>> ++add_library(arm_compute_sve OBJECT ${ARM_COMPUTE_SVE_SOURCES}) >>> + target_compile_options(arm_compute_sve >>> + PRIVATE "-march=armv8.2-a+sve+fp16+dotprod" >>> + PRIVATE "-fPIC") >>> +@@ -162,8 +167,7 @@ target_include_directories( >>> + >>> + # >>> --------------------------------------------------------------------- >>> + # SVE2 Object Library >>> +- >>> +-add_library(arm_compute_sve2 OBJECT "") >>> ++add_library(arm_compute_sve2 OBJECT ${ARM_COMPUTE_SVE2_SOURCES}) >>> + target_compile_options(arm_compute_sve2 >>> + PRIVATE "-march=armv8.6-a+sve2+fp16+dotprod" >>> + PRIVATE "-fPIC") >>> +@@ -187,7 +191,7 @@ target_include_directories( >>> + # >>> --------------------------------------------------------------------- >>> + # Core Library >>> + >>> +-add_library(arm_compute "") >>> ++add_library(arm_compute ${ARM_COMPUTE_SOURCES}) >>> + target_compile_options(arm_compute PRIVATE >>> "-march=${ARM_COMPUTE_ARCH}") >>> + target_compile_definitions(arm_compute PRIVATE >>> ARM_COMPUTE_ENABLE_BF16) >>> + target_compile_definitions(arm_compute PRIVATE ENABLE_SVE) >>> +@@ -216,7 +220,7 @@ target_link_libraries( >>> + # >>> --------------------------------------------------------------------- >>> + # Graph Library >>> + >>> +-add_library(arm_compute_graph "") >>> ++add_library(arm_compute_graph ${ARM_COMPUTE_GRAPH_SOURCES}) >>> + target_compile_options(arm_compute_graph PRIVATE >>> "-march=${ARM_COMPUTE_ARCH}") >>> + target_compile_definitions(arm_compute_graph PRIVATE ENABLE_SVE) >>> + target_compile_definitions(arm_compute_graph PRIVATE >>> ARM_COMPUTE_ENABLE_SVE) >>> +@@ -238,10 +242,6 @@ target_compile_options(arm_compute_graph PUBLIC >>> ${COMMON_CXX_FLAGS}) >>> + >>> + add_library(ArmCompute::Graph ALIAS arm_compute_graph) >>> + >>> +-# >>> --------------------------------------------------------------------- >>> +-# Library Target Sources >>> +-add_subdirectory(src) >>> +- >>> + if(ARM_COMPUTE_BUILD_TESTING) >>> + # >>> --------------------------------------------------------------------- >>> + # Validation Framework Library >>> +diff --git a/scripts/generate_build_files.py >>> b/scripts/generate_build_files.py >>> +index 52a8cc14da..4c4a14623f 100644 >>> +--- a/scripts/generate_build_files.py >>> ++++ b/scripts/generate_build_files.py >>> +@@ -167,27 +167,19 @@ def build_from_template_cmake(srcs_graph, >>> srcs_sve, srcs_sve2, srcs_core): >>> + >>> + template = f"""{get_template_header()} >>> + >>> +-target_sources( >>> +- arm_compute_graph >>> +- PRIVATE >>> ++set(ARM_COMPUTE_GRAPH_SOURCES >>> + {line_separator.join(srcs_graph)} >>> + ) >>> + >>> +-target_sources( >>> +- arm_compute_sve >>> +- PRIVATE >>> ++set(ARM_COMPUTE_SVE_SOURCES >>> + {line_separator.join(srcs_sve)} >>> + ) >>> + >>> +-target_sources( >>> +- arm_compute_sve2 >>> +- PRIVATE >>> ++set(ARM_COMPUTE_SVE2_SOURCES >>> + {line_separator.join(srcs_sve2)} >>> + ) >>> + >>> +-target_sources( >>> +- arm_compute >>> +- PRIVATE >>> ++set(ARM_COMPUTE_SOURCES >>> + {line_separator.join(srcs_core)} >>> + ) >>> + """ >>> +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt >>> +index f1b275532a..73871563e1 100644 >>> +--- a/src/CMakeLists.txt >>> ++++ b/src/CMakeLists.txt >>> +@@ -20,9 +20,7 @@ >>> + # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER >>> DEALINGS IN THE >>> + # SOFTWARE. >>> + >>> +-target_sources( >>> +- arm_compute_graph >>> +- PRIVATE >>> ++set(ARM_COMPUTE_GRAPH_SOURCES >>> + graph/DataLayerVisitor.cpp >>> + graph/Graph.cpp >>> + graph/GraphBuilder.cpp >>> +@@ -100,9 +98,7 @@ target_sources( >>> + graph/printers/DotGraphPrinter.cpp >>> + ) >>> + >>> +-target_sources( >>> +- arm_compute_sve >>> +- PRIVATE >>> ++set(ARM_COMPUTE_SVE_SOURCES >>> + >>> core/NEON/kernels/arm_conv/depthwise/interleaves/sve_s8q_3x3_dot.cpp >>> + >>> core/NEON/kernels/arm_conv/depthwise/interleaves/sve_u8q_3x3_dot.cpp >>> + >>> core/NEON/kernels/arm_conv/depthwise/kernels/sme2_fp16_nhwc_3x3_s1_output2x2_mla_depthfirst/generic_direct.cpp >>> +@@ -331,9 +327,7 @@ target_sources( >>> + cpu/kernels/softmax/generic/sve/impl_bf16.cpp >>> + ) >>> + >>> +-target_sources( >>> +- arm_compute_sve2 >>> +- PRIVATE >>> ++set(ARM_COMPUTE_SVE2_SOURCES >>> + cpu/kernels/activation/generic/sve2/lut.cpp >>> + cpu/kernels/activation/generic/sve2/qasymm8.cpp >>> + cpu/kernels/activation/generic/sve2/qasymm8_signed.cpp >>> +@@ -356,9 +350,7 @@ target_sources( >>> + cpu/kernels/softmax/generic/sve2/impl.cpp >>> + ) >>> + >>> +-target_sources( >>> +- arm_compute >>> +- PRIVATE >>> ++set(ARM_COMPUTE_SOURCES >>> + c/AclContext.cpp >>> + c/AclOperator.cpp >>> + c/AclQueue.cpp >>> diff --git >>> a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0005-Add-CMake-options-for-SVE-SVE2-and-BF16-support.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0005-Add-CMake-options-for-SVE-SVE2-and-BF16-support.patch >>> new file mode 100644 >>> index 00000000..29ca02f5 >>> --- /dev/null >>> +++ >>> b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0005-Add-CMake-options-for-SVE-SVE2-and-BF16-support.patch >>> @@ -0,0 +1,112 @@ >>> +From cdb765df59d8ce5f388ac2a820b5da76eb8d610c Mon Sep 17 00:00:00 2001 >>> +From: Andrew Davis <afd@ti.com> >>> +Date: Thu, 5 Dec 2024 09:47:25 -0600 >>> +Subject: [PATCH] Add CMake options for SVE, SVE2, and BF16 support >>> + >>> +These should be optional, add options for these. Remove the hard-coded >>> +definitions of these for the libraries. This also makes it so >>> validation >>> +options are not needed, if SVE is enabled it will be validated. >>> + >>> +Upstream-Status: Pending >>> + >>> +Signed-off-by: Andrew Davis <afd@ti.com> >>> +Change-Id: I03182ac6ece843e813c027ef6a573cbba254dee9 >>> +--- >>> + CMakeLists.txt | 19 ------------------- >>> + cmake/Options.cmake | 16 +++++++++++++--- >>> + 2 files changed, 13 insertions(+), 22 deletions(-) >>> + >>> +diff --git a/CMakeLists.txt b/CMakeLists.txt >>> +index 4073e06b17..4d95fb1bfd 100644 >>> +--- a/CMakeLists.txt >>> ++++ b/CMakeLists.txt >>> +@@ -149,9 +149,6 @@ add_library(arm_compute_sve OBJECT >>> ${ARM_COMPUTE_SVE_SOURCES}) >>> + target_compile_options(arm_compute_sve >>> + PRIVATE "-march=armv8.2-a+sve+fp16+dotprod" >>> + PRIVATE "-fPIC") >>> +-target_compile_definitions(arm_compute_sve PRIVATE >>> ARM_COMPUTE_ENABLE_BF16) >>> +-target_compile_definitions(arm_compute_sve PRIVATE ENABLE_SVE) >>> +-target_compile_definitions(arm_compute_sve PRIVATE >>> ARM_COMPUTE_ENABLE_SVE) >>> + target_include_directories( >>> + arm_compute_sve >>> + PUBLIC $<INSTALL_INTERFACE:include> >>> +@@ -171,10 +168,6 @@ add_library(arm_compute_sve2 OBJECT >>> ${ARM_COMPUTE_SVE2_SOURCES}) >>> + target_compile_options(arm_compute_sve2 >>> + PRIVATE "-march=armv8.6-a+sve2+fp16+dotprod" >>> + PRIVATE "-fPIC") >>> +-target_compile_definitions(arm_compute_sve2 PRIVATE >>> ARM_COMPUTE_ENABLE_SVE2) >>> +-target_compile_definitions(arm_compute_sve2 PRIVATE >>> ARM_COMPUTE_ENABLE_BF16) >>> +-target_compile_definitions(arm_compute_sve2 PRIVATE ENABLE_SVE) >>> +-target_compile_definitions(arm_compute_sve2 PRIVATE >>> ARM_COMPUTE_ENABLE_SVE) >>> + target_include_directories( >>> + arm_compute_sve2 >>> + PUBLIC $<INSTALL_INTERFACE:include> >>> +@@ -193,9 +186,6 @@ target_include_directories( >>> + >>> + add_library(arm_compute ${ARM_COMPUTE_SOURCES}) >>> + target_compile_options(arm_compute PRIVATE >>> "-march=${ARM_COMPUTE_ARCH}") >>> +-target_compile_definitions(arm_compute PRIVATE >>> ARM_COMPUTE_ENABLE_BF16) >>> +-target_compile_definitions(arm_compute PRIVATE ENABLE_SVE) >>> +-target_compile_definitions(arm_compute PRIVATE ARM_COMPUTE_ENABLE_SVE) >>> + target_include_directories( >>> + arm_compute >>> + PUBLIC $<INSTALL_INTERFACE:include> >>> +@@ -222,8 +212,6 @@ target_link_libraries( >>> + >>> + add_library(arm_compute_graph ${ARM_COMPUTE_GRAPH_SOURCES}) >>> + target_compile_options(arm_compute_graph PRIVATE >>> "-march=${ARM_COMPUTE_ARCH}") >>> +-target_compile_definitions(arm_compute_graph PRIVATE ENABLE_SVE) >>> +-target_compile_definitions(arm_compute_graph PRIVATE >>> ARM_COMPUTE_ENABLE_SVE) >>> + # add_subdirectory(src/graph) >>> + >>> + target_include_directories( >>> +@@ -268,13 +256,6 @@ if(ARM_COMPUTE_BUILD_TESTING) >>> + >>> + add_executable(arm_compute_validation "") >>> + target_compile_options(arm_compute_validation PRIVATE >>> "-march=${ARM_COMPUTE_ARCH}") >>> +- if(ARM_COMPUTE_ENABLE_BF16_VALIDATION) >>> +- target_compile_definitions(arm_compute_validation PRIVATE >>> ARM_COMPUTE_ENABLE_BF16) >>> +- endif() >>> +- if(ARM_COMPUTE_ENABLE_SVE_VALIDATION) >>> +- target_compile_definitions(arm_compute_validation PRIVATE >>> ENABLE_SVE) >>> +- target_compile_definitions(arm_compute_validation PRIVATE >>> ARM_COMPUTE_ENABLE_SVE) >>> +- endif() >>> + add_subdirectory(tests/validation) >>> + target_compile_options(arm_compute_validation PUBLIC >>> ${COMMON_CXX_FLAGS}) >>> + set_target_properties( >>> +diff --git a/cmake/Options.cmake b/cmake/Options.cmake >>> +index 121d527718..5c23fcb490 100644 >>> +--- a/cmake/Options.cmake >>> ++++ b/cmake/Options.cmake >>> +@@ -48,11 +48,12 @@ set(ARM_COMPUTE_ARCH armv8-a CACHE STRING >>> "Architecture to use") >>> + # >>> --------------------------------------------------------------------- >>> + # Backends >>> + >>> +-option(ARM_COMPUTE_ENABLE_BF16_VALIDATION "" ON) >>> +-option(ARM_COMPUTE_ENABLE_SVE_VALIDATION "" OFF) >>> +- >>> + option(ENABLE_NEON "Enable Arm® Neon™ support" ON) >>> ++option(ENABLE_SVE "Enable Arm® SVE support" ON) >>> ++option(ENABLE_SVE2 "Enable Arm® SVE2 support" ON) >>> ++ >>> + option(ARM_COMPUTE_CPU_ENABLED "" ON) >>> ++option(ARM_COMPUTE_ENABLE_BF16 "" ON) >>> + option(ARM_COMPUTE_ENABLE_I8MM "" ON) >>> + option(ENABLE_FP32_KERNELS "" ON) >>> + option(ENABLE_QASYMM8_KERNELS "" ON) >>> +@@ -74,6 +75,15 @@ endif() >>> + if(ARM_COMPUTE_CPU_ENABLED) >>> + add_definitions(-DARM_COMPUTE_CPU_ENABLED) >>> + endif() >>> ++if(ENABLE_SVE) >>> ++ add_definitions(-DARM_COMPUTE_ENABLE_SVE) >>> ++endif() >>> ++if(ENABLE_SVE2) >>> ++ add_definitions(-DARM_COMPUTE_ENABLE_SVE2) >>> ++endif() >>> ++if(ARM_COMPUTE_ENABLE_BF16) >>> ++ add_definitions(-DARM_COMPUTE_ENABLE_BF16) >>> ++endif() >>> + if(ARM_COMPUTE_ENABLE_FP16) >>> + add_definitions(-DARM_COMPUTE_ENABLE_FP16) >>> + endif() >>> diff --git >>> a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0006-Allow-SVE-and-SVE2-support-to-be-disabled-in-CMake.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0006-Allow-SVE-and-SVE2-support-to-be-disabled-in-CMake.patch >>> new file mode 100644 >>> index 00000000..06370adb >>> --- /dev/null >>> +++ >>> b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0006-Allow-SVE-and-SVE2-support-to-be-disabled-in-CMake.patch >>> @@ -0,0 +1,91 @@ >>> +From ab5bf5b8f86337a31bfd48277650f583a040e658 Mon Sep 17 00:00:00 2001 >>> +From: Andrew Davis <afd@ti.com> >>> +Date: Thu, 5 Dec 2024 09:59:48 -0600 >>> +Subject: [PATCH] Allow SVE and SVE2 support to be disabled in CMake >>> + >>> +Currently these are hard-coded as enabled. The SVE and SVE2 libraries >>> +are built unconditionally. These should only be built when SVE or >>> +SVE2 is available. >>> + >>> +Upstream-Status: Pending >>> + >>> +Signed-off-by: Andrew Davis <afd@ti.com> >>> +Change-Id: I176259f872a84f736028622694d65d4c5b57e379 >>> +--- >>> + CMakeLists.txt | 25 ++++++++++++++++++------- >>> + 1 file changed, 18 insertions(+), 7 deletions(-) >>> + >>> +diff --git a/CMakeLists.txt b/CMakeLists.txt >>> +index 4d95fb1bfd..d233d6bc67 100644 >>> +--- a/CMakeLists.txt >>> ++++ b/CMakeLists.txt >>> +@@ -145,6 +145,7 @@ endif() >>> + >>> + # >>> --------------------------------------------------------------------- >>> + # SVE Object Library >>> ++if(ENABLE_SVE) >>> + add_library(arm_compute_sve OBJECT ${ARM_COMPUTE_SVE_SOURCES}) >>> + target_compile_options(arm_compute_sve >>> + PRIVATE "-march=armv8.2-a+sve+fp16+dotprod" >>> +@@ -161,9 +162,11 @@ target_include_directories( >>> + src/core/cpu/kernels/assembly >>> + src/cpu/kernels/assembly >>> + src/core/NEON/kernels/arm_gemm/merges) >>> ++endif() # ENABLE_SVE >>> + >>> + # >>> --------------------------------------------------------------------- >>> + # SVE2 Object Library >>> ++if(ENABLE_SVE2) >>> + add_library(arm_compute_sve2 OBJECT ${ARM_COMPUTE_SVE2_SOURCES}) >>> + target_compile_options(arm_compute_sve2 >>> + PRIVATE "-march=armv8.6-a+sve2+fp16+dotprod" >>> +@@ -180,6 +183,7 @@ target_include_directories( >>> + src/core/cpu/kernels/assembly >>> + src/cpu/kernels/assembly >>> + src/core/NEON/kernels/arm_gemm/merges) >>> ++endif() # ENABLE_SVE2 >>> + >>> + # >>> --------------------------------------------------------------------- >>> + # Core Library >>> +@@ -203,9 +207,12 @@ target_compile_options(arm_compute PUBLIC >>> ${COMMON_CXX_FLAGS}) >>> + add_library(ArmCompute::Core ALIAS arm_compute) >>> + >>> + # arm_compute_sve and arm_compute_sve2 obj files will not be public >>> in the arm_compute.so >>> +-target_link_libraries( >>> +- arm_compute PRIVATE $<TARGET_OBJECTS:arm_compute_sve> >>> +- PRIVATE $<TARGET_OBJECTS:arm_compute_sve2>) >>> ++if(ENABLE_SVE) >>> ++ target_link_libraries(arm_compute PRIVATE >>> $<TARGET_OBJECTS:arm_compute_sve>) >>> ++endif() >>> ++if(ENABLE_SVE2) >>> ++ target_link_libraries(arm_compute PRIVATE >>> $<TARGET_OBJECTS:arm_compute_sve2>) >>> ++endif() >>> + >>> + # >>> --------------------------------------------------------------------- >>> + # Graph Library >>> +@@ -263,8 +270,10 @@ if(ARM_COMPUTE_BUILD_TESTING) >>> + >>> "${CMAKE_BINARY_DIR}/validation") >>> + target_link_libraries( >>> + arm_compute_validation >>> +- PUBLIC arm_compute arm_compute_graph >>> arm_compute_validation_framework >>> +- arm_compute_sve) >>> ++ PUBLIC arm_compute arm_compute_graph >>> arm_compute_validation_framework) >>> ++ if(ENABLE_SVE) >>> ++ target_link_libraries(arm_compute_validation PUBLIC >>> arm_compute_sve) >>> ++ endif() >>> + target_link_directories(arm_compute_validation PUBLIC tests) >>> + >>> + # >>> --------------------------------------------------------------------- >>> +@@ -299,8 +308,10 @@ if(ARM_COMPUTE_BUILD_EXAMPLES) >>> + set_target_properties( >>> + ${test_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY >>> + "${CMAKE_BINARY_DIR}/examples") >>> +- target_link_libraries(${test_name} PUBLIC arm_compute >>> +- arm_compute_graph >>> arm_compute_sve) >>> ++ target_link_libraries(${test_name} PUBLIC arm_compute >>> arm_compute_graph) >>> ++ if(ENABLE_SVE) >>> ++ target_link_libraries(${test_name} PUBLIC arm_compute_sve) >>> ++ endif() >>> + endforeach() >>> + >>> + # NEON Examples >>> diff --git >>> a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0007-Allow-ARMv7-builds-using-CMake.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0007-Allow-ARMv7-builds-using-CMake.patch >>> new file mode 100644 >>> index 00000000..07dd4bee >>> --- /dev/null >>> +++ >>> b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0007-Allow-ARMv7-builds-using-CMake.patch >>> @@ -0,0 +1,86 @@ >>> +From 416cffe2a75a4ec66a75e00bc00297f2f0187e0f Mon Sep 17 00:00:00 2001 >>> +From: Andrew Davis <afd@ti.com> >>> +Date: Thu, 5 Dec 2024 10:05:03 -0600 >>> +Subject: [PATCH] Allow ARMv7 builds using CMake >>> + >>> +Upstream-Status: Pending >>> + >>> +Signed-off-by: Andrew Davis <afd@ti.com> >>> +Change-Id: Ib6bae5820569a8eadd53afdfe31e611a3089140e >>> +--- >>> + CMakeLists.txt | 25 +++++++++++++++++-- >>> + .../fixtures/CpuGemmAssemblyDispatchFixture.h | 3 +++ >>> + 2 files changed, 26 insertions(+), 2 deletions(-) >>> + >>> +diff --git a/CMakeLists.txt b/CMakeLists.txt >>> +index d233d6bc67..4fc27553f3 100644 >>> +--- a/CMakeLists.txt >>> ++++ b/CMakeLists.txt >>> +@@ -148,7 +148,7 @@ endif() >>> + if(ENABLE_SVE) >>> + add_library(arm_compute_sve OBJECT ${ARM_COMPUTE_SVE_SOURCES}) >>> + target_compile_options(arm_compute_sve >>> +- PRIVATE "-march=armv8.2-a+sve+fp16+dotprod" >>> ++ PRIVATE "-march=${ARM_COMPUTE_ARCH}" >>> + PRIVATE "-fPIC") >>> + target_include_directories( >>> + arm_compute_sve >>> +@@ -169,7 +169,7 @@ endif() # ENABLE_SVE >>> + if(ENABLE_SVE2) >>> + add_library(arm_compute_sve2 OBJECT ${ARM_COMPUTE_SVE2_SOURCES}) >>> + target_compile_options(arm_compute_sve2 >>> +- PRIVATE "-march=armv8.6-a+sve2+fp16+dotprod" >>> ++ PRIVATE "-march=${ARM_COMPUTE_ARCH}" >>> + PRIVATE "-fPIC") >>> + target_include_directories( >>> + arm_compute_sve2 >>> +@@ -204,6 +204,15 @@ target_include_directories( >>> + src/core/NEON/kernels/convolution/winograd) >>> + target_compile_options(arm_compute PUBLIC ${COMMON_CXX_FLAGS}) >>> + >>> ++if(ARM_COMPUTE_ARCH MATCHES "armv7") >>> ++ target_sources( >>> ++ arm_compute >>> ++ PRIVATE >>> ++ src/core/NEON/kernels/arm_gemm/kernels/a32_sgemm_8x6/a53.cpp >>> ++ src/core/NEON/kernels/arm_gemm/kernels/a32_sgemm_8x6/a55r1.cpp >>> ++ >>> src/core/NEON/kernels/arm_gemm/kernels/a32_sgemm_8x6/generic.cpp) >>> ++endif() >>> ++ >>> + add_library(ArmCompute::Core ALIAS arm_compute) >>> + >>> + # arm_compute_sve and arm_compute_sve2 obj files will not be public >>> in the arm_compute.so >>> +@@ -264,6 +273,18 @@ if(ARM_COMPUTE_BUILD_TESTING) >>> + add_executable(arm_compute_validation "") >>> + target_compile_options(arm_compute_validation PRIVATE >>> "-march=${ARM_COMPUTE_ARCH}") >>> + add_subdirectory(tests/validation) >>> ++ target_include_directories( >>> ++ arm_compute_validation >>> ++ PUBLIC $<INSTALL_INTERFACE:include> >>> ++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> >>> ++ ${CMAKE_CURRENT_SOURCE_DIR} >>> ++ PRIVATE src >>> ++ src/cpu/kernels/assembly >>> ++ src/core/NEON/kernels/arm_gemm >>> ++ src/core/NEON/kernels/assembly >>> ++ src/core/NEON/kernels/convolution/common >>> ++ src/core/NEON/kernels/arm_conv/depthwise >>> ++ src/core/NEON/kernels/convolution/winograd) >>> + target_compile_options(arm_compute_validation PUBLIC >>> ${COMMON_CXX_FLAGS}) >>> + set_target_properties( >>> + arm_compute_validation PROPERTIES RUNTIME_OUTPUT_DIRECTORY >>> +diff --git >>> a/tests/validation/fixtures/CpuGemmAssemblyDispatchFixture.h >>> b/tests/validation/fixtures/CpuGemmAssemblyDispatchFixture.h >>> +index 5d74e210d5..0b45cdf356 100644 >>> +--- a/tests/validation/fixtures/CpuGemmAssemblyDispatchFixture.h >>> ++++ b/tests/validation/fixtures/CpuGemmAssemblyDispatchFixture.h >>> +@@ -25,7 +25,10 @@ >>> + #define ACL_TESTS_VALIDATION_FIXTURES_CPUGEMMASSEMBLYDISPATCHFIXTURE_H >>> + >>> + #include "arm_compute/core/Helpers.h" >>> ++ >>> ++#ifdef ARM_COMPUTE_ENABLE_FIXED_FORMAT_KERNELS >>> + #include "arm_compute/runtime/NEON/functions/NEReorderLayer.h" >>> ++#endif //ARM_COMPUTE_ENABLE_FIXED_FORMAT_KERNELS >>> + #include "arm_compute/runtime/NEON/functions/NETranspose.h" >>> + >>> + #include "src/core/NEON/kernels/arm_gemm/utils.hpp" >>> diff --git >>> a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0008-Fix-undefined-symbol-error-when-building-TensorInfo.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0008-Fix-undefined-symbol-error-when-building-TensorInfo.patch >>> new file mode 100644 >>> index 00000000..9883a44d >>> --- /dev/null >>> +++ >>> b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0008-Fix-undefined-symbol-error-when-building-TensorInfo.patch >>> @@ -0,0 +1,46 @@ >>> +From 58698788adaeb2f74cf9fcddf06f3e9a2e78b984 Mon Sep 17 00:00:00 2001 >>> +From: Andrew Davis <afd@ti.com> >>> +Date: Mon, 16 Dec 2024 09:42:22 -0600 >>> +Subject: [PATCH] Fix undefined symbol error when building TensorInfo >>> + >>> +Upstream-Status: Pending >>> + >>> +Signed-off-by: Andrew Davis <afd@ti.com> >>> +Change-Id: I657d1b7faaad94147c685c4826916d3c21da82e1 >>> +--- >>> + arm_compute/core/TensorInfo.h | 5 +---- >>> + src/core/TensorInfo.cpp | 5 +++++ >>> + 2 files changed, 6 insertions(+), 4 deletions(-) >>> + >>> +diff --git a/arm_compute/core/TensorInfo.h >>> b/arm_compute/core/TensorInfo.h >>> +index e4c9cbe879..2bfe83c4b1 100644 >>> +--- a/arm_compute/core/TensorInfo.h >>> ++++ b/arm_compute/core/TensorInfo.h >>> +@@ -242,10 +242,7 @@ public: >>> + { >>> + return _num_channels; >>> + } >>> +- const TensorShape &tensor_shape() const override >>> +- { >>> +- return _tensor_shape; >>> +- } >>> ++ const TensorShape &tensor_shape() const override; >>> + const TensorDimsState &tensor_dims_state() const override >>> + { >>> + return _dims_state; >>> +diff --git a/src/core/TensorInfo.cpp b/src/core/TensorInfo.cpp >>> +index 31bddbde40..884203fd7c 100644 >>> +--- a/src/core/TensorInfo.cpp >>> ++++ b/src/core/TensorInfo.cpp >>> +@@ -395,6 +395,11 @@ ITensorInfo >>> &TensorInfo::set_tensor_dims_state(const TensorDimsState &state) >>> + return *this; >>> + } >>> + >>> ++const TensorShape &TensorInfo::tensor_shape() const >>> ++{ >>> ++ return _tensor_shape; >>> ++} >>> ++ >>> + ITensorInfo &TensorInfo::set_quantization_info(const >>> QuantizationInfo &quantization_info) >>> + { >>> + _quantization_info = quantization_info; >>> diff --git >>> a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library_24.12.bb b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library_24.12.bb >>> new file mode 100644 >>> index 00000000..d069da4c >>> --- /dev/null >>> +++ >>> b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library_24.12.bb >>> @@ -0,0 +1,79 @@ >>> +SUMMARY = "The ARM Computer Vision and Machine Learning library" >>> +DESCRIPTION = "The ARM Computer Vision and Machine Learning library >>> is a set of functions optimised for both ARM CPUs and GPUs." >>> +LICENSE = "MIT" >>> +LIC_FILES_CHKSUM = >>> "file://LICENSES/MIT.txt;md5=35f8944fae972976691f3483b0ac9dba" >>> + >>> +SRC_URI = " \ >>> + >>> git://github.com/ARM-software/ComputeLibrary.git;branch=main;protocol=https \ >>> + file://0001-fix-Fix-indention-in-cmake-generator-script.patch \ >>> + >>> file://0002-Use-ARM_COMPUTE_ENABLE_NEON-in-code-for-checking-NEO.patch \ >>> + >>> file://0003-Use-ARM_COMPUTE_ENABLE_SVE-in-code-for-checking-SVE-.patch \ >>> + file://0004-Add-source-files-at-library-definition-time.patch \ >>> + file://0005-Add-CMake-options-for-SVE-SVE2-and-BF16-support.patch \ >>> + >>> file://0006-Allow-SVE-and-SVE2-support-to-be-disabled-in-CMake.patch \ >>> + file://0007-Allow-ARMv7-builds-using-CMake.patch \ >>> + >>> file://0008-Fix-undefined-symbol-error-when-building-TensorInfo.patch \ >>> +" >>> +SRCREV = "32bcced2af7feea6969dd1d22e58d0718dc488e3" >>> + >>> +S = "${WORKDIR}/git" >>> + >>> +COMPATIBLE_HOST = "(arm|aarch64).*-linux" >>> + >>> +inherit cmake >>> + >>> +PACKAGECONFIG ??= "examples tests cppthreads openmp" >>> + >>> +PACKAGECONFIG[Werror] = >>> "-DARM_COMPUTE_WERROR=ON,-DARM_COMPUTE_WERROR=OFF" >>> +PACKAGECONFIG[examples] = >>> "-DARM_COMPUTE_BUILD_EXAMPLES=ON,-DARM_COMPUTE_BUILD_EXAMPLES=OFF" >>> +PACKAGECONFIG[tests] = >>> "-DARM_COMPUTE_BUILD_TESTING=ON,-DARM_COMPUTE_BUILD_TESTING=OFF" >>> +PACKAGECONFIG[cppthreads] = >>> "-DARM_COMPUTE_CPPTHREADS=ON,-DARM_COMPUTE_CPPTHREADS=OFF" >>> +PACKAGECONFIG[openmp] = >>> "-DARM_COMPUTE_OPENMP=ON,-DARM_COMPUTE_OPENMP=OFF" >>> + >>> +EXTRA_OECMAKE:append:aarch64 = " \ >>> + -DARM_COMPUTE_ARCH=armv8-a \ >>> + -DENABLE_NEON=ON \ >>> + -DENABLE_SVE=OFF \ >>> + -DENABLE_SVE2=OFF \ >>> +" >>> +EXTRA_OECMAKE:append:arm = " \ >>> + -DARM_COMPUTE_ARCH=armv7-a \ >>> + -DENABLE_NEON=ON \ >>> + -DENABLE_SVE=OFF \ >>> + -DENABLE_SVE2=OFF \ >>> + -DARM_COMPUTE_ENABLE_BF16=OFF \ >>> + -DARM_COMPUTE_ENABLE_FIXED_FORMAT_KERNELS=OFF \ >>> +" >>> + >>> +INHIBIT_PACKAGE_DEBUG_SPLIT = "1" >>> + >>> +# package unversioned .so files in PN (they are not dev symlinks) >>> +FILES_SOLIBSDEV = "" >>> +FILES:${PN} += "${libdir}/*.so" >>> + >>> +# Install headers and examples >>> +do_install:append() { >>> + # Install headers >>> + CP_ARGS="-Prf --preserve=mode,timestamps --no-preserve=ownership" >>> + install -d ${D}${includedir} >>> + cp $CP_ARGS ${S}/arm_compute ${D}${includedir} >>> + cp $CP_ARGS ${S}/support ${D}${includedir}/support >>> + >>> + # Install examples >>> + if ${@bb.utils.contains('PACKAGECONFIG', 'examples', 'true', >>> 'false', d)}; then >>> + install -d ${D}${bindir}/${PN}-${PV}/examples >>> + for example in ${B}/examples/*; do >>> + if [ -d "$example" ]; then >>> + continue >>> + fi >>> + case "$example" in >>> + (*.o|*.a|*.cmake) continue;; >>> + esac >>> + install -m 0555 $example ${D}${bindir}/${PN}-${PV}/examples >>> + done >>> + fi >>> +} >>> + >>> +PACKAGES =+ "${PN}-tests ${PN}-examples" >>> +FILES:${PN}-tests += "${libdir}/tests" >>> +FILES:${PN}-examples += "${bindir}/*/examples" >>> diff --git a/meta-arago-test/recipes-core/packagegroups/ti-test.bb >>> b/meta-arago-test/recipes-core/packagegroups/ti-test.bb >>> index e8458cef..37f75a39 100644 >>> --- a/meta-arago-test/recipes-core/packagegroups/ti-test.bb >>> +++ b/meta-arago-test/recipes-core/packagegroups/ti-test.bb >>> @@ -61,6 +61,7 @@ TI_TEST_EXTRAS = " \ >>> piglit \ >>> python3-numpy \ >>> wayland-utils \ >>> + arm-compute-library-tests \ >>> " >>> TI_TEST_BASE:append:armv7a = " \ >>
diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0001-fix-Fix-indention-in-cmake-generator-script.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0001-fix-Fix-indention-in-cmake-generator-script.patch new file mode 100644 index 00000000..9e36d254 --- /dev/null +++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0001-fix-Fix-indention-in-cmake-generator-script.patch @@ -0,0 +1,130 @@ +From 1e4c3016547b5f75e515d4b9a7202733c47f5a18 Mon Sep 17 00:00:00 2001 +From: Andrew Davis <afd@ti.com> +Date: Wed, 4 Dec 2024 14:46:17 -0600 +Subject: [PATCH] fix: Fix indention in cmake generator script + +All other items in these lists use tabs, the first couple +lines should match. Switch them to tabs then regenerate +the CMakeLists.txt file. + +While here fix the missing ending newline. + +Upstream-Status: Pending + +Signed-off-by: Andrew Davis <afd@ti.com> +Change-Id: Icab852fc43ae08e7858857881c996d233c835289 +--- + scripts/generate_build_files.py | 27 ++++++++++++++------------- + src/CMakeLists.txt | 26 +++++++++++++------------- + 2 files changed, 27 insertions(+), 26 deletions(-) + +diff --git a/scripts/generate_build_files.py b/scripts/generate_build_files.py +index f88cf1af44..52a8cc14da 100644 +--- a/scripts/generate_build_files.py ++++ b/scripts/generate_build_files.py +@@ -168,28 +168,29 @@ def build_from_template_cmake(srcs_graph, srcs_sve, srcs_sve2, srcs_core): + template = f"""{get_template_header()} + + target_sources( +- arm_compute_graph +- PRIVATE +- {line_separator.join(srcs_graph)} ++ arm_compute_graph ++ PRIVATE ++ {line_separator.join(srcs_graph)} + ) + + target_sources( +- arm_compute_sve +- PRIVATE +- {line_separator.join(srcs_sve)} ++ arm_compute_sve ++ PRIVATE ++ {line_separator.join(srcs_sve)} + ) + + target_sources( +- arm_compute_sve2 +- PRIVATE +- {line_separator.join(srcs_sve2)} ++ arm_compute_sve2 ++ PRIVATE ++ {line_separator.join(srcs_sve2)} + ) + + target_sources( +- arm_compute +- PRIVATE +- {line_separator.join(srcs_core)} +-)""" ++ arm_compute ++ PRIVATE ++ {line_separator.join(srcs_core)} ++) ++""" + return template + + +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index ff3bed96df..f1b275532a 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -21,9 +21,9 @@ + # SOFTWARE. + + target_sources( +- arm_compute_graph +- PRIVATE +- graph/DataLayerVisitor.cpp ++ arm_compute_graph ++ PRIVATE ++ graph/DataLayerVisitor.cpp + graph/Graph.cpp + graph/GraphBuilder.cpp + graph/GraphContext.cpp +@@ -101,9 +101,9 @@ target_sources( + ) + + target_sources( +- arm_compute_sve +- PRIVATE +- core/NEON/kernels/arm_conv/depthwise/interleaves/sve_s8q_3x3_dot.cpp ++ arm_compute_sve ++ PRIVATE ++ core/NEON/kernels/arm_conv/depthwise/interleaves/sve_s8q_3x3_dot.cpp + core/NEON/kernels/arm_conv/depthwise/interleaves/sve_u8q_3x3_dot.cpp + core/NEON/kernels/arm_conv/depthwise/kernels/sme2_fp16_nhwc_3x3_s1_output2x2_mla_depthfirst/generic_direct.cpp + core/NEON/kernels/arm_conv/depthwise/kernels/sme2_fp16_nhwc_3x3_s1_output2x2_mla_depthfirst/generic_indirect.cpp +@@ -332,9 +332,9 @@ target_sources( + ) + + target_sources( +- arm_compute_sve2 +- PRIVATE +- cpu/kernels/activation/generic/sve2/lut.cpp ++ arm_compute_sve2 ++ PRIVATE ++ cpu/kernels/activation/generic/sve2/lut.cpp + cpu/kernels/activation/generic/sve2/qasymm8.cpp + cpu/kernels/activation/generic/sve2/qasymm8_signed.cpp + cpu/kernels/activation/generic/sve2/qsymm16.cpp +@@ -357,9 +357,9 @@ target_sources( + ) + + target_sources( +- arm_compute +- PRIVATE +- c/AclContext.cpp ++ arm_compute ++ PRIVATE ++ c/AclContext.cpp + c/AclOperator.cpp + c/AclQueue.cpp + c/AclTensor.cpp +@@ -1049,4 +1049,4 @@ target_sources( + runtime/experimental/operators/CpuSub.cpp + runtime/experimental/operators/CpuTranspose.cpp + runtime/experimental/operators/CpuWinogradConv2d.cpp +-) +\ No newline at end of file ++) diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0002-Use-ARM_COMPUTE_ENABLE_NEON-in-code-for-checking-NEO.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0002-Use-ARM_COMPUTE_ENABLE_NEON-in-code-for-checking-NEO.patch new file mode 100644 index 00000000..174327c5 --- /dev/null +++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0002-Use-ARM_COMPUTE_ENABLE_NEON-in-code-for-checking-NEO.patch @@ -0,0 +1,114 @@ +From 4350c56d14b7b68acd060d8331f3ade1fb74e167 Mon Sep 17 00:00:00 2001 +From: Andrew Davis <afd@ti.com> +Date: Thu, 5 Dec 2024 09:21:23 -0600 +Subject: [PATCH] Use ARM_COMPUTE_ENABLE_NEON in code for checking NEON support + +ENABLE_NEON is a flag used by the build systems. The flag is not used +in code, instead ARM_COMPUTE_ENABLE_NEON is used everywhere. + +Drop the ENABLE_NEON compiler definition to prevent any accidental +use in code. + +Upstream-Status: Pending + +Signed-off-by: Andrew Davis <afd@ti.com> +Change-Id: I65f5e7411c99280e2dd8c187140909cefd1c6892 +--- + Android.bp | 1 - + BUILD.bazel | 1 - + SConscript | 2 +- + SConstruct | 2 +- + cmake/Options.cmake | 6 +----- + scripts/generate_android_bp.py | 1 - + 6 files changed, 3 insertions(+), 10 deletions(-) + +diff --git a/Android.bp b/Android.bp +index 69379472b0..9288bba2d4 100644 +--- a/Android.bp ++++ b/Android.bp +@@ -157,7 +157,6 @@ arm_compute_library_defaults { + "-DEMBEDDED_KERNELS", + "-DARM_COMPUTE_ASSERTS_ENABLED", + "-DARM_COMPUTE_CPP_SCHEDULER", +- "-DENABLE_NEON", + "-DARM_COMPUTE_ENABLE_NEON", + "-Wno-unused-parameter", + "-DNO_DOT_IN_TOOLCHAIN", +diff --git a/BUILD.bazel b/BUILD.bazel +index f553b7bfad..2262a09655 100644 +--- a/BUILD.bazel ++++ b/BUILD.bazel +@@ -170,7 +170,6 @@ config_setting( + cc_library( + name = "common_defines", + defines = [ +- "ENABLE_NEON", + "ARM_COMPUTE_CPU_ENABLED", + "ARM_COMPUTE_ENABLE_NEON", + "ARM_COMPUTE_ENABLE_I8MM", +diff --git a/SConscript b/SConscript +index 12e8fd1025..69a564873f 100644 +--- a/SConscript ++++ b/SConscript +@@ -97,7 +97,7 @@ def build_multiisa_lib_objects(): + + # note that ARM_COMPUTE_ENABLE_FP16 is enabled in update_data_type_layout_flags() to make + # sure the environment is progated to the validation suite +- arm_compute_env.Append(CPPDEFINES = ['ENABLE_NEON', 'ARM_COMPUTE_ENABLE_NEON', ++ arm_compute_env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_NEON', + 'ENABLE_SVE', 'ARM_COMPUTE_ENABLE_SVE','ARM_COMPUTE_ENABLE_BF16', + 'ARM_COMPUTE_ENABLE_I8MM', 'ARM_COMPUTE_ENABLE_SVEF32MM']) + +diff --git a/SConstruct b/SConstruct +index 8d7bd291e8..7381300fc8 100644 +--- a/SConstruct ++++ b/SConstruct +@@ -302,7 +302,7 @@ if 'v7a' in env['estate'] and env['estate'] == '64': + print("ERROR: armv7a architecture has only 32-bit execution state") + Exit(1) + +-env.Append(CPPDEFINES = ['ENABLE_NEON', 'ARM_COMPUTE_ENABLE_NEON']) ++env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_NEON']) + + if 'sve' in env['arch']: + env.Append(CPPDEFINES = ['ENABLE_SVE', 'ARM_COMPUTE_ENABLE_SVE']) +diff --git a/cmake/Options.cmake b/cmake/Options.cmake +index 5d685be48d..121d527718 100644 +--- a/cmake/Options.cmake ++++ b/cmake/Options.cmake +@@ -53,7 +53,6 @@ option(ARM_COMPUTE_ENABLE_SVE_VALIDATION "" OFF) + + option(ENABLE_NEON "Enable Arm® Neon™ support" ON) + option(ARM_COMPUTE_CPU_ENABLED "" ON) +-option(ARM_COMPUTE_ENABLE_NEON "" ON) + option(ARM_COMPUTE_ENABLE_I8MM "" ON) + option(ENABLE_FP32_KERNELS "" ON) + option(ENABLE_QASYMM8_KERNELS "" ON) +@@ -70,14 +69,11 @@ option(ENABLE_FP16_KERNELS "" OFF) + option(ARM_COMPUTE_ENABLE_FP16 "" OFF) + + if(ENABLE_NEON) +- add_definitions(-DENABLE_NEON) ++ add_definitions(-DARM_COMPUTE_ENABLE_NEON) + endif() + if(ARM_COMPUTE_CPU_ENABLED) + add_definitions(-DARM_COMPUTE_CPU_ENABLED) + endif() +-if(ARM_COMPUTE_ENABLE_NEON) +- add_definitions(-DARM_COMPUTE_ENABLE_NEON) +-endif() + if(ARM_COMPUTE_ENABLE_FP16) + add_definitions(-DARM_COMPUTE_ENABLE_FP16) + endif() +diff --git a/scripts/generate_android_bp.py b/scripts/generate_android_bp.py +index d5b268f522..99a04e7071 100755 +--- a/scripts/generate_android_bp.py ++++ b/scripts/generate_android_bp.py +@@ -94,7 +94,6 @@ arm_compute_library_defaults { + "-DEMBEDDED_KERNELS", + "-DARM_COMPUTE_ASSERTS_ENABLED", + "-DARM_COMPUTE_CPP_SCHEDULER", +- "-DENABLE_NEON", + "-DARM_COMPUTE_ENABLE_NEON", + "-Wno-unused-parameter", + "-DNO_DOT_IN_TOOLCHAIN", diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0003-Use-ARM_COMPUTE_ENABLE_SVE-in-code-for-checking-SVE-.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0003-Use-ARM_COMPUTE_ENABLE_SVE-in-code-for-checking-SVE-.patch new file mode 100644 index 00000000..b51e4534 --- /dev/null +++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0003-Use-ARM_COMPUTE_ENABLE_SVE-in-code-for-checking-SVE-.patch @@ -0,0 +1,197 @@ +From 92a881cebfee5504b188a046a96d39dd9361ddb1 Mon Sep 17 00:00:00 2001 +From: Andrew Davis <afd@ti.com> +Date: Thu, 5 Dec 2024 08:57:38 -0600 +Subject: [PATCH] Use ARM_COMPUTE_ENABLE_SVE in code for checking SVE support + +ENABLE_SVE is a flag used by the build systems. The flag used in code +is ARM_COMPUTE_ENABLE_SVE. There are just a couple spots where the +build system flag is used instead causing the need to define both. + +Switch these last users of ENABLE_SVE over to ARM_COMPUTE_ENABLE_SVE +then drop the ENABLE_SVE definition to prevent any more instances +being added in the future. + +Upstream-Status: Pending + +Signed-off-by: Andrew Davis <afd@ti.com> +Change-Id: I00da7580c4520647b62c6989bc7fbdd5efc7935e +--- + BUILD.bazel | 3 --- + SConscript | 2 +- + SConstruct | 2 +- + .../batchnormalization/impl/SVE/fp16.cpp | 2 +- + .../batchnormalization/impl/SVE/fp32.cpp | 2 +- + tests/BUILD.bazel | 1 - + tests/validation/NEON/ActivationLayer.cpp | 24 +++++++++---------- + tests/validation/NEON/ArithmeticAddition.cpp | 6 ++--- + 8 files changed, 19 insertions(+), 23 deletions(-) + +diff --git a/BUILD.bazel b/BUILD.bazel +index 2262a09655..c04a52e084 100644 +--- a/BUILD.bazel ++++ b/BUILD.bazel +@@ -297,7 +297,6 @@ cc_library( + "//conditions:default": [], + }), + local_defines = [ +- "ENABLE_SVE", + "ARM_COMPUTE_ENABLE_SVE", + "ARM_COMPUTE_ENABLE_SVE2", + "ARM_COMPUTE_ENABLE_BF16", +@@ -348,7 +347,6 @@ cc_library( + "//conditions:default": [], + }), + local_defines = [ +- "ENABLE_SVE", + "ARM_COMPUTE_ENABLE_SVE", + "ARM_COMPUTE_ENABLE_BF16", + ], +@@ -409,7 +407,6 @@ cc_library( + "//conditions:default": [], + }), + local_defines = [ +- "ENABLE_SVE", + "ARM_COMPUTE_ENABLE_SVE", + "ARM_COMPUTE_ENABLE_BF16", + ], +diff --git a/SConscript b/SConscript +index 69a564873f..c2ca549b71 100644 +--- a/SConscript ++++ b/SConscript +@@ -98,7 +98,7 @@ def build_multiisa_lib_objects(): + # note that ARM_COMPUTE_ENABLE_FP16 is enabled in update_data_type_layout_flags() to make + # sure the environment is progated to the validation suite + arm_compute_env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_NEON', +- 'ENABLE_SVE', 'ARM_COMPUTE_ENABLE_SVE','ARM_COMPUTE_ENABLE_BF16', ++ 'ARM_COMPUTE_ENABLE_SVE','ARM_COMPUTE_ENABLE_BF16', + 'ARM_COMPUTE_ENABLE_I8MM', 'ARM_COMPUTE_ENABLE_SVEF32MM']) + + # Build all the common files for the base architecture +diff --git a/SConstruct b/SConstruct +index 7381300fc8..17f5615acf 100644 +--- a/SConstruct ++++ b/SConstruct +@@ -305,7 +305,7 @@ if 'v7a' in env['estate'] and env['estate'] == '64': + env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_NEON']) + + if 'sve' in env['arch']: +- env.Append(CPPDEFINES = ['ENABLE_SVE', 'ARM_COMPUTE_ENABLE_SVE']) ++ env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_SVE']) + if 'sve2' in env['arch']: + env.Append(CPPDEFINES = ['ARM_COMPUTE_ENABLE_SVE2']) + +diff --git a/src/core/NEON/kernels/batchnormalization/impl/SVE/fp16.cpp b/src/core/NEON/kernels/batchnormalization/impl/SVE/fp16.cpp +index 48caaa3e63..e07593312c 100644 +--- a/src/core/NEON/kernels/batchnormalization/impl/SVE/fp16.cpp ++++ b/src/core/NEON/kernels/batchnormalization/impl/SVE/fp16.cpp +@@ -128,4 +128,4 @@ void fp16_sve_batch_normalization(ITensor *src, + } + } // namespace cpu + } // namespace arm_compute +-#endif // ENABLE_SVE ++#endif // ARM_COMPUTE_ENABLE_SVE +diff --git a/src/core/NEON/kernels/batchnormalization/impl/SVE/fp32.cpp b/src/core/NEON/kernels/batchnormalization/impl/SVE/fp32.cpp +index df4fbfe607..0d52d2c3c0 100644 +--- a/src/core/NEON/kernels/batchnormalization/impl/SVE/fp32.cpp ++++ b/src/core/NEON/kernels/batchnormalization/impl/SVE/fp32.cpp +@@ -128,4 +128,4 @@ void fp32_sve_batch_normalization(ITensor *src, + } + } // namespace cpu + } // namespace arm_compute +-#endif // ENABLE_SVE ++#endif // ARM_COMPUTE_ENABLE_SVE +diff --git a/tests/BUILD.bazel b/tests/BUILD.bazel +index 7085f1facc..4b4be8b257 100644 +--- a/tests/BUILD.bazel ++++ b/tests/BUILD.bazel +@@ -114,7 +114,6 @@ cc_binary( + }) + + select({ + "//:sve_validation_flag": [ +- "ENABLE_SVE", + "ARM_COMPUTE_ENABLE_SVE", + ], + "//conditions:default": [], +diff --git a/tests/validation/NEON/ActivationLayer.cpp b/tests/validation/NEON/ActivationLayer.cpp +index 119d51808a..69a8b52354 100644 +--- a/tests/validation/NEON/ActivationLayer.cpp ++++ b/tests/validation/NEON/ActivationLayer.cpp +@@ -73,11 +73,11 @@ RelativeTolerance<float> relative_tolerance(DataType data_type, ActivationLayerI + switch(data_type) + { + case DataType::F16: +-#if defined(ENABLE_SVE) ++#if defined(ARM_COMPUTE_ENABLE_SVE) + return RelativeTolerance<float>(0.25f); +-#else // !defined(ENABLE_SVE) ++#else // !defined(ARM_COMPUTE_ENABLE_SVE) + return RelativeTolerance<float>(0.1f); +-#endif // defined(ENABLE_SVE) ++#endif // defined(ARM_COMPUTE_ENABLE_SVE) + default: + return RelativeTolerance<float>(0.05f); + } +@@ -85,11 +85,11 @@ RelativeTolerance<float> relative_tolerance(DataType data_type, ActivationLayerI + switch(data_type) + { + case DataType::F16: +-#if defined(ENABLE_SVE) ++#if defined(ARM_COMPUTE_ENABLE_SVE) + return RelativeTolerance<float>(0.9f); +-#else // !defined(ENABLE_SVE) ++#else // !defined(ARM_COMPUTE_ENABLE_SVE) + return RelativeTolerance<float>(0.01f); +-#endif // defined(ENABLE_SVE) ++#endif // defined(ARM_COMPUTE_ENABLE_SVE) + default: + return RelativeTolerance<float>(0.00001f); + } +@@ -117,11 +117,11 @@ AbsoluteTolerance<float> absolute_tolerance(DataType data_type, ActivationLayerI + switch(data_type) + { + case DataType::F16: +-#if defined(ENABLE_SVE) ++#if defined(ARM_COMPUTE_ENABLE_SVE) + return AbsoluteTolerance<float>(0.25f); +-#else // !defined(ENABLE_SVE) ++#else // !defined(ARM_COMPUTE_ENABLE_SVE) + return AbsoluteTolerance<float>(0.01f); +-#endif // defined(ENABLE_SVE) ++#endif // defined(ARM_COMPUTE_ENABLE_SVE) + default: + return AbsoluteTolerance<float>(0.00001f); + } +@@ -129,11 +129,11 @@ AbsoluteTolerance<float> absolute_tolerance(DataType data_type, ActivationLayerI + switch(data_type) + { + case DataType::F16: +-#if defined(ENABLE_SVE) ++#if defined(ARM_COMPUTE_ENABLE_SVE) + return AbsoluteTolerance<float>(0.9f); +-#else // !defined(ENABLE_SVE) ++#else // !defined(ARM_COMPUTE_ENABLE_SVE) + return AbsoluteTolerance<float>(0.01f); +-#endif // defined(ENABLE_SVE) ++#endif // defined(ARM_COMPUTE_ENABLE_SVE) + default: + return AbsoluteTolerance<float>(0.00001f); + } +diff --git a/tests/validation/NEON/ArithmeticAddition.cpp b/tests/validation/NEON/ArithmeticAddition.cpp +index c0033daab0..bae8535ff3 100644 +--- a/tests/validation/NEON/ArithmeticAddition.cpp ++++ b/tests/validation/NEON/ArithmeticAddition.cpp +@@ -48,11 +48,11 @@ namespace validation + using framework::dataset::make; + namespace + { +-#if !defined(__aarch64__) || defined(ENABLE_SVE) ++#if !defined(__aarch64__) || defined(ARM_COMPUTE_ENABLE_SVE) + constexpr AbsoluteTolerance<float> tolerance_quant(1); /**< Tolerance value for comparing reference's output against implementation's output for quantized data types */ +-#else // !defined(__aarch64__) || defined(ENABLE_SVE) ++#else // !defined(__aarch64__) || defined(ARM_COMPUTE_ENABLE_SVE) + constexpr AbsoluteTolerance<float> tolerance_quant(1); +-#endif // !defined(__aarch64__) || defined(ENABLE_SVE) ++#endif // !defined(__aarch64__) || defined(ARM_COMPUTE_ENABLE_SVE) + const auto InPlaceDataSet = framework::dataset::make("InPlace", { false, true }); + const auto OutOfPlaceDataSet = framework::dataset::make("InPlace", { false }); + } // namespace diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0004-Add-source-files-at-library-definition-time.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0004-Add-source-files-at-library-definition-time.patch new file mode 100644 index 00000000..971658b4 --- /dev/null +++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0004-Add-source-files-at-library-definition-time.patch @@ -0,0 +1,167 @@ +From a3c7d6aefc289dcce6656fc6d9f9c8c9b1af8f0b Mon Sep 17 00:00:00 2001 +From: Andrew Davis <afd@ti.com> +Date: Thu, 5 Dec 2024 09:38:26 -0600 +Subject: [PATCH] Add source files at library definition time + +This allows for easier conditional disabling of these libraries. + +Upstream-Status: Pending + +Signed-off-by: Andrew Davis <afd@ti.com> +Change-Id: I442aaa03060f2cb7db4ed0c1d93e64dbc223fdc6 +--- + CMakeLists.txt | 20 ++++++++++---------- + scripts/generate_build_files.py | 16 ++++------------ + src/CMakeLists.txt | 16 ++++------------ + 3 files changed, 18 insertions(+), 34 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index e8bdf2af1a..4073e06b17 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -46,6 +46,12 @@ set(CMAKE_CXX_EXTENSIONS OFF) + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") + include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Options.cmake) + include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Version.cmake) ++include(${CMAKE_CURRENT_SOURCE_DIR}/src/CMakeLists.txt) ++ ++list(TRANSFORM ARM_COMPUTE_GRAPH_SOURCES PREPEND "src/") ++list(TRANSFORM ARM_COMPUTE_SVE_SOURCES PREPEND "src/") ++list(TRANSFORM ARM_COMPUTE_SVE2_SOURCES PREPEND "src/") ++list(TRANSFORM ARM_COMPUTE_SOURCES PREPEND "src/") + + # Require at least gcc/g++ 11) CMAKE_CXX_COMPILER_VERSION OR + if(CMAKE_C_COMPILER_VERSION VERSION_LESS 10.2 OR CMAKE_CXX_COMPILER_VERSION +@@ -139,8 +145,7 @@ endif() + + # --------------------------------------------------------------------- + # SVE Object Library +- +-add_library(arm_compute_sve OBJECT "") ++add_library(arm_compute_sve OBJECT ${ARM_COMPUTE_SVE_SOURCES}) + target_compile_options(arm_compute_sve + PRIVATE "-march=armv8.2-a+sve+fp16+dotprod" + PRIVATE "-fPIC") +@@ -162,8 +167,7 @@ target_include_directories( + + # --------------------------------------------------------------------- + # SVE2 Object Library +- +-add_library(arm_compute_sve2 OBJECT "") ++add_library(arm_compute_sve2 OBJECT ${ARM_COMPUTE_SVE2_SOURCES}) + target_compile_options(arm_compute_sve2 + PRIVATE "-march=armv8.6-a+sve2+fp16+dotprod" + PRIVATE "-fPIC") +@@ -187,7 +191,7 @@ target_include_directories( + # --------------------------------------------------------------------- + # Core Library + +-add_library(arm_compute "") ++add_library(arm_compute ${ARM_COMPUTE_SOURCES}) + target_compile_options(arm_compute PRIVATE "-march=${ARM_COMPUTE_ARCH}") + target_compile_definitions(arm_compute PRIVATE ARM_COMPUTE_ENABLE_BF16) + target_compile_definitions(arm_compute PRIVATE ENABLE_SVE) +@@ -216,7 +220,7 @@ target_link_libraries( + # --------------------------------------------------------------------- + # Graph Library + +-add_library(arm_compute_graph "") ++add_library(arm_compute_graph ${ARM_COMPUTE_GRAPH_SOURCES}) + target_compile_options(arm_compute_graph PRIVATE "-march=${ARM_COMPUTE_ARCH}") + target_compile_definitions(arm_compute_graph PRIVATE ENABLE_SVE) + target_compile_definitions(arm_compute_graph PRIVATE ARM_COMPUTE_ENABLE_SVE) +@@ -238,10 +242,6 @@ target_compile_options(arm_compute_graph PUBLIC ${COMMON_CXX_FLAGS}) + + add_library(ArmCompute::Graph ALIAS arm_compute_graph) + +-# --------------------------------------------------------------------- +-# Library Target Sources +-add_subdirectory(src) +- + if(ARM_COMPUTE_BUILD_TESTING) + # --------------------------------------------------------------------- + # Validation Framework Library +diff --git a/scripts/generate_build_files.py b/scripts/generate_build_files.py +index 52a8cc14da..4c4a14623f 100644 +--- a/scripts/generate_build_files.py ++++ b/scripts/generate_build_files.py +@@ -167,27 +167,19 @@ def build_from_template_cmake(srcs_graph, srcs_sve, srcs_sve2, srcs_core): + + template = f"""{get_template_header()} + +-target_sources( +- arm_compute_graph +- PRIVATE ++set(ARM_COMPUTE_GRAPH_SOURCES + {line_separator.join(srcs_graph)} + ) + +-target_sources( +- arm_compute_sve +- PRIVATE ++set(ARM_COMPUTE_SVE_SOURCES + {line_separator.join(srcs_sve)} + ) + +-target_sources( +- arm_compute_sve2 +- PRIVATE ++set(ARM_COMPUTE_SVE2_SOURCES + {line_separator.join(srcs_sve2)} + ) + +-target_sources( +- arm_compute +- PRIVATE ++set(ARM_COMPUTE_SOURCES + {line_separator.join(srcs_core)} + ) + """ +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index f1b275532a..73871563e1 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -20,9 +20,7 @@ + # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + # SOFTWARE. + +-target_sources( +- arm_compute_graph +- PRIVATE ++set(ARM_COMPUTE_GRAPH_SOURCES + graph/DataLayerVisitor.cpp + graph/Graph.cpp + graph/GraphBuilder.cpp +@@ -100,9 +98,7 @@ target_sources( + graph/printers/DotGraphPrinter.cpp + ) + +-target_sources( +- arm_compute_sve +- PRIVATE ++set(ARM_COMPUTE_SVE_SOURCES + core/NEON/kernels/arm_conv/depthwise/interleaves/sve_s8q_3x3_dot.cpp + core/NEON/kernels/arm_conv/depthwise/interleaves/sve_u8q_3x3_dot.cpp + core/NEON/kernels/arm_conv/depthwise/kernels/sme2_fp16_nhwc_3x3_s1_output2x2_mla_depthfirst/generic_direct.cpp +@@ -331,9 +327,7 @@ target_sources( + cpu/kernels/softmax/generic/sve/impl_bf16.cpp + ) + +-target_sources( +- arm_compute_sve2 +- PRIVATE ++set(ARM_COMPUTE_SVE2_SOURCES + cpu/kernels/activation/generic/sve2/lut.cpp + cpu/kernels/activation/generic/sve2/qasymm8.cpp + cpu/kernels/activation/generic/sve2/qasymm8_signed.cpp +@@ -356,9 +350,7 @@ target_sources( + cpu/kernels/softmax/generic/sve2/impl.cpp + ) + +-target_sources( +- arm_compute +- PRIVATE ++set(ARM_COMPUTE_SOURCES + c/AclContext.cpp + c/AclOperator.cpp + c/AclQueue.cpp diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0005-Add-CMake-options-for-SVE-SVE2-and-BF16-support.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0005-Add-CMake-options-for-SVE-SVE2-and-BF16-support.patch new file mode 100644 index 00000000..29ca02f5 --- /dev/null +++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0005-Add-CMake-options-for-SVE-SVE2-and-BF16-support.patch @@ -0,0 +1,112 @@ +From cdb765df59d8ce5f388ac2a820b5da76eb8d610c Mon Sep 17 00:00:00 2001 +From: Andrew Davis <afd@ti.com> +Date: Thu, 5 Dec 2024 09:47:25 -0600 +Subject: [PATCH] Add CMake options for SVE, SVE2, and BF16 support + +These should be optional, add options for these. Remove the hard-coded +definitions of these for the libraries. This also makes it so validation +options are not needed, if SVE is enabled it will be validated. + +Upstream-Status: Pending + +Signed-off-by: Andrew Davis <afd@ti.com> +Change-Id: I03182ac6ece843e813c027ef6a573cbba254dee9 +--- + CMakeLists.txt | 19 ------------------- + cmake/Options.cmake | 16 +++++++++++++--- + 2 files changed, 13 insertions(+), 22 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 4073e06b17..4d95fb1bfd 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -149,9 +149,6 @@ add_library(arm_compute_sve OBJECT ${ARM_COMPUTE_SVE_SOURCES}) + target_compile_options(arm_compute_sve + PRIVATE "-march=armv8.2-a+sve+fp16+dotprod" + PRIVATE "-fPIC") +-target_compile_definitions(arm_compute_sve PRIVATE ARM_COMPUTE_ENABLE_BF16) +-target_compile_definitions(arm_compute_sve PRIVATE ENABLE_SVE) +-target_compile_definitions(arm_compute_sve PRIVATE ARM_COMPUTE_ENABLE_SVE) + target_include_directories( + arm_compute_sve + PUBLIC $<INSTALL_INTERFACE:include> +@@ -171,10 +168,6 @@ add_library(arm_compute_sve2 OBJECT ${ARM_COMPUTE_SVE2_SOURCES}) + target_compile_options(arm_compute_sve2 + PRIVATE "-march=armv8.6-a+sve2+fp16+dotprod" + PRIVATE "-fPIC") +-target_compile_definitions(arm_compute_sve2 PRIVATE ARM_COMPUTE_ENABLE_SVE2) +-target_compile_definitions(arm_compute_sve2 PRIVATE ARM_COMPUTE_ENABLE_BF16) +-target_compile_definitions(arm_compute_sve2 PRIVATE ENABLE_SVE) +-target_compile_definitions(arm_compute_sve2 PRIVATE ARM_COMPUTE_ENABLE_SVE) + target_include_directories( + arm_compute_sve2 + PUBLIC $<INSTALL_INTERFACE:include> +@@ -193,9 +186,6 @@ target_include_directories( + + add_library(arm_compute ${ARM_COMPUTE_SOURCES}) + target_compile_options(arm_compute PRIVATE "-march=${ARM_COMPUTE_ARCH}") +-target_compile_definitions(arm_compute PRIVATE ARM_COMPUTE_ENABLE_BF16) +-target_compile_definitions(arm_compute PRIVATE ENABLE_SVE) +-target_compile_definitions(arm_compute PRIVATE ARM_COMPUTE_ENABLE_SVE) + target_include_directories( + arm_compute + PUBLIC $<INSTALL_INTERFACE:include> +@@ -222,8 +212,6 @@ target_link_libraries( + + add_library(arm_compute_graph ${ARM_COMPUTE_GRAPH_SOURCES}) + target_compile_options(arm_compute_graph PRIVATE "-march=${ARM_COMPUTE_ARCH}") +-target_compile_definitions(arm_compute_graph PRIVATE ENABLE_SVE) +-target_compile_definitions(arm_compute_graph PRIVATE ARM_COMPUTE_ENABLE_SVE) + # add_subdirectory(src/graph) + + target_include_directories( +@@ -268,13 +256,6 @@ if(ARM_COMPUTE_BUILD_TESTING) + + add_executable(arm_compute_validation "") + target_compile_options(arm_compute_validation PRIVATE "-march=${ARM_COMPUTE_ARCH}") +- if(ARM_COMPUTE_ENABLE_BF16_VALIDATION) +- target_compile_definitions(arm_compute_validation PRIVATE ARM_COMPUTE_ENABLE_BF16) +- endif() +- if(ARM_COMPUTE_ENABLE_SVE_VALIDATION) +- target_compile_definitions(arm_compute_validation PRIVATE ENABLE_SVE) +- target_compile_definitions(arm_compute_validation PRIVATE ARM_COMPUTE_ENABLE_SVE) +- endif() + add_subdirectory(tests/validation) + target_compile_options(arm_compute_validation PUBLIC ${COMMON_CXX_FLAGS}) + set_target_properties( +diff --git a/cmake/Options.cmake b/cmake/Options.cmake +index 121d527718..5c23fcb490 100644 +--- a/cmake/Options.cmake ++++ b/cmake/Options.cmake +@@ -48,11 +48,12 @@ set(ARM_COMPUTE_ARCH armv8-a CACHE STRING "Architecture to use") + # --------------------------------------------------------------------- + # Backends + +-option(ARM_COMPUTE_ENABLE_BF16_VALIDATION "" ON) +-option(ARM_COMPUTE_ENABLE_SVE_VALIDATION "" OFF) +- + option(ENABLE_NEON "Enable Arm® Neon™ support" ON) ++option(ENABLE_SVE "Enable Arm® SVE support" ON) ++option(ENABLE_SVE2 "Enable Arm® SVE2 support" ON) ++ + option(ARM_COMPUTE_CPU_ENABLED "" ON) ++option(ARM_COMPUTE_ENABLE_BF16 "" ON) + option(ARM_COMPUTE_ENABLE_I8MM "" ON) + option(ENABLE_FP32_KERNELS "" ON) + option(ENABLE_QASYMM8_KERNELS "" ON) +@@ -74,6 +75,15 @@ endif() + if(ARM_COMPUTE_CPU_ENABLED) + add_definitions(-DARM_COMPUTE_CPU_ENABLED) + endif() ++if(ENABLE_SVE) ++ add_definitions(-DARM_COMPUTE_ENABLE_SVE) ++endif() ++if(ENABLE_SVE2) ++ add_definitions(-DARM_COMPUTE_ENABLE_SVE2) ++endif() ++if(ARM_COMPUTE_ENABLE_BF16) ++ add_definitions(-DARM_COMPUTE_ENABLE_BF16) ++endif() + if(ARM_COMPUTE_ENABLE_FP16) + add_definitions(-DARM_COMPUTE_ENABLE_FP16) + endif() diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0006-Allow-SVE-and-SVE2-support-to-be-disabled-in-CMake.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0006-Allow-SVE-and-SVE2-support-to-be-disabled-in-CMake.patch new file mode 100644 index 00000000..06370adb --- /dev/null +++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0006-Allow-SVE-and-SVE2-support-to-be-disabled-in-CMake.patch @@ -0,0 +1,91 @@ +From ab5bf5b8f86337a31bfd48277650f583a040e658 Mon Sep 17 00:00:00 2001 +From: Andrew Davis <afd@ti.com> +Date: Thu, 5 Dec 2024 09:59:48 -0600 +Subject: [PATCH] Allow SVE and SVE2 support to be disabled in CMake + +Currently these are hard-coded as enabled. The SVE and SVE2 libraries +are built unconditionally. These should only be built when SVE or +SVE2 is available. + +Upstream-Status: Pending + +Signed-off-by: Andrew Davis <afd@ti.com> +Change-Id: I176259f872a84f736028622694d65d4c5b57e379 +--- + CMakeLists.txt | 25 ++++++++++++++++++------- + 1 file changed, 18 insertions(+), 7 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 4d95fb1bfd..d233d6bc67 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -145,6 +145,7 @@ endif() + + # --------------------------------------------------------------------- + # SVE Object Library ++if(ENABLE_SVE) + add_library(arm_compute_sve OBJECT ${ARM_COMPUTE_SVE_SOURCES}) + target_compile_options(arm_compute_sve + PRIVATE "-march=armv8.2-a+sve+fp16+dotprod" +@@ -161,9 +162,11 @@ target_include_directories( + src/core/cpu/kernels/assembly + src/cpu/kernels/assembly + src/core/NEON/kernels/arm_gemm/merges) ++endif() # ENABLE_SVE + + # --------------------------------------------------------------------- + # SVE2 Object Library ++if(ENABLE_SVE2) + add_library(arm_compute_sve2 OBJECT ${ARM_COMPUTE_SVE2_SOURCES}) + target_compile_options(arm_compute_sve2 + PRIVATE "-march=armv8.6-a+sve2+fp16+dotprod" +@@ -180,6 +183,7 @@ target_include_directories( + src/core/cpu/kernels/assembly + src/cpu/kernels/assembly + src/core/NEON/kernels/arm_gemm/merges) ++endif() # ENABLE_SVE2 + + # --------------------------------------------------------------------- + # Core Library +@@ -203,9 +207,12 @@ target_compile_options(arm_compute PUBLIC ${COMMON_CXX_FLAGS}) + add_library(ArmCompute::Core ALIAS arm_compute) + + # arm_compute_sve and arm_compute_sve2 obj files will not be public in the arm_compute.so +-target_link_libraries( +- arm_compute PRIVATE $<TARGET_OBJECTS:arm_compute_sve> +- PRIVATE $<TARGET_OBJECTS:arm_compute_sve2>) ++if(ENABLE_SVE) ++ target_link_libraries(arm_compute PRIVATE $<TARGET_OBJECTS:arm_compute_sve>) ++endif() ++if(ENABLE_SVE2) ++ target_link_libraries(arm_compute PRIVATE $<TARGET_OBJECTS:arm_compute_sve2>) ++endif() + + # --------------------------------------------------------------------- + # Graph Library +@@ -263,8 +270,10 @@ if(ARM_COMPUTE_BUILD_TESTING) + "${CMAKE_BINARY_DIR}/validation") + target_link_libraries( + arm_compute_validation +- PUBLIC arm_compute arm_compute_graph arm_compute_validation_framework +- arm_compute_sve) ++ PUBLIC arm_compute arm_compute_graph arm_compute_validation_framework) ++ if(ENABLE_SVE) ++ target_link_libraries(arm_compute_validation PUBLIC arm_compute_sve) ++ endif() + target_link_directories(arm_compute_validation PUBLIC tests) + + # --------------------------------------------------------------------- +@@ -299,8 +308,10 @@ if(ARM_COMPUTE_BUILD_EXAMPLES) + set_target_properties( + ${test_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY + "${CMAKE_BINARY_DIR}/examples") +- target_link_libraries(${test_name} PUBLIC arm_compute +- arm_compute_graph arm_compute_sve) ++ target_link_libraries(${test_name} PUBLIC arm_compute arm_compute_graph) ++ if(ENABLE_SVE) ++ target_link_libraries(${test_name} PUBLIC arm_compute_sve) ++ endif() + endforeach() + + # NEON Examples diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0007-Allow-ARMv7-builds-using-CMake.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0007-Allow-ARMv7-builds-using-CMake.patch new file mode 100644 index 00000000..07dd4bee --- /dev/null +++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0007-Allow-ARMv7-builds-using-CMake.patch @@ -0,0 +1,86 @@ +From 416cffe2a75a4ec66a75e00bc00297f2f0187e0f Mon Sep 17 00:00:00 2001 +From: Andrew Davis <afd@ti.com> +Date: Thu, 5 Dec 2024 10:05:03 -0600 +Subject: [PATCH] Allow ARMv7 builds using CMake + +Upstream-Status: Pending + +Signed-off-by: Andrew Davis <afd@ti.com> +Change-Id: Ib6bae5820569a8eadd53afdfe31e611a3089140e +--- + CMakeLists.txt | 25 +++++++++++++++++-- + .../fixtures/CpuGemmAssemblyDispatchFixture.h | 3 +++ + 2 files changed, 26 insertions(+), 2 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index d233d6bc67..4fc27553f3 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -148,7 +148,7 @@ endif() + if(ENABLE_SVE) + add_library(arm_compute_sve OBJECT ${ARM_COMPUTE_SVE_SOURCES}) + target_compile_options(arm_compute_sve +- PRIVATE "-march=armv8.2-a+sve+fp16+dotprod" ++ PRIVATE "-march=${ARM_COMPUTE_ARCH}" + PRIVATE "-fPIC") + target_include_directories( + arm_compute_sve +@@ -169,7 +169,7 @@ endif() # ENABLE_SVE + if(ENABLE_SVE2) + add_library(arm_compute_sve2 OBJECT ${ARM_COMPUTE_SVE2_SOURCES}) + target_compile_options(arm_compute_sve2 +- PRIVATE "-march=armv8.6-a+sve2+fp16+dotprod" ++ PRIVATE "-march=${ARM_COMPUTE_ARCH}" + PRIVATE "-fPIC") + target_include_directories( + arm_compute_sve2 +@@ -204,6 +204,15 @@ target_include_directories( + src/core/NEON/kernels/convolution/winograd) + target_compile_options(arm_compute PUBLIC ${COMMON_CXX_FLAGS}) + ++if(ARM_COMPUTE_ARCH MATCHES "armv7") ++ target_sources( ++ arm_compute ++ PRIVATE ++ src/core/NEON/kernels/arm_gemm/kernels/a32_sgemm_8x6/a53.cpp ++ src/core/NEON/kernels/arm_gemm/kernels/a32_sgemm_8x6/a55r1.cpp ++ src/core/NEON/kernels/arm_gemm/kernels/a32_sgemm_8x6/generic.cpp) ++endif() ++ + add_library(ArmCompute::Core ALIAS arm_compute) + + # arm_compute_sve and arm_compute_sve2 obj files will not be public in the arm_compute.so +@@ -264,6 +273,18 @@ if(ARM_COMPUTE_BUILD_TESTING) + add_executable(arm_compute_validation "") + target_compile_options(arm_compute_validation PRIVATE "-march=${ARM_COMPUTE_ARCH}") + add_subdirectory(tests/validation) ++ target_include_directories( ++ arm_compute_validation ++ PUBLIC $<INSTALL_INTERFACE:include> ++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> ++ ${CMAKE_CURRENT_SOURCE_DIR} ++ PRIVATE src ++ src/cpu/kernels/assembly ++ src/core/NEON/kernels/arm_gemm ++ src/core/NEON/kernels/assembly ++ src/core/NEON/kernels/convolution/common ++ src/core/NEON/kernels/arm_conv/depthwise ++ src/core/NEON/kernels/convolution/winograd) + target_compile_options(arm_compute_validation PUBLIC ${COMMON_CXX_FLAGS}) + set_target_properties( + arm_compute_validation PROPERTIES RUNTIME_OUTPUT_DIRECTORY +diff --git a/tests/validation/fixtures/CpuGemmAssemblyDispatchFixture.h b/tests/validation/fixtures/CpuGemmAssemblyDispatchFixture.h +index 5d74e210d5..0b45cdf356 100644 +--- a/tests/validation/fixtures/CpuGemmAssemblyDispatchFixture.h ++++ b/tests/validation/fixtures/CpuGemmAssemblyDispatchFixture.h +@@ -25,7 +25,10 @@ + #define ACL_TESTS_VALIDATION_FIXTURES_CPUGEMMASSEMBLYDISPATCHFIXTURE_H + + #include "arm_compute/core/Helpers.h" ++ ++#ifdef ARM_COMPUTE_ENABLE_FIXED_FORMAT_KERNELS + #include "arm_compute/runtime/NEON/functions/NEReorderLayer.h" ++#endif //ARM_COMPUTE_ENABLE_FIXED_FORMAT_KERNELS + #include "arm_compute/runtime/NEON/functions/NETranspose.h" + + #include "src/core/NEON/kernels/arm_gemm/utils.hpp" diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0008-Fix-undefined-symbol-error-when-building-TensorInfo.patch b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0008-Fix-undefined-symbol-error-when-building-TensorInfo.patch new file mode 100644 index 00000000..9883a44d --- /dev/null +++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0008-Fix-undefined-symbol-error-when-building-TensorInfo.patch @@ -0,0 +1,46 @@ +From 58698788adaeb2f74cf9fcddf06f3e9a2e78b984 Mon Sep 17 00:00:00 2001 +From: Andrew Davis <afd@ti.com> +Date: Mon, 16 Dec 2024 09:42:22 -0600 +Subject: [PATCH] Fix undefined symbol error when building TensorInfo + +Upstream-Status: Pending + +Signed-off-by: Andrew Davis <afd@ti.com> +Change-Id: I657d1b7faaad94147c685c4826916d3c21da82e1 +--- + arm_compute/core/TensorInfo.h | 5 +---- + src/core/TensorInfo.cpp | 5 +++++ + 2 files changed, 6 insertions(+), 4 deletions(-) + +diff --git a/arm_compute/core/TensorInfo.h b/arm_compute/core/TensorInfo.h +index e4c9cbe879..2bfe83c4b1 100644 +--- a/arm_compute/core/TensorInfo.h ++++ b/arm_compute/core/TensorInfo.h +@@ -242,10 +242,7 @@ public: + { + return _num_channels; + } +- const TensorShape &tensor_shape() const override +- { +- return _tensor_shape; +- } ++ const TensorShape &tensor_shape() const override; + const TensorDimsState &tensor_dims_state() const override + { + return _dims_state; +diff --git a/src/core/TensorInfo.cpp b/src/core/TensorInfo.cpp +index 31bddbde40..884203fd7c 100644 +--- a/src/core/TensorInfo.cpp ++++ b/src/core/TensorInfo.cpp +@@ -395,6 +395,11 @@ ITensorInfo &TensorInfo::set_tensor_dims_state(const TensorDimsState &state) + return *this; + } + ++const TensorShape &TensorInfo::tensor_shape() const ++{ ++ return _tensor_shape; ++} ++ + ITensorInfo &TensorInfo::set_quantization_info(const QuantizationInfo &quantization_info) + { + _quantization_info = quantization_info; diff --git a/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library_24.12.bb b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library_24.12.bb new file mode 100644 index 00000000..d069da4c --- /dev/null +++ b/meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library_24.12.bb @@ -0,0 +1,79 @@ +SUMMARY = "The ARM Computer Vision and Machine Learning library" +DESCRIPTION = "The ARM Computer Vision and Machine Learning library is a set of functions optimised for both ARM CPUs and GPUs." +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSES/MIT.txt;md5=35f8944fae972976691f3483b0ac9dba" + +SRC_URI = " \ + git://github.com/ARM-software/ComputeLibrary.git;branch=main;protocol=https \ + file://0001-fix-Fix-indention-in-cmake-generator-script.patch \ + file://0002-Use-ARM_COMPUTE_ENABLE_NEON-in-code-for-checking-NEO.patch \ + file://0003-Use-ARM_COMPUTE_ENABLE_SVE-in-code-for-checking-SVE-.patch \ + file://0004-Add-source-files-at-library-definition-time.patch \ + file://0005-Add-CMake-options-for-SVE-SVE2-and-BF16-support.patch \ + file://0006-Allow-SVE-and-SVE2-support-to-be-disabled-in-CMake.patch \ + file://0007-Allow-ARMv7-builds-using-CMake.patch \ + file://0008-Fix-undefined-symbol-error-when-building-TensorInfo.patch \ +" +SRCREV = "32bcced2af7feea6969dd1d22e58d0718dc488e3" + +S = "${WORKDIR}/git" + +COMPATIBLE_HOST = "(arm|aarch64).*-linux" + +inherit cmake + +PACKAGECONFIG ??= "examples tests cppthreads openmp" + +PACKAGECONFIG[Werror] = "-DARM_COMPUTE_WERROR=ON,-DARM_COMPUTE_WERROR=OFF" +PACKAGECONFIG[examples] = "-DARM_COMPUTE_BUILD_EXAMPLES=ON,-DARM_COMPUTE_BUILD_EXAMPLES=OFF" +PACKAGECONFIG[tests] = "-DARM_COMPUTE_BUILD_TESTING=ON,-DARM_COMPUTE_BUILD_TESTING=OFF" +PACKAGECONFIG[cppthreads] = "-DARM_COMPUTE_CPPTHREADS=ON,-DARM_COMPUTE_CPPTHREADS=OFF" +PACKAGECONFIG[openmp] = "-DARM_COMPUTE_OPENMP=ON,-DARM_COMPUTE_OPENMP=OFF" + +EXTRA_OECMAKE:append:aarch64 = " \ + -DARM_COMPUTE_ARCH=armv8-a \ + -DENABLE_NEON=ON \ + -DENABLE_SVE=OFF \ + -DENABLE_SVE2=OFF \ +" +EXTRA_OECMAKE:append:arm = " \ + -DARM_COMPUTE_ARCH=armv7-a \ + -DENABLE_NEON=ON \ + -DENABLE_SVE=OFF \ + -DENABLE_SVE2=OFF \ + -DARM_COMPUTE_ENABLE_BF16=OFF \ + -DARM_COMPUTE_ENABLE_FIXED_FORMAT_KERNELS=OFF \ +" + +INHIBIT_PACKAGE_DEBUG_SPLIT = "1" + +# package unversioned .so files in PN (they are not dev symlinks) +FILES_SOLIBSDEV = "" +FILES:${PN} += "${libdir}/*.so" + +# Install headers and examples +do_install:append() { + # Install headers + CP_ARGS="-Prf --preserve=mode,timestamps --no-preserve=ownership" + install -d ${D}${includedir} + cp $CP_ARGS ${S}/arm_compute ${D}${includedir} + cp $CP_ARGS ${S}/support ${D}${includedir}/support + + # Install examples + if ${@bb.utils.contains('PACKAGECONFIG', 'examples', 'true', 'false', d)}; then + install -d ${D}${bindir}/${PN}-${PV}/examples + for example in ${B}/examples/*; do + if [ -d "$example" ]; then + continue + fi + case "$example" in + (*.o|*.a|*.cmake) continue;; + esac + install -m 0555 $example ${D}${bindir}/${PN}-${PV}/examples + done + fi +} + +PACKAGES =+ "${PN}-tests ${PN}-examples" +FILES:${PN}-tests += "${libdir}/tests" +FILES:${PN}-examples += "${bindir}/*/examples" diff --git a/meta-arago-test/recipes-core/packagegroups/ti-test.bb b/meta-arago-test/recipes-core/packagegroups/ti-test.bb index e8458cef..37f75a39 100644 --- a/meta-arago-test/recipes-core/packagegroups/ti-test.bb +++ b/meta-arago-test/recipes-core/packagegroups/ti-test.bb @@ -61,6 +61,7 @@ TI_TEST_EXTRAS = " \ piglit \ python3-numpy \ wayland-utils \ + arm-compute-library-tests \ " TI_TEST_BASE:append:armv7a = " \
The Compute Library is a collection of low-level machine learning functions optimized for Arm. This will be used for ARMNN and other machine learning applications and frameworks. Signed-off-by: Andrew Davis <afd@ti.com> --- ...-indention-in-cmake-generator-script.patch | 130 ++++++++++++ ...ENABLE_NEON-in-code-for-checking-NEO.patch | 114 ++++++++++ ...ENABLE_SVE-in-code-for-checking-SVE-.patch | 197 ++++++++++++++++++ ...rce-files-at-library-definition-time.patch | 167 +++++++++++++++ ...ptions-for-SVE-SVE2-and-BF16-support.patch | 112 ++++++++++ ...SVE2-support-to-be-disabled-in-CMake.patch | 91 ++++++++ .../0007-Allow-ARMv7-builds-using-CMake.patch | 86 ++++++++ ...ymbol-error-when-building-TensorInfo.patch | 46 ++++ .../arm-compute-library_24.12.bb | 79 +++++++ .../recipes-core/packagegroups/ti-test.bb | 1 + 10 files changed, 1023 insertions(+) create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0001-fix-Fix-indention-in-cmake-generator-script.patch create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0002-Use-ARM_COMPUTE_ENABLE_NEON-in-code-for-checking-NEO.patch create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0003-Use-ARM_COMPUTE_ENABLE_SVE-in-code-for-checking-SVE-.patch create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0004-Add-source-files-at-library-definition-time.patch create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0005-Add-CMake-options-for-SVE-SVE2-and-BF16-support.patch create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0006-Allow-SVE-and-SVE2-support-to-be-disabled-in-CMake.patch create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0007-Allow-ARMv7-builds-using-CMake.patch create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library/0008-Fix-undefined-symbol-error-when-building-TensorInfo.patch create mode 100644 meta-arago-extras/recipes-devtools/arm-compute-library/arm-compute-library_24.12.bb