diff options
author | Pablo Tello <pablo.tello@arm.com> | 2020-01-09 14:43:36 +0000 |
---|---|---|
committer | Georgios Pinitas <georgios.pinitas@arm.com> | 2020-01-13 17:45:16 +0000 |
commit | f6d164a48d75ce38d8fae19f2eb19d886b36b407 (patch) | |
tree | a22825880c5e81b21480fb7abd8245cf60df2ea6 /src | |
parent | ddc25f93cc0f4ae72cc00353ee494145194eed44 (diff) | |
download | ComputeLibrary-f6d164a48d75ce38d8fae19f2eb19d886b36b407.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')
-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 ffa4fa3565..16cd6f77b4 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: |