code: def batch_matmul(expr, type_map):
      """Rewrite a batch_matmul op"""
      x, y = expr.args
      x_t = type_map[x]
      y_t = type_map[y]
      matmul_scale = fold_constant(x_t.scale * y_t.scale)
      matmul_zp = relay.const(0)
      out = relay.qnn.op.batch_matmul(
          x, y, x_t.zero_point, y_t.zero_point, x_t.scale, y_t.scale
      )
      return [
          out,
          TensorAffineType(
              matmul_scale, matmul_zp, out.attrs.out_dtype, x_t.axis
          ),
      ]
  
imports: import numpy
  import tvm
  from tvm import relay
  from tvm.ir import TensorAffineType, TupleAffineType
  from tvm.relay.qnn.op import canonicalizations
  from tvm.tir import bijective_layout
  from ..op import register_fake_quantization_to_integer, register_optional_fake_quantization_to_integer
label_desc: Use image node_id 16 for calling a global function with example usage: batch_matmul(expr, type_map) and returns: list