code: def test_copy2d():
      m = te.var("m")
      l = te.var("l")
      A = te.placeholder((m, l), name="A")
      B = te.compute((m, l), lambda i, j: A[i, j], name="B")
      s = te.create_schedule(B.op)
      s[B].pragma(B.op.axis[0], "memcpy")
      bounds = tvm.te.schedule.InferBound(s)
      stmt = tvm.te.schedule.ScheduleOps(s, bounds)
      func = tvm.te.schedule.SchedulePostProcToPrimFunc(
          [A, B], stmt, None
      )
      mod = tvm.IRModule.from_expr(func)
      mod = tvm.tir.transform.StorageFlatten(64)(mod)
  
      def cb(src, dst, pad_before, pad_after, pad_value):
          assert dst.strides[0] == l
          assert dst.strides[1].value == 1
          assert src.strides[0] == l
          assert tuple(src.shape) == (m, l)
          return tvm.tir.Evaluate(0)
  
      stmt = tvm.tir.transform.InjectCopyIntrin("memcpy", cb)(mod)[
          "main"
      ].body
  
file_path: tvm/tests/python/tir-transform/test_tir_transform_inject_copy_intrin.py
imports: import tvm
  import tvm.testing
  from tvm import te
  from tvm.driver.build_module import schedule_to_module
label_desc: Use image node_id 1 for calling a global function with example usage: test_copy2d() and returns: tvm