blob: 68bc58886036aa0208bc360f8b4c8a86194e240e [file] [log] [blame]
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001//
Teresa Charlinfbf0e5b2020-08-17 01:01:06 +01002// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01003// SPDX-License-Identifier: MIT
4//
5
6#include "ComparisonTestImpl.hpp"
7
Narumol Prangnawaratac2770a2020-04-01 16:51:23 +01008#include <armnn/utility/Assert.hpp>
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01009#include <Half.hpp>
Aron Virginas-Tar48623a02019-10-22 10:00:28 +010010#include <QuantizeHelper.hpp>
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010011#include <ResolveType.hpp>
12
13#include <backendsCommon/Workload.hpp>
14#include <backendsCommon/WorkloadData.hpp>
15
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010016#include <backendsCommon/test/TensorCopyUtils.hpp>
17#include <backendsCommon/test/WorkloadTestUtils.hpp>
18
19#include <test/TensorHelpers.hpp>
20
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010021namespace
22{
23
24template <std::size_t NumDims,
25 armnn::DataType ArmnnInType,
26 typename InType = armnn::ResolveType<ArmnnInType>>
27LayerTestResult<uint8_t, NumDims> ComparisonTestImpl(
28 armnn::IWorkloadFactory & workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +010029 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
30 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010031 const armnn::ComparisonDescriptor& descriptor,
32 const armnn::TensorShape& shape0,
33 std::vector<InType> values0,
34 float quantScale0,
35 int quantOffset0,
36 const armnn::TensorShape& shape1,
37 std::vector<InType> values1,
38 float quantScale1,
39 int quantOffset1,
40 const armnn::TensorShape& outShape,
41 std::vector<uint8_t> outValues,
42 float outQuantScale,
43 int outQuantOffset)
44{
Jan Eilers8eb25602020-03-09 12:13:48 +000045 IgnoreUnused(memoryManager);
Narumol Prangnawaratac2770a2020-04-01 16:51:23 +010046 ARMNN_ASSERT(shape0.GetNumDimensions() == NumDims);
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010047 armnn::TensorInfo inputTensorInfo0(shape0, ArmnnInType, quantScale0, quantOffset0);
48
Narumol Prangnawaratac2770a2020-04-01 16:51:23 +010049 ARMNN_ASSERT(shape1.GetNumDimensions() == NumDims);
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010050 armnn::TensorInfo inputTensorInfo1(shape1, ArmnnInType, quantScale1, quantOffset1);
51
Narumol Prangnawaratac2770a2020-04-01 16:51:23 +010052 ARMNN_ASSERT(outShape.GetNumDimensions() == NumDims);
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010053 armnn::TensorInfo outputTensorInfo(outShape, armnn::DataType::Boolean, outQuantScale, outQuantOffset);
54
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
69 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateComparison(qDescriptor, info);
70
71 inputHandle0->Allocate();
72 inputHandle1->Allocate();
73 outputHandle->Allocate();
74
Sadik Armagan483c8112021-06-01 09:24:52 +010075 CopyDataToITensorHandle(inputHandle0.get(), values0.data());
76 CopyDataToITensorHandle(inputHandle1.get(), values1.data());
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010077
78 workload->PostAllocationConfigure();
79 ExecuteWorkload(*workload, memoryManager);
80
Sadik Armagan483c8112021-06-01 09:24:52 +010081 CopyDataFromITensorHandle(actualOutput.data(), outputHandle.get());
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010082
Sadik Armagan483c8112021-06-01 09:24:52 +010083 return LayerTestResult<uint8_t, NumDims>(actualOutput,
84 outValues,
85 outputHandle->GetShape(),
86 outputTensorInfo.GetShape(),
87 true);
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010088}
89
90template <std::size_t NumDims,
91 armnn::DataType ArmnnInType,
92 typename InType = armnn::ResolveType<ArmnnInType>>
93LayerTestResult<uint8_t, NumDims> ComparisonTestImpl(
94 armnn::IWorkloadFactory & workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +010095 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
96 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +010097 const armnn::ComparisonDescriptor& descriptor,
98 const armnn::TensorShape& shape0,
99 std::vector<InType> values0,
100 const armnn::TensorShape& shape1,
101 std::vector<InType> values1,
102 const armnn::TensorShape outShape,
103 std::vector<uint8_t> outValues,
104 float quantScale = 1.f,
105 int quantOffset = 0)
106{
107 return ComparisonTestImpl<NumDims, ArmnnInType>(
108 workloadFactory,
109 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100110 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100111 descriptor,
112 shape0,
113 values0,
114 quantScale,
115 quantOffset,
116 shape1,
117 values1,
118 quantScale,
119 quantOffset,
120 outShape,
121 outValues,
122 quantScale,
123 quantOffset);
124}
125
126template<typename TestData>
127std::vector<uint8_t> GetExpectedOutputData(const TestData& testData, armnn::ComparisonOperation operation)
128{
129 switch (operation)
130 {
131 case armnn::ComparisonOperation::Equal:
132 return testData.m_OutputEqual;
133 case armnn::ComparisonOperation::Greater:
134 return testData.m_OutputGreater;
135 case armnn::ComparisonOperation::GreaterOrEqual:
136 return testData.m_OutputGreaterOrEqual;
137 case armnn::ComparisonOperation::Less:
138 return testData.m_OutputLess;
139 case armnn::ComparisonOperation::LessOrEqual:
140 return testData.m_OutputLessOrEqual;
141 case armnn::ComparisonOperation::NotEqual:
142 default:
143 return testData.m_OutputNotEqual;
144 }
145}
146
147template<armnn::DataType ArmnnInType, typename TestData>
148LayerTestResult<uint8_t, 4> ComparisonTestImpl(armnn::IWorkloadFactory& workloadFactory,
149 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100150 const armnn::ITensorHandleFactory& tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100151 const TestData& testData,
152 armnn::ComparisonOperation operation,
153 float quantScale = 1.f,
154 int quantOffset = 0)
155{
156 using T = armnn::ResolveType<ArmnnInType>;
157
Aron Virginas-Tar48623a02019-10-22 10:00:28 +0100158 std::vector<T> inputData0 = armnnUtils::QuantizedVector<T>(testData.m_InputData0, quantScale, quantOffset);
159 std::vector<T> inputData1 = armnnUtils::QuantizedVector<T>(testData.m_InputData1, quantScale, quantOffset);
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100160
161 return ComparisonTestImpl<4, ArmnnInType>(
162 workloadFactory,
163 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100164 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100165 armnn::ComparisonDescriptor(operation),
166 testData.m_InputShape0,
167 inputData0,
168 testData.m_InputShape1,
169 inputData1,
170 testData.m_OutputShape,
171 GetExpectedOutputData(testData, operation),
172 quantScale,
173 quantOffset);
174}
175
176class ComparisonTestData
177{
178public:
179 ComparisonTestData() = default;
180 virtual ~ComparisonTestData() = default;
181
182 armnn::TensorShape m_InputShape0;
183 armnn::TensorShape m_InputShape1;
184 armnn::TensorShape m_OutputShape;
185
186 std::vector<float> m_InputData0;
187 std::vector<float> m_InputData1;
188
189 std::vector<uint8_t> m_OutputEqual;
190 std::vector<uint8_t> m_OutputGreater;
191 std::vector<uint8_t> m_OutputGreaterOrEqual;
192 std::vector<uint8_t> m_OutputLess;
193 std::vector<uint8_t> m_OutputLessOrEqual;
194 std::vector<uint8_t> m_OutputNotEqual;
195};
196
197class SimpleTestData : public ComparisonTestData
198{
199public:
200 SimpleTestData() : ComparisonTestData()
201 {
202 m_InputShape0 = { 2, 2, 2, 2 };
203
204 m_InputShape1 = m_InputShape0;
205 m_OutputShape = m_InputShape0;
206
207 m_InputData0 =
208 {
209 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
210 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
211 };
212
213 m_InputData1 =
214 {
215 1.f, 1.f, 1.f, 1.f, 3.f, 3.f, 3.f, 3.f,
216 5.f, 5.f, 5.f, 5.f, 4.f, 4.f, 4.f, 4.f
217 };
218
219 m_OutputEqual =
220 {
221 1, 1, 1, 1, 0, 0, 0, 0,
222 0, 0, 0, 0, 1, 1, 1, 1
223 };
224
225 m_OutputGreater =
226 {
227 0, 0, 0, 0, 1, 1, 1, 1,
228 0, 0, 0, 0, 0, 0, 0, 0
229 };
230
231 m_OutputGreaterOrEqual =
232 {
233 1, 1, 1, 1, 1, 1, 1, 1,
234 0, 0, 0, 0, 1, 1, 1, 1
235 };
236
237 m_OutputLess =
238 {
239 0, 0, 0, 0, 0, 0, 0, 0,
240 1, 1, 1, 1, 0, 0, 0, 0
241 };
242
243 m_OutputLessOrEqual =
244 {
245 1, 1, 1, 1, 0, 0, 0, 0,
246 1, 1, 1, 1, 1, 1, 1, 1
247 };
248
249 m_OutputNotEqual =
250 {
251 0, 0, 0, 0, 1, 1, 1, 1,
252 1, 1, 1, 1, 0, 0, 0, 0
253 };
254 }
255};
256
257class Broadcast1ElementTestData : public ComparisonTestData
258{
259public:
260 Broadcast1ElementTestData() : ComparisonTestData()
261 {
262 m_InputShape0 = { 1, 2, 2, 2 };
263 m_InputShape1 = { 1, 1, 1, 1 };
264
265 m_OutputShape = m_InputShape0;
266
267 m_InputData0 = { 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f };
268 m_InputData1 = { 3.f };
269
270 m_OutputEqual = { 0, 0, 1, 0, 0, 0, 0, 0 };
271 m_OutputGreater = { 0, 0, 0, 1, 1, 1, 1, 1 };
272 m_OutputGreaterOrEqual = { 0, 0, 1, 1, 1, 1, 1, 1 };
273 m_OutputLess = { 1, 1, 0, 0, 0, 0, 0, 0 };
274 m_OutputLessOrEqual = { 1, 1, 1, 0, 0, 0, 0, 0 };
275 m_OutputNotEqual = { 1, 1, 0, 1, 1, 1, 1, 1 };
276 }
277};
278
279class Broadcast1dVectorTestData : public ComparisonTestData
280{
281public:
282 Broadcast1dVectorTestData() : ComparisonTestData()
283 {
284 m_InputShape0 = { 1, 2, 2, 3 };
285 m_InputShape1 = { 1, 1, 1, 3 };
286
287 m_OutputShape = m_InputShape0;
288
289 m_InputData0 =
290 {
291 1.f, 2.f, 3.f, 4.f, 5.f, 6.f,
292 7.f, 8.f, 9.f, 10.f, 11.f, 12.f
293 };
294
295 m_InputData1 = { 4.f, 5.f, 6.f };
296
297 m_OutputEqual =
298 {
299 0, 0, 0, 1, 1, 1,
300 0, 0, 0, 0, 0, 0
301 };
302
303 m_OutputGreater =
304 {
305 0, 0, 0, 0, 0, 0,
306 1, 1, 1, 1, 1, 1
307 };
308
309 m_OutputGreaterOrEqual =
310 {
311 0, 0, 0, 1, 1, 1,
312 1, 1, 1, 1, 1, 1
313 };
314
315 m_OutputLess =
316 {
317 1, 1, 1, 0, 0, 0,
318 0, 0, 0, 0, 0, 0
319 };
320
321 m_OutputLessOrEqual =
322 {
323 1, 1, 1, 1, 1, 1,
324 0, 0, 0, 0, 0, 0
325 };
326
327 m_OutputNotEqual =
328 {
329 1, 1, 1, 0, 0, 0,
330 1, 1, 1, 1, 1, 1
331 };
332 }
333};
334
335static SimpleTestData s_SimpleTestData;
336static Broadcast1ElementTestData s_Broadcast1ElementTestData;
337static Broadcast1dVectorTestData s_Broadcast1dVectorTestData;
338
339} // anonymous namespace
340
341// Equal
342LayerTestResult<uint8_t, 4> EqualSimpleTest(armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100343 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
344 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100345{
346 return ComparisonTestImpl<armnn::DataType::Float32>(
347 workloadFactory,
348 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100349 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100350 s_SimpleTestData,
351 armnn::ComparisonOperation::Equal);
352}
353
354LayerTestResult<uint8_t, 4> EqualBroadcast1ElementTest(
355 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100356 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
357 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100358{
359 return ComparisonTestImpl<armnn::DataType::Float32>(
360 workloadFactory,
361 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100362 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100363 s_Broadcast1ElementTestData,
364 armnn::ComparisonOperation::Equal);
365}
366
367LayerTestResult<uint8_t, 4> EqualBroadcast1dVectorTest(
368 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100369 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
370 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100371{
372 return ComparisonTestImpl<armnn::DataType::Float32>(
373 workloadFactory,
374 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100375 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100376 s_Broadcast1dVectorTestData,
377 armnn::ComparisonOperation::Equal);
378}
379
380LayerTestResult<uint8_t, 4> EqualSimpleFloat16Test(
381 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100382 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
383 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100384{
385 return ComparisonTestImpl<armnn::DataType::Float16>(
386 workloadFactory,
387 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100388 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100389 s_SimpleTestData,
390 armnn::ComparisonOperation::Equal);
391}
392
393LayerTestResult<uint8_t, 4> EqualBroadcast1ElementFloat16Test(
394 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100395 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
396 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100397{
398 return ComparisonTestImpl<armnn::DataType::Float16>(
399 workloadFactory,
400 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100401 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100402 s_Broadcast1ElementTestData,
403 armnn::ComparisonOperation::Equal);
404}
405
406LayerTestResult<uint8_t, 4> EqualBroadcast1dVectorFloat16Test(
407 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100408 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
409 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100410{
411 return ComparisonTestImpl<armnn::DataType::Float16>(
412 workloadFactory,
413 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100414 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100415 s_Broadcast1dVectorTestData,
416 armnn::ComparisonOperation::Equal);
417}
418
419LayerTestResult<uint8_t, 4> EqualSimpleUint8Test(
420 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100421 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
422 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100423{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000424 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100425 workloadFactory,
426 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100427 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100428 s_SimpleTestData,
429 armnn::ComparisonOperation::Equal);
430}
431
432LayerTestResult<uint8_t, 4> EqualBroadcast1ElementUint8Test(
433 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100434 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
435 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100436{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000437 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100438 workloadFactory,
439 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100440 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100441 s_Broadcast1ElementTestData,
442 armnn::ComparisonOperation::Equal);
443}
444
445LayerTestResult<uint8_t, 4> EqualBroadcast1dVectorUint8Test(
446 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100447 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
448 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100449{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000450 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100451 workloadFactory,
452 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100453 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100454 s_Broadcast1dVectorTestData,
455 armnn::ComparisonOperation::Equal);
456}
457
458// Greater
459LayerTestResult<uint8_t, 4> GreaterSimpleTest(armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100460 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
461 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100462{
463 return ComparisonTestImpl<armnn::DataType::Float32>(
464 workloadFactory,
465 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100466 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100467 s_SimpleTestData,
468 armnn::ComparisonOperation::Greater);
469}
470
471LayerTestResult<uint8_t, 4> GreaterBroadcast1ElementTest(
472 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100473 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
474 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100475{
476 return ComparisonTestImpl<armnn::DataType::Float32>(
477 workloadFactory,
478 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100479 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100480 s_Broadcast1ElementTestData,
481 armnn::ComparisonOperation::Greater);
482}
483
484LayerTestResult<uint8_t, 4> GreaterBroadcast1dVectorTest(
485 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100486 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
487 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100488{
489 return ComparisonTestImpl<armnn::DataType::Float32>(
490 workloadFactory,
491 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100492 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100493 s_Broadcast1dVectorTestData,
494 armnn::ComparisonOperation::Greater);
495}
496
497LayerTestResult<uint8_t, 4> GreaterSimpleFloat16Test(
498 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100499 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
500 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100501{
502 return ComparisonTestImpl<armnn::DataType::Float16>(
503 workloadFactory,
504 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100505 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100506 s_SimpleTestData,
507 armnn::ComparisonOperation::Greater);
508}
509
510LayerTestResult<uint8_t, 4> GreaterBroadcast1ElementFloat16Test(
511 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100512 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
513 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100514{
515 return ComparisonTestImpl<armnn::DataType::Float16>(
516 workloadFactory,
517 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100518 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100519 s_Broadcast1ElementTestData,
520 armnn::ComparisonOperation::Greater);
521}
522
523LayerTestResult<uint8_t, 4> GreaterBroadcast1dVectorFloat16Test(
524 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100525 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
526 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100527{
528 return ComparisonTestImpl<armnn::DataType::Float16>(
529 workloadFactory,
530 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100531 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100532 s_Broadcast1dVectorTestData,
533 armnn::ComparisonOperation::Greater);
534}
535
536LayerTestResult<uint8_t, 4> GreaterSimpleUint8Test(
537 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100538 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
539 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100540{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000541 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100542 workloadFactory,
543 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100544 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100545 s_SimpleTestData,
546 armnn::ComparisonOperation::Greater);
547}
548
549LayerTestResult<uint8_t, 4> GreaterBroadcast1ElementUint8Test(
550 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100551 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
552 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100553{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000554 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100555 workloadFactory,
556 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100557 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100558 s_Broadcast1ElementTestData,
559 armnn::ComparisonOperation::Greater);
560}
561
562LayerTestResult<uint8_t, 4> GreaterBroadcast1dVectorUint8Test(
563 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100564 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
565 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100566{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000567 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100568 workloadFactory,
569 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100570 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100571 s_Broadcast1dVectorTestData,
572 armnn::ComparisonOperation::Greater);
573}
574
575// GreaterOrEqual
576LayerTestResult<uint8_t, 4> GreaterOrEqualSimpleTest(
577 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100578 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
579 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100580{
581 return ComparisonTestImpl<armnn::DataType::Float32>(
582 workloadFactory,
583 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100584 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100585 s_SimpleTestData,
586 armnn::ComparisonOperation::GreaterOrEqual);
587}
588
589LayerTestResult<uint8_t, 4> GreaterOrEqualBroadcast1ElementTest(
590 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100591 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
592 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100593{
594 return ComparisonTestImpl<armnn::DataType::Float32>(
595 workloadFactory,
596 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100597 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100598 s_Broadcast1ElementTestData,
599 armnn::ComparisonOperation::GreaterOrEqual);
600}
601
602LayerTestResult<uint8_t, 4> GreaterOrEqualBroadcast1dVectorTest(
603 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100604 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
605 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100606{
607 return ComparisonTestImpl<armnn::DataType::Float32>(
608 workloadFactory,
609 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100610 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100611 s_Broadcast1dVectorTestData,
612 armnn::ComparisonOperation::GreaterOrEqual);
613}
614
615LayerTestResult<uint8_t, 4> GreaterOrEqualSimpleFloat16Test(
616 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100617 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
618 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100619{
620 return ComparisonTestImpl<armnn::DataType::Float16>(
621 workloadFactory,
622 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100623 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100624 s_SimpleTestData,
625 armnn::ComparisonOperation::GreaterOrEqual);
626}
627
628LayerTestResult<uint8_t, 4> GreaterOrEqualBroadcast1ElementFloat16Test(
629 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100630 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
631 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100632{
633 return ComparisonTestImpl<armnn::DataType::Float16>(
634 workloadFactory,
635 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100636 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100637 s_Broadcast1ElementTestData,
638 armnn::ComparisonOperation::GreaterOrEqual);
639}
640
641LayerTestResult<uint8_t, 4> GreaterOrEqualBroadcast1dVectorFloat16Test(
642 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100643 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
644 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100645{
646 return ComparisonTestImpl<armnn::DataType::Float16>(
647 workloadFactory,
648 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100649 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100650 s_Broadcast1dVectorTestData,
651 armnn::ComparisonOperation::GreaterOrEqual);
652}
653
654LayerTestResult<uint8_t, 4> GreaterOrEqualSimpleUint8Test(
655 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100656 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
657 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100658{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000659 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100660 workloadFactory,
661 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100662 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100663 s_SimpleTestData,
664 armnn::ComparisonOperation::GreaterOrEqual);
665}
666
667LayerTestResult<uint8_t, 4> GreaterOrEqualBroadcast1ElementUint8Test(
668 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100669 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
670 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100671{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000672 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100673 workloadFactory,
674 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100675 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100676 s_Broadcast1ElementTestData,
677 armnn::ComparisonOperation::GreaterOrEqual);
678}
679
680LayerTestResult<uint8_t, 4> GreaterOrEqualBroadcast1dVectorUint8Test(
681 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100682 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
683 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100684{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000685 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100686 workloadFactory,
687 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100688 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100689 s_Broadcast1dVectorTestData,
690 armnn::ComparisonOperation::GreaterOrEqual);
691}
692
693// Less
694LayerTestResult<uint8_t, 4> LessSimpleTest(armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100695 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
696 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100697{
698 return ComparisonTestImpl<armnn::DataType::Float32>(
699 workloadFactory,
700 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100701 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100702 s_SimpleTestData,
703 armnn::ComparisonOperation::Less);
704}
705
706LayerTestResult<uint8_t, 4> LessBroadcast1ElementTest(
707 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100708 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
709 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100710{
711 return ComparisonTestImpl<armnn::DataType::Float32>(
712 workloadFactory,
713 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100714 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100715 s_Broadcast1ElementTestData,
716 armnn::ComparisonOperation::Less);
717}
718
719LayerTestResult<uint8_t, 4> LessBroadcast1dVectorTest(
720 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100721 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
722 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100723{
724 return ComparisonTestImpl<armnn::DataType::Float32>(
725 workloadFactory,
726 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100727 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100728 s_Broadcast1dVectorTestData,
729 armnn::ComparisonOperation::Less);
730}
731
732LayerTestResult<uint8_t, 4> LessSimpleFloat16Test(
733 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100734 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
735 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100736{
737 return ComparisonTestImpl<armnn::DataType::Float16>(
738 workloadFactory,
739 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100740 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100741 s_SimpleTestData,
742 armnn::ComparisonOperation::Less);
743}
744
745LayerTestResult<uint8_t, 4> LessBroadcast1ElementFloat16Test(
746 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100747 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
748 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100749{
750 return ComparisonTestImpl<armnn::DataType::Float16>(
751 workloadFactory,
752 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100753 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100754 s_Broadcast1ElementTestData,
755 armnn::ComparisonOperation::Less);
756}
757
758LayerTestResult<uint8_t, 4> LessBroadcast1dVectorFloat16Test(
759 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100760 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
761 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100762{
763 return ComparisonTestImpl<armnn::DataType::Float16>(
764 workloadFactory,
765 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100766 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100767 s_Broadcast1dVectorTestData,
768 armnn::ComparisonOperation::Less);
769}
770
771LayerTestResult<uint8_t, 4> LessSimpleUint8Test(
772 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100773 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
774 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100775{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000776 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100777 workloadFactory,
778 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100779 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100780 s_SimpleTestData,
781 armnn::ComparisonOperation::Less);
782}
783
784LayerTestResult<uint8_t, 4> LessBroadcast1ElementUint8Test(
785 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100786 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
787 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100788{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000789 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100790 workloadFactory,
791 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100792 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100793 s_Broadcast1ElementTestData,
794 armnn::ComparisonOperation::Less);
795}
796
797LayerTestResult<uint8_t, 4> LessBroadcast1dVectorUint8Test(
798 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100799 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
800 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100801{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000802 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100803 workloadFactory,
804 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100805 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100806 s_Broadcast1dVectorTestData,
807 armnn::ComparisonOperation::Less);
808}
809
810// LessOrEqual
811LayerTestResult<uint8_t, 4> LessOrEqualSimpleTest(
812 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100813 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
814 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100815{
816 return ComparisonTestImpl<armnn::DataType::Float32>(
817 workloadFactory,
818 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100819 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100820 s_SimpleTestData,
821 armnn::ComparisonOperation::LessOrEqual);
822}
823
824LayerTestResult<uint8_t, 4> LessOrEqualBroadcast1ElementTest(
825 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100826 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
827 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100828{
829 return ComparisonTestImpl<armnn::DataType::Float32>(
830 workloadFactory,
831 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100832 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100833 s_Broadcast1ElementTestData,
834 armnn::ComparisonOperation::LessOrEqual);
835}
836
837LayerTestResult<uint8_t, 4> LessOrEqualBroadcast1dVectorTest(
838 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100839 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
840 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100841{
842 return ComparisonTestImpl<armnn::DataType::Float32>(
843 workloadFactory,
844 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100845 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100846 s_Broadcast1dVectorTestData,
847 armnn::ComparisonOperation::LessOrEqual);
848}
849
850LayerTestResult<uint8_t, 4> LessOrEqualSimpleFloat16Test(
851 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100852 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
853 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100854{
855 return ComparisonTestImpl<armnn::DataType::Float16>(
856 workloadFactory,
857 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100858 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100859 s_SimpleTestData,
860 armnn::ComparisonOperation::LessOrEqual);
861}
862
863LayerTestResult<uint8_t, 4> LessOrEqualBroadcast1ElementFloat16Test(
864 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100865 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
866 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100867{
868 return ComparisonTestImpl<armnn::DataType::Float16>(
869 workloadFactory,
870 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100871 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100872 s_Broadcast1ElementTestData,
873 armnn::ComparisonOperation::LessOrEqual);
874}
875
876LayerTestResult<uint8_t, 4> LessOrEqualBroadcast1dVectorFloat16Test(
877 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100878 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
879 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100880{
881 return ComparisonTestImpl<armnn::DataType::Float16>(
882 workloadFactory,
883 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100884 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100885 s_Broadcast1dVectorTestData,
886 armnn::ComparisonOperation::LessOrEqual);
887}
888
889LayerTestResult<uint8_t, 4> LessOrEqualSimpleUint8Test(
890 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100891 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
892 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100893{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000894 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100895 workloadFactory,
896 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100897 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100898 s_SimpleTestData,
899 armnn::ComparisonOperation::LessOrEqual);
900}
901
902LayerTestResult<uint8_t, 4> LessOrEqualBroadcast1ElementUint8Test(
903 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100904 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
905 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100906{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000907 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100908 workloadFactory,
909 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100910 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100911 s_Broadcast1ElementTestData,
912 armnn::ComparisonOperation::LessOrEqual);
913}
914
915LayerTestResult<uint8_t, 4> LessOrEqualBroadcast1dVectorUint8Test(
916 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100917 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
918 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100919{
Derek Lambertif90c56d2020-01-10 17:14:08 +0000920 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100921 workloadFactory,
922 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100923 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100924 s_Broadcast1dVectorTestData,
925 armnn::ComparisonOperation::LessOrEqual);
926}
927
928// NotEqual
929LayerTestResult<uint8_t, 4> NotEqualSimpleTest(
930 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100931 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
932 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100933{
934 return ComparisonTestImpl<armnn::DataType::Float32>(
935 workloadFactory,
936 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100937 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100938 s_SimpleTestData,
939 armnn::ComparisonOperation::NotEqual);
940}
941
942LayerTestResult<uint8_t, 4> NotEqualBroadcast1ElementTest(
943 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100944 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
945 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100946{
947 return ComparisonTestImpl<armnn::DataType::Float32>(
948 workloadFactory,
949 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100950 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100951 s_Broadcast1ElementTestData,
952 armnn::ComparisonOperation::NotEqual);
953}
954
955LayerTestResult<uint8_t, 4> NotEqualBroadcast1dVectorTest(
956 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100957 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
958 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100959{
960 return ComparisonTestImpl<armnn::DataType::Float32>(
961 workloadFactory,
962 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100963 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100964 s_Broadcast1dVectorTestData,
965 armnn::ComparisonOperation::NotEqual);
966}
967
968LayerTestResult<uint8_t, 4> NotEqualSimpleFloat16Test(
969 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100970 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
971 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100972{
973 return ComparisonTestImpl<armnn::DataType::Float16>(
974 workloadFactory,
975 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100976 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100977 s_SimpleTestData,
978 armnn::ComparisonOperation::NotEqual);
979}
980
981LayerTestResult<uint8_t, 4> NotEqualBroadcast1ElementFloat16Test(
982 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100983 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
984 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100985{
986 return ComparisonTestImpl<armnn::DataType::Float16>(
987 workloadFactory,
988 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +0100989 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100990 s_Broadcast1ElementTestData,
991 armnn::ComparisonOperation::NotEqual);
992}
993
994LayerTestResult<uint8_t, 4> NotEqualBroadcast1dVectorFloat16Test(
995 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +0100996 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
997 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +0100998{
999 return ComparisonTestImpl<armnn::DataType::Float16>(
1000 workloadFactory,
1001 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +01001002 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001003 s_Broadcast1dVectorTestData,
1004 armnn::ComparisonOperation::NotEqual);
1005}
1006
1007LayerTestResult<uint8_t, 4> NotEqualSimpleUint8Test(
1008 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +01001009 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1010 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001011{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001012 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001013 workloadFactory,
1014 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +01001015 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001016 s_SimpleTestData,
1017 armnn::ComparisonOperation::NotEqual);
1018}
1019
1020LayerTestResult<uint8_t, 4> NotEqualBroadcast1ElementUint8Test(
1021 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +01001022 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1023 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001024{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001025 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001026 workloadFactory,
1027 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +01001028 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001029 s_Broadcast1ElementTestData,
1030 armnn::ComparisonOperation::NotEqual);
1031}
1032
1033LayerTestResult<uint8_t, 4> NotEqualBroadcast1dVectorUint8Test(
1034 armnn::IWorkloadFactory& workloadFactory,
Keith Davisf500d6c2020-08-31 08:32:55 +01001035 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
1036 const armnn::ITensorHandleFactory& tensorHandleFactory)
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001037{
Derek Lambertif90c56d2020-01-10 17:14:08 +00001038 return ComparisonTestImpl<armnn::DataType::QAsymmU8>(
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001039 workloadFactory,
1040 memoryManager,
Keith Davisf500d6c2020-08-31 08:32:55 +01001041 tensorHandleFactory,
Aron Virginas-Tar3bc00ec2019-10-18 15:42:58 +01001042 s_Broadcast1dVectorTestData,
1043 armnn::ComparisonOperation::NotEqual);
1044}