code: def _cat(fp32_piggy_back=False):
      # refer to aten/src/ATen/native/quantized/cpu/qconcat.cpp
      # for concat they also piggy backs to fp32(!)
      # dequantize -> fp32 math -> quantize
      def torch_impl(
          inputs,
          input_scales,
          input_zero_points,
          output_scale,
          output_zero_point,
          axis,
      ):
          dequantized = []
          for inp, inp_scale, inp_zp in zip(
              inputs, input_scales, input_zero_points
          ):
              dequantized.append(
                  relay.qnn.op.dequantize(inp, inp_scale, inp_zp)
              )
  
          concat = _op.tensor.concatenate(dequantized, axis=axis)
          return relay.qnn.op.quantize(
              concat,
              output_scale,
              output_zero_point,
              axis=axis,
              out_dtype="uint8",
          )
  
      def _impl(inputs, _):
          axis = inputs[1]
          output_scale = _expr.const(inputs[2])
          output_zero_point = _expr.const(inputs[3])
          num_inputs = (len(inputs) - 4) // 2
  
          input_scales = []
          input_zero_points = []
  
          for i in range(0, num_inputs):
              input_scales.append(_expr.const(inputs[4 + i * 2]))
              input_zero_points.append(
                  _expr.const(inputs[4 + i * 2 + 1])
              )
  
          if fp32_piggy_back:
              return torch_impl(
                  inputs[0],
                  input_scales,
                  input_zero_points,
                  output_scale,
                  output_zero_point,
                  axis,
              )
  
          return relay.qnn.op.concatenate(
              inputs[0],
              input_scales,
              input_zero_points,
              output_scale,
              output_zero_point,
              axis,
          )
  
      return _impl
  
imports: import numpy
  import tvm
  from tvm import relay
  from tvm.relay import expr
  from tvm.relay import op
  from tvm.relay.frontend.common import infer_shape
  from .common import logger
  from .pytorch_utils import is_version_greater_than
label_desc: Use image node_id 27 for calling a global function with example usage: _cat(fp32_piggy_back) and returns: _impl, relay, relay, torch_impl