code: def _add_scalar():
      # this is used for mobilenet v3
      def _impl(inputs, _):
          # refer to aten/src/ATen/native/quantized/cpu/qadd.cpp
          assert (
              len(inputs) == 6
          ), "Input quant params not found in op inputs"
          s = inputs[4]
          z = inputs[5]
          c = inputs[1]
          c_q = round(c / s)
          q_min = 0
          q_max = 255
  
          # math for calculating output scale and zp are already done
          # during _add_output_quant_params_to_scalar_op above
          out_scale = _expr.const(inputs[2])
          out_zp = _expr.const(inputs[3])
  
          if q_min > z - c_q or q_max < z - c_q:
              # TODO(masahi): Replace this with integer only compute
              dequant = relay.qnn.op.dequantize(
                  inputs[0], _expr.const(s), _expr.const(z)
              )
              dequantized_add = _op.tensor.add(
                  dequant, _expr.const(c_q * s)
              )
              return relay.qnn.op.quantize(
                  dequantized_add,
                  out_scale,
                  out_zp,
                  axis=1,
                  out_dtype="uint8",
              )
          # only scale change
          return inputs[0]
  
      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 28 for calling a global function with example usage: _add_scalar() and returns: _impl, inputs, relay