code: def test_coproc_sync3():
      def __check_list(tvm_array, py_list):
          for ti, li in zip(tvm_array, py_list):
              if ti.value != li:
                  return False
          return True
  
      ib = tvm.tir.ir_builder.create()
      n = te.size_var("n")
      cp = te.thread_axis((0, 1), "cop")
      A = ib.allocate("float32", 128, name="A", scope="global.cache")
      with ib.for_range(0, n, name="i") as i:
          with ib.for_range(0, n, name="i") as j:
              with ib.new_scope():
                  ib.scope_attr(cp, "coproc_scope", 1)
                  A[i] = 1.0
              with ib.new_scope():
                  ib.scope_attr(cp, "coproc_scope", 2)
                  A[i] = 1.0
      with ib.new_scope():
          ib.scope_attr(cp, "coproc_scope", 3)
          A[0] = 0.0
  
      stmt = ib.get()
  
      mod = tvm.IRModule.from_expr(tvm.tir.PrimFunc([n], stmt))
      stmt = tvm.tir.transform.CoProcSync()(mod)["main"].body
  
      slist = tvm.tir.stmt_list(stmt[0].body)
      push_st = slist[2]
      slist = tvm.tir.stmt_list(slist[-1])
      pop_st = slist[0].body[0]
  
      assert push_st.value.op.same_as(
          tvm.ir.Op.get("tir.cop.coproc_dep_push")
      )
      assert __check_list(push_st.value.args, [2, 3])
      assert pop_st.value.op.same_as(
          tvm.ir.Op.get("tir.cop.coproc_dep_pop")
      )
      assert __check_list(pop_st.value.args, [2, 3])
  
imports: import tvm
  from tvm import te
label_desc: Use image node_id 3 for calling a global function with example usage: test_coproc_sync3() and returns: True, False