|
18 | 18 | from executorch.backends.arm._passes.fuse_quantized_activation_pass import (
|
19 | 19 | FuseQuantizedActivationPass,
|
20 | 20 | )
|
| 21 | +from executorch.backends.arm._passes.insert_table_ops import TableOps |
21 | 22 | from executorch.backends.arm.operator_support.ethos_u55_support import (
|
22 | 23 | EthosU55DtypeSupport,
|
23 | 24 | EthosU55NotSupported,
|
@@ -298,6 +299,24 @@ class CheckProperQuantization(OperatorSupportBase):
|
298 | 299 |
|
299 | 300 | dq_op = exir_ops.edge.quantized_decomposed.dequantize_per_tensor.default
|
300 | 301 | q_op = exir_ops.edge.quantized_decomposed.quantize_per_tensor.default
|
| 302 | + targeted_ops = ( |
| 303 | + exir_ops.edge.aten.add.Tensor, |
| 304 | + exir_ops.edge.aten.avg_pool2d.default, |
| 305 | + exir_ops.edge.aten.bmm.default, |
| 306 | + exir_ops.edge.aten.convolution.default, |
| 307 | + exir_ops.edge.aten.full.default, |
| 308 | + exir_ops.edge.aten.full_like.default, |
| 309 | + exir_ops.edge.aten.hardtanh.default, |
| 310 | + exir_ops.edge.aten.linear.default, |
| 311 | + exir_ops.edge.aten.max_pool2d_with_indices.default, |
| 312 | + exir_ops.edge.aten.mm.default, |
| 313 | + exir_ops.edge.aten.mul.Tensor, |
| 314 | + exir_ops.edge.aten.relu.default, |
| 315 | + exir_ops.edge.aten.sub.Tensor, |
| 316 | + exir_ops.edge.aten.upsample_bilinear2d.vec, |
| 317 | + exir_ops.edge.aten.upsample_nearest2d.vec, |
| 318 | + *TableOps.included_ops(), |
| 319 | + ) |
301 | 320 |
|
302 | 321 | def __init__(self, reporter: WhyNoPartitionReporter):
|
303 | 322 | self.reporter = reporter
|
@@ -356,30 +375,7 @@ def is_node_supported(
|
356 | 375 | ) -> bool:
|
357 | 376 | output_quantized = False
|
358 | 377 | input_quantized = False
|
359 |
| - if node.target not in ( |
360 |
| - exir_ops.edge.aten.add.Tensor, |
361 |
| - exir_ops.edge.aten.avg_pool2d.default, |
362 |
| - exir_ops.edge.aten.bmm.default, |
363 |
| - exir_ops.edge.aten.convolution.default, |
364 |
| - exir_ops.edge.aten.exp.default, |
365 |
| - exir_ops.edge.aten.full.default, |
366 |
| - exir_ops.edge.aten.full_like.default, |
367 |
| - exir_ops.edge.aten.hardtanh.default, |
368 |
| - exir_ops.edge.aten.linear.default, |
369 |
| - exir_ops.edge.aten.log.default, |
370 |
| - exir_ops.edge.aten.max_pool2d_with_indices.default, |
371 |
| - exir_ops.edge.aten.mm.default, |
372 |
| - exir_ops.edge.aten.mul.Tensor, |
373 |
| - exir_ops.edge.aten.reciprocal.default, |
374 |
| - exir_ops.edge.aten.relu.default, |
375 |
| - exir_ops.edge.aten.rsqrt.default, |
376 |
| - exir_ops.edge.aten.sigmoid.default, |
377 |
| - exir_ops.edge.aten.sub.Tensor, |
378 |
| - exir_ops.edge.aten.tanh.default, |
379 |
| - exir_ops.edge.aten.upsample_bilinear2d.vec, |
380 |
| - exir_ops.edge.aten.upsample_nearest2d.vec, |
381 |
| - exir_ops.edge.aten.gelu.default, |
382 |
| - ): |
| 378 | + if node.target not in self.targeted_ops: |
383 | 379 | return True
|
384 | 380 | elif node.target in (
|
385 | 381 | exir_ops.edge.aten.bmm.default,
|
|
0 commit comments