IVGCVSW-6635 Move MemCopyTestImpl from acl to armnnTestUtils.

* Move MemCopyTestImpl.hpp from src/backends/aclCommon/test/ to
  include/armnnTestutils.
* Refactor MemCopyTests in aclCommon, cl and Neon.
* Introduce RefMemCopyTests to exercise this utility in x86 builds.

Signed-off-by: Colm Donelan <colm.donelan@arm.com>
Change-Id: I8824f013d3656658ed0a2904bb79384e3af68641
diff --git a/src/backends/aclCommon/test/MemCopyTestImpl.hpp b/src/backends/aclCommon/test/MemCopyTestImpl.hpp
index 956ea27..0c38ed9 100644
--- a/src/backends/aclCommon/test/MemCopyTestImpl.hpp
+++ b/src/backends/aclCommon/test/MemCopyTestImpl.hpp
@@ -1,94 +1,10 @@
 //
-// Copyright © 2017 Arm Ltd. All rights reserved.
+// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
-#pragma once
 
-#include <ResolveType.hpp>
-#include <armnn/backends/IBackendInternal.hpp>
+#include <armnnTestUtils/MemCopyTestImpl.hpp>
 
-#include <test/TensorHelpers.hpp>
-
-#include <armnnTestUtils/LayerTestResult.hpp>
-#include <armnnTestUtils/TensorCopyUtils.hpp>
-#include <armnnTestUtils/WorkloadTestUtils.hpp>
-#include <backendsCommon/test/WorkloadFactoryHelper.hpp>
-
-namespace
-{
-
-template<armnn::DataType dataType, typename T = armnn::ResolveType<dataType>>
-LayerTestResult<T, 4> MemCopyTest(armnn::IWorkloadFactory& srcWorkloadFactory,
-                                  armnn::IWorkloadFactory& dstWorkloadFactory,
-                                  bool withSubtensors)
-{
-    const std::array<unsigned int, 4> shapeData = { { 1u, 1u, 6u, 5u } };
-    const armnn::TensorShape tensorShape(4, shapeData.data());
-    const armnn::TensorInfo tensorInfo(tensorShape, dataType);
-    std::vector<T> inputData =
-    {
-         1,  2,  3,  4,  5,
-         6,  7,  8,  9, 10,
-        11, 12, 13, 14, 15,
-        16, 17, 18, 19, 20,
-        21, 22, 23, 24, 25,
-        26, 27, 28, 29, 30,
-    };
-
-    LayerTestResult<T, 4> ret(tensorInfo);
-    ret.m_ExpectedData = inputData;
-
-    std::vector<T> actualOutput(tensorInfo.GetNumElements());
-
-    ARMNN_NO_DEPRECATE_WARN_BEGIN
-    auto inputTensorHandle = srcWorkloadFactory.CreateTensorHandle(tensorInfo);
-    auto outputTensorHandle = dstWorkloadFactory.CreateTensorHandle(tensorInfo);
-    ARMNN_NO_DEPRECATE_WARN_END
-
-    AllocateAndCopyDataToITensorHandle(inputTensorHandle.get(), inputData.data());
-    outputTensorHandle->Allocate();
-
-    armnn::MemCopyQueueDescriptor memCopyQueueDesc;
-    armnn::WorkloadInfo workloadInfo;
-
-    const unsigned int origin[4] = {};
-
-    ARMNN_NO_DEPRECATE_WARN_BEGIN
-    auto workloadInput = (withSubtensors && srcWorkloadFactory.SupportsSubTensors())
-                         ? srcWorkloadFactory.CreateSubTensorHandle(*inputTensorHandle, tensorShape, origin)
-                         : std::move(inputTensorHandle);
-    auto workloadOutput = (withSubtensors && dstWorkloadFactory.SupportsSubTensors())
-                          ? dstWorkloadFactory.CreateSubTensorHandle(*outputTensorHandle, tensorShape, origin)
-                          : std::move(outputTensorHandle);
-    ARMNN_NO_DEPRECATE_WARN_END
-
-    AddInputToWorkload(memCopyQueueDesc, workloadInfo, tensorInfo, workloadInput.get());
-    AddOutputToWorkload(memCopyQueueDesc, workloadInfo, tensorInfo, workloadOutput.get());
-
-    dstWorkloadFactory.CreateWorkload(armnn::LayerType::MemCopy, memCopyQueueDesc, workloadInfo)->Execute();
-
-    CopyDataFromITensorHandle(actualOutput.data(), workloadOutput.get());
-    ret.m_ActualData = actualOutput;
-
-    return ret;
-}
-
-template<typename SrcWorkloadFactory,
-         typename DstWorkloadFactory,
-         armnn::DataType dataType,
-         typename T = armnn::ResolveType<dataType>>
-LayerTestResult<T, 4> MemCopyTest(bool withSubtensors)
-{
-    armnn::IBackendInternal::IMemoryManagerSharedPtr srcMemoryManager =
-        WorkloadFactoryHelper<SrcWorkloadFactory>::GetMemoryManager();
-
-    armnn::IBackendInternal::IMemoryManagerSharedPtr dstMemoryManager =
-        WorkloadFactoryHelper<DstWorkloadFactory>::GetMemoryManager();
-
-    SrcWorkloadFactory srcWorkloadFactory = WorkloadFactoryHelper<SrcWorkloadFactory>::GetFactory(srcMemoryManager);
-    DstWorkloadFactory dstWorkloadFactory = WorkloadFactoryHelper<DstWorkloadFactory>::GetFactory(dstMemoryManager);
-
-    return MemCopyTest<dataType>(srcWorkloadFactory, dstWorkloadFactory, withSubtensors);
-}
-
-} // anonymous namespace
+#pragma message("./src/backends/aclCommon/test/MemCopyTestImpl.hpp has been"\
+                " deprecated, it is due for removal in 22.11 release. Please"\
+                " use public interface include/armnnTestUtils/MemCopyTestImpl.hpp")