MLBEDSW-3654 Add/use op ifm/ofm shapes

Add ifm/ofm shapes to op
Changed to rely on these shapes

Signed-off-by: Patrik Gustavsson <patrik.gustavsson@arm.com>
Change-Id: I571535a1dcadc2bdb04a3c727a8e1c49703b174d
diff --git a/ethosu/vela/pass_packing.py b/ethosu/vela/pass_packing.py
index 9bc04f2..095a78d 100644
--- a/ethosu/vela/pass_packing.py
+++ b/ethosu/vela/pass_packing.py
@@ -397,11 +397,28 @@
 
             if len(ps.inputs) > 2:
                 ps.ifm_tensor = ps.inputs[-2]
+
+            # Get the corresponding ifm_shapes
+            for op in input_ops_list + [primary_op]:
+                if ps.ifm_tensor == op.ifm:
+                    ps.ifm_shapes.append(op.ifm_shapes[0])
+                elif ps.ifm_tensor == op.ifm2:
+                    ps.ifm_shapes.append(op.ifm_shapes[1])
+            for op in input_ops_list + [primary_op]:
+                if ps.ifm2_tensor == op.ifm:
+                    ps.ifm_shapes.append(op.ifm_shapes[0])
+                elif ps.ifm2_tensor == op.ifm2:
+                    ps.ifm_shapes.append(op.ifm_shapes[1])
         else:
             ps.ifm_tensor = ifm_tensor
             ps.ifm2_tensor = None
+            if ps.primary_op is not None:
+                ps.ifm_shapes.append(ps.primary_op.ifm_shapes[0])
 
         ps.ofm_tensor = ofm_tensor
+        if ps.primary_op is not None:
+            ps.ofm_shapes.append(ps.primary_op.ofm_shapes[0])
+
         assert ps.placement != PassPlacement.Npu or ps.ofm_tensor is not None
         ps.weight_tensor = ps.get_primary_op_ifm_weights()[1]
         ps.scale_tensor = ps.get_primary_op_ifm_weights_biases_ofm()[2]
@@ -436,6 +453,8 @@
             avgpool_out = inp.clone("_avgpooled")
             avgpool_out.consumer_list.append(op)
             avgpool_op.set_output_tensor(avgpool_out)
+            avgpool_op.ifm_shapes = op.ifm_shapes
+            avgpool_op.ofm_shapes = op.ofm_shapes
 
             op.inputs[0] = avgpool_out
             op_list.insert(0, avgpool_op)