diff options
author | Manuel Bottini <manuel.bottini@arm.com> | 2020-02-07 16:31:59 +0000 |
---|---|---|
committer | Georgios Pinitas <georgios.pinitas@arm.com> | 2020-02-26 11:06:52 +0000 |
commit | 4370cffc7fb0da7fb486b9d06d24e16169521876 (patch) | |
tree | 3f1ff71e631e3e14efc423a9fb3a4cf9b4b93b94 /arm_compute/core/NEON | |
parent | 12f2b8c316155660f1e612fe7e8fab7861decc03 (diff) | |
download | ComputeLibrary-4370cffc7fb0da7fb486b9d06d24e16169521876.tar.gz |
COMPMID-3034: Add NERequantizationLayerKernel
Change-Id: I3f098c3c2c2031d8cbe7326eab88a4e78bda867f
Signed-off-by: Manuel Bottini <manuel.bottini@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/2704
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Sang-Hoon Park <sang-hoon.park@arm.com>
Diffstat (limited to 'arm_compute/core/NEON')
-rw-r--r-- | arm_compute/core/NEON/NEMath.h | 11 | ||||
-rw-r--r-- | arm_compute/core/NEON/NEMath.inl | 14 | ||||
-rw-r--r-- | arm_compute/core/NEON/kernels/NEQuantizationLayerKernel.h | 12 |
3 files changed, 29 insertions, 8 deletions
diff --git a/arm_compute/core/NEON/NEMath.h b/arm_compute/core/NEON/NEMath.h index 54f8252250..3905f67e29 100644 --- a/arm_compute/core/NEON/NEMath.h +++ b/arm_compute/core/NEON/NEMath.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2019 ARM Limited. + * Copyright (c) 2016-2020 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -173,6 +173,15 @@ float32x4x4_t convert_uint8x16_to_float32x4x4(const uint8x16_t &in); */ float32x4x4_t convert_int8x16_to_float32x4x4(const int8x16_t &in); +/** Converts to float32x4x4_t from the specified templated 16 elements vectors + * + * @param[in] in Vector of float to be converted + * + * @return Converted vector of float + */ +template <typename T> +float32x4x4_t convert_to_float32x4x4(const T &in); + /** Converts from two float32x4x3_t to just one uint8x8x3_t * * @param[in] in1 First input vector of float to be converted diff --git a/arm_compute/core/NEON/NEMath.inl b/arm_compute/core/NEON/NEMath.inl index 5d8b82c281..49870d06a8 100644 --- a/arm_compute/core/NEON/NEMath.inl +++ b/arm_compute/core/NEON/NEMath.inl @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2019 ARM Limited. + * Copyright (c) 2016-2020 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -345,6 +345,18 @@ inline float32x4x4_t convert_int8x16_to_float32x4x4(const int8x16_t &in) return out; } +template <> +inline float32x4x4_t convert_to_float32x4x4(const uint8x16_t &in) +{ + return convert_uint8x16_to_float32x4x4(in); +} + +template <> +inline float32x4x4_t convert_to_float32x4x4(const int8x16_t &in) +{ + return convert_int8x16_to_float32x4x4(in); +} + inline void convert_float32x4x3_to_uint8x8x3(const float32x4x3_t &in1, const float32x4x3_t &in2, uint8x8x3_t &out) { out.val[0] = vqmovn_u16(vcombine_u16(vqmovn_u32(vcvtq_u32_f32(in1.val[0])), diff --git a/arm_compute/core/NEON/kernels/NEQuantizationLayerKernel.h b/arm_compute/core/NEON/kernels/NEQuantizationLayerKernel.h index 1a9b533640..087e767b73 100644 --- a/arm_compute/core/NEON/kernels/NEQuantizationLayerKernel.h +++ b/arm_compute/core/NEON/kernels/NEQuantizationLayerKernel.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 ARM Limited. + * Copyright (c) 2017-2020 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -56,16 +56,16 @@ public: ~NEQuantizationLayerKernel() = default; /** Set the input, output. * - * @param[in] input Source tensor. The dimensions over the third will be interpreted as batches. Data types supported: F32/F16. - * @param[out] output Destination tensor with the same dimensions of input. Data types supported: QASYMM8/QASYMM16. + * @param[in] input Source tensor. The dimensions over the third will be interpreted as batches. Data types supported: QASYMM8/QASYMM8_SIGNED/F32/F16. + * @param[out] output Destination tensor with the same dimensions of input. Data types supported: QASYMM8/QASYMM8_SIGNED/QASYMM16. * * @note Output auto initialization is not supported by this kernel */ void configure(const ITensor *input, ITensor *output); /** Static function to check if given info will lead to a valid configuration of @ref NEQuantizationLayerKernel * - * @param[in] input Input tensor info. Data types supported: F32/F16. - * @param[in] output Output tensor info. Data types supported: QASYMM8/QASYMM16. + * @param[in] input Input tensor info. Data types supported: QASYMM8/QASYMM8_SIGNED/F32/F16. + * @param[in] output Output tensor info. Data types supported: QASYMM8/QASYMM8_SIGNED/QASYMM16. * * @return a status */ @@ -80,7 +80,7 @@ private: * @param[in] window Region on which to execute the kernel. */ using QuantizationFunctionExecutorPtr = void (NEQuantizationLayerKernel::*)(const Window &window); - /** Function to apply QASYMM8 quantization on a tensor. + /** Function to apply QASYMM8 or QASYMM8_SIGNED quantization on a tensor. * * @param[in] window Region on which to execute the kernel. */ |