Skip to content

Commit a2eeeb3

Browse files
Arm backend: Support TFA-decomposable INT ops in no-quant mixed profile (#20018)
In the INT-only profile, some integer ops are expected to be decomposed by the transform-for-annotation pipeline before partitioning, so they are intentionally absent from TOSA_PRO_INT_SupportList. The no-quant mixed INT+FP profile does not run that pipeline, so the original ops can reach the partitioner and be rejected because they are absent from TOSA_PRO_INT_SupportList. However, these ops can still be supported by decomposition passes in the backend pipeline. Add a mixed INT support list that extends TOSA_PRO_INT_SupportList with backend-decomposable integer ops for mixed-profile partitioning. Include slice_scatter in that extension and remove the corresponding VGF no-quant xfails Change-Id: I0ccc5484dc8c8311cefb069df9e2a4878bd98c9a cc @digantdesai @freddan80 @per @zingo @oscarandersson8218 @mansnils @Sebastian-Larsson @robell @rascani Signed-off-by: Yufeng Shi <yufeng.shi@arm.com>
1 parent c5364fd commit a2eeeb3

3 files changed

Lines changed: 19 additions & 7 deletions

File tree

backends/arm/operator_support/tosa_profile_supported_op_lists.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,22 @@
131131
}
132132

133133

134+
# Extra integer ops for the mixed INT+FP support list. These ops can be
135+
# supported by passes in the backend pipeline, but are intentionally kept out
136+
# of TOSA_PRO_INT_SupportList because INT-only partitioning expects them to be
137+
# decomposed before partitioning. Extend this list if the same mixed-profile
138+
# support gap is observed for other backend-decomposable ops.
139+
TOSA_PRO_MIXED_DECOMPOSABLE_INT_SupportList: Final[Set] = {
140+
exir_ops.edge.aten.slice_scatter.default,
141+
}
142+
143+
144+
# INT-side support list used when partitioning under the mixed INT+FP profile.
145+
TOSA_PRO_MIXED_INT_SupportList: Final[Set] = (
146+
TOSA_PRO_INT_SupportList | TOSA_PRO_MIXED_DECOMPOSABLE_INT_SupportList
147+
)
148+
149+
134150
# FP profile: ops supported via native TOSA ops, decompositions/transformations, precompute, etc.
135151
TOSA_PRO_FP_SupportList: Final[Set] = {
136152
exir_ops.edge.aten.abs.default,
@@ -257,5 +273,6 @@
257273

258274
__all__ = [
259275
"TOSA_PRO_INT_SupportList",
276+
"TOSA_PRO_MIXED_INT_SupportList",
260277
"TOSA_PRO_FP_SupportList",
261278
]

backends/arm/operator_support/tosa_supported_operators.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
from executorch.backends.arm.operator_support.tosa_profile_supported_op_lists import (
4343
TOSA_PRO_FP_SupportList,
4444
TOSA_PRO_INT_SupportList,
45+
TOSA_PRO_MIXED_INT_SupportList,
4546
)
4647
from executorch.backends.arm.tosa.specification import (
4748
TosaSpecification,
@@ -453,7 +454,7 @@ def is_node_supported(
453454

454455
# Select list based on whether the node is quantized.
455456
if is_quantized(node) or node.target in (*Q_OPS, *DQ_OPS):
456-
support_list = TOSA_PRO_INT_SupportList
457+
support_list = TOSA_PRO_MIXED_INT_SupportList
457458
else:
458459
support_list = TOSA_PRO_FP_SupportList
459460

backends/arm/test/ops/test_slice_scatter.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -264,12 +264,6 @@ def test_slice_scatter_u85_INT_stepN(test_module: input_t):
264264
@common.parametrize(
265265
"test_module",
266266
test_data_int_step1 | test_data_int_stepN | test_data_fp_step1 | test_data_fp_stepN,
267-
xfails={
268-
"rank2_step1_int8": "MLETORCH-1823: Fix quantized-node detection",
269-
"rank2_prefix_empty_int8": "MLETORCH-1823: Fix quantized-node detection",
270-
"rank2_suffix_empty_end_none_int8": "MLETORCH-1823: Fix quantized-node detection",
271-
"rank3_step2_int32": "MLETORCH-1823: Fix quantized-node detection",
272-
},
273267
)
274268
def test_slice_scatter_vgf_no_quant(test_module: input_t):
275269
pipeline = VgfPipeline[input_t](

0 commit comments

Comments
 (0)