COMPMID-1814 : NEScale add support for TOP_LEFT and QASYMM8
Added support for TOP_LEFT sampling policy and QASYMM8 data type.
Change-Id: Id9135bb4b6ebd93f1d6fb70b06e83684a167eb94
Reviewed-on: https://review.mlplatform.org/533
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Michalis Spyrou <michalis.spyrou@arm.com>
Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
diff --git a/src/runtime/NEON/functions/NEScale.cpp b/src/runtime/NEON/functions/NEScale.cpp
index 169b9bb..483aa4c 100644
--- a/src/runtime/NEON/functions/NEScale.cpp
+++ b/src/runtime/NEON/functions/NEScale.cpp
@@ -46,6 +46,11 @@
{
ARM_COMPUTE_ERROR_ON(nullptr == offsets);
ARM_COMPUTE_UNUSED(sampling_policy);
+ float sampling_offset = 0.0f;
+ if(sampling_policy == SamplingPolicy::CENTER)
+ {
+ sampling_offset = 0.5f;
+ }
Window win;
win.set(Window::DimX, Window::Dimension(0, offsets->info()->dimension(0), 1));
@@ -60,8 +65,8 @@
execute_window_loop(win, [&](const Coordinates & id)
{
- const float in_x = (id.x() + 0.5f) * wr - 0.5f;
- const float in_y = (id.y() + 0.5f) * hr - 0.5f;
+ const float in_x = (id.x() + sampling_offset) * wr - sampling_offset;
+ const float in_y = (id.y() + sampling_offset) * hr - sampling_offset;
const int in_xi = std::floor(in_x);
const int in_yi = std::floor(in_y);
@@ -174,7 +179,7 @@
BorderMode border_mode, PixelValue constant_border_value, SamplingPolicy sampling_policy)
{
ARM_COMPUTE_RETURN_ERROR_ON_NULLPTR(input, output);
- ARM_COMPUTE_RETURN_ERROR_ON(sampling_policy != SamplingPolicy::CENTER);
+ ARM_COMPUTE_RETURN_ERROR_ON(sampling_policy != SamplingPolicy::CENTER && sampling_policy != SamplingPolicy::TOP_LEFT);
ARM_COMPUTE_UNUSED(border_mode, constant_border_value);
ITensorInfo *offsets = nullptr;