code: def test_record_split_reorder_fuse_annotation():
      if not tvm.testing.device_enabled("llvm"):
          return
  
      A = te.placeholder((512, 512), name="A")
      B = te.placeholder((512, 512), name="B")
      k = te.reduce_axis((0, 512), name="k")
      C = te.compute(
          (512, 512),
          lambda i, j: te.sum(A[i][k] * B[k][j], axis=[k]),
          name="C",
      )
  
      dag = auto_scheduler.ComputeDAG([A, B, C])
      s = dag.get_init_state()
  
      # Split
      its0 = s.split(C, s[C].iters[0], [4, 8, 8])
      its1 = s.split(C, s[C].iters[4], [8, 4, 4])
      # Reorder
      s.reorder(
          C,
          [
              its0[0],
              its1[0],
              its0[1],
              its1[1],
              its0[2],
              its1[2],
              its0[3],
              s[C].iters[8],
              its1[3],
          ],
      )
      # Fuse
      s.fuse(C, [s[C].iters[0], s[C].iters[1], s[C].iters[2]])
      # Parallel
      s.parallel(C, s[C].iters[0])
      # Thread bind(The blockIdx & threadIdx are used in GPU, just for record testing here)
      s.bind(C, s[C].iters[1], "blockIdx.x")
      s.bind(C, s[C].iters[2], "threadIdx.z")
      s.bind(C, s[C].iters[3], "vthread")
      # Unroll
      s.unroll(C, s[C].iters[4])
      # Vectorize
      s.vectorize(C, s[C].iters[6])
  
      record_common(dag, s)
  
imports: import json
  import multiprocessing
  import numpy
  import tvm
  from tvm import topi
  from tvm import te, auto_scheduler
  import tempfile
  import tvm.testing
  import pickle
  from tvm.testing.auto_scheduler import matmul_auto_scheduler_test
  from tvm.auto_scheduler import workload_registry
label_desc: Use image node_id 2 for calling a global function with example usage: test_record_split_reorder_fuse_annotation() without return types