blob: de4195d77197ce725782e660360fe026c2b07a60 [file] [log] [blame]
Aron Virginas-Tar3b278e92018-10-12 13:00:55 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
Colm Donelanc42a9872022-02-02 16:35:09 +00006#include "../NeonWorkloadFactory.hpp"
7#include <neon/NeonBackend.hpp>
8#include <armnnTestUtils/LayerTestResult.hpp>
9#include <armnnTestUtils/MemCopyTestImpl.hpp>
10#include <armnnTestUtils/MockBackend.hpp>
Sadik Armagan1625efc2021-06-10 18:24:34 +010011#include <doctest/doctest.h>
Aron Virginas-Tar3b278e92018-10-12 13:00:55 +010012
Colm Donelanc42a9872022-02-02 16:35:09 +000013namespace
14{
15
16template <>
17struct MemCopyTestHelper<armnn::NeonWorkloadFactory>
18{
19 static armnn::IBackendInternal::IMemoryManagerSharedPtr GetMemoryManager()
20 {
21 armnn::NeonBackend backend;
22 return backend.CreateMemoryManager();
23 }
24
25 static armnn::NeonWorkloadFactory GetFactory(
26 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
27 const armnn::ModelOptions& modelOptions = {})
28 {
29 armnn::NeonBackend backend;
30 return armnn::NeonWorkloadFactory(armnn::PolymorphicPointerDowncast<armnn::NeonMemoryManager>(memoryManager),
31 backend.CreateBackendSpecificModelContext(modelOptions));
32 }
33};
34} // namespace
35
36
Sadik Armagan1625efc2021-06-10 18:24:34 +010037TEST_SUITE("NeonMemCopy")
38{
39TEST_CASE("CopyBetweenCpuAndNeon")
Aron Virginas-Tar3b278e92018-10-12 13:00:55 +010040{
Matteo Martincigh49124022019-01-11 13:25:59 +000041 LayerTestResult<float, 4> result =
Colm Donelanc42a9872022-02-02 16:35:09 +000042 MemCopyTest<armnn::MockWorkloadFactory, armnn::NeonWorkloadFactory, armnn::DataType::Float32>(false);
Sadik Armagan483c8112021-06-01 09:24:52 +010043 auto predResult = CompareTensors(result.m_ActualData, result.m_ExpectedData,
44 result.m_ActualShape, result.m_ExpectedShape);
Sadik Armagan1625efc2021-06-10 18:24:34 +010045 CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
Aron Virginas-Tar3b278e92018-10-12 13:00:55 +010046}
47
Sadik Armagan1625efc2021-06-10 18:24:34 +010048TEST_CASE("CopyBetweenNeonAndCpu")
Aron Virginas-Tar3b278e92018-10-12 13:00:55 +010049{
Matteo Martincigh49124022019-01-11 13:25:59 +000050 LayerTestResult<float, 4> result =
Colm Donelanc42a9872022-02-02 16:35:09 +000051 MemCopyTest<armnn::NeonWorkloadFactory, armnn::MockWorkloadFactory, armnn::DataType::Float32>(false);
Sadik Armagan483c8112021-06-01 09:24:52 +010052 auto predResult = CompareTensors(result.m_ActualData, result.m_ExpectedData,
53 result.m_ActualShape, result.m_ExpectedShape);
Sadik Armagan1625efc2021-06-10 18:24:34 +010054 CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
Aron Virginas-Tar3b278e92018-10-12 13:00:55 +010055}
56
Sadik Armagan1625efc2021-06-10 18:24:34 +010057TEST_CASE("CopyBetweenCpuAndNeonWithSubtensors")
Aron Virginas-Tar3b278e92018-10-12 13:00:55 +010058{
Matteo Martincigh49124022019-01-11 13:25:59 +000059 LayerTestResult<float, 4> result =
Colm Donelanc42a9872022-02-02 16:35:09 +000060 MemCopyTest<armnn::MockWorkloadFactory, armnn::NeonWorkloadFactory, armnn::DataType::Float32>(true);
Sadik Armagan483c8112021-06-01 09:24:52 +010061 auto predResult = CompareTensors(result.m_ActualData, result.m_ExpectedData,
62 result.m_ActualShape, result.m_ExpectedShape);
Sadik Armagan1625efc2021-06-10 18:24:34 +010063 CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
Aron Virginas-Tar3b278e92018-10-12 13:00:55 +010064}
65
Sadik Armagan1625efc2021-06-10 18:24:34 +010066TEST_CASE("CopyBetweenNeonAndCpuWithSubtensors")
Aron Virginas-Tar3b278e92018-10-12 13:00:55 +010067{
Matteo Martincigh49124022019-01-11 13:25:59 +000068 LayerTestResult<float, 4> result =
Colm Donelanc42a9872022-02-02 16:35:09 +000069 MemCopyTest<armnn::NeonWorkloadFactory, armnn::MockWorkloadFactory, armnn::DataType::Float32>(true);
Sadik Armagan483c8112021-06-01 09:24:52 +010070 auto predResult = CompareTensors(result.m_ActualData, result.m_ExpectedData,
71 result.m_ActualShape, result.m_ExpectedShape);
Sadik Armagan1625efc2021-06-10 18:24:34 +010072 CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
Aron Virginas-Tar3b278e92018-10-12 13:00:55 +010073}
74
Sadik Armagan1625efc2021-06-10 18:24:34 +010075}