code: def dot(dtype, fallback):
      cfg = autotvm.get_config()
      cfg.define_knob("bn", [64] if fallback else [64, 32])
      cfg.define_knob("factor", [4] if fallback else [4])
      M = tvm.te.size_var("M")
      K = tvm.te.size_var("K")
      N = tvm.te.size_var("N")
      A = tvm.te.placeholder((M, K), name="A", dtype=dtype)
      B = tvm.te.placeholder((K, N), name="B", dtype=dtype)
      C = compute_dot(A, B)
      s = tvm.te.create_schedule(C.op)
      # Blocking by loop tiling
      xo, yo, xi, yi = s[C].tile(
          C.op.axis[0], C.op.axis[1], cfg["bn"].val, cfg["bn"].val
      )
      (k,) = s[C].op.reduce_axis
      ko, ki = s[C].split(k, factor=cfg["factor"].val)
      # Hoist reduction domain outside the blocking loop
      s[C].reorder(xo, yo, ko, ki, xi, yi)
      return s, [A, B, C]
  
imports: import tvm
  from tvm import autotvm
  from ..None import defop, AllTypes
  from ..None import assign_by_req, reduce_axes
label_desc: Use image node_id 2 for calling a global function with example usage: dot(dtype, fallback) and returns: s,  list