diff --git a/src/finn/transformation/streamline/reorder.py b/src/finn/transformation/streamline/reorder.py index 3fe1ef242364b1070726681495ae3632660f2904..9348f917b24c167a6f98293c6aa990ecff2fd3a4 100644 --- a/src/finn/transformation/streamline/reorder.py +++ b/src/finn/transformation/streamline/reorder.py @@ -546,11 +546,18 @@ class MoveMaxPoolPastMultiThreshold(Transformation): node_ind += 1 if n.op_type == "MaxPool" and not model.is_fork_node(n): consumer = model.find_consumer(n.output[0]) + pads = get_by_name(n.attribute, "pads") + has_padding = False + if pads is not None: + pads = list(pads.ints) + has_padding = np.prod(pads) != 0 if consumer is not None and consumer.op_type == "MultiThreshold": mt_out = consumer.output[0] mt_odt = model.get_tensor_datatype(mt_out) - if mt_odt.signed(): - warnings.warn("Skipping signed-output MultiThreshold") + if mt_odt.signed() and has_padding: + warnings.warn( + "Skipping padded MaxPool + signed-output MultiThreshold" + ) continue # remove old nodes