Skip to content

Conversation

YufengShi-dudu
Copy link
Collaborator

@YufengShi-dudu YufengShi-dudu commented Aug 29, 2025

  • Add ConvertInt64ConstOpsToInt32Pass to convert constant-producing ops that output int64 to instead output int32, when values are within int32 bounds. Supported Ops: torch.full, torch.arange, torch.eye, torch.linspace, torch.tensor

  • Add ConvertInt64OutputOpsToInt32Pass to

    1. convert or remove unnecessary casts to int64
    2. insert an int64->int32 cast after the argmax ndoes that produce int64 outputs

Change-Id: I04e5fa9a7170c5b5dc785ae8619189545de0ec2c

cc @digantdesai @freddan80 @per @zingo @oscarandersson8218

- Add ConvertInt64ConstOpsToInt32Pass to convert constant-producing ops
  that output int64 to instead output int32, when values are within
  int32 bounds.
  Supported Ops:
    `torch.full`, `torch.arange`, `torch.eye`, `torch.linspace`,
    `torch.tensor`

- Add ConvertInt64OutputOpsToInt32Pass to
    1. convert or remove unnecessary casts to int64
    2. insert an int64->int32 cast after the argmax ndoes
       that produce int64 outputs

Signed-off-by: Yufeng Shi <yufeng.shi@arm.com>
Change-Id: I04e5fa9a7170c5b5dc785ae8619189545de0ec2c
Co-authored-by: Erik Lundell <erik.lundell@arm.com>
@YufengShi-dudu YufengShi-dudu added partner: arm For backend delegation, kernels, demo, etc. from the 3rd-party partner, Arm ciflow/trunk release notes: arm Changes to the ARM backend delegate labels Aug 29, 2025
Copy link

pytorch-bot bot commented Aug 29, 2025

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/13803

Note: Links to docs will display an error until the docs builds have been completed.

❗ 1 Active SEVs

There are 1 currently active SEVs. If your PR is affected, please view them below:

❌ 4 New Failures, 4 Unrelated Failures

As of commit ee352a4 with merge base 389918b (image):

NEW FAILURES - The following jobs have failed:

BROKEN TRUNK - The following jobs failed but were present on the merge base:

👉 Rebase onto the `viable/strict` branch to avoid these failures

This comment was automatically generated by Dr. CI and updates every 15 minutes.

@meta-cla meta-cla bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Aug 29, 2025
@zingo
Copy link
Collaborator

zingo commented Sep 1, 2025

Test fails are unrelated

@zingo zingo merged commit a19c42b into pytorch:main Sep 1, 2025
239 of 247 checks passed
@shoumikhin
Copy link
Contributor

shoumikhin commented Sep 2, 2025

@YufengShi-dudu we've got a few test failures for this PR when it's tested internally with Buck.
Specifically:

  • test_convert_arange_start_step_int64_dtype_to_int32_pass_tosa_FP
  • test_convert_arange_default_int64_dtype_to_int32_pass_tosa_FP
  • test_convert_full_int64_dtype_to_int32_pass_tosa_FP
  • test_convert_arange_start_int64_dtype_to_int32_pass_tosa_FP
  • test_convert_or_remove_casting_to_int64_covnert_tosa_FP
  • test_convert_or_remove_casting_to_int64_covnert_tosa_FP
  • test_convert_or_remove_casting_to_int64_covnert_tosa_FP
  • test_convert_or_remove_casting_to_int64_covnert_tosa_FP

Example log:

============================= test session starts ==============================
platform linux -- Python 3.12.11+meta, pytest-7.2.2, pluggy-1.6.0
rootdir: /data/sandcastle/boxes/trunk-hg-full-fbsource/fbcode/executorch/backends/arm/test, configfile: pytest.ini
plugins: hypothesis-6.97.6
collected 31 items

executorch/backends/arm/test  ARM_TEST_SEED=3753576803  F

=================================== FAILURES ===================================
__ test_convert_arange_start_step_int64_dtype_to_int32_pass_tosa_FP[randint] ___

