|
11 | 11 | from executorch.backends.arm._passes.annotate_channels_last_dim_order_pass import ( |
12 | 12 | AnnotateChannelsLastDimOrder, |
13 | 13 | ) |
| 14 | +from executorch.backends.arm._passes.annotate_decomposed_matmul import ( |
| 15 | + AnnotateDecomposedMatmulPass, |
| 16 | +) |
14 | 17 | from executorch.backends.arm._passes.cast_int64_pass import CastInt64ToInt32Pass |
15 | 18 | from executorch.backends.arm._passes.conv1d_unsqueeze_pass import Conv1dUnsqueezePass |
16 | 19 | from executorch.backends.arm._passes.convert_expand_copy_to_repeat import ( |
@@ -69,51 +72,64 @@ def transform_to_backend_pipeline( |
69 | 72 | self, exported_program: ExportedProgram, compile_spec: list[CompileSpec] |
70 | 73 | ): |
71 | 74 | """Apply passes before transforming program to backend""" |
72 | | - self.add_pass(CastInt64ToInt32Pass(exported_program)) |
| 75 | + self.add_pass(DecomposeLinearPass()) |
73 | 76 | self.add_pass(RemoveGetItemPass()) |
74 | | - self.add_pass(UnsqueezeScalarPlaceholdersPass(exported_program)) |
75 | | - self.add_pass(SizeAdjustConv2DPass()) |
76 | | - self.add_pass(RemoveClonePass()) |
77 | | - self.add_pass(ConvertExpandCopyToRepeatPass()) |
78 | 77 | self.add_pass(DecomposeLayerNormPass()) |
79 | | - self.add_pass(UnsqueezeBeforeRepeatPass()) |
80 | 78 | self.add_pass(DecomposeVarPass()) |
81 | 79 | self.add_pass(ConvertMeanDimToAveragePool()) |
82 | 80 | self.add_pass(DecomposeMeanDimPass()) |
83 | | - self.add_pass(DecomposeLinearPass()) |
| 81 | + self.add_pass(ConvertSplitToSlicePass()) |
| 82 | + # TODO MLETORCH-558 |
| 83 | + self.add_pass(AnnotateDecomposedMatmulPass()) |
84 | 84 | self.add_pass(QuantizeFullArgument()) |
85 | 85 | self.add_pass( |
86 | 86 | FoldAndAnnotateQParamsPass( |
87 | 87 | [ |
| 88 | + exir_ops.edge.aten.minimum.default, |
| 89 | + exir_ops.edge.aten.maximum.default, |
88 | 90 | exir_ops.edge.aten.add.Tensor, |
89 | 91 | exir_ops.edge.aten.avg_pool2d.default, |
| 92 | + exir_ops.edge.aten.bmm.default, |
90 | 93 | exir_ops.edge.aten.cat.default, |
91 | 94 | exir_ops.edge.aten.convolution.default, |
| 95 | + exir_ops.edge.aten.clone.default, |
92 | 96 | exir_ops.edge.aten.exp.default, |
| 97 | + exir_ops.edge.aten.expand_copy.default, |
93 | 98 | exir_ops.edge.aten.full.default, |
94 | 99 | exir_ops.edge.aten.hardtanh.default, |
95 | 100 | exir_ops.edge.aten.log.default, |
96 | 101 | exir_ops.edge.aten.max_pool2d.default, |
97 | | - exir_ops.edge.aten.maximum.default, |
98 | | - exir_ops.edge.aten.minimum.default, |
| 102 | + exir_ops.edge.aten.mm.default, |
99 | 103 | exir_ops.edge.aten.mul.Tensor, |
| 104 | + exir_ops.edge.aten.permute_copy.default, |
100 | 105 | exir_ops.edge.aten.reciprocal.default, |
101 | 106 | exir_ops.edge.aten.relu.default, |
| 107 | + exir_ops.edge.aten.repeat.default, |
102 | 108 | exir_ops.edge.aten.rsqrt.default, |
103 | 109 | exir_ops.edge.aten.select_copy.int, |
104 | 110 | exir_ops.edge.aten.sigmoid.default, |
| 111 | + exir_ops.edge.aten.slice_copy.Tensor, |
| 112 | + exir_ops.edge.aten.squeeze_copy.dims, |
105 | 113 | exir_ops.edge.aten.sub.Tensor, |
106 | 114 | exir_ops.edge.aten.sum.dim_IntList, |
107 | 115 | exir_ops.edge.aten.tanh.default, |
| 116 | + exir_ops.edge.aten.unsqueeze_copy.default, |
| 117 | + exir_ops.edge.aten.upsample_nearest2d.vec, |
| 118 | + exir_ops.edge.aten.view_copy.default, |
108 | 119 | ] |
109 | 120 | ) |
110 | 121 | ) |
111 | 122 | self.add_pass(RetraceFoldedDtypesPass()) |
112 | 123 | self.add_pass(InsertTableOpsPass(exported_program)) |
113 | | - self.add_pass(KeepDimsFalseToSqueezePass()) |
| 124 | + self.add_pass(ConvertExpandCopyToRepeatPass()) |
| 125 | + self.add_pass(UnsqueezeBeforeRepeatPass()) |
| 126 | + self.add_pass(CastInt64ToInt32Pass(exported_program)) |
| 127 | + self.add_pass(UnsqueezeScalarPlaceholdersPass(exported_program)) |
| 128 | + self.add_pass(SizeAdjustConv2DPass()) |
| 129 | + self.add_pass(RemoveClonePass()) |
114 | 130 | self.add_pass(MatchArgRanksPass(exported_program)) |
115 | 131 | self.add_pass(DecomposeDivPass()) |
116 | | - self.add_pass(ConvertSplitToSlicePass()) |
| 132 | + self.add_pass(KeepDimsFalseToSqueezePass()) |
117 | 133 | self.add_pass(Conv1dUnsqueezePass(exported_program)) |
118 | 134 | self.add_pass(DecomposeSoftmaxesPass()) |
119 | 135 | for spec in compile_spec: |
|
0 commit comments