1 //
2 // Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5
6 #include "ComparisonTestImpl.hpp"
7
8 #include <armnn/utility/Assert.hpp>
9 #include <Half.hpp>
10 #include <QuantizeHelper.hpp>
11 #include <ResolveType.hpp>
12
13 #include <backendsCommon/Workload.hpp>
14 #include <backendsCommon/WorkloadData.hpp>
15
16 #include <backendsCommon/test/TensorCopyUtils.hpp>
17 #include <backendsCommon/test/WorkloadTestUtils.hpp>
18
19 #include <test/TensorHelpers.hpp>
20
21 namespace
22 {
23
24 template <std::size_t NumDims,
25 armnn::DataType ArmnnInType,
26 typename InType = armnn::ResolveType<ArmnnInType>>
ComparisonTestImpl(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory,const armnn::ComparisonDescriptor & descriptor,const armnn::TensorShape & shape0,std::vector<InType> values0,float quantScale0,int quantOffset0,const armnn::TensorShape & shape1,std::vector<InType> values1,float quantScale1,int quantOffset1,const armnn::TensorShape & outShape,std::vector<uint8_t> outValues,float outQuantScale,int outQuantOffset)27 LayerTestResult<uint8_t, NumDims> ComparisonTestImpl(
28 armnn::IWorkloadFactory & workloadFactory,
29 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
30 const armnn::ITensorHandleFactory& tensorHandleFactory,
31 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 {
45 IgnoreUnused(memoryManager);
46 ARMNN_ASSERT(shape0.GetNumDimensions() == NumDims);
47 armnn::TensorInfo inputTensorInfo0(shape0, ArmnnInType, quantScale0, quantOffset0);
48
49 ARMNN_ASSERT(shape1.GetNumDimensions() == NumDims);
50 armnn::TensorInfo inputTensorInfo1(shape1, ArmnnInType, quantScale1, quantOffset1);
51
52 ARMNN_ASSERT(outShape.GetNumDimensions() == NumDims);
53 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
60 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);
63
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
92 template <std::size_t NumDims,
93 armnn::DataType ArmnnInType,
94 typename InType = armnn::ResolveType<ArmnnInType>>
ComparisonTestImpl(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory,const armnn::ComparisonDescriptor & descriptor,const armnn::TensorShape & shape0,std::vector<InType> values0,const armnn::TensorShape & shape1,std::vector<InType> values1,const armnn::TensorShape outShape,std::vector<uint8_t> outValues,float quantScale=1.f,int quantOffset=0)95 LayerTestResult<uint8_t, NumDims> ComparisonTestImpl(
96 armnn::IWorkloadFactory & workloadFactory,
97 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
98 const armnn::ITensorHandleFactory& tensorHandleFactory,
99 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,
112 tensorHandleFactory,
113 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
128 template<typename TestData>
GetExpectedOutputData(const TestData & testData,armnn::ComparisonOperation operation)129 std::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
149 template<armnn::DataType ArmnnInType, typename TestData>
ComparisonTestImpl(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory,const TestData & testData,armnn::ComparisonOperation operation,float quantScale=1.f,int quantOffset=0)150 LayerTestResult<uint8_t, 4> ComparisonTestImpl(armnn::IWorkloadFactory& workloadFactory,
151 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
152 const armnn::ITensorHandleFactory& tensorHandleFactory,
153 const TestData& testData,
154 armnn::ComparisonOperation operation,
155 float quantScale = 1.f,
156 int quantOffset = 0)
157 {
158 using T = armnn::ResolveType<ArmnnInType>;
159
160 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);
162
163 return ComparisonTestImpl<4, ArmnnInType>(
164 workloadFactory,
165 memoryManager,
166 tensorHandleFactory,
167 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
178 class ComparisonTestData
179 {
180 public:
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
199 class SimpleTestData : public ComparisonTestData
200 {
201 public:
SimpleTestData()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
259 class Broadcast1ElementTestData : public ComparisonTestData
260 {
261 public:
Broadcast1ElementTestData()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
281 class Broadcast1dVectorTestData : public ComparisonTestData
282 {
283 public:
Broadcast1dVectorTestData()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
337 static SimpleTestData s_SimpleTestData;
338 static Broadcast1ElementTestData s_Broadcast1ElementTestData;
339 static Broadcast1dVectorTestData s_Broadcast1dVectorTestData;
340
341 } // anonymous namespace
342
343 // Equal
EqualSimpleTest(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)344 LayerTestResult<uint8_t, 4> EqualSimpleTest(armnn::IWorkloadFactory& workloadFactory,
345 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
346 const armnn::ITensorHandleFactory& tensorHandleFactory)
347 {
348 return ComparisonTestImpl<armnn::DataType::Float32>(
349 workloadFactory,
350 memoryManager,
351 tensorHandleFactory,
352 s_SimpleTestData,
353 armnn::ComparisonOperation::Equal);
354 }
355
EqualBroadcast1ElementTest(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)356 LayerTestResult<uint8_t, 4> EqualBroadcast1ElementTest(
357 armnn::IWorkloadFactory& workloadFactory,
358 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
359 const armnn::ITensorHandleFactory& tensorHandleFactory)
360 {
361 return ComparisonTestImpl<armnn::DataType::Float32>(
362 workloadFactory,
363 memoryManager,
364 tensorHandleFactory,
365 s_Broadcast1ElementTestData,
366 armnn::ComparisonOperation::Equal);
367 }
368
EqualBroadcast1dVectorTest(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)369 LayerTestResult<uint8_t, 4> EqualBroadcast1dVectorTest(
370 armnn::IWorkloadFactory& workloadFactory,
371 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
372 const armnn::ITensorHandleFactory& tensorHandleFactory)
373 {
374 return ComparisonTestImpl<armnn::DataType::Float32>(
375 workloadFactory,
376 memoryManager,
377 tensorHandleFactory,
378 s_Broadcast1dVectorTestData,
379 armnn::ComparisonOperation::Equal);
380 }
381
EqualSimpleFloat16Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)382 LayerTestResult<uint8_t, 4> EqualSimpleFloat16Test(
383 armnn::IWorkloadFactory& workloadFactory,
384 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
385 const armnn::ITensorHandleFactory& tensorHandleFactory)
386 {
387 return ComparisonTestImpl<armnn::DataType::Float16>(
388 workloadFactory,
389 memoryManager,
390 tensorHandleFactory,
391 s_SimpleTestData,
392 armnn::ComparisonOperation::Equal);
393 }
394
EqualBroadcast1ElementFloat16Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)395 LayerTestResult<uint8_t, 4> EqualBroadcast1ElementFloat16Test(
396 armnn::IWorkloadFactory& workloadFactory,
397 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
398 const armnn::ITensorHandleFactory& tensorHandleFactory)
399 {
400 return ComparisonTestImpl<armnn::DataType::Float16>(
401 workloadFactory,
402 memoryManager,
403 tensorHandleFactory,
404 s_Broadcast1ElementTestData,
405 armnn::ComparisonOperation::Equal);
406 }
407
EqualBroadcast1dVectorFloat16Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)408 LayerTestResult<uint8_t, 4> EqualBroadcast1dVectorFloat16Test(
409 armnn::IWorkloadFactory& workloadFactory,
410 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
411 const armnn::ITensorHandleFactory& tensorHandleFactory)
412 {
413 return ComparisonTestImpl<armnn::DataType::Float16>(
414 workloadFactory,
415 memoryManager,
416 tensorHandleFactory,
417 s_Broadcast1dVectorTestData,
418 armnn::ComparisonOperation::Equal);
419 }
420
EqualSimpleUint8Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)421 LayerTestResult<uint8_t, 4> EqualSimpleUint8Test(
422 armnn::IWorkloadFactory& workloadFactory,
423 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
424 const armnn::ITensorHandleFactory& tensorHandleFactory)
425 {
426 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
427 workloadFactory,
428 memoryManager,
429 tensorHandleFactory,
430 s_SimpleTestData,
431 armnn::ComparisonOperation::Equal);
432 }
433
EqualBroadcast1ElementUint8Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)434 LayerTestResult<uint8_t, 4> EqualBroadcast1ElementUint8Test(
435 armnn::IWorkloadFactory& workloadFactory,
436 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
437 const armnn::ITensorHandleFactory& tensorHandleFactory)
438 {
439 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
440 workloadFactory,
441 memoryManager,
442 tensorHandleFactory,
443 s_Broadcast1ElementTestData,
444 armnn::ComparisonOperation::Equal);
445 }
446
EqualBroadcast1dVectorUint8Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)447 LayerTestResult<uint8_t, 4> EqualBroadcast1dVectorUint8Test(
448 armnn::IWorkloadFactory& workloadFactory,
449 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
450 const armnn::ITensorHandleFactory& tensorHandleFactory)
451 {
452 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
453 workloadFactory,
454 memoryManager,
455 tensorHandleFactory,
456 s_Broadcast1dVectorTestData,
457 armnn::ComparisonOperation::Equal);
458 }
459
460 // Greater
GreaterSimpleTest(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)461 LayerTestResult<uint8_t, 4> GreaterSimpleTest(armnn::IWorkloadFactory& workloadFactory,
462 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
463 const armnn::ITensorHandleFactory& tensorHandleFactory)
464 {
465 return ComparisonTestImpl<armnn::DataType::Float32>(
466 workloadFactory,
467 memoryManager,
468 tensorHandleFactory,
469 s_SimpleTestData,
470 armnn::ComparisonOperation::Greater);
471 }
472
GreaterBroadcast1ElementTest(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)473 LayerTestResult<uint8_t, 4> GreaterBroadcast1ElementTest(
474 armnn::IWorkloadFactory& workloadFactory,
475 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
476 const armnn::ITensorHandleFactory& tensorHandleFactory)
477 {
478 return ComparisonTestImpl<armnn::DataType::Float32>(
479 workloadFactory,
480 memoryManager,
481 tensorHandleFactory,
482 s_Broadcast1ElementTestData,
483 armnn::ComparisonOperation::Greater);
484 }
485
GreaterBroadcast1dVectorTest(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)486 LayerTestResult<uint8_t, 4> GreaterBroadcast1dVectorTest(
487 armnn::IWorkloadFactory& workloadFactory,
488 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
489 const armnn::ITensorHandleFactory& tensorHandleFactory)
490 {
491 return ComparisonTestImpl<armnn::DataType::Float32>(
492 workloadFactory,
493 memoryManager,
494 tensorHandleFactory,
495 s_Broadcast1dVectorTestData,
496 armnn::ComparisonOperation::Greater);
497 }
498
GreaterSimpleFloat16Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)499 LayerTestResult<uint8_t, 4> GreaterSimpleFloat16Test(
500 armnn::IWorkloadFactory& workloadFactory,
501 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
502 const armnn::ITensorHandleFactory& tensorHandleFactory)
503 {
504 return ComparisonTestImpl<armnn::DataType::Float16>(
505 workloadFactory,
506 memoryManager,
507 tensorHandleFactory,
508 s_SimpleTestData,
509 armnn::ComparisonOperation::Greater);
510 }
511
GreaterBroadcast1ElementFloat16Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)512 LayerTestResult<uint8_t, 4> GreaterBroadcast1ElementFloat16Test(
513 armnn::IWorkloadFactory& workloadFactory,
514 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
515 const armnn::ITensorHandleFactory& tensorHandleFactory)
516 {
517 return ComparisonTestImpl<armnn::DataType::Float16>(
518 workloadFactory,
519 memoryManager,
520 tensorHandleFactory,
521 s_Broadcast1ElementTestData,
522 armnn::ComparisonOperation::Greater);
523 }
524
GreaterBroadcast1dVectorFloat16Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)525 LayerTestResult<uint8_t, 4> GreaterBroadcast1dVectorFloat16Test(
526 armnn::IWorkloadFactory& workloadFactory,
527 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
528 const armnn::ITensorHandleFactory& tensorHandleFactory)
529 {
530 return ComparisonTestImpl<armnn::DataType::Float16>(
531 workloadFactory,
532 memoryManager,
533 tensorHandleFactory,
534 s_Broadcast1dVectorTestData,
535 armnn::ComparisonOperation::Greater);
536 }
537
GreaterSimpleUint8Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)538 LayerTestResult<uint8_t, 4> GreaterSimpleUint8Test(
539 armnn::IWorkloadFactory& workloadFactory,
540 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
541 const armnn::ITensorHandleFactory& tensorHandleFactory)
542 {
543 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
544 workloadFactory,
545 memoryManager,
546 tensorHandleFactory,
547 s_SimpleTestData,
548 armnn::ComparisonOperation::Greater);
549 }
550
GreaterBroadcast1ElementUint8Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)551 LayerTestResult<uint8_t, 4> GreaterBroadcast1ElementUint8Test(
552 armnn::IWorkloadFactory& workloadFactory,
553 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
554 const armnn::ITensorHandleFactory& tensorHandleFactory)
555 {
556 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
557 workloadFactory,
558 memoryManager,
559 tensorHandleFactory,
560 s_Broadcast1ElementTestData,
561 armnn::ComparisonOperation::Greater);
562 }
563
GreaterBroadcast1dVectorUint8Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)564 LayerTestResult<uint8_t, 4> GreaterBroadcast1dVectorUint8Test(
565 armnn::IWorkloadFactory& workloadFactory,
566 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
567 const armnn::ITensorHandleFactory& tensorHandleFactory)
568 {
569 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
570 workloadFactory,
571 memoryManager,
572 tensorHandleFactory,
573 s_Broadcast1dVectorTestData,
574 armnn::ComparisonOperation::Greater);
575 }
576
577 // GreaterOrEqual
GreaterOrEqualSimpleTest(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)578 LayerTestResult<uint8_t, 4> GreaterOrEqualSimpleTest(
579 armnn::IWorkloadFactory& workloadFactory,
580 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
581 const armnn::ITensorHandleFactory& tensorHandleFactory)
582 {
583 return ComparisonTestImpl<armnn::DataType::Float32>(
584 workloadFactory,
585 memoryManager,
586 tensorHandleFactory,
587 s_SimpleTestData,
588 armnn::ComparisonOperation::GreaterOrEqual);
589 }
590
GreaterOrEqualBroadcast1ElementTest(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)591 LayerTestResult<uint8_t, 4> GreaterOrEqualBroadcast1ElementTest(
592 armnn::IWorkloadFactory& workloadFactory,
593 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
594 const armnn::ITensorHandleFactory& tensorHandleFactory)
595 {
596 return ComparisonTestImpl<armnn::DataType::Float32>(
597 workloadFactory,
598 memoryManager,
599 tensorHandleFactory,
600 s_Broadcast1ElementTestData,
601 armnn::ComparisonOperation::GreaterOrEqual);
602 }
603
GreaterOrEqualBroadcast1dVectorTest(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)604 LayerTestResult<uint8_t, 4> GreaterOrEqualBroadcast1dVectorTest(
605 armnn::IWorkloadFactory& workloadFactory,
606 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
607 const armnn::ITensorHandleFactory& tensorHandleFactory)
608 {
609 return ComparisonTestImpl<armnn::DataType::Float32>(
610 workloadFactory,
611 memoryManager,
612 tensorHandleFactory,
613 s_Broadcast1dVectorTestData,
614 armnn::ComparisonOperation::GreaterOrEqual);
615 }
616
GreaterOrEqualSimpleFloat16Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)617 LayerTestResult<uint8_t, 4> GreaterOrEqualSimpleFloat16Test(
618 armnn::IWorkloadFactory& workloadFactory,
619 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
620 const armnn::ITensorHandleFactory& tensorHandleFactory)
621 {
622 return ComparisonTestImpl<armnn::DataType::Float16>(
623 workloadFactory,
624 memoryManager,
625 tensorHandleFactory,
626 s_SimpleTestData,
627 armnn::ComparisonOperation::GreaterOrEqual);
628 }
629
GreaterOrEqualBroadcast1ElementFloat16Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)630 LayerTestResult<uint8_t, 4> GreaterOrEqualBroadcast1ElementFloat16Test(
631 armnn::IWorkloadFactory& workloadFactory,
632 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
633 const armnn::ITensorHandleFactory& tensorHandleFactory)
634 {
635 return ComparisonTestImpl<armnn::DataType::Float16>(
636 workloadFactory,
637 memoryManager,
638 tensorHandleFactory,
639 s_Broadcast1ElementTestData,
640 armnn::ComparisonOperation::GreaterOrEqual);
641 }
642
GreaterOrEqualBroadcast1dVectorFloat16Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)643 LayerTestResult<uint8_t, 4> GreaterOrEqualBroadcast1dVectorFloat16Test(
644 armnn::IWorkloadFactory& workloadFactory,
645 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
646 const armnn::ITensorHandleFactory& tensorHandleFactory)
647 {
648 return ComparisonTestImpl<armnn::DataType::Float16>(
649 workloadFactory,
650 memoryManager,
651 tensorHandleFactory,
652 s_Broadcast1dVectorTestData,
653 armnn::ComparisonOperation::GreaterOrEqual);
654 }
655
GreaterOrEqualSimpleUint8Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)656 LayerTestResult<uint8_t, 4> GreaterOrEqualSimpleUint8Test(
657 armnn::IWorkloadFactory& workloadFactory,
658 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
659 const armnn::ITensorHandleFactory& tensorHandleFactory)
660 {
661 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
662 workloadFactory,
663 memoryManager,
664 tensorHandleFactory,
665 s_SimpleTestData,
666 armnn::ComparisonOperation::GreaterOrEqual);
667 }
668
GreaterOrEqualBroadcast1ElementUint8Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)669 LayerTestResult<uint8_t, 4> GreaterOrEqualBroadcast1ElementUint8Test(
670 armnn::IWorkloadFactory& workloadFactory,
671 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
672 const armnn::ITensorHandleFactory& tensorHandleFactory)
673 {
674 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
675 workloadFactory,
676 memoryManager,
677 tensorHandleFactory,
678 s_Broadcast1ElementTestData,
679 armnn::ComparisonOperation::GreaterOrEqual);
680 }
681
GreaterOrEqualBroadcast1dVectorUint8Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)682 LayerTestResult<uint8_t, 4> GreaterOrEqualBroadcast1dVectorUint8Test(
683 armnn::IWorkloadFactory& workloadFactory,
684 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
685 const armnn::ITensorHandleFactory& tensorHandleFactory)
686 {
687 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
688 workloadFactory,
689 memoryManager,
690 tensorHandleFactory,
691 s_Broadcast1dVectorTestData,
692 armnn::ComparisonOperation::GreaterOrEqual);
693 }
694
695 // Less
LessSimpleTest(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)696 LayerTestResult<uint8_t, 4> LessSimpleTest(armnn::IWorkloadFactory& workloadFactory,
697 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
698 const armnn::ITensorHandleFactory& tensorHandleFactory)
699 {
700 return ComparisonTestImpl<armnn::DataType::Float32>(
701 workloadFactory,
702 memoryManager,
703 tensorHandleFactory,
704 s_SimpleTestData,
705 armnn::ComparisonOperation::Less);
706 }
707
LessBroadcast1ElementTest(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)708 LayerTestResult<uint8_t, 4> LessBroadcast1ElementTest(
709 armnn::IWorkloadFactory& workloadFactory,
710 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
711 const armnn::ITensorHandleFactory& tensorHandleFactory)
712 {
713 return ComparisonTestImpl<armnn::DataType::Float32>(
714 workloadFactory,
715 memoryManager,
716 tensorHandleFactory,
717 s_Broadcast1ElementTestData,
718 armnn::ComparisonOperation::Less);
719 }
720
LessBroadcast1dVectorTest(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)721 LayerTestResult<uint8_t, 4> LessBroadcast1dVectorTest(
722 armnn::IWorkloadFactory& workloadFactory,
723 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
724 const armnn::ITensorHandleFactory& tensorHandleFactory)
725 {
726 return ComparisonTestImpl<armnn::DataType::Float32>(
727 workloadFactory,
728 memoryManager,
729 tensorHandleFactory,
730 s_Broadcast1dVectorTestData,
731 armnn::ComparisonOperation::Less);
732 }
733
LessSimpleFloat16Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)734 LayerTestResult<uint8_t, 4> LessSimpleFloat16Test(
735 armnn::IWorkloadFactory& workloadFactory,
736 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
737 const armnn::ITensorHandleFactory& tensorHandleFactory)
738 {
739 return ComparisonTestImpl<armnn::DataType::Float16>(
740 workloadFactory,
741 memoryManager,
742 tensorHandleFactory,
743 s_SimpleTestData,
744 armnn::ComparisonOperation::Less);
745 }
746
LessBroadcast1ElementFloat16Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)747 LayerTestResult<uint8_t, 4> LessBroadcast1ElementFloat16Test(
748 armnn::IWorkloadFactory& workloadFactory,
749 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
750 const armnn::ITensorHandleFactory& tensorHandleFactory)
751 {
752 return ComparisonTestImpl<armnn::DataType::Float16>(
753 workloadFactory,
754 memoryManager,
755 tensorHandleFactory,
756 s_Broadcast1ElementTestData,
757 armnn::ComparisonOperation::Less);
758 }
759
LessBroadcast1dVectorFloat16Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)760 LayerTestResult<uint8_t, 4> LessBroadcast1dVectorFloat16Test(
761 armnn::IWorkloadFactory& workloadFactory,
762 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
763 const armnn::ITensorHandleFactory& tensorHandleFactory)
764 {
765 return ComparisonTestImpl<armnn::DataType::Float16>(
766 workloadFactory,
767 memoryManager,
768 tensorHandleFactory,
769 s_Broadcast1dVectorTestData,
770 armnn::ComparisonOperation::Less);
771 }
772
LessSimpleUint8Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)773 LayerTestResult<uint8_t, 4> LessSimpleUint8Test(
774 armnn::IWorkloadFactory& workloadFactory,
775 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
776 const armnn::ITensorHandleFactory& tensorHandleFactory)
777 {
778 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
779 workloadFactory,
780 memoryManager,
781 tensorHandleFactory,
782 s_SimpleTestData,
783 armnn::ComparisonOperation::Less);
784 }
785
LessBroadcast1ElementUint8Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)786 LayerTestResult<uint8_t, 4> LessBroadcast1ElementUint8Test(
787 armnn::IWorkloadFactory& workloadFactory,
788 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
789 const armnn::ITensorHandleFactory& tensorHandleFactory)
790 {
791 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
792 workloadFactory,
793 memoryManager,
794 tensorHandleFactory,
795 s_Broadcast1ElementTestData,
796 armnn::ComparisonOperation::Less);
797 }
798
LessBroadcast1dVectorUint8Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)799 LayerTestResult<uint8_t, 4> LessBroadcast1dVectorUint8Test(
800 armnn::IWorkloadFactory& workloadFactory,
801 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
802 const armnn::ITensorHandleFactory& tensorHandleFactory)
803 {
804 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
805 workloadFactory,
806 memoryManager,
807 tensorHandleFactory,
808 s_Broadcast1dVectorTestData,
809 armnn::ComparisonOperation::Less);
810 }
811
812 // LessOrEqual
LessOrEqualSimpleTest(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)813 LayerTestResult<uint8_t, 4> LessOrEqualSimpleTest(
814 armnn::IWorkloadFactory& workloadFactory,
815 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
816 const armnn::ITensorHandleFactory& tensorHandleFactory)
817 {
818 return ComparisonTestImpl<armnn::DataType::Float32>(
819 workloadFactory,
820 memoryManager,
821 tensorHandleFactory,
822 s_SimpleTestData,
823 armnn::ComparisonOperation::LessOrEqual);
824 }
825
LessOrEqualBroadcast1ElementTest(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)826 LayerTestResult<uint8_t, 4> LessOrEqualBroadcast1ElementTest(
827 armnn::IWorkloadFactory& workloadFactory,
828 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
829 const armnn::ITensorHandleFactory& tensorHandleFactory)
830 {
831 return ComparisonTestImpl<armnn::DataType::Float32>(
832 workloadFactory,
833 memoryManager,
834 tensorHandleFactory,
835 s_Broadcast1ElementTestData,
836 armnn::ComparisonOperation::LessOrEqual);
837 }
838
LessOrEqualBroadcast1dVectorTest(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)839 LayerTestResult<uint8_t, 4> LessOrEqualBroadcast1dVectorTest(
840 armnn::IWorkloadFactory& workloadFactory,
841 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
842 const armnn::ITensorHandleFactory& tensorHandleFactory)
843 {
844 return ComparisonTestImpl<armnn::DataType::Float32>(
845 workloadFactory,
846 memoryManager,
847 tensorHandleFactory,
848 s_Broadcast1dVectorTestData,
849 armnn::ComparisonOperation::LessOrEqual);
850 }
851
LessOrEqualSimpleFloat16Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)852 LayerTestResult<uint8_t, 4> LessOrEqualSimpleFloat16Test(
853 armnn::IWorkloadFactory& workloadFactory,
854 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
855 const armnn::ITensorHandleFactory& tensorHandleFactory)
856 {
857 return ComparisonTestImpl<armnn::DataType::Float16>(
858 workloadFactory,
859 memoryManager,
860 tensorHandleFactory,
861 s_SimpleTestData,
862 armnn::ComparisonOperation::LessOrEqual);
863 }
864
LessOrEqualBroadcast1ElementFloat16Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)865 LayerTestResult<uint8_t, 4> LessOrEqualBroadcast1ElementFloat16Test(
866 armnn::IWorkloadFactory& workloadFactory,
867 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
868 const armnn::ITensorHandleFactory& tensorHandleFactory)
869 {
870 return ComparisonTestImpl<armnn::DataType::Float16>(
871 workloadFactory,
872 memoryManager,
873 tensorHandleFactory,
874 s_Broadcast1ElementTestData,
875 armnn::ComparisonOperation::LessOrEqual);
876 }
877
LessOrEqualBroadcast1dVectorFloat16Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)878 LayerTestResult<uint8_t, 4> LessOrEqualBroadcast1dVectorFloat16Test(
879 armnn::IWorkloadFactory& workloadFactory,
880 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
881 const armnn::ITensorHandleFactory& tensorHandleFactory)
882 {
883 return ComparisonTestImpl<armnn::DataType::Float16>(
884 workloadFactory,
885 memoryManager,
886 tensorHandleFactory,
887 s_Broadcast1dVectorTestData,
888 armnn::ComparisonOperation::LessOrEqual);
889 }
890
LessOrEqualSimpleUint8Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)891 LayerTestResult<uint8_t, 4> LessOrEqualSimpleUint8Test(
892 armnn::IWorkloadFactory& workloadFactory,
893 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
894 const armnn::ITensorHandleFactory& tensorHandleFactory)
895 {
896 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
897 workloadFactory,
898 memoryManager,
899 tensorHandleFactory,
900 s_SimpleTestData,
901 armnn::ComparisonOperation::LessOrEqual);
902 }
903
LessOrEqualBroadcast1ElementUint8Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)904 LayerTestResult<uint8_t, 4> LessOrEqualBroadcast1ElementUint8Test(
905 armnn::IWorkloadFactory& workloadFactory,
906 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
907 const armnn::ITensorHandleFactory& tensorHandleFactory)
908 {
909 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
910 workloadFactory,
911 memoryManager,
912 tensorHandleFactory,
913 s_Broadcast1ElementTestData,
914 armnn::ComparisonOperation::LessOrEqual);
915 }
916
LessOrEqualBroadcast1dVectorUint8Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)917 LayerTestResult<uint8_t, 4> LessOrEqualBroadcast1dVectorUint8Test(
918 armnn::IWorkloadFactory& workloadFactory,
919 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
920 const armnn::ITensorHandleFactory& tensorHandleFactory)
921 {
922 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
923 workloadFactory,
924 memoryManager,
925 tensorHandleFactory,
926 s_Broadcast1dVectorTestData,
927 armnn::ComparisonOperation::LessOrEqual);
928 }
929
930 // NotEqual
NotEqualSimpleTest(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)931 LayerTestResult<uint8_t, 4> NotEqualSimpleTest(
932 armnn::IWorkloadFactory& workloadFactory,
933 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
934 const armnn::ITensorHandleFactory& tensorHandleFactory)
935 {
936 return ComparisonTestImpl<armnn::DataType::Float32>(
937 workloadFactory,
938 memoryManager,
939 tensorHandleFactory,
940 s_SimpleTestData,
941 armnn::ComparisonOperation::NotEqual);
942 }
943
NotEqualBroadcast1ElementTest(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)944 LayerTestResult<uint8_t, 4> NotEqualBroadcast1ElementTest(
945 armnn::IWorkloadFactory& workloadFactory,
946 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
947 const armnn::ITensorHandleFactory& tensorHandleFactory)
948 {
949 return ComparisonTestImpl<armnn::DataType::Float32>(
950 workloadFactory,
951 memoryManager,
952 tensorHandleFactory,
953 s_Broadcast1ElementTestData,
954 armnn::ComparisonOperation::NotEqual);
955 }
956
NotEqualBroadcast1dVectorTest(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)957 LayerTestResult<uint8_t, 4> NotEqualBroadcast1dVectorTest(
958 armnn::IWorkloadFactory& workloadFactory,
959 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
960 const armnn::ITensorHandleFactory& tensorHandleFactory)
961 {
962 return ComparisonTestImpl<armnn::DataType::Float32>(
963 workloadFactory,
964 memoryManager,
965 tensorHandleFactory,
966 s_Broadcast1dVectorTestData,
967 armnn::ComparisonOperation::NotEqual);
968 }
969
NotEqualSimpleFloat16Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)970 LayerTestResult<uint8_t, 4> NotEqualSimpleFloat16Test(
971 armnn::IWorkloadFactory& workloadFactory,
972 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
973 const armnn::ITensorHandleFactory& tensorHandleFactory)
974 {
975 return ComparisonTestImpl<armnn::DataType::Float16>(
976 workloadFactory,
977 memoryManager,
978 tensorHandleFactory,
979 s_SimpleTestData,
980 armnn::ComparisonOperation::NotEqual);
981 }
982
NotEqualBroadcast1ElementFloat16Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)983 LayerTestResult<uint8_t, 4> NotEqualBroadcast1ElementFloat16Test(
984 armnn::IWorkloadFactory& workloadFactory,
985 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
986 const armnn::ITensorHandleFactory& tensorHandleFactory)
987 {
988 return ComparisonTestImpl<armnn::DataType::Float16>(
989 workloadFactory,
990 memoryManager,
991 tensorHandleFactory,
992 s_Broadcast1ElementTestData,
993 armnn::ComparisonOperation::NotEqual);
994 }
995
NotEqualBroadcast1dVectorFloat16Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)996 LayerTestResult<uint8_t, 4> NotEqualBroadcast1dVectorFloat16Test(
997 armnn::IWorkloadFactory& workloadFactory,
998 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
999 const armnn::ITensorHandleFactory& tensorHandleFactory)
1000 {
1001 return ComparisonTestImpl<armnn::DataType::Float16>(
1002 workloadFactory,
1003 memoryManager,
1004 tensorHandleFactory,
1005 s_Broadcast1dVectorTestData,
1006 armnn::ComparisonOperation::NotEqual);
1007 }
1008
NotEqualSimpleUint8Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)1009 LayerTestResult<uint8_t, 4> NotEqualSimpleUint8Test(
1010 armnn::IWorkloadFactory& workloadFactory,
1011 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1012 const armnn::ITensorHandleFactory& tensorHandleFactory)
1013 {
1014 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
1015 workloadFactory,
1016 memoryManager,
1017 tensorHandleFactory,
1018 s_SimpleTestData,
1019 armnn::ComparisonOperation::NotEqual);
1020 }
1021
NotEqualBroadcast1ElementUint8Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)1022 LayerTestResult<uint8_t, 4> NotEqualBroadcast1ElementUint8Test(
1023 armnn::IWorkloadFactory& workloadFactory,
1024 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1025 const armnn::ITensorHandleFactory& tensorHandleFactory)
1026 {
1027 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
1028 workloadFactory,
1029 memoryManager,
1030 tensorHandleFactory,
1031 s_Broadcast1ElementTestData,
1032 armnn::ComparisonOperation::NotEqual);
1033 }
1034
NotEqualBroadcast1dVectorUint8Test(armnn::IWorkloadFactory & workloadFactory,const armnn::IBackendInternal::IMemoryManagerSharedPtr & memoryManager,const armnn::ITensorHandleFactory & tensorHandleFactory)1035 LayerTestResult<uint8_t, 4> NotEqualBroadcast1dVectorUint8Test(
1036 armnn::IWorkloadFactory& workloadFactory,
1037 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1038 const armnn::ITensorHandleFactory& tensorHandleFactory)
1039 {
1040 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
1041 workloadFactory,
1042 memoryManager,
1043 tensorHandleFactory,
1044 s_Broadcast1dVectorTestData,
1045 armnn::ComparisonOperation::NotEqual);
1046 }
1047