21 template <std::
size_t NumDims>
27 std::vector<uint8_t> input,
29 std::vector<uint8_t> expectedOutput,
38 std::vector<uint8_t> actualOutput(outputTensorInfo.GetNumElements());
40 std::unique_ptr <armnn::ITensorHandle> inputHandle = tensorHandleFactory.
CreateTensorHandle(inputTensorInfo);
41 std::unique_ptr <armnn::ITensorHandle> outputHandle = tensorHandleFactory.
CreateTensorHandle(outputTensorInfo);
48 AddInputToWorkload(qDesc, info, inputTensorInfo, inputHandle.get());
49 AddOutputToWorkload(qDesc, info, outputTensorInfo, outputHandle.get());
53 inputHandle->Allocate();
54 outputHandle->Allocate();
58 workload->PostAllocationConfigure();
59 ExecuteWorkload(*workload, memoryManager);
65 outputHandle->GetShape(),
66 outputTensorInfo.GetShape(),
70 template <std::
size_t NumDims>
77 std::vector<uint8_t> input0,
78 std::vector<uint8_t> input1,
80 std::vector<uint8_t> expectedOutput,
92 std::vector<uint8_t> actualOutput(outputTensorInfo.GetNumElements());
94 std::unique_ptr <armnn::ITensorHandle> inputHandle0 = tensorHandleFactory.
CreateTensorHandle(inputTensorInfo0);
95 std::unique_ptr <armnn::ITensorHandle> inputHandle1 = tensorHandleFactory.
CreateTensorHandle(inputTensorInfo1);
96 std::unique_ptr <armnn::ITensorHandle> outputHandle = tensorHandleFactory.
CreateTensorHandle(outputTensorInfo);
103 AddInputToWorkload(qDesc, info, inputTensorInfo0, inputHandle0.get());
104 AddInputToWorkload(qDesc, info, inputTensorInfo1, inputHandle1.get());
105 AddOutputToWorkload(qDesc, info, outputTensorInfo, outputHandle.get());
109 inputHandle0->Allocate();
110 inputHandle1->Allocate();
111 outputHandle->Allocate();
116 workload->PostAllocationConfigure();
117 ExecuteWorkload(*workload, memoryManager);
123 outputHandle->GetShape(),
124 outputTensorInfo.GetShape(),
131 UnaryTestData() =
default;
132 virtual ~UnaryTestData() =
default;
137 std::vector<uint8_t> m_InputData;
139 std::vector<uint8_t> m_OutputNot;
145 BinaryTestData() =
default;
146 virtual ~BinaryTestData() =
default;
152 std::vector<uint8_t> m_InputData0;
153 std::vector<uint8_t> m_InputData1;
155 std::vector<uint8_t> m_OutputAnd;
156 std::vector<uint8_t> m_OutputOr;
159 class SimpleUnaryTestData :
public UnaryTestData
162 SimpleUnaryTestData() : UnaryTestData()
164 m_InputShape = { 1, 1, 1, 4 };
165 m_OutputShape = m_InputShape;
169 true,
false,
false,
true 174 false,
true,
true,
false 179 class SimpleUnaryIntTestData :
public UnaryTestData
182 SimpleUnaryIntTestData() : UnaryTestData()
184 m_InputShape = { 1, 1, 1, 4 };
185 m_OutputShape = m_InputShape;
199 class SimpleBinaryTestData :
public BinaryTestData
202 SimpleBinaryTestData() : BinaryTestData()
204 m_InputShape0 = { 1, 1, 1, 4 };
205 m_InputShape1 = m_InputShape0;
206 m_OutputShape = m_InputShape1;
210 true,
false,
false,
true 215 true,
false,
true,
false 220 true,
false,
false,
false 225 true,
false,
true,
true 230 class SimpleBinaryIntTestData :
public BinaryTestData
233 SimpleBinaryIntTestData() : BinaryTestData()
235 m_InputShape0 = { 1, 1, 1, 4 };
236 m_InputShape1 = m_InputShape0;
237 m_OutputShape = m_InputShape1;
261 class BroadcastBinary1TestData :
public BinaryTestData
264 BroadcastBinary1TestData() : BinaryTestData()
266 m_InputShape0 = { 1, 1, 1, 4 };
267 m_InputShape1 = { 1, 1, 1, 1 };
268 m_OutputShape = m_InputShape0;
272 true,
false,
false,
true 282 true,
false,
false,
true 287 true,
true,
true,
true 292 class BroadcastBinary2TestData :
public BinaryTestData
295 BroadcastBinary2TestData() : BinaryTestData()
297 m_InputShape0 = { 1, 1, 1, 1 };
298 m_InputShape1 = { 1, 1, 1, 4 };
299 m_OutputShape = m_InputShape1;
308 true,
false,
false,
true 313 true,
false,
false,
true 318 true,
true,
true,
true 323 class BroadcastBinary3TestData :
public BinaryTestData
326 BroadcastBinary3TestData() : BinaryTestData()
328 m_InputShape0 = { 1, 1, 1, 4 };
329 m_InputShape1 = { 1, 1, 1, 1 };
330 m_OutputShape = m_InputShape0;
334 true,
false,
false,
true 344 false,
false,
false,
false 349 true,
false,
false,
true 354 static SimpleUnaryTestData s_SimpleUnaryTestData;
355 static SimpleBinaryTestData s_SimpleBinaryTestData;
357 static SimpleUnaryIntTestData s_SimpleUnaryIntTestData;
358 static SimpleBinaryIntTestData s_SimpleBinaryIntTestData;
360 static BroadcastBinary1TestData s_BroadcastBinary1TestData;
361 static BroadcastBinary2TestData s_BroadcastBinary2TestData;
362 static BroadcastBinary3TestData s_BroadcastBinary3TestData;
372 return LogicalUnaryTestHelper<4>(workloadFactory,
375 s_SimpleUnaryTestData.m_InputShape,
376 s_SimpleUnaryTestData.m_InputData,
377 s_SimpleUnaryTestData.m_OutputShape,
378 s_SimpleUnaryTestData.m_OutputNot,
379 tensorHandleFactory);
387 return LogicalUnaryTestHelper<4>(workloadFactory,
390 s_SimpleUnaryIntTestData.m_InputShape,
391 s_SimpleUnaryIntTestData.m_InputData,
392 s_SimpleUnaryIntTestData.m_OutputShape,
393 s_SimpleUnaryIntTestData.m_OutputNot,
394 tensorHandleFactory);
402 return LogicalBinaryTestHelper<4>(workloadFactory,
405 s_SimpleBinaryTestData.m_InputShape0,
406 s_SimpleBinaryTestData.m_InputShape1,
407 s_SimpleBinaryTestData.m_InputData0,
408 s_SimpleBinaryTestData.m_InputData1,
409 s_SimpleBinaryTestData.m_OutputShape,
410 s_SimpleBinaryTestData.m_OutputAnd,
411 tensorHandleFactory);
419 return LogicalBinaryTestHelper<4>(workloadFactory,
422 s_SimpleBinaryTestData.m_InputShape0,
423 s_SimpleBinaryTestData.m_InputShape1,
424 s_SimpleBinaryTestData.m_InputData0,
425 s_SimpleBinaryTestData.m_InputData1,
426 s_SimpleBinaryTestData.m_OutputShape,
427 s_SimpleBinaryTestData.m_OutputOr,
428 tensorHandleFactory);
436 return LogicalBinaryTestHelper<4>(workloadFactory,
439 s_SimpleBinaryIntTestData.m_InputShape0,
440 s_SimpleBinaryIntTestData.m_InputShape1,
441 s_SimpleBinaryIntTestData.m_InputData0,
442 s_SimpleBinaryIntTestData.m_InputData1,
443 s_SimpleBinaryIntTestData.m_OutputShape,
444 s_SimpleBinaryIntTestData.m_OutputAnd,
445 tensorHandleFactory);
453 return LogicalBinaryTestHelper<4>(workloadFactory,
456 s_SimpleBinaryIntTestData.m_InputShape0,
457 s_SimpleBinaryIntTestData.m_InputShape1,
458 s_SimpleBinaryIntTestData.m_InputData0,
459 s_SimpleBinaryIntTestData.m_InputData1,
460 s_SimpleBinaryIntTestData.m_OutputShape,
461 s_SimpleBinaryIntTestData.m_OutputOr,
462 tensorHandleFactory);
471 return LogicalBinaryTestHelper<4>(workloadFactory,
474 s_BroadcastBinary1TestData.m_InputShape0,
475 s_BroadcastBinary1TestData.m_InputShape1,
476 s_BroadcastBinary1TestData.m_InputData0,
477 s_BroadcastBinary1TestData.m_InputData1,
478 s_BroadcastBinary1TestData.m_OutputShape,
479 s_BroadcastBinary1TestData.m_OutputAnd,
480 tensorHandleFactory);
489 return LogicalBinaryTestHelper<4>(workloadFactory,
492 s_BroadcastBinary1TestData.m_InputShape0,
493 s_BroadcastBinary1TestData.m_InputShape1,
494 s_BroadcastBinary1TestData.m_InputData0,
495 s_BroadcastBinary1TestData.m_InputData1,
496 s_BroadcastBinary1TestData.m_OutputShape,
497 s_BroadcastBinary1TestData.m_OutputOr,
498 tensorHandleFactory);
507 return LogicalBinaryTestHelper<4>(workloadFactory,
510 s_BroadcastBinary2TestData.m_InputShape0,
511 s_BroadcastBinary2TestData.m_InputShape1,
512 s_BroadcastBinary2TestData.m_InputData0,
513 s_BroadcastBinary2TestData.m_InputData1,
514 s_BroadcastBinary2TestData.m_OutputShape,
515 s_BroadcastBinary2TestData.m_OutputAnd,
516 tensorHandleFactory);
525 return LogicalBinaryTestHelper<4>(workloadFactory,
528 s_BroadcastBinary2TestData.m_InputShape0,
529 s_BroadcastBinary2TestData.m_InputShape1,
530 s_BroadcastBinary2TestData.m_InputData0,
531 s_BroadcastBinary2TestData.m_InputData1,
532 s_BroadcastBinary2TestData.m_OutputShape,
533 s_BroadcastBinary2TestData.m_OutputOr,
534 tensorHandleFactory);
543 return LogicalBinaryTestHelper<4>(workloadFactory,
546 s_BroadcastBinary3TestData.m_InputShape0,
547 s_BroadcastBinary3TestData.m_InputShape1,
548 s_BroadcastBinary3TestData.m_InputData0,
549 s_BroadcastBinary3TestData.m_InputData1,
550 s_BroadcastBinary3TestData.m_OutputShape,
551 s_BroadcastBinary3TestData.m_OutputAnd,
552 tensorHandleFactory);
561 return LogicalBinaryTestHelper<4>(workloadFactory,
564 s_BroadcastBinary3TestData.m_InputShape0,
565 s_BroadcastBinary3TestData.m_InputShape1,
566 s_BroadcastBinary3TestData.m_InputData0,
567 s_BroadcastBinary3TestData.m_InputData1,
568 s_BroadcastBinary3TestData.m_OutputShape,
569 s_BroadcastBinary3TestData.m_OutputOr,
570 tensorHandleFactory);
LayerTestResult< uint8_t, 4 > LogicalAndBroadcast1Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
A LogicalBinaryDescriptor for the LogicalBinaryLayer.
LayerTestResult< uint8_t, 4 > LogicalOrIntTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerDescriptor m_Parameters
LayerTestResult< uint8_t, 4 > LogicalNotIntTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< uint8_t, 4 > LogicalAndBroadcast3Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< uint8_t, 4 > LogicalOrBroadcast2Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
std::shared_ptr< IMemoryManager > IMemoryManagerSharedPtr
void CopyDataFromITensorHandle(void *mem, const armnn::ITensorHandle *tensorHandle)
#define ARMNN_ASSERT(COND)
LayerTestResult< uint8_t, 4 > LogicalNotTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< uint8_t, 4 > LogicalAndTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
A ElementwiseUnaryDescriptor for the ElementwiseUnaryLayer.
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)
unsigned int GetNumDimensions() const
Function that returns the tensor rank.
LayerTestResult< uint8_t, 4 > LogicalAndBroadcast2Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< uint8_t, 4 > LogicalAndIntTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< uint8_t, 4 > LogicalOrTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
Contains information about TensorInfos of a layer.
LayerTestResult< uint8_t, 4 > LogicalOrBroadcast3Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
virtual std::unique_ptr< IWorkload > CreateWorkload(LayerType type, const QueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo) const =0
LayerTestResult< uint8_t, 4 > LogicalOrBroadcast1Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)