aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDominic Symes <dominic.symes@arm.com>2021-04-13 11:50:18 +0100
committerDominic Symes <dominic.symes@arm.com>2021-04-14 09:34:47 +0100
commit71ab794662ee2fc061b1baa9af5bb333b79c10d9 (patch)
treeab72dffe558b4498914fc1cc08e254d17be71e5f
parentee209d8d3cac5fbdc724c2f23628d597974e96e8 (diff)
downloadspecification-71ab794662ee2fc061b1baa9af5bb333b79c10d9.tar.gz
RESIZE: Clarify the valid range of stride values.
Clarify stride ranges so that the range of valid scales is independent of the shift value. Signed-off-by: Dominic Symes <dominic.symes@arm.com> Change-Id: I56b4dd3b39df19da35fb2c6fe3035e2de42f4860
-rw-r--r--chapters/image.adoc11
1 files changed, 9 insertions, 2 deletions
diff --git a/chapters/image.adoc b/chapters/image.adoc
index e91b3da..07f5a0e 100644
--- a/chapters/image.adoc
+++ b/chapters/image.adoc
@@ -53,9 +53,16 @@ None
[source,c++]
----
-// scale assert prevents int32_t accumulator overflow for in_t==int8_t
+// shift assert prevents int32_t accumulator overflow for in_t==int8_t
assert((resize_t == float_t && shift == 0)||(0 < shift && shift <= 11));
-assert(stride_x > 0 && stride_y > 0);
+// stride asserts set consistent lower limit of 1/16 downscale
+// independent of the shift value to simplify implementations
+assert(0 < stride_x && stride_x < (16 << shift));
+assert(0 < stride_y && stride_y < (16 << shift));
+// offset range is similarly limited to maximum 16 pixels irrespective
+// of shift. Both stride and offset fit in int16_t when shift=11.
+assert((-16 << shift) < offset_x && offset_x < (16 << shift));
+assert((-16 << shift) < offset_y && offset_y < (16 << shift));
for_each(0 <= n < N, 0 <= oy < OH, 0 <= ox < OW; 0 <= c < C) {
unit = (resize_t == float_t) ? 1.0 : (1 << shift);
y = oy * stride_y + offset_y;