code: def test_record_compute_at_root_inline_cache_read_write():
      if not tvm.testing.device_enabled("llvm"):
          return
  
      A = te.placeholder((512, 512), name="A")
      AA = topi.nn.relu(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(AA[i][k] * B[k][j], axis=[k]),
          name="C",
      )
  
      dag = auto_scheduler.ComputeDAG([A, B, C])
      s = dag.get_init_state()
  
      # Cache Write
      C_shared = s.cache_write(C, "shared")
      # Compute At
      s.compute_at(C_shared, C, s[C].iters[0])
      # Cache Read
      B_global = s.cache_read(B, "global", [C_shared])
      s.compute_at(B_global, C_shared, s[C_shared].iters[2])
      # Compute Inline
      s.compute_inline(AA)
      # Compute Root
      s.compute_root(C_shared)
  
      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 3 for calling a global function with example usage: test_record_compute_at_root_inline_cache_read_write() without return types