blob: 8fb106c22ddea0aeae55103d584234fab4d17a55 [file] [log] [blame]
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include "ReshapeTestImpl.hpp"
josh minor4a3c6102020-01-06 16:40:46 -06007#include "ElementwiseUnaryTestImpl.hpp"
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01008
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +01009
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010010template<armnn::DataType ArmnnType, typename T>
11LayerTestResult<T, 2> Rsqrt2dTest(
12 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +010013 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
14 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010015{
josh minor4a3c6102020-01-06 16:40:46 -060016 const unsigned int inputShape[] = { 2, 2 };
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010017
18 std::vector<float> inputValues
19 {
20 1.f, 4.f,
21 16.f, 25.f
22 };
23
24 std::vector<float> expectedOutputValues
25 {
26 1.f, 0.5f,
27 0.25f, 0.2f
28 };
29
josh minor4a3c6102020-01-06 16:40:46 -060030 return ElementwiseUnaryTestHelper<2, ArmnnType>(
31 workloadFactory,
32 memoryManager,
33 armnn::UnaryOperation::Rsqrt,
34 inputShape,
35 inputValues,
36 inputShape,
Keith Davis33a626f2020-08-27 15:38:12 +010037 expectedOutputValues,
38 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010039}
40
41template<armnn::DataType ArmnnType, typename T>
42LayerTestResult<T, 3> Rsqrt3dTest(
43 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +010044 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
45 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010046{
josh minor4a3c6102020-01-06 16:40:46 -060047 const unsigned int inputShape[] = { 3, 1, 2 };
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010048
49 std::vector<float> inputValues
50 {
51 1.f, 4.f, 16.f,
52 25.f, 64.f, 100.f
53 };
54
55 std::vector<float> expectedOutputValues
56 {
57 1.f, 0.5f, 0.25f,
58 0.2f, 0.125f, 0.1f
59 };
60
josh minor4a3c6102020-01-06 16:40:46 -060061 return ElementwiseUnaryTestHelper<3, ArmnnType>(
62 workloadFactory,
63 memoryManager,
64 armnn::UnaryOperation::Rsqrt,
65 inputShape,
66 inputValues,
67 inputShape,
Keith Davis33a626f2020-08-27 15:38:12 +010068 expectedOutputValues,
69 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010070}
71
72template<armnn::DataType ArmnnType, typename T>
73LayerTestResult<T, 2> RsqrtZeroTest(
74 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +010075 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
76 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010077{
josh minor4a3c6102020-01-06 16:40:46 -060078 const unsigned int inputShape[] = { 1, 2 };
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010079
80 std::vector<float> inputValues
81 {
82 0.f, -0.f
83 };
84
85 std::vector<float> expectedOutputValues
86 {
87 INFINITY, -INFINITY
88 };
89
josh minor4a3c6102020-01-06 16:40:46 -060090 return ElementwiseUnaryTestHelper<2, ArmnnType>(
91 workloadFactory,
92 memoryManager,
93 armnn::UnaryOperation::Rsqrt,
94 inputShape,
95 inputValues,
96 inputShape,
Keith Davis33a626f2020-08-27 15:38:12 +010097 expectedOutputValues,
98 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +010099}
100
101template<armnn::DataType ArmnnType, typename T>
102LayerTestResult<T, 2> RsqrtNegativeTest(
103 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100104 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
105 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100106{
josh minor4a3c6102020-01-06 16:40:46 -0600107 const unsigned int inputShape[] = { 1, 2 };
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100108
109 std::vector<float> inputValues
110 {
111 -25.f, -16.f
112 };
113
114 std::vector<float> expectedOutputValues
115 {
116 -NAN, -NAN
117 };
118
josh minor4a3c6102020-01-06 16:40:46 -0600119 return ElementwiseUnaryTestHelper<2, ArmnnType>(
120 workloadFactory,
121 memoryManager,
122 armnn::UnaryOperation::Rsqrt,
123 inputShape,
124 inputValues,
125 inputShape,
Keith Davis33a626f2020-08-27 15:38:12 +0100126 expectedOutputValues,
127 tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100128}
129
130//
131// Explicit template specializations
132//
133
134template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 2>
135Rsqrt2dTest<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);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100139
Matthew Jackson9bff1442019-09-12 09:08:23 +0100140template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 2>
141Rsqrt2dTest<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);
Matthew Jackson9bff1442019-09-12 09:08:23 +0100145
Sadik Armagan303980c2020-04-17 12:45:14 +0100146template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 2>
147Rsqrt2dTest<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
Derek Lambertif90c56d2020-01-10 17:14:08 +0000152template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 2>
153Rsqrt2dTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100154 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100155 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
156 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100157
Derek Lambertif90c56d2020-01-10 17:14:08 +0000158template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 2>
159Rsqrt2dTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100160 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100161 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
162 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100163
164template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 3>
165Rsqrt3dTest<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);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100169
Matthew Jackson9bff1442019-09-12 09:08:23 +0100170template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 3>
171Rsqrt3dTest<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);
Matthew Jackson9bff1442019-09-12 09:08:23 +0100175
Sadik Armagan303980c2020-04-17 12:45:14 +0100176template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 3>
177Rsqrt3dTest<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
Derek Lambertif90c56d2020-01-10 17:14:08 +0000182template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 3>
183Rsqrt3dTest<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100184 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100185 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
186 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100187
Derek Lambertif90c56d2020-01-10 17:14:08 +0000188template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 3>
189Rsqrt3dTest<armnn::DataType::QSymmS16>(
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100190 armnn::IWorkloadFactory& workloadFactory,
Keith Davis33a626f2020-08-27 15:38:12 +0100191 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
192 const armnn::ITensorHandleFactory& tensorHandleFactory);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100193
194template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 2>
195RsqrtZeroTest<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);
Aron Virginas-Tar00d306e2019-08-28 18:08:46 +0100199
200template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 2>
201RsqrtNegativeTest<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);