IVGCVSW-4375 Add support for Transpose to optimizations

 * Changed some existing Permutation specific optimizations to also support Transpose
 * Added MoveTransposeUp optimization
 * Added TransposeAsReshape optimization
 * Added tests for Transpose optimizations
 * Added missing layer tests for Transpose

Signed-off-by: Mike Kelly <mike.kelly@arm.com>
Change-Id: I20d099b284861402ae94aaa5dbf34907327a485f
diff --git a/src/armnn/Network.cpp b/src/armnn/Network.cpp
index 55bf51a..50a7df6 100644
--- a/src/armnn/Network.cpp
+++ b/src/armnn/Network.cpp
@@ -910,13 +910,18 @@
     // Perform optimisation passes
     using namespace optimizations;
     Optimizer::Pass(optGraph, MakeOptimizations(SquashEqualPermuteSiblings(),
+                                                SquashEqualTransposeSiblings(),
                                                 SquashEqualReshapeSiblings(),
                                                 OptimizeInversePermutes(),
+                                                OptimizeInverseTransposes(),
                                                 MovePermuteUp(),
+                                                MoveTransposeUp(),
                                                 PermuteAsReshape(),
+                                                TransposeAsReshape(),
                                                 OptimizeConsecutiveReshapes(),
                                                 FoldPadIntoConvolution2d(),
-                                                PermuteAndBatchToSpaceAsDepthToSpace()));
+                                                PermuteAndBatchToSpaceAsDepthToSpace(),
+                                                TransposeAndBatchToSpaceAsDepthToSpace()));
 
     // Infer the tensor infos for all output slots. Throws an exception on failure
     optGraph.InferTensorInfos();