code: def test_internal_subroutine_call():
      """Internal subroutines should not use the PackedFunc API
  
      A subroutine without the "global_symbol" attribute is an internal
      subroutine, and is not directly exposed to a user of the generated
      `runtime.Module`.  Therefore, it doesn't need to follow the
      PackedFunc API.
      """
  
      @I.ir_module
      class before:
          @T.prim_func
          def main(A: T.Buffer(1, "float32")):
              T.func_attr({"target": T.target("llvm", host="llvm")})
              before.subroutine(A.data)
  
          # this test fails if it's made public
          @T.prim_func(private=True)
          def subroutine(A_data: T.handle("float32")):
              T.func_attr({"target": T.target("llvm")})
              T.evaluate(A_data)
  
      after = tvm.tir.transform.MakePackedAPI()(before)
      tvm.ir.assert_structural_equal(
          before["subroutine"], after["subroutine"]
      )
  
      compute_scope = _find_compute_scope(after["main"])
      subroutine_call_op = compute_scope.body.value.op
      assert isinstance(subroutine_call_op, tvm.ir.GlobalVar), (
          f"The main function's CallNode should use the subroutine's GLobalVar as the operation, "
          f"but instead has an operation of type {subroutine_call_op}"
      )
  
file_path: tvm/tests/python/tir-transform/test_tir_transform_make_packed_api.py
imports: import pytest
  import tvm
  import tvm.testing
  from tvm import te, tir
  from tvm.script import tir, ir
  from tvm.driver.build_module import schedule_to_module
label_desc: Use image node_id 9 for calling a global function with example usage: test_internal_subroutine_call() without return types