code: def matmul(m, n, k, in_dtype, out_dtype, b_transposed):
      b_shape = (n, k) if b_transposed else (k, n)
      a = te.placeholder((m, k), name="A", dtype=in_dtype)
      b = te.placeholder(b_shape, name="B", dtype=in_dtype)
      k = te.reduce_axis((0, k), name="k")
  
      def maybe_cast(v):
          if in_dtype != out_dtype:
              return tvm.tir.Cast(out_dtype, v)
          return v
  
      def maybe_swap(i, j):
          if b_transposed:
              return j, i
          return i, j
  
      c = te.compute(
          (m, n),
          lambda i, j: te.sum(
              maybe_cast(a[i, k]) * maybe_cast(b[maybe_swap(k, j)]),
              axis=[k],
          ),
          name="C",
      )
      return (a, b, c)
  
file_path: tvm/tests/python/tir-schedule/test_tir_schedule_tensorize_ldmatrix_mma_numeric.py
imports: import numpy
  import pytest
  import tvm
  import tvm.testing
  from tvm import te
  from tvm.testing.tir import mma_schedule
  from tvm.tir.tensor_intrin.cuda import LDMATRIX_f16_A_INTRIN, LDMATRIX_f16_B_INTRIN, LDMATRIX_f16_B_TRANS_INTRIN, LDMATRIX_i8_A_INTRIN, LDMATRIX_i8_B_TRANS_INTRIN, LDMATRIX_i8_B_INTRIN, MMA_f16f16f16_INTRIN, MMA_f16f16f16_TRANS_B_INTRIN, MMA_f16f16f32_INTRIN, MMA_f16f16f32_TRANS_B_INTRIN, MMA_fill_16x16_f16_INTRIN, MMA_fill_16x16_f32_INTRIN, MMA_fill_16x16_i32_INTRIN, MMA_i8i8i32_INTRIN, MMA_i8i8i32_TRANS_B_INTRIN, MMA_store_16x16_f16_global_INTRIN, MMA_store_16x16_f32_global_INTRIN, MMA_store_16x16_i32_global_INTRIN, shared_16x16_to_ldmatrix_32x8_layout, shared_16x32_to_ldmatrix_32x16_layout, shared_32x16_to_ldmatrix_32x16_layout
label_desc: Use image node_id 1 for calling a global function with example usage: matmul(m, n, k, in_dtype, out_dtype, b_transposed) and returns: a,  b,  c, v, i,  j, tvm, j,  i