blob: aace926dcbdafe09638011f97011f36587f002cb [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
136template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 2>
137Neg2dTest<armnn::DataType::QAsymmU8>(
138 armnn::IWorkloadFactory& workloadFactory,
139 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
140
141template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 2>
142Neg2dTest<armnn::DataType::QSymmS16>(
143 armnn::IWorkloadFactory& workloadFactory,
144 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
145
146template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 3>
147Neg3dTest<armnn::DataType::Float32>(
148 armnn::IWorkloadFactory& workloadFactory,
149 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
150
151template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 3>
152Neg3dTest<armnn::DataType::Float16>(
153 armnn::IWorkloadFactory& workloadFactory,
154 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
155
156template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 3>
157Neg3dTest<armnn::DataType::QAsymmU8>(
158 armnn::IWorkloadFactory& workloadFactory,
159 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
160
161template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 3>
162Neg3dTest<armnn::DataType::QSymmS16>(
163 armnn::IWorkloadFactory& workloadFactory,
164 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
165
166template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 2>
167NegZeroTest<armnn::DataType::Float32>(
168 armnn::IWorkloadFactory& workloadFactory,
169 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
170
171template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 2>
172NegNegativeTest<armnn::DataType::Float32>(
173 armnn::IWorkloadFactory& workloadFactory,
174 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);