blob: d14146827c515669aaeb7b589d6b369be5b296b3 [file] [log] [blame]
Sadik Armaganac472102020-03-24 09:54:36 +00001//
2// Copyright © 2020 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include "NegTestImpl.hpp"
7#include "ElementwiseUnaryTestImpl.hpp"
8
9
10template<armnn::DataType ArmnnType, typename T>
11LayerTestResult<T, 2> Neg2dTest(
12 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +010013 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
14 const armnn::ITensorHandleFactory& tensorHandleFactory)
Sadik Armaganac472102020-03-24 09:54:36 +000015{
16 const unsigned int inputShape[] = { 2, 2 };
17
18 std::vector<float> inputValues
19 {
20 1.f, 1.f,
21 2.f, 25.f
22 };
23
24 std::vector<float> expectedOutputValues
25 {
26 -1.f, -1.f,
27 -2.f, -25.f
28 };
29
30 return ElementwiseUnaryTestHelper<2, ArmnnType>(
31 workloadFactory,
32 memoryManager,
33 armnn::UnaryOperation::Neg,
34 inputShape,
35 inputValues,
36 inputShape,
Keith Davis33a626f2020-08-27 15:38:12 +010037 expectedOutputValues,
38 tensorHandleFactory);
Sadik Armaganac472102020-03-24 09:54:36 +000039}
40
41template<armnn::DataType ArmnnType, typename T>
42LayerTestResult<T, 3> Neg3dTest(
43 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +010044 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
45 const armnn::ITensorHandleFactory& tensorHandleFactory)
Sadik Armaganac472102020-03-24 09:54:36 +000046{
47 const unsigned int inputShape[] = { 3, 1, 2 };
48
49 std::vector<float> inputValues
50 {
51 1.f, 0.f, 3.f,
52 25.f, 64.f, 100.f
53 };
54
55 std::vector<float> expectedOutputValues
56 {
57 -1.f, 0.f, -3.f,
58 -25.f, -64.f, -100.f
59 };
60
61 return ElementwiseUnaryTestHelper<3, ArmnnType>(
62 workloadFactory,
63 memoryManager,
64 armnn::UnaryOperation::Neg,
65 inputShape,
66 inputValues,
67 inputShape,
Keith Davis33a626f2020-08-27 15:38:12 +010068 expectedOutputValues,
69 tensorHandleFactory);
Sadik Armaganac472102020-03-24 09:54:36 +000070}
71
72template<armnn::DataType ArmnnType, typename T>
73LayerTestResult<T, 2> NegZeroTest(
74 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +010075 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
76 const armnn::ITensorHandleFactory& tensorHandleFactory)
Sadik Armaganac472102020-03-24 09:54:36 +000077{
78 const unsigned int inputShape[] = { 1, 2 };
79
80 std::vector<float> inputValues
81 {
82 0.f, 0.f
83 };
84
85 std::vector<float> expectedOutputValues
86 {
87 0.f, 0.f
88 };
89
90 return ElementwiseUnaryTestHelper<2, ArmnnType>(
91 workloadFactory,
92 memoryManager,
93 armnn::UnaryOperation::Neg,
94 inputShape,
95 inputValues,
96 inputShape,
Keith Davis33a626f2020-08-27 15:38:12 +010097 expectedOutputValues,
98 tensorHandleFactory);
Sadik Armaganac472102020-03-24 09:54:36 +000099}
100
101template<armnn::DataType ArmnnType, typename T>
102LayerTestResult<T, 2> NegNegativeTest(
103 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100104 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
105 const armnn::ITensorHandleFactory& tensorHandleFactory)
Sadik Armaganac472102020-03-24 09:54:36 +0000106{
107 const unsigned int inputShape[] = { 1, 2 };
108
109 std::vector<float> inputValues
110 {
111 -25.f, -16.f
112 };
113
114 std::vector<float> expectedOutputValues
115 {
116 25.f, 16.f
117 };
118
119 return ElementwiseUnaryTestHelper<2, ArmnnType>(
120 workloadFactory,
121 memoryManager,
122 armnn::UnaryOperation::Neg,
123 inputShape,
124 inputValues,
125 inputShape,
Keith Davis33a626f2020-08-27 15:38:12 +0100126 expectedOutputValues,
127 tensorHandleFactory);
Sadik Armaganac472102020-03-24 09:54:36 +0000128}
129
130//
131// Explicit template specializations
132//
133
134template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 2>
135Neg2dTest<armnn::DataType::Float32>(
136 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100137 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
138 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armaganac472102020-03-24 09:54:36 +0000139
140template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 2>
141Neg2dTest<armnn::DataType::Float16>(
142 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100143 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
144 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armaganac472102020-03-24 09:54:36 +0000145
Sadik Armagan303980c2020-04-17 12:45:14 +0100146template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 2>
147Neg2dTest<armnn::DataType::QAsymmS8>(
148 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100149 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
150 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armagan303980c2020-04-17 12:45:14 +0100151
Sadik Armaganac472102020-03-24 09:54:36 +0000152template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 2>
153Neg2dTest<armnn::DataType::QAsymmU8>(
154 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100155 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
156 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armaganac472102020-03-24 09:54:36 +0000157
158template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 2>
159Neg2dTest<armnn::DataType::QSymmS16>(
160 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100161 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
162 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armaganac472102020-03-24 09:54:36 +0000163
164template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 3>
165Neg3dTest<armnn::DataType::Float32>(
166 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100167 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
168 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armaganac472102020-03-24 09:54:36 +0000169
170template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 3>
171Neg3dTest<armnn::DataType::Float16>(
172 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100173 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
174 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armaganac472102020-03-24 09:54:36 +0000175
Sadik Armagan303980c2020-04-17 12:45:14 +0100176template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 3>
177Neg3dTest<armnn::DataType::QAsymmS8>(
178 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100179 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
180 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armagan303980c2020-04-17 12:45:14 +0100181
Sadik Armaganac472102020-03-24 09:54:36 +0000182template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 3>
183Neg3dTest<armnn::DataType::QAsymmU8>(
184 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100185 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
186 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armaganac472102020-03-24 09:54:36 +0000187
188template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 3>
189Neg3dTest<armnn::DataType::QSymmS16>(
190 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100191 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
192 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armaganac472102020-03-24 09:54:36 +0000193
194template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 2>
195NegZeroTest<armnn::DataType::Float32>(
196 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100197 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
198 const armnn::ITensorHandleFactory& tensorHandleFactory);
Sadik Armaganac472102020-03-24 09:54:36 +0000199
200template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 2>
201NegNegativeTest<armnn::DataType::Float32>(
202 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100203 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
204 const armnn::ITensorHandleFactory& tensorHandleFactory);