def METHOD_NAME():
    @I.ir_module
    class TestModule:
        I.module_attrs({"device_num": 10})
        I.module_global_infos(
            {
                "mesh": [
                    R.device_mesh((2, 2), I.Range(0, 4)),  # mesh[0]
                    R.device_mesh((1,), I.Range(4, 5)),  # mesh[1]
                ]
            }
        )
        @T.prim_func
        def tir_func(
            x: T.Buffer((T.int64(128), T.int64(128)), "float32"),
            y: T.Buffer((T.int64(128), T.int64(128)), "float32"),
        ):
            T.func_attr({"tir.noalias": True})
            for i, j in T.grid(T.int64(128), T.int64(128)):
                with T.block():
                    vi, vj = T.axis.remap("SS", [i, j])
                    y[vi, vj] = x[vi, vj] + 1.0
        @R.function
        def foo(
            x: R.DTensor((128, 128), "float32", device_mesh="mesh[0]", placement="S[0], R"),
        ) -> R.DTensor((128, 128), "float32", device_mesh="mesh[0]", placement="S[0], R"):
            gv0 = R.dist.call_tir(
                TestModule.tir_func,
                x,
                R.DTensor(
                    shape=(128, 128), dtype="float32", device_mesh="mesh[0]", placement="S[0], R"
                ),
            )
            return gv0
    device_mesh_list = [DeviceMesh((2, 2), Range(0, 4)), DeviceMesh((1,), Range(4, 5))]
    foo_func = TestModule["foo"]
    params = foo_func.params
    assert len(params) == 1
    assert params[0].struct_info == R.DTensor(
        (128, 128), "float32", device_mesh_list[0], placement="S[0], R"
    )
    assert foo_func.ret_struct_info == R.DTensor(
        (128, 128), "float32", device_mesh_list[0], placement="S[0], R"
    )
    assert isinstance(foo_func.body, SeqExpr)
    assert len(foo_func.body.blocks[0].bindings) == 1
    assert isinstance(foo_func.body.blocks[0].bindings[0], VarBinding)
    value = foo_func.body.blocks[0].bindings[0].value
    assert isinstance(value, Call)
    assert value.sinfo_args[0] == R.DTensor(
        (128, 128), "float32", device_mesh_list[0], placement="S[0], R"
    )
    _check(TestModule)