code: def test_record_pragma_storage_align_rfactor():
      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()
  
      # Rfactor
      ko, _ = s.split(C, s[C].iters[2], [16])
      s.rfactor(C, ko, 2)
      # Pragma
      s.pragma(C, s[C].iters[0], "auto_unroll_max_step$64")
      # StorageAlign
      s.storage_align(C, s[C].iters[-1], 8, 4)
  
      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 5 for calling a global function with example usage: test_record_pragma_storage_align_rfactor() without return types