blob: 7c6267852406459f1ee2e0e22613304f76817836 [file] [log] [blame]
Ryan OSheaf4bfa6a2020-06-10 11:33:37 +01001//
2// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include "FillTestImpl.hpp"
7
8#include <backendsCommon/test/DataTypeUtils.hpp>
9#include <backendsCommon/test/TensorCopyUtils.hpp>
10#include <backendsCommon/test/WorkloadTestUtils.hpp>
11
12#include <test/TensorHelpers.hpp>
13
14template<armnn::DataType ArmnnType, typename T>
15LayerTestResult<T, 4> SimpleFillTest(
16 armnn::IWorkloadFactory& workloadFactory,
17 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
18{
19 IgnoreUnused(memoryManager);
Teresa Charlin4b10fef2020-07-29 09:36:41 +010020 armnn::TensorInfo inputTensorInfo({4}, armnn::DataType::Signed32);
Ryan OSheaf4bfa6a2020-06-10 11:33:37 +010021 armnn::TensorInfo outputTensorInfo({2, 2, 3, 2}, ArmnnType);
Ryan OSheaf4bfa6a2020-06-10 11:33:37 +010022
Teresa Charlin4b10fef2020-07-29 09:36:41 +010023 auto input = MakeTensor<int32_t, 1>(inputTensorInfo, ConvertToDataType<armnn::DataType::Signed32>(
Ryan OSheaf4bfa6a2020-06-10 11:33:37 +010024 {2, 2, 3, 2},
25 inputTensorInfo));
26
27 LayerTestResult<T, 4> ret(outputTensorInfo);
28 ret.outputExpected = MakeTensor<T, 4>(outputTensorInfo, ConvertToDataType<ArmnnType>(
29 { 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
30 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f },
31 outputTensorInfo));
32
Teresa Charlinfbf0e5b2020-08-17 01:01:06 +010033 ARMNN_NO_DEPRECATE_WARN_BEGIN
Ryan OSheaf4bfa6a2020-06-10 11:33:37 +010034 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo);
35 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
Teresa Charlinfbf0e5b2020-08-17 01:01:06 +010036 ARMNN_NO_DEPRECATE_WARN_END
Ryan OSheaf4bfa6a2020-06-10 11:33:37 +010037
38 armnn::FillQueueDescriptor data;
39 data.m_Parameters.m_Value = 1.0f;
40 armnn::WorkloadInfo info;
41 AddInputToWorkload(data, info, inputTensorInfo, inputHandle.get());
42 AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());
43
44 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateFill(data, info);
45
46 inputHandle->Allocate();
47 outputHandle->Allocate();
48
49 CopyDataToITensorHandle(inputHandle.get(), &input[0]);
50
51 workload->Execute();
52
53 CopyDataFromITensorHandle(&ret.output[0][0][0][0], outputHandle.get());
54
55 return ret;
56}
57
58//
59// Explicit template specializations
60//
61template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
62SimpleFillTest<armnn::DataType::Float32>(
63 armnn::IWorkloadFactory& workloadFactory,
64 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
65
66template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
67SimpleFillTest<armnn::DataType::Float16>(
68 armnn::IWorkloadFactory& workloadFactory,
Sadik Armagan66aecb02020-06-24 11:42:20 +010069 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
70
71template LayerTestResult<armnn::ResolveType<armnn::DataType::Signed32>, 4>
72SimpleFillTest<armnn::DataType::Signed32>(
73 armnn::IWorkloadFactory& workloadFactory,
Ryan OSheaf4bfa6a2020-06-10 11:33:37 +010074 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);