code: def test_loop(target_precision):
      i = relay.var("i", shape=(), dtype="int32")
      st = relay.var("st", shape=(relay.Any(), 1), dtype="int32")
  
      def int32(val):
          return relay.const(val, "int32")
  
      def _cond(i, st):
          return relay.op.min(relay.op.less(i, int32(10)))
  
      def _body(i, st):
          i_vec = relay.op.reshape(i, (1, 1))
          ret = relay.op.concatenate([st, i_vec], axis=0)
          return i + int32(1), ret
  
      loop = relay.loops.while_loop(_cond, [i, st], _body)
      start = relay.var("start", shape=(), dtype="int32")
      body = loop(
          start, relay.op.reshape(relay.const(0), newshape=(1, 1))
      )
      func = relay.Function([start], relay.TupleGetItem(body, 1))
      mod = tvm.IRModule()
      mod["main"] = func
  
      mod_params = {
          "start": np.random.uniform(-1, 1, size=()).astype("int32"),
      }
      output_mod = verify_mixed_precision_output_close(
          mod,
          mod_params,
          mixed_precision_dtype=target_precision,
          atol=0.01,
          rtol=0.01,
      )
  
      # Create expected module
      expected_mod = InferType()(mod)
      assert tvm.ir.structural_equal(expected_mod, output_mod)
  
imports: from typing import Any, Dict, List
  import numpy
  import pytest
  import tvm
  from tvm import relay
  from tvm.relay.testing import lstm
  from tvm.relay.transform import InferType, ToMixedPrecision, mixed_precision
label_desc: Use image node_id 20 for calling a global function with example usage: test_loop(target_precision) and returns: relay, relay, unknown,  ret