aboutsummaryrefslogtreecommitdiff
path: root/src/backends/neon
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/neon')
-rw-r--r--src/backends/neon/CMakeLists.txt5
-rw-r--r--src/backends/neon/NeonBackend.cpp15
-rw-r--r--src/backends/neon/NeonRegistryInitializer.cpp25
-rw-r--r--src/backends/neon/backend.mk11
-rw-r--r--src/backends/neon/test/CMakeLists.txt7
-rw-r--r--src/backends/neon/test/NeonCreateWorkloadTests.cpp6
-rw-r--r--src/backends/neon/test/NeonEndToEndTests.cpp6
-rw-r--r--src/backends/neon/test/NeonLayerTests.cpp8
8 files changed, 62 insertions, 21 deletions
diff --git a/src/backends/neon/CMakeLists.txt b/src/backends/neon/CMakeLists.txt
index 7464a2e623..f99f1ac3e7 100644
--- a/src/backends/neon/CMakeLists.txt
+++ b/src/backends/neon/CMakeLists.txt
@@ -12,13 +12,14 @@ if(ARMCOMPUTENEON)
NeonInterceptorScheduler.cpp
NeonLayerSupport.cpp
NeonLayerSupport.hpp
- NeonWorkloadFactory.cpp
- NeonWorkloadFactory.hpp
+ NeonRegistryInitializer.cpp
NeonTensorHandle.hpp
NeonTensorHandleFactory.cpp
NeonTensorHandleFactory.hpp
NeonTimer.hpp
NeonTimer.cpp
+ NeonWorkloadFactory.cpp
+ NeonWorkloadFactory.hpp
)
add_subdirectory(workloads)
diff --git a/src/backends/neon/NeonBackend.cpp b/src/backends/neon/NeonBackend.cpp
index 5df231b5e3..60f8ba6dab 100644
--- a/src/backends/neon/NeonBackend.cpp
+++ b/src/backends/neon/NeonBackend.cpp
@@ -25,21 +25,6 @@
namespace armnn
{
-namespace
-{
-
-static BackendRegistry::StaticRegistryInitializer g_RegisterHelper
-{
- BackendRegistryInstance(),
- NeonBackend::GetIdStatic(),
- []()
- {
- return IBackendInternalUniquePtr(new NeonBackend);
- }
-};
-
-}
-
const BackendId& NeonBackend::GetIdStatic()
{
static const BackendId s_Id{NeonBackendId()};
diff --git a/src/backends/neon/NeonRegistryInitializer.cpp b/src/backends/neon/NeonRegistryInitializer.cpp
new file mode 100644
index 0000000000..c74acae96b
--- /dev/null
+++ b/src/backends/neon/NeonRegistryInitializer.cpp
@@ -0,0 +1,25 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include "NeonBackend.hpp"
+
+#include <backendsCommon/BackendRegistry.hpp>
+
+namespace
+{
+
+using namespace armnn;
+
+static BackendRegistry::StaticRegistryInitializer g_RegisterHelper
+{
+ BackendRegistryInstance(),
+ NeonBackend::GetIdStatic(),
+ []()
+ {
+ return IBackendInternalUniquePtr(new NeonBackend);
+ }
+};
+
+} // Anonymous namespace
diff --git a/src/backends/neon/backend.mk b/src/backends/neon/backend.mk
index 9ceb843868..bf7e25d5f0 100644
--- a/src/backends/neon/backend.mk
+++ b/src/backends/neon/backend.mk
@@ -7,7 +7,7 @@
# in the Android build and it is picked up by the Android.mk
# file in the root of ArmNN
-# The variable to enable/disable the NEON backend (ARMNN_COMPUTE_NEON_ENABLED) is declared in android-nn-driver/Android.mk
+# The variable to enable/disable the NEON backend (ARMNN_COMPUTE_NEON_ENABLED is declared in android-nn-driver/Android.mk)
ifeq ($(ARMNN_COMPUTE_NEON_ENABLED),1)
# ARMNN_COMPUTE_NEON_ENABLED == 1
@@ -17,6 +17,7 @@ BACKEND_SOURCES := \
NeonBackend.cpp \
NeonInterceptorScheduler.cpp \
NeonLayerSupport.cpp \
+ NeonRegistryInitializer.cpp \
NeonTensorHandleFactory.cpp \
NeonTimer.cpp \
NeonWorkloadFactory.cpp \
@@ -71,7 +72,7 @@ endif
# in the Android unit test build (armnn-tests) and it is picked
# up by the Android.mk file in the root of ArmNN
-# The variable to enable/disable the NEON backend (ARMNN_COMPUTE_NEON_ENABLED) is declared in android-nn-driver/Android.mk
+# The variable to enable/disable the NEON backend (ARMNN_COMPUTE_NEON_ENABLED is declared in android-nn-driver/Android.mk)
ifeq ($(ARMNN_COMPUTE_NEON_ENABLED),1)
# ARMNN_COMPUTE_NEON_ENABLED == 1
@@ -83,11 +84,15 @@ BACKEND_TEST_SOURCES := \
test/NeonJsonPrinterTests.cpp \
test/NeonLayerSupportTests.cpp \
test/NeonLayerTests.cpp \
- test/NeonMemCopyTests.cpp \
test/NeonOptimizedNetworkTests.cpp \
test/NeonRuntimeTests.cpp \
test/NeonTimerTest.cpp
+ifeq ($(ARMNN_COMPUTE_REF_ENABLED),1)
+BACKEND_TEST_SOURCES += \
+ test/NeonMemCopyTests.cpp
+endif # ARMNN_COMPUTE_REF_ENABLED == 1
+
else
# ARMNN_COMPUTE_NEON_ENABLED == 0
diff --git a/src/backends/neon/test/CMakeLists.txt b/src/backends/neon/test/CMakeLists.txt
index 19512f98eb..87929fba43 100644
--- a/src/backends/neon/test/CMakeLists.txt
+++ b/src/backends/neon/test/CMakeLists.txt
@@ -9,13 +9,18 @@ list(APPEND armnnNeonBackendUnitTests_sources
NeonJsonPrinterTests.cpp
NeonLayerSupportTests.cpp
NeonLayerTests.cpp
- NeonMemCopyTests.cpp
NeonOptimizedNetworkTests.cpp
NeonRuntimeTests.cpp
NeonTimerTest.cpp
NeonWorkloadFactoryHelper.hpp
)
+if (ARMCOMPUTEREF)
+ list(APPEND armnnNeonBackendUnitTests_sources
+ NeonMemCopyTests.cpp
+ )
+endif()
+
add_library(armnnNeonBackendUnitTests OBJECT ${armnnNeonBackendUnitTests_sources})
target_include_directories(armnnNeonBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
target_include_directories(armnnNeonBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
diff --git a/src/backends/neon/test/NeonCreateWorkloadTests.cpp b/src/backends/neon/test/NeonCreateWorkloadTests.cpp
index 056bfb283f..6317ac2cc7 100644
--- a/src/backends/neon/test/NeonCreateWorkloadTests.cpp
+++ b/src/backends/neon/test/NeonCreateWorkloadTests.cpp
@@ -710,6 +710,10 @@ BOOST_AUTO_TEST_CASE(CreateSingleOutputMultipleInputs)
BOOST_TEST(validDataPointers);
}
+#if defined(ARMCOMPUTEREF_ENABLED)
+
+// This test unit needs the reference backend, it's not available if the reference backend is not built
+
BOOST_AUTO_TEST_CASE(CreateMemCopyWorkloadsNeon)
{
NeonWorkloadFactory factory =
@@ -717,6 +721,8 @@ BOOST_AUTO_TEST_CASE(CreateMemCopyWorkloadsNeon)
CreateMemCopyWorkloads<IAclTensorHandle>(factory);
}
+#endif
+
template <typename L2NormalizationWorkloadType, typename armnn::DataType DataType>
static void NeonCreateL2NormalizationWorkloadTest(DataLayout dataLayout)
{
diff --git a/src/backends/neon/test/NeonEndToEndTests.cpp b/src/backends/neon/test/NeonEndToEndTests.cpp
index 9f94151c1d..bee5b7e76c 100644
--- a/src/backends/neon/test/NeonEndToEndTests.cpp
+++ b/src/backends/neon/test/NeonEndToEndTests.cpp
@@ -25,6 +25,10 @@ BOOST_AUTO_TEST_CASE(ConstantUsage_Neon_Float32)
BOOST_TEST(ConstantUsageFloat32Test(defaultBackends));
}
+#if defined(ARMCOMPUTEREF_ENABLED)
+
+// This test unit needs the reference backend, it's not available if the reference backend is not built
+
BOOST_AUTO_TEST_CASE(FallbackToCpuRef)
{
using namespace armnn;
@@ -59,6 +63,8 @@ BOOST_AUTO_TEST_CASE(FallbackToCpuRef)
BOOST_TEST(runtime->LoadNetwork(netId, std::move(optNet)) == Status::Success);
}
+#endif
+
BOOST_AUTO_TEST_CASE(NeonGreaterSimpleEndToEndTest)
{
const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
diff --git a/src/backends/neon/test/NeonLayerTests.cpp b/src/backends/neon/test/NeonLayerTests.cpp
index e795174144..27f1dd24da 100644
--- a/src/backends/neon/test/NeonLayerTests.cpp
+++ b/src/backends/neon/test/NeonLayerTests.cpp
@@ -848,6 +848,11 @@ ARMNN_AUTO_TEST_CASE(MultiChannelTransposeConvolution2dUint8Nhwc,
MultiChannelTransposeConvolution2dTest<DataType::QuantisedAsymm8, DataType::Signed32>,
DataLayout::NHWC)
+#if defined(ARMCOMPUTEREF_ENABLED)
+
+// The ARMNN_COMPARE_REF_AUTO_TEST_CASE and the ARMNN_COMPARE_REF_FIXTURE_TEST_CASE test units are not available
+// if the reference backend is not built
+
// ============================================================================
// COMPARE tests
@@ -934,4 +939,7 @@ ARMNN_COMPARE_REF_FIXTURE_TEST_CASE(CompareSqrtActivationWithReference, Positive
ARMNN_COMPARE_REF_FIXTURE_TEST_CASE(CompareSquareActivationWithReference, ActivationFixture,
CompareActivationTest, ActivationFunction::Square, 5u)
+
+#endif
+
BOOST_AUTO_TEST_SUITE_END()