code: def test_rewrite_warp_execution():
      mod = create_prim_func(te_workload.matmul(n=512, m=512, k=512))
      target = _target()
      ctx = _create_context(mod, target)
  
      sch = tir.Schedule(mod, debug_mask="all")
      # fmt: off
      # pylint: disable=line-too-long,invalid-name
      b0 = sch.get_block(name="C", func_name="main")
      b1 = sch.cache_write(block=b0, write_buffer_index=0, storage_scope="local")
      l2, l3, l4 = sch.get_loops(block=b0)
      sch.annotate(b0, "warp_execution", 1)
      v5, v6, v7, v8, v9 = sch.sample_perfect_tile(loop=l2, n=5, max_innermost_factor=64, decision=[1, 16, 1, 2, 16])
      l10, l11, l12, l13, l14 = sch.split(loop=l2, factors=[v5, v6, v7, v8, v9])
      v15, v16, v17, v18, v19 = sch.sample_perfect_tile(loop=l3, n=5, max_innermost_factor=64, decision=[16, 1, 8, 2, 2])
      l20, l21, l22, l23, l24 = sch.split(loop=l3, factors=[v15, v16, v17, v18, v19])
      v25, v26, v27 = sch.sample_perfect_tile(loop=l4, n=3, max_innermost_factor=64, decision=[1, 16, 32])
      l28, l29, l30 = sch.split(loop=l4, factors=[v25, v26, v27])
      sch.reorder(l10, l20, l11, l21, l12, l22, l28, l29, l13, l23, l30, l14, l24)
      l31 = sch.fuse(l10, l20)
      sch.bind(loop=l31, thread_axis="blockIdx.x")
      l32 = sch.fuse(l11, l21)
      sch.bind(loop=l32, thread_axis="vthread.x")
      l33 = sch.fuse(l12, l22)
      sch.bind(loop=l33, thread_axis="threadIdx.y")
      b34 = sch.cache_read(block=b0, read_buffer_index=0, storage_scope="shared")
      sch.compute_at(block=b34, loop=l28, preserve_unit_loops=True)
      _, _, _, _, l39, l40 = sch.get_loops(block=b34)
      l41 = sch.fuse(l39, l40)
      _, v43 = sch.sample_perfect_tile(loop=l41, n=2, max_innermost_factor=4, decision=[262144, 1])
      sch.annotate(block_or_loop=b34, ann_key="meta_schedule.cooperative_fetch", ann_val=v43)
      b44 = sch.cache_read(block=b0, read_buffer_index=1, storage_scope="shared")
      sch.compute_at(block=b44, loop=l28, preserve_unit_loops=True)
      _, _, _, _, l49, l50 = sch.get_loops(block=b44)
      l51 = sch.fuse(l49, l50)
      _, v53 = sch.sample_perfect_tile(loop=l51, n=2, max_innermost_factor=4, decision=[8192, 2])
      sch.annotate(block_or_loop=b44, ann_key="meta_schedule.cooperative_fetch", ann_val=v53)
      sch.reverse_compute_at(block=b1, loop=l33, preserve_unit_loops=True)
      # pylint: enable=line-too-long,invalid-name
      # fmt: on
      sch.enter_postproc()
      assert ctx.space_generator.postprocs[0].apply(sch)
      tvm.ir.assert_structural_equal(sch.mod, WarpExecutionAfterRewrite)
  
file_path: tvm/tests/python/meta_schedule/test_meta_schedule_postproc_rewrite_cooperative_fetch.py
imports: import tvm
  import tvm.testing
  from tvm import meta_schedule
  from tvm import tir
  from tvm.meta_schedule.testing import te_workload
  from tvm.script import tir
  from tvm.target import Target
  from tvm.te import create_prim_func
label_desc: Use image node_id 4 for calling a global function with example usage: test_rewrite_warp_execution() without return types