blob: f2ed22238ee513c1f1e4501f4b4ea0d9040e3f5d [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,
13 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
14{
15 const unsigned int inputShape[] = { 2, 2 };
16
17 std::vector<float> inputValues
18 {
19 1.f, 1.f,
20 2.f, 25.f
21 };
22
23 std::vector<float> expectedOutputValues
24 {
25 -1.f, -1.f,
26 -2.f, -25.f
27 };
28
29 return ElementwiseUnaryTestHelper<2, ArmnnType>(
30 workloadFactory,
31 memoryManager,
32 armnn::UnaryOperation::Neg,
33 inputShape,
34 inputValues,
35 inputShape,
36 expectedOutputValues);
37}
38
39template<armnn::DataType ArmnnType, typename T>
40LayerTestResult<T, 3> Neg3dTest(
41 armnn::IWorkloadFactory& workloadFactory,
42 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
43{
44 const unsigned int inputShape[] = { 3, 1, 2 };
45
46 std::vector<float> inputValues
47 {
48 1.f, 0.f, 3.f,
49 25.f, 64.f, 100.f
50 };
51
52 std::vector<float> expectedOutputValues
53 {
54 -1.f, 0.f, -3.f,
55 -25.f, -64.f, -100.f
56 };
57
58 return ElementwiseUnaryTestHelper<3, ArmnnType>(
59 workloadFactory,
60 memoryManager,
61 armnn::UnaryOperation::Neg,
62 inputShape,
63 inputValues,
64 inputShape,
65 expectedOutputValues);
66}
67
68template<armnn::DataType ArmnnType, typename T>
69LayerTestResult<T, 2> NegZeroTest(
70 armnn::IWorkloadFactory& workloadFactory,
71 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
72{
73 const unsigned int inputShape[] = { 1, 2 };
74
75 std::vector<float> inputValues
76 {
77 0.f, 0.f
78 };
79
80 std::vector<float> expectedOutputValues
81 {
82 0.f, 0.f
83 };
84
85 return ElementwiseUnaryTestHelper<2, ArmnnType>(
86 workloadFactory,
87 memoryManager,
88 armnn::UnaryOperation::Neg,
89 inputShape,
90 inputValues,
91 inputShape,
92 expectedOutputValues);
93}
94
95template<armnn::DataType ArmnnType, typename T>
96LayerTestResult<T, 2> NegNegativeTest(
97 armnn::IWorkloadFactory& workloadFactory,
98 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
99{
100 const unsigned int inputShape[] = { 1, 2 };
101
102 std::vector<float> inputValues
103 {
104 -25.f, -16.f
105 };
106
107 std::vector<float> expectedOutputValues
108 {
109 25.f, 16.f
110 };
111
112 return ElementwiseUnaryTestHelper<2, ArmnnType>(
113 workloadFactory,
114 memoryManager,
115 armnn::UnaryOperation::Neg,
116 inputShape,
117 inputValues,
118 inputShape,
119 expectedOutputValues);
120}
121
122//
123// Explicit template specializations
124//
125
126template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 2>
127Neg2dTest<armnn::DataType::Float32>(
128 armnn::IWorkloadFactory& workloadFactory,
129 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
130
131template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 2>
132Neg2dTest<armnn::DataType::Float16>(
133 armnn::IWorkloadFactory& workloadFactory,
134 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
135
Sadik Armagan303980c2020-04-17 12:45:14 +0100136template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 2>
137Neg2dTest<armnn::DataType::QAsymmS8>(
138 armnn::IWorkloadFactory& workloadFactory,
139 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
140
Sadik Armaganac472102020-03-24 09:54:36 +0000141template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 2>
142Neg2dTest<armnn::DataType::QAsymmU8>(
143 armnn::IWorkloadFactory& workloadFactory,
144 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
145
146template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 2>
147Neg2dTest<armnn::DataType::QSymmS16>(
148 armnn::IWorkloadFactory& workloadFactory,
149 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
150
151template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 3>
152Neg3dTest<armnn::DataType::Float32>(
153 armnn::IWorkloadFactory& workloadFactory,
154 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
155
156template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 3>
157Neg3dTest<armnn::DataType::Float16>(
158 armnn::IWorkloadFactory& workloadFactory,
159 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
160
Sadik Armagan303980c2020-04-17 12:45:14 +0100161template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 3>
162Neg3dTest<armnn::DataType::QAsymmS8>(
163 armnn::IWorkloadFactory& workloadFactory,
164 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
165
Sadik Armaganac472102020-03-24 09:54:36 +0000166template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 3>
167Neg3dTest<armnn::DataType::QAsymmU8>(
168 armnn::IWorkloadFactory& workloadFactory,
169 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
170
171template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 3>
172Neg3dTest<armnn::DataType::QSymmS16>(
173 armnn::IWorkloadFactory& workloadFactory,
174 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
175
176template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 2>
177NegZeroTest<armnn::DataType::Float32>(
178 armnn::IWorkloadFactory& workloadFactory,
179 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
180
181template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 2>
182NegNegativeTest<armnn::DataType::Float32>(
183 armnn::IWorkloadFactory& workloadFactory,
184 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);