From f9de771083f1f32393b0fe5a3bcdedf4c148be15 Mon Sep 17 00:00:00 2001 From: Teresa Charlin Date: Thu, 28 Oct 2021 11:31:16 +0100 Subject: IVGCVSW-6520 Extend pad workload for CpuAcc to support mirror padding * Add UnitTest for CpuAcc !ComputeLibrary: 6641 Signed-off-by: Teresa Charlin Change-Id: Ic96b9e28d133cef73312b4ac793325f5e69b3d4d --- src/backends/neon/test/NeonLayerTests.cpp | 18 +++++++++++++++++- src/backends/neon/workloads/NeonPadWorkload.cpp | 15 +++++++++++++-- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/backends/neon/test/NeonLayerTests.cpp b/src/backends/neon/test/NeonLayerTests.cpp index 4c58488d4e..1750f24853 100644 --- a/src/backends/neon/test/NeonLayerTests.cpp +++ b/src/backends/neon/test/NeonLayerTests.cpp @@ -842,7 +842,7 @@ ARMNN_AUTO_TEST_CASE_WITH_THF(SimpleReshapeUint8, SimpleReshapeTest) ARMNN_AUTO_TEST_CASE_WITH_THF(ReshapeBoolean, ReshapeBooleanTest) -// Pad +// Pad - Constant ARMNN_AUTO_TEST_CASE_WITH_THF(PadFloat322d, PadFloat322dTest) ARMNN_AUTO_TEST_CASE_WITH_THF(PadFloat322dCustomPadding, PadFloat322dCustomPaddingTest) ARMNN_AUTO_TEST_CASE_WITH_THF(PadFloat323d, PadFloat323dTest) @@ -858,6 +858,22 @@ ARMNN_AUTO_TEST_CASE_WITH_THF(Pad2dQSymm16CustomPadding, Pad2dTestCommon, 2.0f, 0) ARMNN_AUTO_TEST_CASE_WITH_THF(Pad4dQSymm16, Pad4dTestCommon, 2.0f, 0) +// Pad - Symmetric & Reflect +ARMNN_AUTO_TEST_CASE_WITH_THF(PadSymmetric2dFloat32, PadSymmetric2dFloat32Test) +ARMNN_AUTO_TEST_CASE_WITH_THF(PadReflect2dFloat32, PadReflect2dFloat32Test) +ARMNN_AUTO_TEST_CASE_WITH_THF(PadSymmetric3dFloat32, PadSymmetric3dFloat32Test) +ARMNN_AUTO_TEST_CASE_WITH_THF(PadReflect3dFloat32, PadReflect3dFloat32Test) +ARMNN_AUTO_TEST_CASE_WITH_THF(PadSymmetric3dUint8, PadSymmetric3dUint8Test) +ARMNN_AUTO_TEST_CASE_WITH_THF(PadReflect3dUint8, PadReflect3dUint8Test) +ARMNN_AUTO_TEST_CASE_WITH_THF(PadSymmetric3dInt8, PadSymmetric3dInt8Test) +ARMNN_AUTO_TEST_CASE_WITH_THF(PadReflect3dInt8, PadReflect3dInt8Test) +ARMNN_AUTO_TEST_CASE_WITH_THF(PadSymmetric4dFloat32, PadSymmetric4dFloat32Test) +ARMNN_AUTO_TEST_CASE_WITH_THF(PadReflect4dFloat32, PadReflect4dFloat32Test) +ARMNN_AUTO_TEST_CASE_WITH_THF(PadSymmetric4dUint8, PadSymmetric4dUint8Test) +ARMNN_AUTO_TEST_CASE_WITH_THF(PadReflect4dUint8, PadReflect4dUint8Test) +ARMNN_AUTO_TEST_CASE_WITH_THF(PadSymmetric4dInt8, PadSymmetric4dInt8Test) +ARMNN_AUTO_TEST_CASE_WITH_THF(PadReflect4dInt8, PadReflect4dInt8Test) + // Permute ARMNN_AUTO_TEST_CASE_WITH_THF(SimplePermuteFloat32, SimplePermuteTest) ARMNN_AUTO_TEST_CASE_WITH_THF(PermuteFloat32ValueSet1Test, PermuteValueSet1Test) diff --git a/src/backends/neon/workloads/NeonPadWorkload.cpp b/src/backends/neon/workloads/NeonPadWorkload.cpp index 42fc42ba5c..1ba37f82eb 100644 --- a/src/backends/neon/workloads/NeonPadWorkload.cpp +++ b/src/backends/neon/workloads/NeonPadWorkload.cpp @@ -6,6 +6,7 @@ #include "NeonPadWorkload.hpp" #include +#include #include #include #include @@ -41,7 +42,11 @@ NeonPadWorkload::NeonPadWorkload(const PadQueueDescriptor& descriptor, const Wor arm_compute::PixelValue pixelValue = GetPixelValue(input.info(), descriptor.m_Parameters.m_PadValue); auto layer = std::make_unique(); - layer->configure(&input, &output, padList, pixelValue); + layer->configure(&input, + &output, + padList, + pixelValue, + ConvertPaddingModeToAcl(descriptor.m_Parameters.m_PaddingMode)); m_Layer.reset(layer.release()); } @@ -66,7 +71,13 @@ arm_compute::Status NeonPadWorkloadValidate(const TensorInfo& input, arm_compute::PaddingList padList = static_cast(reversed_PadList); - return arm_compute::NEPadLayer::validate(&aclInputInfo, &aclOutputInfo, padList); + // PixelValue is currently unused when validating, but it's required to pass in PaddingMode. + arm_compute::PixelValue pixelValue = GetPixelValue(&aclInputInfo, descriptor.m_PadValue); + return arm_compute::NEPadLayer::validate(&aclInputInfo, + &aclOutputInfo, + padList, + pixelValue, + ConvertPaddingModeToAcl(descriptor.m_PaddingMode)); } } // namespace armnn -- cgit v1.2.1