diff options
author | Pablo Tello <pablo.tello@arm.com> | 2020-01-09 14:43:36 +0000 |
---|---|---|
committer | Pablo Marquez <pablo.tello@arm.com> | 2020-01-10 16:57:27 +0000 |
commit | 07958785a2542bf461be48241127d4ad5044d08a (patch) | |
tree | 9e053b5311222fdb05306bd014efd8803f2ea91f /src/core/NEON | |
parent | 275b3ebb07f24763bfd56b72ce6da44ce382d743 (diff) | |
download | ComputeLibrary-07958785a2542bf461be48241127d4ad5044d08a.tar.gz |
COMPMID-2819: Fix offset in NEReductionOperationKernel.
Change-Id: Iacb57077fae9f70b24ecd1cdb4c8d017edd6f237
Signed-off-by: Pablo Tello <pablo.tello@arm.com>
Reviewed-on: https://review.mlplatform.org/c/2562
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Michele Di Giorgio <michele.digiorgio@arm.com>
Reviewed-by: Michalis Spyrou <michalis.spyrou@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/core/NEON')
-rw-r--r-- | src/core/NEON/kernels/NEReductionOperationKernel.cpp | 38 |
1 files changed, 4 insertions, 34 deletions
diff --git a/src/core/NEON/kernels/NEReductionOperationKernel.cpp b/src/core/NEON/kernels/NEReductionOperationKernel.cpp index a2ce0de38b..5dc4b556d1 100644 --- a/src/core/NEON/kernels/NEReductionOperationKernel.cpp +++ b/src/core/NEON/kernels/NEReductionOperationKernel.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 ARM Limited. + * Copyright (c) 2017-2020 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -742,23 +742,8 @@ struct RedOpYZW for(unsigned int dim = 0; dim < in_info.dimension(axis); ++dim) { - T *in_ptr; - switch(axis) - { - case 1: - in_ptr = reinterpret_cast<T *>(input.ptr() + in_info.offset_element_in_bytes(Coordinates(0, dim))); - break; - case 2: - in_ptr = reinterpret_cast<T *>(input.ptr() + in_info.offset_element_in_bytes(Coordinates(0, 0, dim))); - break; - case 3: - in_ptr = reinterpret_cast<T *>(input.ptr() + in_info.offset_element_in_bytes(Coordinates(0, 0, 0, dim))); - break; - default: - ARM_COMPUTE_ERROR("Not supported"); - } + const T *in_ptr = reinterpret_cast<T *>(input.ptr() + in_info.strides_in_bytes()[axis] * dim); const auto vec_elements = wrapper::vloadq(in_ptr); - switch(op) { case ReductionOperation::SUM: @@ -907,23 +892,8 @@ struct RedOpYZW_qasymm8 for(unsigned int index_dim = 0; index_dim < in_info.dimension(axis); ++index_dim) { - uint8_t *in_ptr; - switch(axis) - { - case 1: - in_ptr = input.ptr() + in_info.offset_element_in_bytes(Coordinates(0, index_dim)); - break; - case 2: - in_ptr = input.ptr() + in_info.offset_element_in_bytes(Coordinates(0, 0, index_dim)); - break; - case 3: - in_ptr = input.ptr() + in_info.offset_element_in_bytes(Coordinates(0, 0, 0, index_dim)); - break; - default: - ARM_COMPUTE_ERROR("Not supported"); - } - const auto vec_elements = wrapper::vloadq(in_ptr); - + const uint8_t *in_ptr = input.ptr() + in_info.strides_in_bytes()[axis] * index_dim; + const auto vec_elements = wrapper::vloadq(in_ptr); switch(op) { case ReductionOperation::SUM: |