test_data = (tensor([6], dtype=torch.int32),)

    @common.parametrize("test_data", ArangeStartStepIncrementViewLessThan.test_data)
    def test_convert_arange_start_step_int64_dtype_to_int32_pass_tosa_FP(
        test_data: input_t1,
    ):
        module = ArangeStartStepIncrementViewLessThan()
        aten_ops_checks = [
            "torch.ops.aten.lt.Tensor",
            "torch.ops.aten.view.default",
        ]
        exir_ops_checks = [
            "executorch_exir_dialects_edge__ops_aten_lt_Tensor",
            "executorch_exir_dialects_edge__ops_aten_view_copy_default",
        ]
        pipeline = TosaPipelineFP[input_t1](
            module,
            test_data,
            aten_ops_checks,
            exir_ops_checks,
            transform_passes=[ConvertInt64ConstOpsToInt32Pass()],
        )
>       pipeline.run()

../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/backends/arm/test/passes/test_convert_int64_const_ops_to_int32.py:186: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/backends/arm/test/tester/test_pipeline.py:308: in run
    super().run()
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/backends/arm/test/tester/test_pipeline.py:281: in run
    raise e
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/backends/arm/test/tester/test_pipeline.py:278: in run
    stage()
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/backends/arm/test/tester/test_pipeline.py:89: in __call__
    self.func(*self.args, **self.kwargs)
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/backends/arm/test/tester/arm_tester.py:414: in to_edge_transform_and_lower
    return super().to_edge_transform_and_lower(to_edge_and_lower_stage)
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/backends/test/harness/tester.py:220: in to_edge_transform_and_lower
    return self._run_stage(
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/backends/test/harness/tester.py:189: in _run_stage
    stage_instance.run(prev_stage_artifact, inputs=inputs, *args, **kwargs)  # noqa
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/backends/arm/test/tester/arm_tester.py:177: in run
    self.edge_dialect_program = to_edge_transform_and_lower(
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/exir/program/fb/logger.py:111: in wrapper
    res = func(*args, **kwargs)
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/exir/program/_program.py:1344: in to_edge_transform_and_lower
    edge_manager = edge_manager.to_backend(method_to_partitioner)
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/exir/program/fb/logger.py:111: in wrapper
    res = func(*args, **kwargs)
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/exir/program/_program.py:1645: in to_backend
    new_edge_programs = to_backend(method_to_programs_and_partitioners)
/usr/local/fbcode/platform010/lib/python3.12/functools.py:912: in wrapper
    return dispatch(args[0].__class__)(*args, **kw)
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/exir/backend/backend_api.py:753: in _
    lower_all_submodules_to_backend(
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/exir/backend/backend_api.py:587: in lower_all_submodules_to_backend
    backend_name_to_subclass[backend_id].preprocess_multimethod(
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/exir/backend/backend_details.py:124: in preprocess_multimethod
    preprocess_result = cls.preprocess(program, compile_spec_for_program)
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/backends/arm/tosa_backend.py:104: in preprocess
    process_call_function(node, tosa_graph, node_visitors, tosa_spec)
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/backends/arm/process_node.py:57: in process_call_function
    node_visitors[node.target.__name__].define_node(  # type: ignore[union-attr]
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/backends/arm/operators/op_view.py:50: in define_node
    validate_valid_dtype(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

op_name = 'aten.view_copy.default'
tensors = [TosaArg(name='x', dtype=INT32, shape=(1,), dim_order=(0,), tosa_spec=TOSA-1.0+FP), TosaArg(name='aten_view_copy_default', dtype=INT32, shape=(1, 1), dim_order=(0, 1), tosa_spec=TOSA-1.0+FP)]
valid_dtypes = [1, 7], tosa_spec = TOSA-1.0+FP

    def validate_valid_dtype(
        op_name: str, tensors: Any | List[Any], valid_dtypes: Any | List[Any], tosa_spec
    ):
        """
        Validates that one or more tensors have dtypes within a set of allowed dtypes.
    
        This function checks whether the `dtype` attribute of the provided tensor(s) is one
        of the valid dtype values. It supports checking a single tensor or a list of
        tensors.
    
        Parameters:
        -----------
        op_name : str
            The name of the operation performing the validation.
        tensors : Any or List[Any]
            A tensor or list of tensors (each assumed to have `dtype` and `name` attributes)
            whose dtype will be validated.
        valid_dtypes : Any or List[Any]
            A dtype enum or list of dtype enums representing allowed dtype values.
        tosa_spec : Any
            A TosaSpecification instance indicating which TOSA version is targeted. This
            determines which serializer to use for dtype name resolution.
    
        Raises:
        -------
        ValueError
            If no tensors are provided, or if any tensor has a dtype not in `valid_dtypes`.
    
        Example:
        --------
        # Example usage:
        from executorch.backends.arm.operators.operator_validation_utils import (
            validate_valid_dtype,
        )
    
        import serializer.tosa_serializer as ts
    
        validate_valid_dtype(
            self.target,
            [*inputs, output],
            [ts.DType.INT8, ts.DType.INT32],
            output.tosa_spec,
        )
    
        """
    
        if not tensors:
            raise ValueError(
                f"{op_name}: Input tensor list is empty, cannot validate dtypes"
            )
    
        if not isinstance(valid_dtypes, List):
            valid_dtypes = [valid_dtypes]
    
        if not isinstance(tensors, List):
            tensors = [tensors]
    
        for tensor in tensors:
            if tensor.dtype not in valid_dtypes:
>               raise ValueError(
                    f"Expected tensor {tensor.name} in {op_name} to have one of the "
                    f"following dtypes: {[ts.DTypeNames[i] for i in valid_dtypes]}, "
                    f"got: {ts.DTypeNames[tensor.dtype]}"
                )
E               ValueError: Expected tensor x in aten.view_copy.default to have one of the following dtypes: ['BOOL', 'FP32']
...
...
...
ing payload for Mock should not be called: pt2_compile_chromium_events
I0901 17:58:59.212211 16541 Logger.cpp:945] Dropping logs in unit tests.

test_data = (tensor([6], dtype=torch.int32),)

    @common.parametrize("test_data", ArangeStartStepIncrementViewLessThan.test_data)
    def test_convert_arange_start_step_int64_dtype_to_int32_pass_tosa_FP(
        test_data: input_t1,
    ):
        module = ArangeStartStepIncrementViewLessThan()
        aten_ops_checks = [
            "torch.ops.aten.lt.Tensor",
            "torch.ops.aten.view.default",
        ]
        exir_ops_checks = [
            "executorch_exir_dialects_edge__ops_aten_lt_Tensor",
            "executorch_exir_dialects_edge__ops_aten_view_copy_default",
        ]
        pipeline = TosaPipelineFP[input_t1](
            module,
            test_data,
            aten_ops_checks,
            exir_ops_checks,
            transform_passes=[ConvertInt64ConstOpsToInt32Pass()],
        )
>       pipeline.run()

../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/backends/arm/test/passes/test_convert_int64_const_ops_to_int32.py:186: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/backends/arm/test/tester/test_pipeline.py:308: in run
    super().run()
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/backends/arm/test/tester/test_pipeline.py:281: in run
    raise e
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/backends/arm/test/tester/test_pipeline.py:278: in run
    stage()
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/backends/arm/test/tester/test_pipeline.py:89: in __call__
    self.func(*self.args, **self.kwargs)
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/backends/arm/test/tester/arm_tester.py:414: in to_edge_transform_and_lower
    return super().to_edge_transform_and_lower(to_edge_and_lower_stage)
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/backends/test/harness/tester.py:220: in to_edge_transform_and_lower
    return self._run_stage(
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/backends/test/harness/tester.py:189: in _run_stage
    stage_instance.run(prev_stage_artifact, inputs=inputs, *args, **kwargs)  # noqa
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/backends/arm/test/tester/arm_tester.py:177: in run
    self.edge_dialect_program = to_edge_transform_and_lower(
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/exir/program/fb/logger.py:111: in wrapper
    res = func(*args, **kwargs)
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/exir/program/_program.py:1344: in to_edge_transform_and_lower
    edge_manager = edge_manager.to_backend(method_to_partitioner)
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/exir/program/fb/logger.py:111: in wrapper
    res = func(*args, **kwargs)
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/exir/program/_program.py:1645: in to_backend
    new_edge_programs = to_backend(method_to_programs_and_partitioners)
/usr/local/fbcode/platform010/lib/python3.12/functools.py:912: in wrapper
    return dispatch(args[0].__class__)(*args, **kw)
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/exir/backend/backend_api.py:753: in _
    lower_all_submodules_to_backend(
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/exir/backend/backend_api.py:587: in lower_all_submodules_to_backend
    backend_name_to_subclass[backend_id].preprocess_multimethod(
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/exir/backend/backend_details.py:124: in preprocess_multimethod
    preprocess_result = cls.preprocess(program, compile_spec_for_program)
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/backends/arm/tosa_backend.py:104: in preprocess
    process_call_function(node, tosa_graph, node_visitors, tosa_spec)
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/backends/arm/process_node.py:57: in process_call_function
    node_visitors[node.target.__name__].define_node(  # type: ignore[union-attr]
../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/backends/arm/operators/op_view.py:50: in define_node
    validate_valid_dtype(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

op_name = 'aten.view_copy.default'
tensors = [TosaArg(name='x', dtype=INT32, shape=(1,), dim_order=(0,), tosa_spec=TOSA-1.0+FP), TosaArg(name='aten_view_copy_default', dtype=INT32, shape=(1, 1), dim_order=(0, 1), tosa_spec=TOSA-1.0+FP)]
valid_dtypes = [1, 7], tosa_spec = TOSA-1.0+FP

    def validate_valid_dtype(
        op_name: str, tensors: Any | List[Any], valid_dtypes: Any | List[Any], tosa_spec
    ):
        """
        Validates that one or more tensors have dtypes within a set of allowed dtypes.
    
        This function checks whether the `dtype` attribute of the provided tensor(s) is one
        of the valid dtype values. It supports checking a single tensor or a list of
        tensors.
    
        Parameters:
        -----------
        op_name : str
            The name of the operation performing the validation.
        tensors : Any or List[Any]
            A tensor or list of tensors (each assumed to have `dtype` and `name` attributes)
            whose dtype will be validated.
        valid_dtypes : Any or List[Any]
            A dtype enum or list of dtype enums representing allowed dtype values.
        tosa_spec : Any
            A TosaSpecification instance indicating which TOSA version is targeted. This
            determines which serializer to use for dtype name resolution.
    
        Raises:
        -------
        ValueError
            If no tensors are provided, or if any tensor has a dtype not in `valid_dtypes`.
    
        Example:
        --------
        # Example usage:
        from executorch.backends.arm.operators.operator_validation_utils import (
            validate_valid_dtype,
        )
    
        import serializer.tosa_serializer as ts
    
        validate_valid_dtype(
            self.target,
            [*inputs, output],
            [ts.DType.INT8, ts.DType.INT32],
            output.tosa_spec,
        )
    
        """
    
        if not tensors:
            raise ValueError(
                f"{op_name}: Input tensor list is empty, cannot validate dtypes"
            )
    
        if not isinstance(valid_dtypes, List):
            valid_dtypes = [valid_dtypes]
    
        if not isinstance(tensors, List):
            tensors = [tensors]
    
        for tensor in tensors:
            if tensor.dtype not in valid_dtypes:
>               raise ValueError(
                    f"Expected tensor {tensor.name} in {op_name} to have one of the "
                    f"following dtypes: {[ts.DTypeNames[i] for i in valid_dtypes]}, "
                    f"got: {ts.DTypeNames[tensor.dtype]}"
                )
E               ValueError: Expected tensor x in aten.view_copy.default to have one of the following dtypes: ['BOOL', 'FP32'], got: INT32

../buck-out/v2/gen/fbcode/cc6e70a06a0cb052/executorch/backends/arm/test/__convert_int64_const_ops_to_int32__/convert_int64_const_ops_to_int32#link-tree/executorch/backends/arm/operators/operator_validation_utils.py:175: ValueError

@YufengShi-dudu
Copy link
Collaborator Author

YufengShi-dudu commented Sep 2, 2025

Thanks for the issue and example log. We find that your internal validate_valid_dtype in backends/arm/operators/op_view.py differs from the public one

[ts.DType.INT8, ts.DType.INT32, ts.DType.FP32, ts.DType.BOOL],

Have you merged the int16 patches internally? We are also working on the int16. I think we will add some xfails to these tests as a turnaround before we improve data type checks during partitioning.
cc: @Ninja91 @per

@shoumikhin
Copy link
Contributor

@YufengShi-dudu I can check, which PR contains the int16 patches?

@Ninja91
Copy link
Contributor

Ninja91 commented Sep 2, 2025

@YufengShi-dudu This is the PR: #13658. It's merged and looks like waiting to be merged to main. I have added xfails on those tests as well. cc: @digantdesai

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ciflow/trunk CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. partner: arm For backend delegation, kernels, demo, etc. from the 3rd-party partner, Arm release notes: arm Changes to the ARM backend delegate
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants