code: def test_split_fuse_reorder_annotation():
      A, B, C = matmul_auto_scheduler_test(N=512, M=512, K=512)
      dag = auto_scheduler.ComputeDAG([A, B, C])
      s0 = dag.get_init_state()
      i, j, k = s0[C].iters
  
      assert i.range.extent == 512
  
      io, ii = s0.split(C, i, [16])
      assert s0[C].iters[0] == io
      assert s0[C].iters[1] == ii
      assert io.range.extent == 32
      assert ii.range.extent == 16
  
      jo, ji = s0.split(C, j, [8])
      assert jo.range.extent == 64
      assert ji.range.extent == 8
  
      s0.reorder(C, [io, jo, k, ji, ii])
      assert s0[C].iters[2].range.extent == 512
  
      fused_it = s0.fuse(C, [io, jo])
      assert fused_it.range.extent == 2048
  
      s1 = dag.get_init_state()
      i, j, _ = s1[C].iters
      i1, i2, i3 = s1.split(C, i, [8, 2])
      j1, j2, j3 = s1.split(C, j, [32, 8], False)
      assert s1[C].iters[0].range.extent == 32
      assert s1[C].iters[1].range.extent == 8
      assert s1[C].iters[2].range.extent == 2
      assert s1[C].iters[3].range.extent == 32
      assert s1[C].iters[4].range.extent == 8
      assert s1[C].iters[5].range.extent == 2
  
      res = s1.bind(C, i1, "blockIdx.x")
      assert res == s1[C].iters[0]
      assert (
          res.annotation
          == auto_scheduler.loop_state.State.ANNOTATION_TRANS_TABLE[
              "blockIdx.x"
          ]
      )
  
      res = s1.bind(C, i2, "vthread")
      assert res == s1[C].iters[1]
      assert (
          res.annotation
          == auto_scheduler.loop_state.State.ANNOTATION_TRANS_TABLE[
              "vthread"
          ]
      )
  
      res = s1.bind(C, i3, "threadIdx.y")
      assert res == s1[C].iters[2]
      assert (
          res.annotation
          == auto_scheduler.loop_state.State.ANNOTATION_TRANS_TABLE[
              "threadIdx.y"
          ]
      )
  
      res = s1.parallel(C, j1)
      assert res == s1[C].iters[3]
      assert (
          res.annotation
          == auto_scheduler.loop_state.State.ANNOTATION_TRANS_TABLE[
              "parallel"
          ]
      )
  
      res = s1.unroll(C, j2)
      assert res == s1[C].iters[4]
      assert (
          res.annotation
          == auto_scheduler.loop_state.State.ANNOTATION_TRANS_TABLE[
              "unroll"
          ]
      )
  
      res = s1.vectorize(C, j3)
      assert res == s1[C].iters[5]
      assert (
          res.annotation
          == auto_scheduler.loop_state.State.ANNOTATION_TRANS_TABLE[
              "vectorize"
          ]
      )
  
file_path: tvm/tests/python/auto_scheduler/test_auto_scheduler_loop_state.py
imports: import numpy
  import tvm
  from tvm import auto_scheduler, te
  from tvm import topi
  from tvm.testing.auto_scheduler import matmul_auto_scheduler_test, conv2d_nchw_bn_relu_auto_scheduler_test
label_desc: Use image node_id 1 for calling a global function with example usage: test_split_fuse_reorder_annotation() without return types