|
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