[MLBEDSW-2335] SoftMax int16
Added graph rewrite of Softmax for int16.
Change-Id: Id7885af6056a23e8b8362fb61ae94283251eb398
Signed-off-by: Fredrik Svedberg <fredrik.svedberg@arm.com>
diff --git a/ethosu/vela/pass_packing.py b/ethosu/vela/pass_packing.py
index c14a70b..8fb95f0 100644
--- a/ethosu/vela/pass_packing.py
+++ b/ethosu/vela/pass_packing.py
@@ -66,6 +66,7 @@
"MaxPool",
"AvgPoolAct",
"MaxPoolAct",
+ "ReduceSum",
# deconvolution
"ResizeBilinear",
)
@@ -85,10 +86,12 @@
"Sub",
"Minimum",
"Maximum",
+ "SHL",
+ "SHR",
)
)
-unary_elem_wise_main_ops = set(("LeakyRelu", "Abs")) # Unary element-wise operations
+unary_elem_wise_main_ops = set(("LeakyRelu", "Abs", "CLZ",)) # Unary element-wise operations
elem_wise_main_ops = binary_elem_wise_main_ops | unary_elem_wise_main_ops
@@ -417,13 +420,12 @@
# Swap broadcast input if applicable
broadcast_input_check(ps)
+ # If only 1 input, IFM and IFM2 will be the same tensor
ps.ifm_tensor = ps.inputs[0]
+ ps.ifm2_tensor = ps.inputs[-1]
- if len(ps.inputs) == 1:
- # Only 1 input, IFM and IFM2 are the same tensor
- ps.ifm2_tensor = ps.inputs[0]
- else:
- ps.ifm2_tensor = ps.inputs[1]
+ if len(ps.inputs) > 2:
+ ps.ifm_tensor = ps.inputs[-2]
else:
ps.ifm_tensor = ifm_tensor
ps.ifm2_tensor = None
@@ -432,6 +434,7 @@
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]
+ ps.lut_tensor = ps.get_primary_op_lut()
for op in ps.ops:
op.scheduled_pass = ps