diff options
author | Anthony Barbier <anthony.barbier@arm.com> | 2018-11-15 09:58:00 +0000 |
---|---|---|
committer | Anthony Barbier <Anthony.barbier@arm.com> | 2018-11-15 11:14:59 +0000 |
commit | ee50f51206a41e0fbc7fc156659eaa8b8de5c46e (patch) | |
tree | d6629d0588a38aa45207ebd1a0cfee7220b2e389 /src/core/IAccessWindow.cpp | |
parent | 10565950fadcd37f09df3226b04b1de5ddc58e8a (diff) | |
download | ComputeLibrary-ee50f51206a41e0fbc7fc156659eaa8b8de5c46e.tar.gz |
COMPMID-1784 Fixed the padding checks in AccessWindowRectangle::update_window_if_needed()
Change-Id: I56426cc9c9688a0aa0acdd439d5887c7ef208cd2
Note: The code to shrink the window hasn't been fixed yet.
Diffstat (limited to 'src/core/IAccessWindow.cpp')
-rw-r--r-- | src/core/IAccessWindow.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/core/IAccessWindow.cpp b/src/core/IAccessWindow.cpp index c73f4e7bb2..be65102cd2 100644 --- a/src/core/IAccessWindow.cpp +++ b/src/core/IAccessWindow.cpp @@ -102,6 +102,16 @@ bool AccessWindowRectangle::update_window_if_needed(Window &window) const return false; } + PaddingSize needed = get_needed_padding(window); + PaddingSize available = _info->padding(); + + if(needed.top <= available.top && needed.right <= available.right + && needed.bottom <= available.bottom + && needed.left <= available.left) + { + return false; + } + const TensorShape &shape = _info->tensor_shape(); const Strides &strides = _info->strides_in_bytes(); const size_t offset_first_element = _info->offset_first_element_in_bytes(); @@ -206,7 +216,12 @@ bool AccessWindowRectangle::update_padding_if_needed(const Window &window) { return false; } + // Update strides in tensor info + return _info->extend_padding( get_needed_padding(window)); +} +PaddingSize AccessWindowRectangle::get_needed_padding(const Window &window)const +{ ARM_COMPUTE_ERROR_ON(_scale_x == 0); ARM_COMPUTE_ERROR_ON(_scale_y == 0); @@ -223,6 +238,5 @@ bool AccessWindowRectangle::update_padding_if_needed(const Window &window) padding.top = std::max(0, -min_y); padding.bottom = std::max<int>(0, max_y - shape[1]); - // Update strides in tensor info - return _info->extend_padding(padding); + return padding; } |