diff options
author | Pablo Marquez Tello <pablo.tello@arm.com> | 2023-06-08 12:00:29 +0100 |
---|---|---|
committer | Pablo Marquez Tello <pablo.tello@arm.com> | 2023-06-09 09:12:38 +0000 |
commit | 9c8f9a9beca2c158429152bf8a537dfe77a88342 (patch) | |
tree | a228e53e5a34d7097632b2fab6dcc32add7bf601 /arm_compute/core/Types.h | |
parent | 6c7cf31655ebc65108f91df946904cc83e1b42f5 (diff) | |
download | ComputeLibrary-9c8f9a9beca2c158429152bf8a537dfe77a88342.tar.gz |
Added int8 support in LeakyRelu/LUT kernel.
* Resolves COMPMID-6292
Change-Id: I15a0ad1c298ff53dd111fda76ef70872aaadac3b
Signed-off-by: Pablo Marquez Tello <pablo.tello@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/9740
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Jakub Sujak <jakub.sujak@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Benchmark: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'arm_compute/core/Types.h')
-rw-r--r-- | arm_compute/core/Types.h | 19 |
1 files changed, 17 insertions, 2 deletions
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) |