aboutsummaryrefslogtreecommitdiff
path: root/src/backends/reference
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/reference')
-rw-r--r--src/backends/reference/test/CMakeLists.txt1
-rw-r--r--src/backends/reference/test/RefLayerSupportTests.cpp2
-rw-r--r--src/backends/reference/test/RefMemCopyTests.cpp70
3 files changed, 72 insertions, 1 deletions
diff --git a/src/backends/reference/test/CMakeLists.txt b/src/backends/reference/test/CMakeLists.txt
index 9d6572a4af..2476c31de6 100644
--- a/src/backends/reference/test/CMakeLists.txt
+++ b/src/backends/reference/test/CMakeLists.txt
@@ -12,6 +12,7 @@ list(APPEND armnnRefBackendUnitTests_sources
RefJsonPrinterTests.cpp
RefLayerSupportTests.cpp
RefLayerTests.cpp
+ RefMemCopyTests.cpp
RefMemoryManagerTests.cpp
RefOptimizedNetworkTests.cpp
RefPerAxisIteratorTests.cpp
diff --git a/src/backends/reference/test/RefLayerSupportTests.cpp b/src/backends/reference/test/RefLayerSupportTests.cpp
index 833e254406..9a27c7c0b3 100644
--- a/src/backends/reference/test/RefLayerSupportTests.cpp
+++ b/src/backends/reference/test/RefLayerSupportTests.cpp
@@ -6,7 +6,7 @@
#include <layers/ConvertFp16ToFp32Layer.hpp>
#include <layers/ConvertFp32ToFp16Layer.hpp>
-#include <TensorHelpers.hpp>
+#include <armnnTestUtils/TensorHelpers.hpp>
#include <armnn/backends/TensorHandle.hpp>
#include <reference/RefWorkloadFactory.hpp>
diff --git a/src/backends/reference/test/RefMemCopyTests.cpp b/src/backends/reference/test/RefMemCopyTests.cpp
new file mode 100644
index 0000000000..e97d979a9b
--- /dev/null
+++ b/src/backends/reference/test/RefMemCopyTests.cpp
@@ -0,0 +1,70 @@
+//
+// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include <reference/RefWorkloadFactory.hpp>
+#include <reference/RefBackend.hpp>
+#include <armnnTestUtils/LayerTestResult.hpp>
+#include <armnnTestUtils/MemCopyTestImpl.hpp>
+#include <armnnTestUtils/MockBackend.hpp>
+#include <doctest/doctest.h>
+
+namespace
+{
+
+template <>
+struct MemCopyTestHelper<armnn::RefWorkloadFactory>
+{
+ static armnn::IBackendInternal::IMemoryManagerSharedPtr GetMemoryManager()
+ {
+ armnn::RefBackend backend;
+ return backend.CreateMemoryManager();
+ }
+
+ static armnn::RefWorkloadFactory GetFactory(const armnn::IBackendInternal::IMemoryManagerSharedPtr&)
+ {
+ return armnn::RefWorkloadFactory();
+ }
+};
+} // namespace
+
+TEST_SUITE("RefMemCopy")
+{
+
+ TEST_CASE("CopyBetweenCpuMockAndRef")
+ {
+ LayerTestResult<float, 4> result =
+ MemCopyTest<armnn::MockWorkloadFactory, armnn::RefWorkloadFactory, armnn::DataType::Float32>(false);
+ auto predResult =
+ CompareTensors(result.m_ActualData, result.m_ExpectedData, result.m_ActualShape, result.m_ExpectedShape);
+ CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
+ }
+
+ TEST_CASE("CopyBetweenRefAndCpuMock")
+ {
+ LayerTestResult<float, 4> result =
+ MemCopyTest<armnn::RefWorkloadFactory, armnn::MockWorkloadFactory, armnn::DataType::Float32>(false);
+ auto predResult =
+ CompareTensors(result.m_ActualData, result.m_ExpectedData, result.m_ActualShape, result.m_ExpectedShape);
+ CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
+ }
+
+ TEST_CASE("CopyBetweenCpuMockAndRefWithSubtensors")
+ {
+ LayerTestResult<float, 4> result =
+ MemCopyTest<armnn::MockWorkloadFactory, armnn::RefWorkloadFactory, armnn::DataType::Float32>(true);
+ auto predResult =
+ CompareTensors(result.m_ActualData, result.m_ExpectedData, result.m_ActualShape, result.m_ExpectedShape);
+ CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
+ }
+
+ TEST_CASE("CopyBetweenRefAndCpuMockWithSubtensors")
+ {
+ LayerTestResult<float, 4> result =
+ MemCopyTest<armnn::RefWorkloadFactory, armnn::MockWorkloadFactory, armnn::DataType::Float32>(true);
+ auto predResult =
+ CompareTensors(result.m_ActualData, result.m_ExpectedData, result.m_ActualShape, result.m_ExpectedShape);
+ CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
+ }
+}