aboutsummaryrefslogtreecommitdiff
path: root/src/core/NEON/kernels/NECropKernel.cpp
diff options
context:
space:
mode:
authorMichele Di Giorgio <michele.digiorgio@arm.com>2020-06-01 12:07:50 +0100
committerMichele Di Giorgio <michele.digiorgio@arm.com>2020-06-01 21:03:49 +0000
commit1710133b05a9ed1fcc1cc68624c2ce0e09eae495 (patch)
tree9ab738a59e23b3782613602cedfe29d31cc595a2 /src/core/NEON/kernels/NECropKernel.cpp
parentc72dabc9ad572493c12c1d9052ec201732b9201e (diff)
downloadComputeLibrary-1710133b05a9ed1fcc1cc68624c2ce0e09eae495.tar.gz
COMPMID-2395: Add support for U8 datatype to CropResize on NEON
Change-Id: Ia356b3545e01ccc98056951f3a20ed2712240dac Signed-off-by: Michele Di Giorgio <michele.digiorgio@arm.com> Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/3283 Tested-by: Arm Jenkins <bsgcomp@arm.com> Reviewed-by: Sang-Hoon Park <sang-hoon.park@arm.com> Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com> Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/core/NEON/kernels/NECropKernel.cpp')
-rw-r--r--src/core/NEON/kernels/NECropKernel.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/core/NEON/kernels/NECropKernel.cpp b/src/core/NEON/kernels/NECropKernel.cpp
index 4257611f0e..21a8436289 100644
--- a/src/core/NEON/kernels/NECropKernel.cpp
+++ b/src/core/NEON/kernels/NECropKernel.cpp
@@ -76,6 +76,12 @@ inline float32x4_t load_as_f32(uint16_t *ptr)
return vcvtq_f32_u32(vmovl_u16(wrapper::vload(ptr)));
}
+template <>
+inline float32x4_t load_as_f32(uint8_t *ptr)
+{
+ return vcvtq_f32_u32(vmovl_u16(vget_low_u16(vmovl_u8(wrapper::vload(ptr)))));
+}
+
#ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
template <>
inline float32x4_t load_as_f32(float16_t *ptr)
@@ -267,6 +273,9 @@ void NECropKernel::configure(const ITensor *input, const ITensor *crop_boxes, co
case DataType::S16:
_in_bounds_crop_function = &in_bounds_crop_window<int16_t>;
break;
+ case DataType::U8:
+ _in_bounds_crop_function = &in_bounds_crop_window<uint8_t>;
+ break;
default:
ARM_COMPUTE_ERROR("Datatype not supported");
}
@@ -276,7 +285,7 @@ Status NECropKernel::validate(const ITensorInfo *input, const ITensorInfo *crop_
{
ARM_COMPUTE_UNUSED(extrapolation_value);
ARM_COMPUTE_RETURN_ERROR_ON_CPU_F16_UNSUPPORTED(input);
- ARM_COMPUTE_RETURN_ERROR_ON_DATA_TYPE_CHANNEL_NOT_IN(input, 1, DataType::U16, DataType::S16, DataType::F16, DataType::U32, DataType::S32, DataType::F32);
+ ARM_COMPUTE_RETURN_ERROR_ON_DATA_TYPE_CHANNEL_NOT_IN(input, 1, DataType::U8, DataType::U16, DataType::S16, DataType::F16, DataType::U32, DataType::S32, DataType::F32);
ARM_COMPUTE_RETURN_ERROR_ON_DATA_LAYOUT_NOT_IN(input, DataLayout::NHWC);
ARM_COMPUTE_RETURN_ERROR_ON(input->tensor_shape().num_dimensions() > 4);
ARM_COMPUTE_RETURN_ERROR_ON(crop_boxes->tensor_shape()[0] != 4);