code: def nested_block_bind_after_cache_read(
      A: T.Buffer((16, 16), "float32"), B: T.Buffer((16,), "float32")
  ) -> None:
      for i in T.serial(16):
          with T.block("outer"):
              vi = T.axis.spatial(16, i)
              A_shared = T.alloc_buffer(
                  [1, 16], dtype="float32", scope="shared"
              )
              for ax0, ax1 in T.grid(1, 16):
                  with T.block("A_shared"):
                      v0 = T.axis.spatial(16, vi + ax0)
                      v1 = T.axis.spatial(16, ax1)
                      A_shared[v0, v1] = A[v0, v1]
              for j in T.serial(16):
                  with T.block("inner"):
                      vj = T.axis.reduce(16, j)
                      with T.init():
                          B[vi] = T.float32(0)
                      B[vi] = B[vi] + A_shared[vi, vj]
  
imports: import sys
  import pytest
  import tvm
  import tvm.testing
  from tvm import tir
  from tvm.script import tir
  from tvm.tir.schedule.testing import verify_trace_roundtrip, assert_structural_equal_ignore_global_symbol
label_desc: Use image node_id 23 for calling a global function with example usage: nested_block_bind_after_cache_read(A, B) without return types