diff options
author | Francis Murtagh <francis.murtagh@arm.com> | 2019-11-05 14:26:23 +0000 |
---|---|---|
committer | Francis Murtagh <francis.murtagh@arm.com> | 2019-11-06 10:15:51 +0000 |
commit | ec33a91ec1557b78b2d01975ec4c5eaf24aa058c (patch) | |
tree | d6e26d6b59421e00dcceed4715e7a76d7a2ebc4f /src/backends/backendsCommon | |
parent | 3201eea0565ce2bb0418d1936fec71bdeb14c084 (diff) | |
download | armnn-ec33a91ec1557b78b2d01975ec4c5eaf24aa058c.tar.gz |
IVGCVSW-4038 Convert Strided_Slice Shrink_Axis_Mask Parameter to ACL format
* Add conversion method to reverse bits in Shrink_Axis_Mask
* Add Unit tests for Neon, CL and Reference backends
* Fix supportedness of constant layer which is causing error
in DeepSpeech Uint8
* Also convert the Begin_Mask and End_Mask
Change-Id: I448b083c3463558e8fb5204923ab554cd43264ba
Signed-off-by: Francis Murtagh <francis.murtagh@arm.com>
Diffstat (limited to 'src/backends/backendsCommon')
4 files changed, 628 insertions, 0 deletions
diff --git a/src/backends/backendsCommon/WorkloadUtils.cpp b/src/backends/backendsCommon/WorkloadUtils.cpp index 9e008ca441..385d970dac 100644 --- a/src/backends/backendsCommon/WorkloadUtils.cpp +++ b/src/backends/backendsCommon/WorkloadUtils.cpp @@ -184,4 +184,18 @@ armnn::ConstTensor ConvertWeightTensorFromArmnnToAcl(const ConstCpuTensorHandle* return weightPermuted; } +int32_t ConvertMaskToACLFormat(int32_t mask, int32_t numDim) +{ + int32_t reversedMask = 0; + for (unsigned int i = 0; i < boost::numeric_cast<unsigned int>(numDim); ++i) + { + // Check if bit set in mask for each dimension + int32_t bit = (mask & 1 << i) != 0; + // Increment the new mask with the bits reversed + reversedMask += (bit << std::max(numDim-(boost::numeric_cast<int>(i)+1), 0)); + } + + return reversedMask; +} + } // namespace armnn diff --git a/src/backends/backendsCommon/WorkloadUtils.hpp b/src/backends/backendsCommon/WorkloadUtils.hpp index cb614ea5b9..d581b5ab9e 100644 --- a/src/backends/backendsCommon/WorkloadUtils.hpp +++ b/src/backends/backendsCommon/WorkloadUtils.hpp @@ -196,6 +196,8 @@ void GatherTensorHandlePairs(const DescriptorType& descriptor, } } +int32_t ConvertMaskToACLFormat(int32_t mask, int32_t numDim); + armnn::ConstTensor PermuteTensor(const ConstCpuTensorHandle* tensor, const PermutationVector& permutationVector, void* permuteBuffer); diff --git a/src/backends/backendsCommon/test/layerTests/StridedSliceTestImpl.cpp b/src/backends/backendsCommon/test/layerTests/StridedSliceTestImpl.cpp index 515b5a026c..8082be4d98 100644 --- a/src/backends/backendsCommon/test/layerTests/StridedSliceTestImpl.cpp +++ b/src/backends/backendsCommon/test/layerTests/StridedSliceTestImpl.cpp @@ -266,6 +266,400 @@ LayerTestResult<T, 2> StridedSliceShrinkAxisMaskTest( } template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>> +LayerTestResult<T, 3> StridedSliceShrinkAxisMaskBitPosition0Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + armnn::TensorInfo inputTensorInfo; + armnn::TensorInfo outputTensorInfo; + + unsigned int inputShape[] = {3, 2, 3, 1}; + unsigned int outputShape[] = {2, 3, 1}; + + armnn::StridedSliceQueueDescriptor desc; + desc.m_Parameters.m_Begin = {0, 0, 0, 0}; + desc.m_Parameters.m_End = {1, 1, 1, 1}; + desc.m_Parameters.m_Stride = {1, 1, 1, 1}; + desc.m_Parameters.m_EndMask = (1 << 4) - 1; + desc.m_Parameters.m_ShrinkAxisMask = (1 << 0); + + inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType); + outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType); + + std::vector<float> input = std::vector<float>( + { + 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, + + 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, + + 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f + }); + + std::vector<float> outputExpected = std::vector<float>( + { + 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f + }); + + return StridedSliceTestImpl<T, 4, 3>( + workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc); +} + +template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>> +LayerTestResult<T, 3> StridedSliceShrinkAxisMaskBitPosition1Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + armnn::TensorInfo inputTensorInfo; + armnn::TensorInfo outputTensorInfo; + + unsigned int inputShape[] = {3, 2, 3, 1}; + unsigned int outputShape[] = {3, 3, 1}; + + armnn::StridedSliceQueueDescriptor desc; + desc.m_Parameters.m_Begin = {0, 0, 0, 0}; + desc.m_Parameters.m_End = {1, 1, 1, 1}; + desc.m_Parameters.m_Stride = {1, 1, 1, 1}; + desc.m_Parameters.m_EndMask = (1 << 4) - 1; + desc.m_Parameters.m_ShrinkAxisMask = (1 << 1); + + inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType); + outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType); + + std::vector<float> input = std::vector<float>( + { + 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, + + 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, + + 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f + }); + + std::vector<float> outputExpected = std::vector<float>( + { + 1.0f, 2.0f, 3.0f, 7.0f, 8.0f, 9.0f, 13.0f, 14.0f, 15.0f + }); + + return StridedSliceTestImpl<T, 4, 3>( + workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc); +} + +template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>> +LayerTestResult<T, 3> StridedSliceShrinkAxisMaskBitPosition2Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + armnn::TensorInfo inputTensorInfo; + armnn::TensorInfo outputTensorInfo; + + unsigned int inputShape[] = {3, 2, 3, 1}; + unsigned int outputShape[] = {3, 2, 1}; + + armnn::StridedSliceQueueDescriptor desc; + desc.m_Parameters.m_Begin = {0, 0, 0, 0}; + desc.m_Parameters.m_End = {1, 1, 1, 1}; + desc.m_Parameters.m_Stride = {1, 1, 1, 1}; + desc.m_Parameters.m_EndMask = (1 << 4) - 1; + desc.m_Parameters.m_ShrinkAxisMask = (1 << 2); + + inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType); + outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType); + + std::vector<float> input = std::vector<float>( + { + 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, + + 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, + + 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f + }); + + std::vector<float> outputExpected = std::vector<float>( + { + 1.0f, 4.0f, 7.0f, 10.0f, 13.0f, 16.0f + }); + + return StridedSliceTestImpl<T, 4, 3>( + workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc); +} + +template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>> +LayerTestResult<T, 3> StridedSliceShrinkAxisMaskBitPosition3Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + armnn::TensorInfo inputTensorInfo; + armnn::TensorInfo outputTensorInfo; + + unsigned int inputShape[] = {3, 2, 3, 1}; + unsigned int outputShape[] = {3, 2, 3}; + + armnn::StridedSliceQueueDescriptor desc; + desc.m_Parameters.m_Begin = {0, 0, 0, 0}; + desc.m_Parameters.m_End = {1, 1, 1, 1}; + desc.m_Parameters.m_Stride = {1, 1, 1, 1}; + desc.m_Parameters.m_EndMask = (1 << 4) - 1; + desc.m_Parameters.m_ShrinkAxisMask = (1 << 3); + + inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType); + outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType); + + std::vector<float> input = std::vector<float>( + { + 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, + + 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, + + 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f + }); + + std::vector<float> outputExpected = std::vector<float>( + { + 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, + + 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, + + 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f + }); + + return StridedSliceTestImpl<T, 4, 3>( + workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc); +} + +template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>> +LayerTestResult<T, 2> StridedSliceShrinkAxisMaskBitPosition0And1Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + armnn::TensorInfo inputTensorInfo; + armnn::TensorInfo outputTensorInfo; + + unsigned int inputShape[] = {3, 2, 3, 1}; + unsigned int outputShape[] = {3, 1}; + + armnn::StridedSliceQueueDescriptor desc; + desc.m_Parameters.m_Begin = {0, 0, 0, 0}; + desc.m_Parameters.m_End = {1, 1, 1, 1}; + desc.m_Parameters.m_Stride = {1, 1, 1, 1}; + desc.m_Parameters.m_EndMask = (1 << 4) - 1; + desc.m_Parameters.m_ShrinkAxisMask = (1 << 0) | (1 << 1); + + inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType); + outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType); + + std::vector<float> input = std::vector<float>( + { + 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, + + 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, + + 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f + }); + + std::vector<float> outputExpected = std::vector<float>( + { + 1.0f, 2.0f, 3.0f + }); + + return StridedSliceTestImpl<T, 4, 2>( + workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc); +} + +template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>> +LayerTestResult<T, 2> StridedSliceShrinkAxisMaskBitPosition0Dim3Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + armnn::TensorInfo inputTensorInfo; + armnn::TensorInfo outputTensorInfo; + + unsigned int inputShape[] = {2, 3, 1}; + unsigned int outputShape[] = {3, 1}; + + armnn::StridedSliceQueueDescriptor desc; + desc.m_Parameters.m_Begin = {0, 0, 0}; + desc.m_Parameters.m_End = {0, 0, 0}; + desc.m_Parameters.m_Stride = {1, 1, 1}; + desc.m_Parameters.m_EndMask = (1 << 4) - 1; + desc.m_Parameters.m_ShrinkAxisMask = (1 << 0); + + inputTensorInfo = armnn::TensorInfo(3, inputShape, ArmnnType); + outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType); + + std::vector<float> input = std::vector<float>( + { + 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f + }); + + std::vector<float> outputExpected = std::vector<float>( + { + 1.0f, 2.0f, 3.0f + }); + + return StridedSliceTestImpl<T, 3, 2>( + workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc); +} + +void FillVector(std::vector<float>& inputArray, float start, float step) +{ + for (uint32_t i = 0; i < inputArray.size(); ++i) + { + inputArray[i] = start; + start += step; + } +} + +template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>> +LayerTestResult<T, 4> StridedSliceShrinkAxisMaskCTSTest( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + armnn::TensorInfo inputTensorInfo; + armnn::TensorInfo outputTensorInfo; + + unsigned int inputShape[] = {1, 1, 8, 942}; + unsigned int outputShape[] = {1, 1, 1, 279}; + + armnn::StridedSliceQueueDescriptor desc; + desc.m_Parameters.m_Begin = {0, 0, 1, 229}; + desc.m_Parameters.m_End = {1, 1, 2, 787}; + desc.m_Parameters.m_Stride = {2, 3, 3, 2}; + desc.m_Parameters.m_BeginMask = 2; + desc.m_Parameters.m_EndMask = 0; + desc.m_Parameters.m_ShrinkAxisMask = 0; + + inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType); + outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType); + + // Array from 1 to 7535 + std::vector<float> input(7536); + FillVector(input, 1.0f, 1.0f); + + // Array from 1171 to 1727 in steps of 2 + std::vector<float> outputExpected(279); + FillVector(outputExpected, 1171.0, 2.0f); + + return StridedSliceTestImpl<T, 4, 4>( + workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc); +} + +template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>> +LayerTestResult<T, 2> StridedSliceShrinkAxisMaskBitPosition0And2Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + armnn::TensorInfo inputTensorInfo; + armnn::TensorInfo outputTensorInfo; + + unsigned int inputShape[] = {3, 2, 3, 1}; + unsigned int outputShape[] = {2, 1}; + + armnn::StridedSliceQueueDescriptor desc; + desc.m_Parameters.m_Begin = {0, 0, 0, 0}; + desc.m_Parameters.m_End = {1, 1, 1, 1}; + desc.m_Parameters.m_Stride = {1, 1, 1, 1}; + desc.m_Parameters.m_EndMask = (1 << 4) - 1; + desc.m_Parameters.m_ShrinkAxisMask = (1 << 0) | (1 << 2); + + inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType); + outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType); + + std::vector<float> input = std::vector<float>( + { + 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, + + 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, + + 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f + }); + + std::vector<float> outputExpected = std::vector<float>( + { + 1.0f, 4.0f + }); + + return StridedSliceTestImpl<T, 4, 2>( + workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc); +} + +template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>> +LayerTestResult<T, 2> StridedSliceShrinkAxisMaskBitPosition0And3Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + armnn::TensorInfo inputTensorInfo; + armnn::TensorInfo outputTensorInfo; + + unsigned int inputShape[] = {3, 2, 3, 1}; + unsigned int outputShape[] = {2, 3}; + + armnn::StridedSliceQueueDescriptor desc; + desc.m_Parameters.m_Begin = {0, 0, 0, 0}; + desc.m_Parameters.m_End = {1, 1, 1, 1}; + desc.m_Parameters.m_Stride = {1, 1, 1, 1}; + desc.m_Parameters.m_EndMask = (1 << 4) - 1; + desc.m_Parameters.m_ShrinkAxisMask = (1 << 0) | (1 << 3); + + inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType); + outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType); + + std::vector<float> input = std::vector<float>( + { + 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, + + 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, + + 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f + }); + + std::vector<float> outputExpected = std::vector<float>( + { + 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f + }); + + return StridedSliceTestImpl<T, 4, 2>( + workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc); +} + +template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>> +LayerTestResult<T, 1> StridedSliceShrinkAxisMaskBitPosition0And1And3Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + armnn::TensorInfo inputTensorInfo; + armnn::TensorInfo outputTensorInfo; + + unsigned int inputShape[] = {3, 2, 3, 1}; + unsigned int outputShape[] = {3}; + + armnn::StridedSliceQueueDescriptor desc; + desc.m_Parameters.m_Begin = {0, 0, 0, 0}; + desc.m_Parameters.m_End = {1, 1, 1, 1}; + desc.m_Parameters.m_Stride = {1, 1, 1, 1}; + desc.m_Parameters.m_EndMask = (1 << 4) - 1; + desc.m_Parameters.m_ShrinkAxisMask = (1 << 0) | (1 << 1) | (1 << 3); + + inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType); + outputTensorInfo = armnn::TensorInfo(1, outputShape, ArmnnType); + + std::vector<float> input = std::vector<float>( + { + 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, + + 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, + + 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f + }); + + std::vector<float> outputExpected = std::vector<float>( + { + 1.0f, 2.0f, 3.0f + }); + + return StridedSliceTestImpl<T, 4, 1>( + workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc); +} + +template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>> LayerTestResult<T, 3> StridedSlice3dTest( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) @@ -462,6 +856,76 @@ LayerTestResult<float, 2> StridedSliceShrinkAxisMaskFloat32Test( return StridedSliceShrinkAxisMaskTest<armnn::DataType::Float32>(workloadFactory, memoryManager); } +LayerTestResult<float, 4> StridedSliceShrinkAxisMaskCTSFloat32Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + return StridedSliceShrinkAxisMaskCTSTest<armnn::DataType::Float32>(workloadFactory, memoryManager); +} + +LayerTestResult<float, 2> StridedSliceShrinkAxisMaskBitPosition0Dim3Float32Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + return StridedSliceShrinkAxisMaskBitPosition0Dim3Test<armnn::DataType::Float32>(workloadFactory, memoryManager); +} + +LayerTestResult<float, 3> StridedSliceShrinkAxisMaskBitPosition0Float32Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + return StridedSliceShrinkAxisMaskBitPosition0Test<armnn::DataType::Float32>(workloadFactory, memoryManager); +} + +LayerTestResult<float, 3> StridedSliceShrinkAxisMaskBitPosition1Float32Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + return StridedSliceShrinkAxisMaskBitPosition1Test<armnn::DataType::Float32>(workloadFactory, memoryManager); +} + +LayerTestResult<float, 3> StridedSliceShrinkAxisMaskBitPosition2Float32Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + return StridedSliceShrinkAxisMaskBitPosition2Test<armnn::DataType::Float32>(workloadFactory, memoryManager); +} + +LayerTestResult<float, 3> StridedSliceShrinkAxisMaskBitPosition3Float32Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + return StridedSliceShrinkAxisMaskBitPosition3Test<armnn::DataType::Float32>(workloadFactory, memoryManager); +} + +LayerTestResult<float, 2> StridedSliceShrinkAxisMaskBitPosition0And1Float32Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + return StridedSliceShrinkAxisMaskBitPosition0And1Test<armnn::DataType::Float32>(workloadFactory, memoryManager); +} + +LayerTestResult<float, 2> StridedSliceShrinkAxisMaskBitPosition0And2Float32Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + return StridedSliceShrinkAxisMaskBitPosition0And2Test<armnn::DataType::Float32>(workloadFactory, memoryManager); +} + +LayerTestResult<float, 2> StridedSliceShrinkAxisMaskBitPosition0And3Float32Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + return StridedSliceShrinkAxisMaskBitPosition0And3Test<armnn::DataType::Float32>(workloadFactory, memoryManager); +} + +LayerTestResult<float, 1> StridedSliceShrinkAxisMaskBitPosition0And1And3Float32Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + return StridedSliceShrinkAxisMaskBitPosition0And1And3Test<armnn::DataType::Float32>(workloadFactory, memoryManager); +} + LayerTestResult<float, 3> StridedSlice3dFloat32Test( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) @@ -525,6 +989,78 @@ LayerTestResult<uint8_t, 2> StridedSliceShrinkAxisMaskUint8Test( return StridedSliceShrinkAxisMaskTest<armnn::DataType::QuantisedAsymm8>(workloadFactory, memoryManager); } +LayerTestResult<uint8_t, 2> StridedSliceShrinkAxisMaskBitPosition0Dim3Uint8Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + return StridedSliceShrinkAxisMaskBitPosition0Dim3Test<armnn::DataType::QuantisedAsymm8>(workloadFactory, + memoryManager); +} + +LayerTestResult<uint8_t, 3> StridedSliceShrinkAxisMaskBitPosition0Uint8Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + return StridedSliceShrinkAxisMaskBitPosition0Test<armnn::DataType::QuantisedAsymm8>(workloadFactory, + memoryManager); +} + +LayerTestResult<uint8_t, 3> StridedSliceShrinkAxisMaskBitPosition1Uint8Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + return StridedSliceShrinkAxisMaskBitPosition1Test<armnn::DataType::QuantisedAsymm8>(workloadFactory, + memoryManager); +} + +LayerTestResult<uint8_t, 3> StridedSliceShrinkAxisMaskBitPosition2Uint8Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + return StridedSliceShrinkAxisMaskBitPosition2Test<armnn::DataType::QuantisedAsymm8>(workloadFactory, + memoryManager); +} + +LayerTestResult<uint8_t, 3> StridedSliceShrinkAxisMaskBitPosition3Uint8Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + return StridedSliceShrinkAxisMaskBitPosition3Test<armnn::DataType::QuantisedAsymm8>(workloadFactory, + memoryManager); +} + +LayerTestResult<uint8_t, 2> StridedSliceShrinkAxisMaskBitPosition0And1Uint8Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + return StridedSliceShrinkAxisMaskBitPosition0And1Test<armnn::DataType::QuantisedAsymm8>(workloadFactory, + memoryManager); +} + +LayerTestResult<uint8_t, 2> StridedSliceShrinkAxisMaskBitPosition0And2Uint8Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + return StridedSliceShrinkAxisMaskBitPosition0And2Test<armnn::DataType::QuantisedAsymm8>(workloadFactory, + memoryManager); +} + +LayerTestResult<uint8_t, 2> StridedSliceShrinkAxisMaskBitPosition0And3Uint8Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + return StridedSliceShrinkAxisMaskBitPosition0And3Test<armnn::DataType::QuantisedAsymm8>(workloadFactory, + memoryManager); +} + +LayerTestResult<uint8_t, 1> StridedSliceShrinkAxisMaskBitPosition0And1And3Uint8Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) +{ + return StridedSliceShrinkAxisMaskBitPosition0And1And3Test<armnn::DataType::QuantisedAsymm8>(workloadFactory, + memoryManager); +} + LayerTestResult<uint8_t, 3> StridedSlice3dUint8Test( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) diff --git a/src/backends/backendsCommon/test/layerTests/StridedSliceTestImpl.hpp b/src/backends/backendsCommon/test/layerTests/StridedSliceTestImpl.hpp index 1c83e3ef0e..f71ce2b711 100644 --- a/src/backends/backendsCommon/test/layerTests/StridedSliceTestImpl.hpp +++ b/src/backends/backendsCommon/test/layerTests/StridedSliceTestImpl.hpp @@ -30,6 +30,46 @@ LayerTestResult<float, 2> StridedSliceShrinkAxisMaskFloat32Test( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); +LayerTestResult<float, 2> StridedSliceShrinkAxisMaskBitPosition0Dim3Float32Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); + +LayerTestResult<float, 4> StridedSliceShrinkAxisMaskCTSFloat32Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); + +LayerTestResult<float, 3> StridedSliceShrinkAxisMaskBitPosition0Float32Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); + +LayerTestResult<float, 3> StridedSliceShrinkAxisMaskBitPosition1Float32Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); + +LayerTestResult<float, 3> StridedSliceShrinkAxisMaskBitPosition2Float32Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); + +LayerTestResult<float, 3> StridedSliceShrinkAxisMaskBitPosition3Float32Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); + +LayerTestResult<float, 2> StridedSliceShrinkAxisMaskBitPosition0And1Float32Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); + +LayerTestResult<float, 2> StridedSliceShrinkAxisMaskBitPosition0And2Float32Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); + +LayerTestResult<float, 2> StridedSliceShrinkAxisMaskBitPosition0And3Float32Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); + +LayerTestResult<float, 1> StridedSliceShrinkAxisMaskBitPosition0And1And3Float32Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); + LayerTestResult<float, 3> StridedSlice3dFloat32Test( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); @@ -66,6 +106,42 @@ LayerTestResult<uint8_t, 2> StridedSliceShrinkAxisMaskUint8Test( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); +LayerTestResult<uint8_t, 2> StridedSliceShrinkAxisMaskBitPosition0Dim3Uint8Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); + +LayerTestResult<uint8_t, 3> StridedSliceShrinkAxisMaskBitPosition0Uint8Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); + +LayerTestResult<uint8_t, 3> StridedSliceShrinkAxisMaskBitPosition1Uint8Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); + +LayerTestResult<uint8_t, 3> StridedSliceShrinkAxisMaskBitPosition2Uint8Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); + +LayerTestResult<uint8_t, 3> StridedSliceShrinkAxisMaskBitPosition3Uint8Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); + +LayerTestResult<uint8_t, 2> StridedSliceShrinkAxisMaskBitPosition0And1Uint8Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); + +LayerTestResult<uint8_t, 2> StridedSliceShrinkAxisMaskBitPosition0And2Uint8Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); + +LayerTestResult<uint8_t, 2> StridedSliceShrinkAxisMaskBitPosition0And3Uint8Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); + +LayerTestResult<uint8_t, 1> StridedSliceShrinkAxisMaskBitPosition0And1And3Uint8Test( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); + LayerTestResult<uint8_t, 3> StridedSlice3dUint8Test( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); |