blob: be44234b76ec28e3caa45979d2cbeb3e788e61a6 [file] [log] [blame]
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001//
Teresa Charlinfbf0e5b2020-08-17 01:01:06 +01002// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01003// SPDX-License-Identifier: MIT
4//
5
6#include "ComparisonTestImpl.hpp"
7
Narumol Prangnawaratac2770a2020-04-01 16:51:23 +01008#include <armnn/utility/Assert.hpp>
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01009#include <Half.hpp>
Aron Virginas-Tar48623a02019-10-22 10:00:28 +010010#include <QuantizeHelper.hpp>
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010011#include <ResolveType.hpp>
12
13#include <backendsCommon/Workload.hpp>
14#include <backendsCommon/WorkloadData.hpp>
15
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010016#include <backendsCommon/test/TensorCopyUtils.hpp>
17#include <backendsCommon/test/WorkloadTestUtils.hpp>
18
19#include <test/TensorHelpers.hpp>
20
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010021namespace
22{
23
24template <std::size_t NumDims,
25 armnn::DataType ArmnnInType,
26 typename InType = armnn::ResolveType<ArmnnInType>>
27LayerTestResult<uint8_t, NumDims> ComparisonTestImpl(
28 armnn::IWorkloadFactory & workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +010029 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
30 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010031 const armnn::ComparisonDescriptor& descriptor,
32 const armnn::TensorShape& shape0,
33 std::vector<InType> values0,
34 float quantScale0,
35 int quantOffset0,
36 const armnn::TensorShape& shape1,
37 std::vector<InType> values1,
38 float quantScale1,
39 int quantOffset1,
40 const armnn::TensorShape& outShape,
41 std::vector<uint8_t> outValues,
42 float outQuantScale,
43 int outQuantOffset)
44{
Jan Eilers8eb25602020-03-09 12:13:48 +000045 IgnoreUnused(memoryManager);
Narumol Prangnawaratac2770a2020-04-01 16:51:23 +010046 ARMNN_ASSERT(shape0.GetNumDimensions() == NumDims);
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010047 armnn::TensorInfo inputTensorInfo0(shape0, ArmnnInType, quantScale0, quantOffset0);
48
Narumol Prangnawaratac2770a2020-04-01 16:51:23 +010049 ARMNN_ASSERT(shape1.GetNumDimensions() == NumDims);
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010050 armnn::TensorInfo inputTensorInfo1(shape1, ArmnnInType, quantScale1, quantOffset1);
51
Narumol Prangnawaratac2770a2020-04-01 16:51:23 +010052 ARMNN_ASSERT(outShape.GetNumDimensions() == NumDims);
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010053 armnn::TensorInfo outputTensorInfo(outShape, armnn::DataType::Boolean, outQuantScale, outQuantOffset);
54
55 auto input0 = MakeTensor<InType, NumDims>(inputTensorInfo0, values0);
56 auto input1 = MakeTensor<InType, NumDims>(inputTensorInfo1, values1);
57
58 LayerTestResult<uint8_t, NumDims> ret(outputTensorInfo);
59
Keith Davisf500d6c2020-08-31 08:32:55 +010060 std::unique_ptr<armnn::ITensorHandle> inputHandle0 = tensorHandleFactory.CreateTensorHandle(inputTensorInfo0);
61 std::unique_ptr<armnn::ITensorHandle> inputHandle1 = tensorHandleFactory.CreateTensorHandle(inputTensorInfo1);
62 std::unique_ptr<armnn::ITensorHandle> outputHandle = tensorHandleFactory.CreateTensorHandle(outputTensorInfo);
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010063
64 armnn::ComparisonQueueDescriptor qDescriptor;
65 qDescriptor.m_Parameters = descriptor;
66
67 armnn::WorkloadInfo info;
68 AddInputToWorkload(qDescriptor, info, inputTensorInfo0, inputHandle0.get());
69 AddInputToWorkload(qDescriptor, info, inputTensorInfo1, inputHandle1.get());
70 AddOutputToWorkload(qDescriptor, info, outputTensorInfo, outputHandle.get());
71
72 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateComparison(qDescriptor, info);
73
74 inputHandle0->Allocate();
75 inputHandle1->Allocate();
76 outputHandle->Allocate();
77
78 CopyDataToITensorHandle(inputHandle0.get(), input0.origin());
79 CopyDataToITensorHandle(inputHandle1.get(), input1.origin());
80
81 workload->PostAllocationConfigure();
82 ExecuteWorkload(*workload, memoryManager);
83
84 CopyDataFromITensorHandle(ret.output.origin(), outputHandle.get());
85
86 ret.outputExpected = MakeTensor<uint8_t, NumDims>(outputTensorInfo, outValues);
87 ret.compareBoolean = true;
88
89 return ret;
90}
91
92template <std::size_t NumDims,
93 armnn::DataType ArmnnInType,
94 typename InType = armnn::ResolveType<ArmnnInType>>
95LayerTestResult<uint8_t, NumDims> ComparisonTestImpl(
96 armnn::IWorkloadFactory & workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +010097 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
98 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010099 const armnn::ComparisonDescriptor& descriptor,
100 const armnn::TensorShape& shape0,
101 std::vector<InType> values0,
102 const armnn::TensorShape& shape1,
103 std::vector<InType> values1,
104 const armnn::TensorShape outShape,
105 std::vector<uint8_t> outValues,
106 float quantScale = 1.f,
107 int quantOffset = 0)
108{
109 return ComparisonTestImpl<NumDims, ArmnnInType>(
110 workloadFactory,
111 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100112 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100113 descriptor,
114 shape0,
115 values0,
116 quantScale,
117 quantOffset,
118 shape1,
119 values1,
120 quantScale,
121 quantOffset,
122 outShape,
123 outValues,
124 quantScale,
125 quantOffset);
126}
127
128template<typename TestData>
129std::vector<uint8_t> GetExpectedOutputData(const TestData& testData, armnn::ComparisonOperation operation)
130{
131 switch (operation)
132 {
133 case armnn::ComparisonOperation::Equal:
134 return testData.m_OutputEqual;
135 case armnn::ComparisonOperation::Greater:
136 return testData.m_OutputGreater;
137 case armnn::ComparisonOperation::GreaterOrEqual:
138 return testData.m_OutputGreaterOrEqual;
139 case armnn::ComparisonOperation::Less:
140 return testData.m_OutputLess;
141 case armnn::ComparisonOperation::LessOrEqual:
142 return testData.m_OutputLessOrEqual;
143 case armnn::ComparisonOperation::NotEqual:
144 default:
145 return testData.m_OutputNotEqual;
146 }
147}
148
149template<armnn::DataType ArmnnInType, typename TestData>
150LayerTestResult<uint8_t, 4> ComparisonTestImpl(armnn::IWorkloadFactory& workloadFactory,
151 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100152 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100153 const TestData& testData,
154 armnn::ComparisonOperation operation,
155 float quantScale = 1.f,
156 int quantOffset = 0)
157{
158 using T = armnn::ResolveType<ArmnnInType>;
159
Aron Virginas-Tar48623a02019-10-22 10:00:28 +0100160 std::vector<T> inputData0 = armnnUtils::QuantizedVector<T>(testData.m_InputData0, quantScale, quantOffset);
161 std::vector<T> inputData1 = armnnUtils::QuantizedVector<T>(testData.m_InputData1, quantScale, quantOffset);
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100162
163 return ComparisonTestImpl<4, ArmnnInType>(
164 workloadFactory,
165 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100166 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100167 armnn::ComparisonDescriptor(operation),
168 testData.m_InputShape0,
169 inputData0,
170 testData.m_InputShape1,
171 inputData1,
172 testData.m_OutputShape,
173 GetExpectedOutputData(testData, operation),
174 quantScale,
175 quantOffset);
176}
177
178class ComparisonTestData
179{
180public:
181 ComparisonTestData() = default;
182 virtual ~ComparisonTestData() = default;
183
184 armnn::TensorShape m_InputShape0;
185 armnn::TensorShape m_InputShape1;
186 armnn::TensorShape m_OutputShape;
187
188 std::vector<float> m_InputData0;
189 std::vector<float> m_InputData1;
190
191 std::vector<uint8_t> m_OutputEqual;
192 std::vector<uint8_t> m_OutputGreater;
193 std::vector<uint8_t> m_OutputGreaterOrEqual;
194 std::vector<uint8_t> m_OutputLess;
195 std::vector<uint8_t> m_OutputLessOrEqual;
196 std::vector<uint8_t> m_OutputNotEqual;
197};
198
199class SimpleTestData : public ComparisonTestData
200{
201public:
202 SimpleTestData() : ComparisonTestData()
203 {
204 m_InputShape0 = { 2, 2, 2, 2 };
205
206 m_InputShape1 = m_InputShape0;
207 m_OutputShape = m_InputShape0;
208
209 m_InputData0 =
210 {
211 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
212 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
213 };
214
215 m_InputData1 =
216 {
217 1.f, 1.f, 1.f, 1.f, 3.f, 3.f, 3.f, 3.f,
218 5.f, 5.f, 5.f, 5.f, 4.f, 4.f, 4.f, 4.f
219 };
220
221 m_OutputEqual =
222 {
223 1, 1, 1, 1, 0, 0, 0, 0,
224 0, 0, 0, 0, 1, 1, 1, 1
225 };
226
227 m_OutputGreater =
228 {
229 0, 0, 0, 0, 1, 1, 1, 1,
230 0, 0, 0, 0, 0, 0, 0, 0
231 };
232
233 m_OutputGreaterOrEqual =
234 {
235 1, 1, 1, 1, 1, 1, 1, 1,
236 0, 0, 0, 0, 1, 1, 1, 1
237 };
238
239 m_OutputLess =
240 {
241 0, 0, 0, 0, 0, 0, 0, 0,
242 1, 1, 1, 1, 0, 0, 0, 0
243 };
244
245 m_OutputLessOrEqual =
246 {
247 1, 1, 1, 1, 0, 0, 0, 0,
248 1, 1, 1, 1, 1, 1, 1, 1
249 };
250
251 m_OutputNotEqual =
252 {
253 0, 0, 0, 0, 1, 1, 1, 1,
254 1, 1, 1, 1, 0, 0, 0, 0
255 };
256 }
257};
258
259class Broadcast1ElementTestData : public ComparisonTestData
260{
261public:
262 Broadcast1ElementTestData() : ComparisonTestData()
263 {
264 m_InputShape0 = { 1, 2, 2, 2 };
265 m_InputShape1 = { 1, 1, 1, 1 };
266
267 m_OutputShape = m_InputShape0;
268
269 m_InputData0 = { 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f };
270 m_InputData1 = { 3.f };
271
272 m_OutputEqual = { 0, 0, 1, 0, 0, 0, 0, 0 };
273 m_OutputGreater = { 0, 0, 0, 1, 1, 1, 1, 1 };
274 m_OutputGreaterOrEqual = { 0, 0, 1, 1, 1, 1, 1, 1 };
275 m_OutputLess = { 1, 1, 0, 0, 0, 0, 0, 0 };
276 m_OutputLessOrEqual = { 1, 1, 1, 0, 0, 0, 0, 0 };
277 m_OutputNotEqual = { 1, 1, 0, 1, 1, 1, 1, 1 };
278 }
279};
280
281class Broadcast1dVectorTestData : public ComparisonTestData
282{
283public:
284 Broadcast1dVectorTestData() : ComparisonTestData()
285 {
286 m_InputShape0 = { 1, 2, 2, 3 };
287 m_InputShape1 = { 1, 1, 1, 3 };
288
289 m_OutputShape = m_InputShape0;
290
291 m_InputData0 =
292 {
293 1.f, 2.f, 3.f, 4.f, 5.f, 6.f,
294 7.f, 8.f, 9.f, 10.f, 11.f, 12.f
295 };
296
297 m_InputData1 = { 4.f, 5.f, 6.f };
298
299 m_OutputEqual =
300 {
301 0, 0, 0, 1, 1, 1,
302 0, 0, 0, 0, 0, 0
303 };
304
305 m_OutputGreater =
306 {
307 0, 0, 0, 0, 0, 0,
308 1, 1, 1, 1, 1, 1
309 };
310
311 m_OutputGreaterOrEqual =
312 {
313 0, 0, 0, 1, 1, 1,
314 1, 1, 1, 1, 1, 1
315 };
316
317 m_OutputLess =
318 {
319 1, 1, 1, 0, 0, 0,
320 0, 0, 0, 0, 0, 0
321 };
322
323 m_OutputLessOrEqual =
324 {
325 1, 1, 1, 1, 1, 1,
326 0, 0, 0, 0, 0, 0
327 };
328
329 m_OutputNotEqual =
330 {
331 1, 1, 1, 0, 0, 0,
332 1, 1, 1, 1, 1, 1
333 };
334 }
335};
336
337static SimpleTestData s_SimpleTestData;
338static Broadcast1ElementTestData s_Broadcast1ElementTestData;
339static Broadcast1dVectorTestData s_Broadcast1dVectorTestData;
340
341} // anonymous namespace
342
343// Equal
344LayerTestResult<uint8_t, 4> EqualSimpleTest(armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100345 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
346 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100347{
348 return ComparisonTestImpl<armnn::DataType::Float32>(
349 workloadFactory,
350 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100351 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100352 s_SimpleTestData,
353 armnn::ComparisonOperation::Equal);
354}
355
356LayerTestResult<uint8_t, 4> EqualBroadcast1ElementTest(
357 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100358 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
359 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100360{
361 return ComparisonTestImpl<armnn::DataType::Float32>(
362 workloadFactory,
363 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100364 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100365 s_Broadcast1ElementTestData,
366 armnn::ComparisonOperation::Equal);
367}
368
369LayerTestResult<uint8_t, 4> EqualBroadcast1dVectorTest(
370 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100371 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
372 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100373{
374 return ComparisonTestImpl<armnn::DataType::Float32>(
375 workloadFactory,
376 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100377 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100378 s_Broadcast1dVectorTestData,
379 armnn::ComparisonOperation::Equal);
380}
381
382LayerTestResult<uint8_t, 4> EqualSimpleFloat16Test(
383 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100384 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
385 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100386{
387 return ComparisonTestImpl<armnn::DataType::Float16>(
388 workloadFactory,
389 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100390 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100391 s_SimpleTestData,
392 armnn::ComparisonOperation::Equal);
393}
394
395LayerTestResult<uint8_t, 4> EqualBroadcast1ElementFloat16Test(
396 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100397 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
398 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100399{
400 return ComparisonTestImpl<armnn::DataType::Float16>(
401 workloadFactory,
402 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100403 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100404 s_Broadcast1ElementTestData,
405 armnn::ComparisonOperation::Equal);
406}
407
408LayerTestResult<uint8_t, 4> EqualBroadcast1dVectorFloat16Test(
409 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100410 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
411 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100412{
413 return ComparisonTestImpl<armnn::DataType::Float16>(
414 workloadFactory,
415 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100416 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100417 s_Broadcast1dVectorTestData,
418 armnn::ComparisonOperation::Equal);
419}
420
421LayerTestResult<uint8_t, 4> EqualSimpleUint8Test(
422 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100423 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
424 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100425{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000426 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100427 workloadFactory,
428 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100429 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100430 s_SimpleTestData,
431 armnn::ComparisonOperation::Equal);
432}
433
434LayerTestResult<uint8_t, 4> EqualBroadcast1ElementUint8Test(
435 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100436 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
437 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100438{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000439 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100440 workloadFactory,
441 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100442 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100443 s_Broadcast1ElementTestData,
444 armnn::ComparisonOperation::Equal);
445}
446
447LayerTestResult<uint8_t, 4> EqualBroadcast1dVectorUint8Test(
448 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100449 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
450 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100451{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000452 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100453 workloadFactory,
454 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100455 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100456 s_Broadcast1dVectorTestData,
457 armnn::ComparisonOperation::Equal);
458}
459
460// Greater
461LayerTestResult<uint8_t, 4> GreaterSimpleTest(armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100462 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
463 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100464{
465 return ComparisonTestImpl<armnn::DataType::Float32>(
466 workloadFactory,
467 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100468 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100469 s_SimpleTestData,
470 armnn::ComparisonOperation::Greater);
471}
472
473LayerTestResult<uint8_t, 4> GreaterBroadcast1ElementTest(
474 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100475 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
476 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100477{
478 return ComparisonTestImpl<armnn::DataType::Float32>(
479 workloadFactory,
480 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100481 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100482 s_Broadcast1ElementTestData,
483 armnn::ComparisonOperation::Greater);
484}
485
486LayerTestResult<uint8_t, 4> GreaterBroadcast1dVectorTest(
487 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100488 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
489 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100490{
491 return ComparisonTestImpl<armnn::DataType::Float32>(
492 workloadFactory,
493 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100494 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100495 s_Broadcast1dVectorTestData,
496 armnn::ComparisonOperation::Greater);
497}
498
499LayerTestResult<uint8_t, 4> GreaterSimpleFloat16Test(
500 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100501 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
502 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100503{
504 return ComparisonTestImpl<armnn::DataType::Float16>(
505 workloadFactory,
506 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100507 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100508 s_SimpleTestData,
509 armnn::ComparisonOperation::Greater);
510}
511
512LayerTestResult<uint8_t, 4> GreaterBroadcast1ElementFloat16Test(
513 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100514 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
515 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100516{
517 return ComparisonTestImpl<armnn::DataType::Float16>(
518 workloadFactory,
519 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100520 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100521 s_Broadcast1ElementTestData,
522 armnn::ComparisonOperation::Greater);
523}
524
525LayerTestResult<uint8_t, 4> GreaterBroadcast1dVectorFloat16Test(
526 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100527 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
528 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100529{
530 return ComparisonTestImpl<armnn::DataType::Float16>(
531 workloadFactory,
532 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100533 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100534 s_Broadcast1dVectorTestData,
535 armnn::ComparisonOperation::Greater);
536}
537
538LayerTestResult<uint8_t, 4> GreaterSimpleUint8Test(
539 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100540 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
541 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100542{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000543 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100544 workloadFactory,
545 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100546 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100547 s_SimpleTestData,
548 armnn::ComparisonOperation::Greater);
549}
550
551LayerTestResult<uint8_t, 4> GreaterBroadcast1ElementUint8Test(
552 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100553 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
554 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100555{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000556 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100557 workloadFactory,
558 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100559 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100560 s_Broadcast1ElementTestData,
561 armnn::ComparisonOperation::Greater);
562}
563
564LayerTestResult<uint8_t, 4> GreaterBroadcast1dVectorUint8Test(
565 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100566 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
567 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100568{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000569 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100570 workloadFactory,
571 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100572 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100573 s_Broadcast1dVectorTestData,
574 armnn::ComparisonOperation::Greater);
575}
576
577// GreaterOrEqual
578LayerTestResult<uint8_t, 4> GreaterOrEqualSimpleTest(
579 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100580 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
581 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100582{
583 return ComparisonTestImpl<armnn::DataType::Float32>(
584 workloadFactory,
585 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100586 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100587 s_SimpleTestData,
588 armnn::ComparisonOperation::GreaterOrEqual);
589}
590
591LayerTestResult<uint8_t, 4> GreaterOrEqualBroadcast1ElementTest(
592 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100593 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
594 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100595{
596 return ComparisonTestImpl<armnn::DataType::Float32>(
597 workloadFactory,
598 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100599 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100600 s_Broadcast1ElementTestData,
601 armnn::ComparisonOperation::GreaterOrEqual);
602}
603
604LayerTestResult<uint8_t, 4> GreaterOrEqualBroadcast1dVectorTest(
605 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100606 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
607 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100608{
609 return ComparisonTestImpl<armnn::DataType::Float32>(
610 workloadFactory,
611 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100612 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100613 s_Broadcast1dVectorTestData,
614 armnn::ComparisonOperation::GreaterOrEqual);
615}
616
617LayerTestResult<uint8_t, 4> GreaterOrEqualSimpleFloat16Test(
618 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100619 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
620 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100621{
622 return ComparisonTestImpl<armnn::DataType::Float16>(
623 workloadFactory,
624 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100625 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100626 s_SimpleTestData,
627 armnn::ComparisonOperation::GreaterOrEqual);
628}
629
630LayerTestResult<uint8_t, 4> GreaterOrEqualBroadcast1ElementFloat16Test(
631 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100632 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
633 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100634{
635 return ComparisonTestImpl<armnn::DataType::Float16>(
636 workloadFactory,
637 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100638 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100639 s_Broadcast1ElementTestData,
640 armnn::ComparisonOperation::GreaterOrEqual);
641}
642
643LayerTestResult<uint8_t, 4> GreaterOrEqualBroadcast1dVectorFloat16Test(
644 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100645 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
646 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100647{
648 return ComparisonTestImpl<armnn::DataType::Float16>(
649 workloadFactory,
650 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100651 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100652 s_Broadcast1dVectorTestData,
653 armnn::ComparisonOperation::GreaterOrEqual);
654}
655
656LayerTestResult<uint8_t, 4> GreaterOrEqualSimpleUint8Test(
657 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100658 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
659 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100660{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000661 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100662 workloadFactory,
663 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100664 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100665 s_SimpleTestData,
666 armnn::ComparisonOperation::GreaterOrEqual);
667}
668
669LayerTestResult<uint8_t, 4> GreaterOrEqualBroadcast1ElementUint8Test(
670 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100671 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
672 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100673{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000674 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100675 workloadFactory,
676 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100677 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100678 s_Broadcast1ElementTestData,
679 armnn::ComparisonOperation::GreaterOrEqual);
680}
681
682LayerTestResult<uint8_t, 4> GreaterOrEqualBroadcast1dVectorUint8Test(
683 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100684 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
685 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100686{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000687 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100688 workloadFactory,
689 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100690 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100691 s_Broadcast1dVectorTestData,
692 armnn::ComparisonOperation::GreaterOrEqual);
693}
694
695// Less
696LayerTestResult<uint8_t, 4> LessSimpleTest(armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100697 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
698 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100699{
700 return ComparisonTestImpl<armnn::DataType::Float32>(
701 workloadFactory,
702 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100703 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100704 s_SimpleTestData,
705 armnn::ComparisonOperation::Less);
706}
707
708LayerTestResult<uint8_t, 4> LessBroadcast1ElementTest(
709 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100710 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
711 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100712{
713 return ComparisonTestImpl<armnn::DataType::Float32>(
714 workloadFactory,
715 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100716 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100717 s_Broadcast1ElementTestData,
718 armnn::ComparisonOperation::Less);
719}
720
721LayerTestResult<uint8_t, 4> LessBroadcast1dVectorTest(
722 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100723 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
724 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100725{
726 return ComparisonTestImpl<armnn::DataType::Float32>(
727 workloadFactory,
728 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100729 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100730 s_Broadcast1dVectorTestData,
731 armnn::ComparisonOperation::Less);
732}
733
734LayerTestResult<uint8_t, 4> LessSimpleFloat16Test(
735 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100736 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
737 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100738{
739 return ComparisonTestImpl<armnn::DataType::Float16>(
740 workloadFactory,
741 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100742 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100743 s_SimpleTestData,
744 armnn::ComparisonOperation::Less);
745}
746
747LayerTestResult<uint8_t, 4> LessBroadcast1ElementFloat16Test(
748 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100749 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
750 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100751{
752 return ComparisonTestImpl<armnn::DataType::Float16>(
753 workloadFactory,
754 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100755 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100756 s_Broadcast1ElementTestData,
757 armnn::ComparisonOperation::Less);
758}
759
760LayerTestResult<uint8_t, 4> LessBroadcast1dVectorFloat16Test(
761 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100762 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
763 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100764{
765 return ComparisonTestImpl<armnn::DataType::Float16>(
766 workloadFactory,
767 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100768 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100769 s_Broadcast1dVectorTestData,
770 armnn::ComparisonOperation::Less);
771}
772
773LayerTestResult<uint8_t, 4> LessSimpleUint8Test(
774 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100775 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
776 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100777{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000778 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100779 workloadFactory,
780 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100781 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100782 s_SimpleTestData,
783 armnn::ComparisonOperation::Less);
784}
785
786LayerTestResult<uint8_t, 4> LessBroadcast1ElementUint8Test(
787 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100788 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
789 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100790{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000791 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100792 workloadFactory,
793 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100794 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100795 s_Broadcast1ElementTestData,
796 armnn::ComparisonOperation::Less);
797}
798
799LayerTestResult<uint8_t, 4> LessBroadcast1dVectorUint8Test(
800 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100801 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
802 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100803{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000804 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100805 workloadFactory,
806 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100807 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100808 s_Broadcast1dVectorTestData,
809 armnn::ComparisonOperation::Less);
810}
811
812// LessOrEqual
813LayerTestResult<uint8_t, 4> LessOrEqualSimpleTest(
814 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100815 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
816 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100817{
818 return ComparisonTestImpl<armnn::DataType::Float32>(
819 workloadFactory,
820 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100821 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100822 s_SimpleTestData,
823 armnn::ComparisonOperation::LessOrEqual);
824}
825
826LayerTestResult<uint8_t, 4> LessOrEqualBroadcast1ElementTest(
827 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100828 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
829 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100830{
831 return ComparisonTestImpl<armnn::DataType::Float32>(
832 workloadFactory,
833 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100834 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100835 s_Broadcast1ElementTestData,
836 armnn::ComparisonOperation::LessOrEqual);
837}
838
839LayerTestResult<uint8_t, 4> LessOrEqualBroadcast1dVectorTest(
840 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100841 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
842 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100843{
844 return ComparisonTestImpl<armnn::DataType::Float32>(
845 workloadFactory,
846 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100847 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100848 s_Broadcast1dVectorTestData,
849 armnn::ComparisonOperation::LessOrEqual);
850}
851
852LayerTestResult<uint8_t, 4> LessOrEqualSimpleFloat16Test(
853 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100854 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
855 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100856{
857 return ComparisonTestImpl<armnn::DataType::Float16>(
858 workloadFactory,
859 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100860 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100861 s_SimpleTestData,
862 armnn::ComparisonOperation::LessOrEqual);
863}
864
865LayerTestResult<uint8_t, 4> LessOrEqualBroadcast1ElementFloat16Test(
866 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100867 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
868 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100869{
870 return ComparisonTestImpl<armnn::DataType::Float16>(
871 workloadFactory,
872 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100873 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100874 s_Broadcast1ElementTestData,
875 armnn::ComparisonOperation::LessOrEqual);
876}
877
878LayerTestResult<uint8_t, 4> LessOrEqualBroadcast1dVectorFloat16Test(
879 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100880 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
881 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100882{
883 return ComparisonTestImpl<armnn::DataType::Float16>(
884 workloadFactory,
885 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100886 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100887 s_Broadcast1dVectorTestData,
888 armnn::ComparisonOperation::LessOrEqual);
889}
890
891LayerTestResult<uint8_t, 4> LessOrEqualSimpleUint8Test(
892 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100893 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
894 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100895{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000896 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100897 workloadFactory,
898 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100899 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100900 s_SimpleTestData,
901 armnn::ComparisonOperation::LessOrEqual);
902}
903
904LayerTestResult<uint8_t, 4> LessOrEqualBroadcast1ElementUint8Test(
905 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100906 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
907 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100908{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000909 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100910 workloadFactory,
911 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100912 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100913 s_Broadcast1ElementTestData,
914 armnn::ComparisonOperation::LessOrEqual);
915}
916
917LayerTestResult<uint8_t, 4> LessOrEqualBroadcast1dVectorUint8Test(
918 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100919 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
920 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100921{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000922 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100923 workloadFactory,
924 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100925 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100926 s_Broadcast1dVectorTestData,
927 armnn::ComparisonOperation::LessOrEqual);
928}
929
930// NotEqual
931LayerTestResult<uint8_t, 4> NotEqualSimpleTest(
932 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100933 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
934 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100935{
936 return ComparisonTestImpl<armnn::DataType::Float32>(
937 workloadFactory,
938 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100939 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100940 s_SimpleTestData,
941 armnn::ComparisonOperation::NotEqual);
942}
943
944LayerTestResult<uint8_t, 4> NotEqualBroadcast1ElementTest(
945 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100946 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
947 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100948{
949 return ComparisonTestImpl<armnn::DataType::Float32>(
950 workloadFactory,
951 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100952 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100953 s_Broadcast1ElementTestData,
954 armnn::ComparisonOperation::NotEqual);
955}
956
957LayerTestResult<uint8_t, 4> NotEqualBroadcast1dVectorTest(
958 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100959 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
960 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100961{
962 return ComparisonTestImpl<armnn::DataType::Float32>(
963 workloadFactory,
964 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100965 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100966 s_Broadcast1dVectorTestData,
967 armnn::ComparisonOperation::NotEqual);
968}
969
970LayerTestResult<uint8_t, 4> NotEqualSimpleFloat16Test(
971 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100972 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
973 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100974{
975 return ComparisonTestImpl<armnn::DataType::Float16>(
976 workloadFactory,
977 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100978 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100979 s_SimpleTestData,
980 armnn::ComparisonOperation::NotEqual);
981}
982
983LayerTestResult<uint8_t, 4> NotEqualBroadcast1ElementFloat16Test(
984 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100985 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
986 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100987{
988 return ComparisonTestImpl<armnn::DataType::Float16>(
989 workloadFactory,
990 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100991 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100992 s_Broadcast1ElementTestData,
993 armnn::ComparisonOperation::NotEqual);
994}
995
996LayerTestResult<uint8_t, 4> NotEqualBroadcast1dVectorFloat16Test(
997 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100998 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
999 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001000{
1001 return ComparisonTestImpl<armnn::DataType::Float16>(
1002 workloadFactory,
1003 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +01001004 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001005 s_Broadcast1dVectorTestData,
1006 armnn::ComparisonOperation::NotEqual);
1007}
1008
1009LayerTestResult<uint8_t, 4> NotEqualSimpleUint8Test(
1010 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +01001011 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1012 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001013{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001014 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001015 workloadFactory,
1016 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +01001017 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001018 s_SimpleTestData,
1019 armnn::ComparisonOperation::NotEqual);
1020}
1021
1022LayerTestResult<uint8_t, 4> NotEqualBroadcast1ElementUint8Test(
1023 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +01001024 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1025 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001026{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001027 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001028 workloadFactory,
1029 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +01001030 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001031 s_Broadcast1ElementTestData,
1032 armnn::ComparisonOperation::NotEqual);
1033}
1034
1035LayerTestResult<uint8_t, 4> NotEqualBroadcast1dVectorUint8Test(
1036 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +01001037 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1038 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001039{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001040 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001041 workloadFactory,
1042 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +01001043 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001044 s_Broadcast1dVectorTestData,
1045 armnn::ComparisonOperation::NotEqual);
1046}