blob: c5da07279d50b2b779207016b3665e8ea34ab865 [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>
Colm Donelanc42a9872022-02-02 16:35:09 +000010#include <armnnUtils/QuantizeHelper.hpp>
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010011#include <ResolveType.hpp>
12
Colm Donelan0c479742021-12-10 12:43:54 +000013#include <armnn/backends/Workload.hpp>
14#include <armnn/backends/WorkloadData.hpp>
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010015
Sadik Armagana097d2a2021-11-24 15:47:28 +000016#include <armnnTestUtils/TensorCopyUtils.hpp>
Colm Donelan0c479742021-12-10 12:43:54 +000017#include <armnnTestUtils/WorkloadTestUtils.hpp>
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010018
Colm Donelanc42a9872022-02-02 16:35:09 +000019#include <armnnTestUtils/TensorHelpers.hpp>
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010020
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
Sadik Armagan483c8112021-06-01 09:24:52 +010055 std::vector<uint8_t> actualOutput(outputTensorInfo.GetNumElements());
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010056
Keith Davisf500d6c2020-08-31 08:32:55 +010057 std::unique_ptr<armnn::ITensorHandle> inputHandle0 = tensorHandleFactory.CreateTensorHandle(inputTensorInfo0);
58 std::unique_ptr<armnn::ITensorHandle> inputHandle1 = tensorHandleFactory.CreateTensorHandle(inputTensorInfo1);
59 std::unique_ptr<armnn::ITensorHandle> outputHandle = tensorHandleFactory.CreateTensorHandle(outputTensorInfo);
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010060
61 armnn::ComparisonQueueDescriptor qDescriptor;
62 qDescriptor.m_Parameters = descriptor;
63
64 armnn::WorkloadInfo info;
65 AddInputToWorkload(qDescriptor, info, inputTensorInfo0, inputHandle0.get());
66 AddInputToWorkload(qDescriptor, info, inputTensorInfo1, inputHandle1.get());
67 AddOutputToWorkload(qDescriptor, info, outputTensorInfo, outputHandle.get());
68
Teresa Charlin611c7fb2022-01-07 09:47:29 +000069 std::unique_ptr<armnn::IWorkload> workload
70 = workloadFactory.CreateWorkload(armnn::LayerType::Comparison, qDescriptor, info);
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010071
72 inputHandle0->Allocate();
73 inputHandle1->Allocate();
74 outputHandle->Allocate();
75
Sadik Armagan483c8112021-06-01 09:24:52 +010076 CopyDataToITensorHandle(inputHandle0.get(), values0.data());
77 CopyDataToITensorHandle(inputHandle1.get(), values1.data());
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010078
79 workload->PostAllocationConfigure();
80 ExecuteWorkload(*workload, memoryManager);
81
Sadik Armagan483c8112021-06-01 09:24:52 +010082 CopyDataFromITensorHandle(actualOutput.data(), outputHandle.get());
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010083
Sadik Armagan483c8112021-06-01 09:24:52 +010084 return LayerTestResult<uint8_t, NumDims>(actualOutput,
85 outValues,
86 outputHandle->GetShape(),
87 outputTensorInfo.GetShape(),
88 true);
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010089}
90
91template <std::size_t NumDims,
92 armnn::DataType ArmnnInType,
93 typename InType = armnn::ResolveType<ArmnnInType>>
94LayerTestResult<uint8_t, NumDims> ComparisonTestImpl(
95 armnn::IWorkloadFactory & workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +010096 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
97 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010098 const armnn::ComparisonDescriptor& descriptor,
99 const armnn::TensorShape& shape0,
100 std::vector<InType> values0,
101 const armnn::TensorShape& shape1,
102 std::vector<InType> values1,
103 const armnn::TensorShape outShape,
104 std::vector<uint8_t> outValues,
105 float quantScale = 1.f,
106 int quantOffset = 0)
107{
108 return ComparisonTestImpl<NumDims, ArmnnInType>(
109 workloadFactory,
110 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100111 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100112 descriptor,
113 shape0,
114 values0,
115 quantScale,
116 quantOffset,
117 shape1,
118 values1,
119 quantScale,
120 quantOffset,
121 outShape,
122 outValues,
123 quantScale,
124 quantOffset);
125}
126
127template<typename TestData>
128std::vector<uint8_t> GetExpectedOutputData(const TestData& testData, armnn::ComparisonOperation operation)
129{
130 switch (operation)
131 {
132 case armnn::ComparisonOperation::Equal:
133 return testData.m_OutputEqual;
134 case armnn::ComparisonOperation::Greater:
135 return testData.m_OutputGreater;
136 case armnn::ComparisonOperation::GreaterOrEqual:
137 return testData.m_OutputGreaterOrEqual;
138 case armnn::ComparisonOperation::Less:
139 return testData.m_OutputLess;
140 case armnn::ComparisonOperation::LessOrEqual:
141 return testData.m_OutputLessOrEqual;
142 case armnn::ComparisonOperation::NotEqual:
143 default:
144 return testData.m_OutputNotEqual;
145 }
146}
147
148template<armnn::DataType ArmnnInType, typename TestData>
149LayerTestResult<uint8_t, 4> ComparisonTestImpl(armnn::IWorkloadFactory& workloadFactory,
150 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100151 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100152 const TestData& testData,
153 armnn::ComparisonOperation operation,
154 float quantScale = 1.f,
155 int quantOffset = 0)
156{
157 using T = armnn::ResolveType<ArmnnInType>;
158
Aron Virginas-Tar48623a02019-10-22 10:00:28 +0100159 std::vector<T> inputData0 = armnnUtils::QuantizedVector<T>(testData.m_InputData0, quantScale, quantOffset);
160 std::vector<T> inputData1 = armnnUtils::QuantizedVector<T>(testData.m_InputData1, quantScale, quantOffset);
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100161
162 return ComparisonTestImpl<4, ArmnnInType>(
163 workloadFactory,
164 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100165 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100166 armnn::ComparisonDescriptor(operation),
167 testData.m_InputShape0,
168 inputData0,
169 testData.m_InputShape1,
170 inputData1,
171 testData.m_OutputShape,
172 GetExpectedOutputData(testData, operation),
173 quantScale,
174 quantOffset);
175}
176
177class ComparisonTestData
178{
179public:
180 ComparisonTestData() = default;
181 virtual ~ComparisonTestData() = default;
182
183 armnn::TensorShape m_InputShape0;
184 armnn::TensorShape m_InputShape1;
185 armnn::TensorShape m_OutputShape;
186
187 std::vector<float> m_InputData0;
188 std::vector<float> m_InputData1;
189
190 std::vector<uint8_t> m_OutputEqual;
191 std::vector<uint8_t> m_OutputGreater;
192 std::vector<uint8_t> m_OutputGreaterOrEqual;
193 std::vector<uint8_t> m_OutputLess;
194 std::vector<uint8_t> m_OutputLessOrEqual;
195 std::vector<uint8_t> m_OutputNotEqual;
196};
197
198class SimpleTestData : public ComparisonTestData
199{
200public:
201 SimpleTestData() : ComparisonTestData()
202 {
203 m_InputShape0 = { 2, 2, 2, 2 };
204
205 m_InputShape1 = m_InputShape0;
206 m_OutputShape = m_InputShape0;
207
208 m_InputData0 =
209 {
210 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
211 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
212 };
213
214 m_InputData1 =
215 {
216 1.f, 1.f, 1.f, 1.f, 3.f, 3.f, 3.f, 3.f,
217 5.f, 5.f, 5.f, 5.f, 4.f, 4.f, 4.f, 4.f
218 };
219
220 m_OutputEqual =
221 {
222 1, 1, 1, 1, 0, 0, 0, 0,
223 0, 0, 0, 0, 1, 1, 1, 1
224 };
225
226 m_OutputGreater =
227 {
228 0, 0, 0, 0, 1, 1, 1, 1,
229 0, 0, 0, 0, 0, 0, 0, 0
230 };
231
232 m_OutputGreaterOrEqual =
233 {
234 1, 1, 1, 1, 1, 1, 1, 1,
235 0, 0, 0, 0, 1, 1, 1, 1
236 };
237
238 m_OutputLess =
239 {
240 0, 0, 0, 0, 0, 0, 0, 0,
241 1, 1, 1, 1, 0, 0, 0, 0
242 };
243
244 m_OutputLessOrEqual =
245 {
246 1, 1, 1, 1, 0, 0, 0, 0,
247 1, 1, 1, 1, 1, 1, 1, 1
248 };
249
250 m_OutputNotEqual =
251 {
252 0, 0, 0, 0, 1, 1, 1, 1,
253 1, 1, 1, 1, 0, 0, 0, 0
254 };
255 }
256};
257
258class Broadcast1ElementTestData : public ComparisonTestData
259{
260public:
261 Broadcast1ElementTestData() : ComparisonTestData()
262 {
263 m_InputShape0 = { 1, 2, 2, 2 };
264 m_InputShape1 = { 1, 1, 1, 1 };
265
266 m_OutputShape = m_InputShape0;
267
268 m_InputData0 = { 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f };
269 m_InputData1 = { 3.f };
270
271 m_OutputEqual = { 0, 0, 1, 0, 0, 0, 0, 0 };
272 m_OutputGreater = { 0, 0, 0, 1, 1, 1, 1, 1 };
273 m_OutputGreaterOrEqual = { 0, 0, 1, 1, 1, 1, 1, 1 };
274 m_OutputLess = { 1, 1, 0, 0, 0, 0, 0, 0 };
275 m_OutputLessOrEqual = { 1, 1, 1, 0, 0, 0, 0, 0 };
276 m_OutputNotEqual = { 1, 1, 0, 1, 1, 1, 1, 1 };
277 }
278};
279
280class Broadcast1dVectorTestData : public ComparisonTestData
281{
282public:
283 Broadcast1dVectorTestData() : ComparisonTestData()
284 {
285 m_InputShape0 = { 1, 2, 2, 3 };
286 m_InputShape1 = { 1, 1, 1, 3 };
287
288 m_OutputShape = m_InputShape0;
289
290 m_InputData0 =
291 {
292 1.f, 2.f, 3.f, 4.f, 5.f, 6.f,
293 7.f, 8.f, 9.f, 10.f, 11.f, 12.f
294 };
295
296 m_InputData1 = { 4.f, 5.f, 6.f };
297
298 m_OutputEqual =
299 {
300 0, 0, 0, 1, 1, 1,
301 0, 0, 0, 0, 0, 0
302 };
303
304 m_OutputGreater =
305 {
306 0, 0, 0, 0, 0, 0,
307 1, 1, 1, 1, 1, 1
308 };
309
310 m_OutputGreaterOrEqual =
311 {
312 0, 0, 0, 1, 1, 1,
313 1, 1, 1, 1, 1, 1
314 };
315
316 m_OutputLess =
317 {
318 1, 1, 1, 0, 0, 0,
319 0, 0, 0, 0, 0, 0
320 };
321
322 m_OutputLessOrEqual =
323 {
324 1, 1, 1, 1, 1, 1,
325 0, 0, 0, 0, 0, 0
326 };
327
328 m_OutputNotEqual =
329 {
330 1, 1, 1, 0, 0, 0,
331 1, 1, 1, 1, 1, 1
332 };
333 }
334};
335
336static SimpleTestData s_SimpleTestData;
337static Broadcast1ElementTestData s_Broadcast1ElementTestData;
338static Broadcast1dVectorTestData s_Broadcast1dVectorTestData;
339
340} // anonymous namespace
341
342// Equal
343LayerTestResult<uint8_t, 4> EqualSimpleTest(armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100344 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
345 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100346{
347 return ComparisonTestImpl<armnn::DataType::Float32>(
348 workloadFactory,
349 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100350 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100351 s_SimpleTestData,
352 armnn::ComparisonOperation::Equal);
353}
354
355LayerTestResult<uint8_t, 4> EqualBroadcast1ElementTest(
356 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100357 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
358 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100359{
360 return ComparisonTestImpl<armnn::DataType::Float32>(
361 workloadFactory,
362 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100363 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100364 s_Broadcast1ElementTestData,
365 armnn::ComparisonOperation::Equal);
366}
367
368LayerTestResult<uint8_t, 4> EqualBroadcast1dVectorTest(
369 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100370 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
371 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100372{
373 return ComparisonTestImpl<armnn::DataType::Float32>(
374 workloadFactory,
375 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100376 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100377 s_Broadcast1dVectorTestData,
378 armnn::ComparisonOperation::Equal);
379}
380
381LayerTestResult<uint8_t, 4> EqualSimpleFloat16Test(
382 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100383 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
384 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100385{
386 return ComparisonTestImpl<armnn::DataType::Float16>(
387 workloadFactory,
388 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100389 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100390 s_SimpleTestData,
391 armnn::ComparisonOperation::Equal);
392}
393
394LayerTestResult<uint8_t, 4> EqualBroadcast1ElementFloat16Test(
395 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100396 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
397 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100398{
399 return ComparisonTestImpl<armnn::DataType::Float16>(
400 workloadFactory,
401 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100402 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100403 s_Broadcast1ElementTestData,
404 armnn::ComparisonOperation::Equal);
405}
406
407LayerTestResult<uint8_t, 4> EqualBroadcast1dVectorFloat16Test(
408 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100409 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
410 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100411{
412 return ComparisonTestImpl<armnn::DataType::Float16>(
413 workloadFactory,
414 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100415 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100416 s_Broadcast1dVectorTestData,
417 armnn::ComparisonOperation::Equal);
418}
419
420LayerTestResult<uint8_t, 4> EqualSimpleUint8Test(
421 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100422 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
423 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100424{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000425 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100426 workloadFactory,
427 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100428 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100429 s_SimpleTestData,
430 armnn::ComparisonOperation::Equal);
431}
432
433LayerTestResult<uint8_t, 4> EqualBroadcast1ElementUint8Test(
434 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100435 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
436 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100437{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000438 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100439 workloadFactory,
440 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100441 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100442 s_Broadcast1ElementTestData,
443 armnn::ComparisonOperation::Equal);
444}
445
446LayerTestResult<uint8_t, 4> EqualBroadcast1dVectorUint8Test(
447 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100448 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
449 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100450{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000451 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100452 workloadFactory,
453 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100454 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100455 s_Broadcast1dVectorTestData,
456 armnn::ComparisonOperation::Equal);
457}
458
459// Greater
460LayerTestResult<uint8_t, 4> GreaterSimpleTest(armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100461 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
462 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100463{
464 return ComparisonTestImpl<armnn::DataType::Float32>(
465 workloadFactory,
466 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100467 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100468 s_SimpleTestData,
469 armnn::ComparisonOperation::Greater);
470}
471
472LayerTestResult<uint8_t, 4> GreaterBroadcast1ElementTest(
473 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100474 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
475 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100476{
477 return ComparisonTestImpl<armnn::DataType::Float32>(
478 workloadFactory,
479 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100480 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100481 s_Broadcast1ElementTestData,
482 armnn::ComparisonOperation::Greater);
483}
484
485LayerTestResult<uint8_t, 4> GreaterBroadcast1dVectorTest(
486 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100487 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
488 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100489{
490 return ComparisonTestImpl<armnn::DataType::Float32>(
491 workloadFactory,
492 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100493 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100494 s_Broadcast1dVectorTestData,
495 armnn::ComparisonOperation::Greater);
496}
497
498LayerTestResult<uint8_t, 4> GreaterSimpleFloat16Test(
499 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100500 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
501 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100502{
503 return ComparisonTestImpl<armnn::DataType::Float16>(
504 workloadFactory,
505 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100506 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100507 s_SimpleTestData,
508 armnn::ComparisonOperation::Greater);
509}
510
511LayerTestResult<uint8_t, 4> GreaterBroadcast1ElementFloat16Test(
512 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100513 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
514 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100515{
516 return ComparisonTestImpl<armnn::DataType::Float16>(
517 workloadFactory,
518 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100519 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100520 s_Broadcast1ElementTestData,
521 armnn::ComparisonOperation::Greater);
522}
523
524LayerTestResult<uint8_t, 4> GreaterBroadcast1dVectorFloat16Test(
525 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100526 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
527 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100528{
529 return ComparisonTestImpl<armnn::DataType::Float16>(
530 workloadFactory,
531 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100532 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100533 s_Broadcast1dVectorTestData,
534 armnn::ComparisonOperation::Greater);
535}
536
537LayerTestResult<uint8_t, 4> GreaterSimpleUint8Test(
538 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100539 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
540 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100541{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000542 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100543 workloadFactory,
544 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100545 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100546 s_SimpleTestData,
547 armnn::ComparisonOperation::Greater);
548}
549
550LayerTestResult<uint8_t, 4> GreaterBroadcast1ElementUint8Test(
551 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100552 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
553 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100554{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000555 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100556 workloadFactory,
557 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100558 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100559 s_Broadcast1ElementTestData,
560 armnn::ComparisonOperation::Greater);
561}
562
563LayerTestResult<uint8_t, 4> GreaterBroadcast1dVectorUint8Test(
564 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100565 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
566 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100567{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000568 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100569 workloadFactory,
570 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100571 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100572 s_Broadcast1dVectorTestData,
573 armnn::ComparisonOperation::Greater);
574}
575
576// GreaterOrEqual
577LayerTestResult<uint8_t, 4> GreaterOrEqualSimpleTest(
578 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100579 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
580 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100581{
582 return ComparisonTestImpl<armnn::DataType::Float32>(
583 workloadFactory,
584 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100585 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100586 s_SimpleTestData,
587 armnn::ComparisonOperation::GreaterOrEqual);
588}
589
590LayerTestResult<uint8_t, 4> GreaterOrEqualBroadcast1ElementTest(
591 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100592 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
593 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100594{
595 return ComparisonTestImpl<armnn::DataType::Float32>(
596 workloadFactory,
597 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100598 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100599 s_Broadcast1ElementTestData,
600 armnn::ComparisonOperation::GreaterOrEqual);
601}
602
603LayerTestResult<uint8_t, 4> GreaterOrEqualBroadcast1dVectorTest(
604 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100605 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
606 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100607{
608 return ComparisonTestImpl<armnn::DataType::Float32>(
609 workloadFactory,
610 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100611 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100612 s_Broadcast1dVectorTestData,
613 armnn::ComparisonOperation::GreaterOrEqual);
614}
615
616LayerTestResult<uint8_t, 4> GreaterOrEqualSimpleFloat16Test(
617 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100618 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
619 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100620{
621 return ComparisonTestImpl<armnn::DataType::Float16>(
622 workloadFactory,
623 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100624 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100625 s_SimpleTestData,
626 armnn::ComparisonOperation::GreaterOrEqual);
627}
628
629LayerTestResult<uint8_t, 4> GreaterOrEqualBroadcast1ElementFloat16Test(
630 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100631 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
632 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100633{
634 return ComparisonTestImpl<armnn::DataType::Float16>(
635 workloadFactory,
636 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100637 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100638 s_Broadcast1ElementTestData,
639 armnn::ComparisonOperation::GreaterOrEqual);
640}
641
642LayerTestResult<uint8_t, 4> GreaterOrEqualBroadcast1dVectorFloat16Test(
643 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100644 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
645 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100646{
647 return ComparisonTestImpl<armnn::DataType::Float16>(
648 workloadFactory,
649 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100650 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100651 s_Broadcast1dVectorTestData,
652 armnn::ComparisonOperation::GreaterOrEqual);
653}
654
655LayerTestResult<uint8_t, 4> GreaterOrEqualSimpleUint8Test(
656 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100657 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
658 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100659{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000660 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100661 workloadFactory,
662 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100663 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100664 s_SimpleTestData,
665 armnn::ComparisonOperation::GreaterOrEqual);
666}
667
668LayerTestResult<uint8_t, 4> GreaterOrEqualBroadcast1ElementUint8Test(
669 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100670 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
671 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100672{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000673 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100674 workloadFactory,
675 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100676 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100677 s_Broadcast1ElementTestData,
678 armnn::ComparisonOperation::GreaterOrEqual);
679}
680
681LayerTestResult<uint8_t, 4> GreaterOrEqualBroadcast1dVectorUint8Test(
682 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100683 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
684 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100685{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000686 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100687 workloadFactory,
688 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100689 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100690 s_Broadcast1dVectorTestData,
691 armnn::ComparisonOperation::GreaterOrEqual);
692}
693
694// Less
695LayerTestResult<uint8_t, 4> LessSimpleTest(armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100696 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
697 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100698{
699 return ComparisonTestImpl<armnn::DataType::Float32>(
700 workloadFactory,
701 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100702 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100703 s_SimpleTestData,
704 armnn::ComparisonOperation::Less);
705}
706
707LayerTestResult<uint8_t, 4> LessBroadcast1ElementTest(
708 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100709 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
710 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100711{
712 return ComparisonTestImpl<armnn::DataType::Float32>(
713 workloadFactory,
714 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100715 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100716 s_Broadcast1ElementTestData,
717 armnn::ComparisonOperation::Less);
718}
719
720LayerTestResult<uint8_t, 4> LessBroadcast1dVectorTest(
721 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100722 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
723 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100724{
725 return ComparisonTestImpl<armnn::DataType::Float32>(
726 workloadFactory,
727 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100728 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100729 s_Broadcast1dVectorTestData,
730 armnn::ComparisonOperation::Less);
731}
732
733LayerTestResult<uint8_t, 4> LessSimpleFloat16Test(
734 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100735 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
736 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100737{
738 return ComparisonTestImpl<armnn::DataType::Float16>(
739 workloadFactory,
740 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100741 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100742 s_SimpleTestData,
743 armnn::ComparisonOperation::Less);
744}
745
746LayerTestResult<uint8_t, 4> LessBroadcast1ElementFloat16Test(
747 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100748 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
749 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100750{
751 return ComparisonTestImpl<armnn::DataType::Float16>(
752 workloadFactory,
753 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100754 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100755 s_Broadcast1ElementTestData,
756 armnn::ComparisonOperation::Less);
757}
758
759LayerTestResult<uint8_t, 4> LessBroadcast1dVectorFloat16Test(
760 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100761 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
762 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100763{
764 return ComparisonTestImpl<armnn::DataType::Float16>(
765 workloadFactory,
766 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100767 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100768 s_Broadcast1dVectorTestData,
769 armnn::ComparisonOperation::Less);
770}
771
772LayerTestResult<uint8_t, 4> LessSimpleUint8Test(
773 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100774 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
775 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100776{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000777 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100778 workloadFactory,
779 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100780 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100781 s_SimpleTestData,
782 armnn::ComparisonOperation::Less);
783}
784
785LayerTestResult<uint8_t, 4> LessBroadcast1ElementUint8Test(
786 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100787 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
788 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100789{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000790 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100791 workloadFactory,
792 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100793 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100794 s_Broadcast1ElementTestData,
795 armnn::ComparisonOperation::Less);
796}
797
798LayerTestResult<uint8_t, 4> LessBroadcast1dVectorUint8Test(
799 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100800 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
801 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100802{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000803 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100804 workloadFactory,
805 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100806 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100807 s_Broadcast1dVectorTestData,
808 armnn::ComparisonOperation::Less);
809}
810
811// LessOrEqual
812LayerTestResult<uint8_t, 4> LessOrEqualSimpleTest(
813 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100814 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
815 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100816{
817 return ComparisonTestImpl<armnn::DataType::Float32>(
818 workloadFactory,
819 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100820 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100821 s_SimpleTestData,
822 armnn::ComparisonOperation::LessOrEqual);
823}
824
825LayerTestResult<uint8_t, 4> LessOrEqualBroadcast1ElementTest(
826 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100827 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
828 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100829{
830 return ComparisonTestImpl<armnn::DataType::Float32>(
831 workloadFactory,
832 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100833 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100834 s_Broadcast1ElementTestData,
835 armnn::ComparisonOperation::LessOrEqual);
836}
837
838LayerTestResult<uint8_t, 4> LessOrEqualBroadcast1dVectorTest(
839 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100840 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
841 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100842{
843 return ComparisonTestImpl<armnn::DataType::Float32>(
844 workloadFactory,
845 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100846 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100847 s_Broadcast1dVectorTestData,
848 armnn::ComparisonOperation::LessOrEqual);
849}
850
851LayerTestResult<uint8_t, 4> LessOrEqualSimpleFloat16Test(
852 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100853 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
854 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100855{
856 return ComparisonTestImpl<armnn::DataType::Float16>(
857 workloadFactory,
858 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100859 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100860 s_SimpleTestData,
861 armnn::ComparisonOperation::LessOrEqual);
862}
863
864LayerTestResult<uint8_t, 4> LessOrEqualBroadcast1ElementFloat16Test(
865 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100866 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
867 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100868{
869 return ComparisonTestImpl<armnn::DataType::Float16>(
870 workloadFactory,
871 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100872 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100873 s_Broadcast1ElementTestData,
874 armnn::ComparisonOperation::LessOrEqual);
875}
876
877LayerTestResult<uint8_t, 4> LessOrEqualBroadcast1dVectorFloat16Test(
878 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100879 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
880 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100881{
882 return ComparisonTestImpl<armnn::DataType::Float16>(
883 workloadFactory,
884 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100885 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100886 s_Broadcast1dVectorTestData,
887 armnn::ComparisonOperation::LessOrEqual);
888}
889
890LayerTestResult<uint8_t, 4> LessOrEqualSimpleUint8Test(
891 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100892 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
893 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100894{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000895 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100896 workloadFactory,
897 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100898 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100899 s_SimpleTestData,
900 armnn::ComparisonOperation::LessOrEqual);
901}
902
903LayerTestResult<uint8_t, 4> LessOrEqualBroadcast1ElementUint8Test(
904 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100905 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
906 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100907{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000908 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100909 workloadFactory,
910 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100911 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100912 s_Broadcast1ElementTestData,
913 armnn::ComparisonOperation::LessOrEqual);
914}
915
916LayerTestResult<uint8_t, 4> LessOrEqualBroadcast1dVectorUint8Test(
917 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100918 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
919 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100920{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000921 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100922 workloadFactory,
923 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100924 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100925 s_Broadcast1dVectorTestData,
926 armnn::ComparisonOperation::LessOrEqual);
927}
928
929// NotEqual
930LayerTestResult<uint8_t, 4> NotEqualSimpleTest(
931 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100932 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
933 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100934{
935 return ComparisonTestImpl<armnn::DataType::Float32>(
936 workloadFactory,
937 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100938 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100939 s_SimpleTestData,
940 armnn::ComparisonOperation::NotEqual);
941}
942
943LayerTestResult<uint8_t, 4> NotEqualBroadcast1ElementTest(
944 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100945 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
946 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100947{
948 return ComparisonTestImpl<armnn::DataType::Float32>(
949 workloadFactory,
950 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100951 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100952 s_Broadcast1ElementTestData,
953 armnn::ComparisonOperation::NotEqual);
954}
955
956LayerTestResult<uint8_t, 4> NotEqualBroadcast1dVectorTest(
957 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100958 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
959 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100960{
961 return ComparisonTestImpl<armnn::DataType::Float32>(
962 workloadFactory,
963 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100964 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100965 s_Broadcast1dVectorTestData,
966 armnn::ComparisonOperation::NotEqual);
967}
968
969LayerTestResult<uint8_t, 4> NotEqualSimpleFloat16Test(
970 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100971 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
972 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100973{
974 return ComparisonTestImpl<armnn::DataType::Float16>(
975 workloadFactory,
976 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100977 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100978 s_SimpleTestData,
979 armnn::ComparisonOperation::NotEqual);
980}
981
982LayerTestResult<uint8_t, 4> NotEqualBroadcast1ElementFloat16Test(
983 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100984 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
985 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100986{
987 return ComparisonTestImpl<armnn::DataType::Float16>(
988 workloadFactory,
989 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100990 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100991 s_Broadcast1ElementTestData,
992 armnn::ComparisonOperation::NotEqual);
993}
994
995LayerTestResult<uint8_t, 4> NotEqualBroadcast1dVectorFloat16Test(
996 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100997 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
998 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100999{
1000 return ComparisonTestImpl<armnn::DataType::Float16>(
1001 workloadFactory,
1002 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +01001003 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001004 s_Broadcast1dVectorTestData,
1005 armnn::ComparisonOperation::NotEqual);
1006}
1007
1008LayerTestResult<uint8_t, 4> NotEqualSimpleUint8Test(
1009 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +01001010 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1011 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001012{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001013 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001014 workloadFactory,
1015 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +01001016 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001017 s_SimpleTestData,
1018 armnn::ComparisonOperation::NotEqual);
1019}
1020
1021LayerTestResult<uint8_t, 4> NotEqualBroadcast1ElementUint8Test(
1022 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +01001023 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1024 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001025{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001026 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001027 workloadFactory,
1028 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +01001029 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001030 s_Broadcast1ElementTestData,
1031 armnn::ComparisonOperation::NotEqual);
1032}
1033
1034LayerTestResult<uint8_t, 4> NotEqualBroadcast1dVectorUint8Test(
1035 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +01001036 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1037 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001038{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001039 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001040 workloadFactory,
1041 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +01001042 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001043 s_Broadcast1dVectorTestData,
1044 armnn::ComparisonOperation::NotEqual);
1045}