aboutsummaryrefslogtreecommitdiff
path: root/src/cpu/kernels/activation/generic/sve2/qsymm16.cpp
diff options
context:
space:
mode:
authorPablo Marquez Tello <pablo.tello@arm.com>2022-04-06 14:31:25 +0100
committerPablo Marquez Tello <pablo.tello@arm.com>2022-04-25 10:20:20 +0000
commitf55cca5f17da72004108f92047d3177b7cdb1a76 (patch)
tree08a1d83f51a017b03603f6c724f660fd1f084b2e /src/cpu/kernels/activation/generic/sve2/qsymm16.cpp
parentfa6877f94b12ec80235e55bcfe5a9b6fdc009cf0 (diff)
downloadComputeLibrary-f55cca5f17da72004108f92047d3177b7cdb1a76.tar.gz
Add LU_BOUNDED_RELU support for QSYMM16
Partially resolves MLCE-604 Change-Id: Id585ab19fe5cd8f61c07a0aae6faac6ba5545d6d Signed-off-by: Pablo Marquez Tello <pablo.tello@arm.com> Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/7379 Tested-by: Arm Jenkins <bsgcomp@arm.com> Reviewed-by: Michalis Spyrou <michalis.spyrou@arm.com> Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/cpu/kernels/activation/generic/sve2/qsymm16.cpp')
-rw-r--r--src/cpu/kernels/activation/generic/sve2/qsymm16.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/cpu/kernels/activation/generic/sve2/qsymm16.cpp b/src/cpu/kernels/activation/generic/sve2/qsymm16.cpp
index 41b5555448..ca6534604f 100644
--- a/src/cpu/kernels/activation/generic/sve2/qsymm16.cpp
+++ b/src/cpu/kernels/activation/generic/sve2/qsymm16.cpp
@@ -99,6 +99,22 @@ void sve2_qsymm16_activation(const ITensor *src, ITensor *dst, const ActivationL
// Re-quantize to new output space
tmp = svquantize_qsymm16_z(pg, tmp_dep, qi_out.scale);
}
+ else if(act == ActivationLayerInfo::ActivationFunction::LU_BOUNDED_RELU)
+ {
+ // De-quantize
+ auto vin_deq = svdequantize_qsymm16_z(pg, vin, qi_in.scale);
+ // Perform activation
+ const svfloat32x2_t tmp_dep =
+ {
+ { {
+ svmin_f32_z(pg,va_f32, svmax_f32_z(pg,vb_f32, svget2_f32(vin_deq, 0))),
+ svmin_f32_z(pg,va_f32, svmax_f32_z(pg,vb_f32, svget2_f32(vin_deq, 1))),
+ }
+ }
+ };
+ // Re-quantize to new output space
+ tmp = svquantize_qsymm16_z(pg, tmp_dep, qi_out.scale);
+ }
else
{
ARM_COMPUTE_ERROR("Unsupported activation function");