diff options
author | Pablo Marquez Tello <pablo.tello@arm.com> | 2023-06-09 11:22:29 +0100 |
---|---|---|
committer | Pablo Marquez Tello <pablo.tello@arm.com> | 2023-06-12 14:38:56 +0000 |
commit | 48cfd5f7895f13167e4e9cd974dbc1e983e04ed7 (patch) | |
tree | c0fd7affd81be24dffd2d506a3940879f299aff4 /arm_compute/core/QuantizationInfo.h | |
parent | 78a17a1a4f81b2ba8462941c23b8914380257579 (diff) | |
download | ComputeLibrary-48cfd5f7895f13167e4e9cd974dbc1e983e04ed7.tar.gz |
Refactor activation LUT computation
* Moving the code out of Types.h will help
with the compilation time.
* Added LUT support for all other activation functions.
* Resolves COMPMID-6292
Change-Id: I1b5f0b21f03237447163276b8796b2aeb3fdd45c
Signed-off-by: Pablo Marquez Tello <pablo.tello@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/9749
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Viet-Hoa Do <viet-hoa.do@arm.com>
Benchmark: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'arm_compute/core/QuantizationInfo.h')
-rw-r--r-- | arm_compute/core/QuantizationInfo.h | 62 |
1 files changed, 0 insertions, 62 deletions
diff --git a/arm_compute/core/QuantizationInfo.h b/arm_compute/core/QuantizationInfo.h index 98ceec6c56..f760d7512c 100644 --- a/arm_compute/core/QuantizationInfo.h +++ b/arm_compute/core/QuantizationInfo.h @@ -399,68 +399,6 @@ inline float dequantize_qsymm8(int8_t value, const UniformQuantizationInfo &qinf return value * qinfo.scale; } -inline qasymm8_t qasymm8_hard_swish(qasymm8_t in, - const UniformQuantizationInfo &qi_in, - const UniformQuantizationInfo &qi_out) -{ - float tmp_f = dequantize_qasymm8(in, qi_in); - tmp_f = tmp_f * ((std::min(std::max((tmp_f + 3), 0.0f), 6.0f)) * 0.166666667f); - const qasymm8_t tmp = quantize_qasymm8(tmp_f, qi_out); - return tmp; -} - -inline qasymm8_signed_t qasymm8_signed_hard_swish(qasymm8_signed_t in, - const UniformQuantizationInfo &qi_in, - const UniformQuantizationInfo &qi_out) -{ - float tmp_f = dequantize_qasymm8_signed(in, qi_in); - tmp_f = tmp_f * ((std::min(std::max((tmp_f + 3), 0.0f), 6.0f)) * 0.166666667f); - const qasymm8_t tmp = quantize_qasymm8_signed(tmp_f, qi_out); - return tmp; -} - -inline qasymm8_t qasymm8_leaky_relu(qasymm8_t in, - const UniformQuantizationInfo &qi_in, - const UniformQuantizationInfo &qi_out, - float alpha) -{ - float tmp_f = dequantize_qasymm8(in, qi_in); - tmp_f = tmp_f > 0 ? tmp_f : tmp_f * alpha; - const qasymm8_t tmp = quantize_qasymm8(tmp_f, qi_out); - return tmp; -} - -inline qasymm8_signed_t qasymm8_signed_leaky_relu(qasymm8_signed_t in, - const UniformQuantizationInfo &qi_in, - const UniformQuantizationInfo &qi_out, - float alpha) -{ - float tmp_f = dequantize_qasymm8_signed(in, qi_in); - tmp_f = tmp_f > 0 ? tmp_f : tmp_f * alpha; - const qasymm8_t tmp = quantize_qasymm8_signed(tmp_f, qi_out); - return tmp; -} - -inline qasymm8_t qasymm8_logistic(qasymm8_t in, - const UniformQuantizationInfo &qi_in, - const UniformQuantizationInfo &qi_out) -{ - float tmp_f = dequantize_qasymm8(in, qi_in); - tmp_f = 1.f / (1.f + std::exp(-tmp_f)); - const qasymm8_t tmp = quantize_qasymm8(tmp_f, qi_out); - return tmp; -} - -inline qasymm8_signed_t qasymm8_signed_logistic(qasymm8_signed_t in, - const UniformQuantizationInfo &qi_in, - const UniformQuantizationInfo &qi_out) -{ - float tmp_f = dequantize_qasymm8_signed(in, qi_in); - tmp_f = 1.f / (1.f + std::exp(-tmp_f)); - const qasymm8_signed_t tmp = quantize_qasymm8_signed(tmp_f, qi_out); - return tmp; -} - /** Dequantize a value given a 8-bit symmetric quantization scheme * * @param[in] value Value to dequantize |