diff --git a/backends/qualcomm/tests/rework/src/pattern.py b/backends/qualcomm/tests/rework/src/pattern.py index 150f9160669..d1ff3d0996b 100644 --- a/backends/qualcomm/tests/rework/src/pattern.py +++ b/backends/qualcomm/tests/rework/src/pattern.py @@ -4209,9 +4209,15 @@ def forward(self, x, y): squeeze_out = view_out.squeeze(-1) return squeeze_out, conv_out + class _RemainderByScalar(torch.nn.Module): + # DecomposeRemainder turns the scalar into an int64 get_attr at the graph head + def forward(self, x, idx): + return x + (idx % 80).float() + @staticmethod @unpack_pass_fixtures def test( + subtests, quantizer, compile_spec, backend_type: QnnExecuTorchBackendType, @@ -4237,6 +4243,18 @@ def test( gm, exir_ops.edge.aten._to_copy.default, expected_casts ) + # The int32 cast of a constant must still follow it once the constant is lifted + with subtests.test(msg="constant_cast_order"): + gm = pass_pipeline.lower_edge_ep( + module=I64toI32._RemainderByScalar(), + sample_input=(torch.randn(1, 3), torch.tensor([[3, 170, 85]])), + backend_type=backend_type, + compile_spec=compile_spec, + target_pass=target_pass, + quantizer=quantizer, + ).graph_module + gm.graph.lint() + class InsertIOQDQ: class _Basic(torch.nn.Module):