xref: /aosp_15_r20/external/armnn/src/backends/reference/test/RefMemCopyTests.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1 //
2 // Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #include <reference/RefWorkloadFactory.hpp>
7 #include <reference/RefBackend.hpp>
8 #include <armnnTestUtils/LayerTestResult.hpp>
9 #include <armnnTestUtils/MemCopyTestImpl.hpp>
10 #include <armnnTestUtils/MockBackend.hpp>
11 #include <doctest/doctest.h>
12 
13 namespace
14 {
15 
16 template <>
17 struct MemCopyTestHelper<armnn::RefWorkloadFactory>
18 {
GetMemoryManager__anonf6c9f3bb0111::MemCopyTestHelper19     static armnn::IBackendInternal::IMemoryManagerSharedPtr GetMemoryManager()
20     {
21         armnn::RefBackend backend;
22         return backend.CreateMemoryManager();
23     }
24 
GetFactory__anonf6c9f3bb0111::MemCopyTestHelper25     static armnn::RefWorkloadFactory GetFactory(const armnn::IBackendInternal::IMemoryManagerSharedPtr&)
26     {
27         return armnn::RefWorkloadFactory();
28     }
29 };
30 }    // namespace
31 
32 TEST_SUITE("RefMemCopy")
33 {
34 
35     TEST_CASE("CopyBetweenMockAccAndRef")
36     {
37         LayerTestResult<float, 4> result =
38             MemCopyTest<armnn::MockWorkloadFactory, armnn::RefWorkloadFactory, armnn::DataType::Float32>(false);
39         auto predResult =
40             CompareTensors(result.m_ActualData, result.m_ExpectedData, result.m_ActualShape, result.m_ExpectedShape);
41         CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
42     }
43 
44     TEST_CASE("CopyBetweenRefAndMockAcc")
45     {
46         LayerTestResult<float, 4> result =
47             MemCopyTest<armnn::RefWorkloadFactory, armnn::MockWorkloadFactory, armnn::DataType::Float32>(false);
48         auto predResult =
49             CompareTensors(result.m_ActualData, result.m_ExpectedData, result.m_ActualShape, result.m_ExpectedShape);
50         CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
51     }
52 
53     TEST_CASE("CopyBetweenMockAccAndRefWithSubtensors")
54     {
55         LayerTestResult<float, 4> result =
56             MemCopyTest<armnn::MockWorkloadFactory, armnn::RefWorkloadFactory, armnn::DataType::Float32>(true);
57         auto predResult =
58             CompareTensors(result.m_ActualData, result.m_ExpectedData, result.m_ActualShape, result.m_ExpectedShape);
59         CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
60     }
61 
62     TEST_CASE("CopyBetweenRefAndMockAccWithSubtensors")
63     {
64         LayerTestResult<float, 4> result =
65             MemCopyTest<armnn::RefWorkloadFactory, armnn::MockWorkloadFactory, armnn::DataType::Float32>(true);
66         auto predResult =
67             CompareTensors(result.m_ActualData, result.m_ExpectedData, result.m_ActualShape, result.m_ExpectedShape);
68         CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
69     }
70 }
71