diff options
author | Pablo Marquez Tello <pablo.tello@arm.com> | 2023-10-10 11:13:23 +0100 |
---|---|---|
committer | Pablo Marquez Tello <pablo.tello@arm.com> | 2023-10-12 13:53:27 +0000 |
commit | b5cb4d2e3e229b1ca34a1510f4204fc28da7317b (patch) | |
tree | 91e891a3100ee0b70f29b11d29483d19cb3422f6 /src/cpu/kernels/scale/neon/fp16.cpp | |
parent | aeced744b854758768243833bcdf999c0c3c1a5b (diff) | |
download | ComputeLibrary-b5cb4d2e3e229b1ca34a1510f4204fc28da7317b.tar.gz |
Scale changes to enable fp16 in armv8a multi_isa builds
* Partially resolves MLCE-1102
Change-Id: If050608e56d75649b8d07757604ae10d6fc4269b
Signed-off-by: Pablo Marquez Tello <pablo.tello@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/10461
Benchmark: Arm Jenkins <bsgcomp@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Viet-Hoa Do <viet-hoa.do@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/cpu/kernels/scale/neon/fp16.cpp')
-rw-r--r-- | src/cpu/kernels/scale/neon/fp16.cpp | 55 |
1 files changed, 54 insertions, 1 deletions
diff --git a/src/cpu/kernels/scale/neon/fp16.cpp b/src/cpu/kernels/scale/neon/fp16.cpp index bd01569cc4..65fe35c77c 100644 --- a/src/cpu/kernels/scale/neon/fp16.cpp +++ b/src/cpu/kernels/scale/neon/fp16.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Arm Limited. + * Copyright (c) 2022-2023 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -32,6 +32,7 @@ #include "src/core/NEON/NEMath.h" #include "src/core/NEON/wrapper/wrapper.h" #include "src/core/utils/ScaleUtils.h" +#include "src/cpu/kernels/scale/neon/list.h" #include "support/Rounding.h" #include <arm_neon.h> @@ -194,6 +195,41 @@ void fp16_neon_scale_bilinear(const ITensor *src, } // namespace namespace cpu { +void fp16_bilinear_neon_scale_nchw(const ITensor *src, + ITensor *dst, + const ITensor *offsets, + const ITensor *dx, + const ITensor *dy, + InterpolationPolicy policy, + BorderMode border_mode, + PixelValue constant_border_value, + float sampling_offset, + bool align_corners, + const Window &window) +{ + ARM_COMPUTE_UNUSED(policy); + arm_compute::cpu::scale_bilinear_nchw<float16_t>(src, dst, dx, dy, offsets, border_mode, constant_border_value, + sampling_offset, align_corners, window); +} + +void fp16_nearest_neon_scale_nchw(const ITensor *src, + ITensor *dst, + const ITensor *offsets, + const ITensor *dx, + const ITensor *dy, + InterpolationPolicy policy, + BorderMode border_mode, + PixelValue constant_border_value, + float sampling_offset, + bool align_corners, + const Window &window) +{ + ARM_COMPUTE_UNUSED(policy); + ARM_COMPUTE_UNUSED(border_mode); + arm_compute::cpu::scale_nearest_nchw<float16_t>(src, dst, dx, dy, offsets, constant_border_value, sampling_offset, + align_corners, window); +} + void fp16_neon_scale(const ITensor *src, ITensor *dst, const ITensor *offsets, @@ -216,6 +252,23 @@ void fp16_neon_scale(const ITensor *src, fp16_neon_scale_nearest(src, dst, offsets, sampling_offset, align_corners, window); } } + +void fp16_common_neon_scale(const ITensor *src, + ITensor *dst, + const ITensor *offsets, + const ITensor *dx, + const ITensor *dy, + InterpolationPolicy policy, + BorderMode border_mode, + PixelValue constant_border_value, + float sampling_offset, + bool align_corners, + const Window &window) +{ + arm_compute::cpu::common_neon_scale<float16_t>(src, dst, offsets, dx, dy, policy, border_mode, + constant_border_value, sampling_offset, align_corners, window); +} + } // namespace cpu } // namespace arm_compute |