code: def mma_sp_m16n8k16_f16f16f16(
      a: T.handle, b: T.handle, c: T.handle, _metadata: T.handle
  ):
      T.func_attr(
          {"global_symbol": "default_function", "tir.noalias": True}
      )
      A = T.match_buffer(a, [16, 8], dtype="float16")
      B = T.match_buffer(b, [16, 8], dtype="float16")
      C = T.match_buffer(c, [16, 8], dtype="float16")
      metadata = T.match_buffer(_metadata, [8], dtype="uint32")
      brow = T.env_thread("blockIdx.y")
      bcol = T.env_thread("blockIdx.x")
      tx = T.env_thread("threadIdx.x")
      T.launch_thread(brow, 1)
      T.launch_thread(bcol, 1)
      T.launch_thread(tx, 32)
      multi_a = T.decl_buffer([4], "float16", scope="local")
      multi_b = T.decl_buffer([4], "float16", scope="local")
      accum = T.decl_buffer([4], "float16", scope="local")
      meta_local = T.decl_buffer([1], "uint32", scope="local")
      for i in range(4):
          accum[i] = T.float16(0)
  
      for i in range(4):
          multi_a[i] = A[tx // 4 + i // 2 * 8, tx % 4 * 2 + i % 2]
  
      for i in range(4):
          multi_b[i] = B[tx % 4 * 2 + i % 2 + i // 2 * 8, tx // 4]
  
      meta_local[0] = metadata[tx // 4]
  
      T.evaluate(
          T.ptx_mma_sp(
              "m16n8k16",
              "row",
              "col",
              "fp16",
              "fp16",
              "fp16",
              multi_a.data,
              0,
              multi_b.data,
              0,
              accum.data,
              0,
              meta_local.data,
              0,
              0,
              False,
              dtype="float16",
          )
      )
  
      for i in range(4):
          C[i // 2 * 8 + tx // 4, tx % 4 * 2 + i % 2] = accum[i]
  
file_path: tvm/tests/python/tir-base/test_tir_ptx_mma_sp.py
imports: import tvm
  from tvm.script import tir
  import numpy
  import tvm.testing
label_desc: Use image node_id 3 for calling a global function with example usage: mma_sp_m16n8k16_f16f16f16(a, b, c, _metadata) without return types