blob: 2cbc059044e2f478d0153c4374476a6b3667c051 [file] [log] [blame]
Sadik Armagan9199e582019-09-05 17:35:31 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include "AbsTestImpl.hpp"
josh minor4a3c6102020-01-06 16:40:46 -06007#include "ElementwiseUnaryTestImpl.hpp"
Sadik Armagan9199e582019-09-05 17:35:31 +01008
Sadik Armagan9199e582019-09-05 17:35:31 +01009
Sadik Armagan9199e582019-09-05 17:35:31 +010010template<armnn::DataType ArmnnType, typename T>
11LayerTestResult<T, 2> Abs2dTest(
12 armnn::IWorkloadFactory& workloadFactory,
13 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
14{
josh minor4a3c6102020-01-06 16:40:46 -060015 const unsigned int inputShape[] = { 2, 2 };
Sadik Armagan9199e582019-09-05 17:35:31 +010016
17 std::vector<float> inputValues
18 {
19 -0.1f, 0.2f,
20 0.3f, -0.4f
21 };
22
23 // Calculate output values for input.
24 auto f = [](float value)
25 {
26 return std::abs(value);
27 };
28 std::vector<float> expectedOutputValues(inputValues.size());
29 std::transform(inputValues.begin(), inputValues.end(), expectedOutputValues.begin(), f);
30
josh minor4a3c6102020-01-06 16:40:46 -060031 return ElementwiseUnaryTestHelper<2, ArmnnType>(
32 workloadFactory,
33 memoryManager,
34 armnn::UnaryOperation::Abs,
35 inputShape,
36 inputValues,
37 inputShape,
38 expectedOutputValues);
Sadik Armagan9199e582019-09-05 17:35:31 +010039}
40
41template<armnn::DataType ArmnnType, typename T>
42LayerTestResult<T, 3> Abs3dTest(
43 armnn::IWorkloadFactory& workloadFactory,
44 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
45{
josh minor4a3c6102020-01-06 16:40:46 -060046 const unsigned int inputShape[] = { 3, 1, 2 };
Sadik Armagan9199e582019-09-05 17:35:31 +010047
48 std::vector<float> inputValues
49 {
50 -0.1f, -0.2f, -0.3f,
51 0.1f, 0.2f, 0.3f
52 };
53
54 auto f = [](float value)
55 {
56 return std::abs(value);
57 };
58 std::vector<float>expectedOutputValues(inputValues.size());
59 std::transform(inputValues.begin(), inputValues.end(), expectedOutputValues.begin(), f);
60
josh minor4a3c6102020-01-06 16:40:46 -060061 return ElementwiseUnaryTestHelper<3, ArmnnType>(
62 workloadFactory,
63 memoryManager,
64 armnn::UnaryOperation::Abs,
65 inputShape,
66 inputValues,
67 inputShape,
68 expectedOutputValues);
Sadik Armagan9199e582019-09-05 17:35:31 +010069}
70
71template<armnn::DataType ArmnnType, typename T>
72LayerTestResult<T, 2> AbsZeroTest(
73 armnn::IWorkloadFactory& workloadFactory,
74 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
75{
josh minor4a3c6102020-01-06 16:40:46 -060076 const unsigned int inputShape[] = { 1, 2 };
Sadik Armagan9199e582019-09-05 17:35:31 +010077
78 std::vector<float> inputValues
79 {
80 0.f, -0.f
81 };
82
83 std::vector<float> expectedOutputValues
84 {
85 0.f, 0.f
86 };
87
josh minor4a3c6102020-01-06 16:40:46 -060088 return ElementwiseUnaryTestHelper<2, ArmnnType>(
89 workloadFactory,
90 memoryManager,
91 armnn::UnaryOperation::Abs,
92 inputShape,
93 inputValues,
94 inputShape,
95 expectedOutputValues);
Sadik Armagan9199e582019-09-05 17:35:31 +010096}
97
98//
99// Explicit template specializations
100//
101
102template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 2>
103Abs2dTest<armnn::DataType::Float32>(
104 armnn::IWorkloadFactory& workloadFactory,
105 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
106
Kevin Mayb6482f32019-09-11 12:31:38 +0100107template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 2>
108Abs2dTest<armnn::DataType::Float16>(
109 armnn::IWorkloadFactory& workloadFactory,
110 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
111
Kevin Mayec52c3a2020-04-24 09:42:31 +0100112template LayerTestResult<armnn::ResolveType<armnn::DataType::Signed32>, 2>
113Abs2dTest<armnn::DataType::Signed32>(
114 armnn::IWorkloadFactory& workloadFactory,
115const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
116
Sadik Armagan303980c2020-04-17 12:45:14 +0100117template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 2>
118Abs2dTest<armnn::DataType::QAsymmS8>(
119 armnn::IWorkloadFactory& workloadFactory,
120 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
121
Derek Lambertif90c56d2020-01-10 17:14:08 +0000122template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 2>
123Abs2dTest<armnn::DataType::QAsymmU8>(
Sadik Armagan9199e582019-09-05 17:35:31 +0100124 armnn::IWorkloadFactory& workloadFactory,
125 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
126
Derek Lambertif90c56d2020-01-10 17:14:08 +0000127template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 2>
128Abs2dTest<armnn::DataType::QSymmS16>(
Sadik Armagan9199e582019-09-05 17:35:31 +0100129 armnn::IWorkloadFactory& workloadFactory,
130 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
131
132template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 3>
133Abs3dTest<armnn::DataType::Float32>(
134 armnn::IWorkloadFactory& workloadFactory,
135 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
136
Kevin Mayb6482f32019-09-11 12:31:38 +0100137template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 3>
138Abs3dTest<armnn::DataType::Float16>(
139 armnn::IWorkloadFactory& workloadFactory,
140 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
141
Sadik Armagan303980c2020-04-17 12:45:14 +0100142template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 3>
143Abs3dTest<armnn::DataType::QAsymmS8>(
144 armnn::IWorkloadFactory& workloadFactory,
145 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
146
Kevin Mayec52c3a2020-04-24 09:42:31 +0100147template LayerTestResult<armnn::ResolveType<armnn::DataType::Signed32>, 3>
148Abs3dTest<armnn::DataType::Signed32>(
149 armnn::IWorkloadFactory& workloadFactory,
150const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
151
Derek Lambertif90c56d2020-01-10 17:14:08 +0000152template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 3>
153Abs3dTest<armnn::DataType::QAsymmU8>(
Sadik Armagan9199e582019-09-05 17:35:31 +0100154 armnn::IWorkloadFactory& workloadFactory,
155 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
156
Derek Lambertif90c56d2020-01-10 17:14:08 +0000157template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 3>
158Abs3dTest<armnn::DataType::QSymmS16>(
Sadik Armagan9199e582019-09-05 17:35:31 +0100159 armnn::IWorkloadFactory& workloadFactory,
160 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
161
162template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 2>
163AbsZeroTest<armnn::DataType::Float32>(
164 armnn::IWorkloadFactory& workloadFactory,
Kevin Mayb6482f32019-09-11 12:31:38 +0100165 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
166
167template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 2>
168AbsZeroTest<armnn::DataType::Float16>(
169 armnn::IWorkloadFactory& workloadFactory,
Kevin Mayec52c3a2020-04-24 09:42:31 +0100170 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);
171
172template LayerTestResult<armnn::ResolveType<armnn::DataType::Signed32>, 2>
173AbsZeroTest<armnn::DataType::Signed32>(
174 armnn::IWorkloadFactory& workloadFactory,
175const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager);