aboutsummaryrefslogtreecommitdiff
path: root/ethosu/vela/register_command_stream_generator.py
diff options
context:
space:
mode:
authorDwight Lidman <dwight.lidman@arm.com>2020-05-06 14:09:17 +0200
committerTim Hall <tim.hall@arm.com>2020-06-18 17:53:52 +0100
commit0538a77dfe65b66efedc4e4b92d851a5aeb46ea4 (patch)
tree73afa3d08b717f33533de0eb6c0c5ebe6754bfe7 /ethosu/vela/register_command_stream_generator.py
parent10349e70e994130d9e1ac8b72f32575025b2b453 (diff)
downloadethos-u-vela-0538a77dfe65b66efedc4e4b92d851a5aeb46ea4.tar.gz
MLBEDSW-1970: Add stride 3 support
This patch adds support for strides of size 3. It removes some obsolete code for a corner case that no longer exists. It also changes the setting of the bitfield in NPU_SET_KERNEL_STRIDE so that it matches the specification. Change-Id: I7dabcf72b7826ca0b3c98e9d23209027204079a8 Signed-off-by: Dwight Lidman <dwight.lidman@arm.com>
Diffstat (limited to 'ethosu/vela/register_command_stream_generator.py')
-rw-r--r--ethosu/vela/register_command_stream_generator.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/ethosu/vela/register_command_stream_generator.py b/ethosu/vela/register_command_stream_generator.py
index a2b2f4d0..120cf8b1 100644
--- a/ethosu/vela/register_command_stream_generator.py
+++ b/ethosu/vela/register_command_stream_generator.py
@@ -569,8 +569,15 @@ def generate_register_command_stream(nng, sg, arch, verbose=False):
emit.cmd0_with_param(cmd0.NPU_SET_IFM_PAD_BOTTOM, explicit_padding[2])
emit.cmd0_with_param(cmd0.NPU_SET_IFM_PAD_RIGHT, explicit_padding[3])
- stride = primary_op.attrs["strides"][2] - 1
- stride |= (primary_op.attrs["strides"][1] - 1) << 1
+ # set kernel x stride low bit
+ stride = primary_op.attrs["strides"][2] - 1 & 1
+ # set kernel y stride low bit
+ stride |= (primary_op.attrs["strides"][1] - 1 & 1) << 1
+ # set kernel x stride extension bits
+ stride |= (primary_op.attrs["strides"][2] - 1 >> 1) << 6
+ # set kernel y stride extension bits
+ stride |= (primary_op.attrs["strides"][1] - 1 >> 1) << 9
+
if npu_block_type == NpuBlockType.Pooling:
k_height, k_width = primary_op.attrs["ksize"][1:3]