From 9c8f9a9beca2c158429152bf8a537dfe77a88342 Mon Sep 17 00:00:00 2001 From: Pablo Marquez Tello Date: Thu, 8 Jun 2023 12:00:29 +0100 Subject: Added int8 support in LeakyRelu/LUT kernel. * Resolves COMPMID-6292 Change-Id: I15a0ad1c298ff53dd111fda76ef70872aaadac3b Signed-off-by: Pablo Marquez Tello Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/9740 Comments-Addressed: Arm Jenkins Reviewed-by: Jakub Sujak Tested-by: Arm Jenkins Benchmark: Arm Jenkins --- arm_compute/core/Types.h | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'arm_compute/core/Types.h') diff --git a/arm_compute/core/Types.h b/arm_compute/core/Types.h index fd45bbaa1e..09b77b5a11 100644 --- a/arm_compute/core/Types.h +++ b/arm_compute/core/Types.h @@ -1737,7 +1737,14 @@ public: } else if(_act == ActivationFunction::LEAKY_RELU) { - qasymm8_leaky_relu_populate_table(_lut, qi_in, qi_out, _a); + if(data_type == DataType::QASYMM8) + { + qasymm8_leaky_relu_populate_table(_lut, qi_in, qi_out, _a); + } + else + { + qasymm8_signed_leaky_relu_populate_table(_lut, qi_in, qi_out, _a); + } } else if(_act == ActivationFunction::LOGISTIC) { @@ -1761,7 +1768,7 @@ public: case ActivationFunction::HARD_SWISH: return data_type == DataType::QASYMM8 || data_type == DataType::QASYMM8_SIGNED; case ActivationFunction::LEAKY_RELU: - return data_type == DataType::QASYMM8; + return data_type == DataType::QASYMM8 || data_type == DataType::QASYMM8_SIGNED; case ActivationFunction::LOGISTIC: return data_type == DataType::QASYMM8 || data_type == DataType::QASYMM8_SIGNED; default: @@ -1807,6 +1814,14 @@ private: } } + static inline void qasymm8_signed_leaky_relu_populate_table(LookupTable256 &lut, const UniformQuantizationInfo &qi_in, const UniformQuantizationInfo &qi_out, float alpha) + { + for(size_t i = 0; i < lut.size(); ++i) + { + lut[i] = qasymm8_signed_leaky_relu(i, qi_in, qi_out, alpha); + } + } + static inline void qasymm8_logistic_populate_table(LookupTable256 &lut, const UniformQuantizationInfo &qi_in, const UniformQuantizationInfo &qi_out) { for(size_t i = 0; i < lut.size(); ++i) -- cgit v1.2.1