// // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #include "../NeonWorkloadFactory.hpp" #include #include #include #include #include namespace { template <> struct MemCopyTestHelper { static armnn::IBackendInternal::IMemoryManagerSharedPtr GetMemoryManager() { armnn::NeonBackend backend; return backend.CreateMemoryManager(); } static armnn::NeonWorkloadFactory GetFactory( const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, const armnn::ModelOptions& modelOptions = {}) { armnn::NeonBackend backend; return armnn::NeonWorkloadFactory(armnn::PolymorphicPointerDowncast(memoryManager), backend.CreateBackendSpecificModelContext(modelOptions)); } }; } // namespace TEST_SUITE("NeonMemCopy") { TEST_CASE("CopyBetweenCpuAndNeon") { LayerTestResult result = MemCopyTest(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("CopyBetweenNeonAndCpu") { LayerTestResult result = MemCopyTest(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("CopyBetweenCpuAndNeonWithSubtensors") { LayerTestResult result = MemCopyTest(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("CopyBetweenNeonAndCpuWithSubtensors") { LayerTestResult result = MemCopyTest(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()); } }