code: def tir_conv2d(a: T.handle, w: T.handle, b: T.handle) -> None:
      T.func_attr({"global_symbol": "main", "tir.noalias": True})
      A = T.match_buffer(a, [16, 16, 14, 14])
      W = T.match_buffer(w, [16, 3, 3, 32])
      B = T.match_buffer(b, [16, 32, 14, 14])
      Apad = T.alloc_buffer([16, 16, 16, 16])
  
      for n, c, y, x in T.grid(16, 16, 16, 16):
          with T.block("Apad"):
              nn, cc, yy, xx = T.axis.remap("SSSS", [n, c, y, x])
              Apad[nn, cc, yy, xx] = T.if_then_else(
                  1 <= yy and yy < 15 and 1 <= xx and xx < 15,
                  A[nn, cc, yy - 1, xx - 1],
                  0.0,
                  dtype="float32",
              )
      for n, f, y, x, kc, ky, kx in T.grid(16, 32, 14, 14, 16, 3, 3):
          with T.block("B"):
              nn, ff, yy, xx, rc, ry, rx = T.axis.remap(
                  "SSSSRRR", [n, f, y, x, kc, ky, kx]
              )
              with T.init():
                  B[nn, ff, yy, xx] = 0.0
              B[nn, ff, yy, xx] += (
                  Apad[nn, rc, yy + ry, xx + rx] * W[rc, ry, rx, ff]
              )
  
imports: import numpy
  import tvm
  import tvm.testing
  from tvm import te, tir, topi, relay
  from tvm.script import tir
  import pytest
label_desc: Use image node_id 13 for calling a global function with example usage: tir_conv2d(a, w, b) without return types