aboutsummaryrefslogtreecommitdiff
path: root/src/backends/reference/test/RefMemCopyTests.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/reference/test/RefMemCopyTests.cpp')
-rw-r--r--src/backends/reference/test/RefMemCopyTests.cpp70
1 files changed, 70 insertions, 0 deletions
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());
+ }
+}