code: def test_get_in_nodes():
      data = relay.var("data")
      w0 = relay.var("w0")
      out1 = relay.nn.conv2d(data, w0)
      out2 = relay.add(out1, data)
      out3 = out2 + relay.expr.const(2.5)
      w1 = relay.var("w1")
      out = relay.nn.conv2d(out3, w1)
      net = relay.Function(relay.analysis.free_vars(out), out)
      net = bind_inputs(
          net,
          {
              "data": (1, 16, 224, 224),
              "w0": (16, 16, 1, 1),
              "w1": (16, 16, 1, 1),
          },
      )
      target_ops = [relay.op.get("nn.conv2d")]
      input_names = ["data"]
      node_list = []
      node_dict = {}
      expr2graph(
          net,
          target_ops,
          node_dict,
          node_list,
          tvm.target.Target("llvm"),
      )
      out = get_in_nodes(node_list, target_ops, input_names)
      expected_out = {3: [0], 4: [3, 0], 7: [4]}
      diff_set = set(out) ^ set(expected_out)
      if len(diff_set) != 0:
          raise RuntimeError(
              "Output mismatch: expecting %s but got %s."
              % (str(expected_out), str(out))
          )
  
file_path: tvm/tests/python/autotvm/test_autotvm_graph_tuner_utils.py
imports: import pytest
  import tvm
  from tvm import te
  from tvm import autotvm, relay
  from tvm.relay.testing import synthetic
  from tvm.autotvm.graph_tuner.utils import has_multiple_inputs, get_direct_ancestor, get_in_nodes, get_out_nodes, expr2graph, bind_inputs
  from tvm.autotvm.graph_tuner._base import OPT_OUT_OP
  from tvm.autotvm.graph_tuner.utils.traverse_graph import _replace_device_with_tracing
  from tvm.relay.expr import Call, TupleGetItem, Tuple, Var
label_desc: Use image node_id 5 for calling a global function with example usage: test_get_in_nodes() without return types