code: def make_qnn_relu(
      expr, fused_activation_fn, scale, zero_point, dtype
  ):
      """Mimics convert_qnn_fused_activation_function from TFLite frontend"""
      quantize = lambda x: float(int(round(x / scale)) + zero_point)
  
      # Get min/max of the output dtype. This will be used to ensure that clip a_min/a_max are not
      # beyond the dtype range.
      qmin, qmax = get_dtype_range(dtype)
  
      # The input expr is a quantized tensor with its scale and zero point. We calculate the
      # suitable clip off points based on these scale and zero point.
      if fused_activation_fn == "NONE":
          return expr
      if fused_activation_fn == "RELU6":
          return tvm.relay.op.clip(
              expr,
              a_min=max(qmin, quantize(0)),
              a_max=min(qmax, quantize(6.0)),
          )
      if fused_activation_fn == "RELU_N1_TO_1":
          return tvm.relay.op.clip(
              expr,
              a_min=max(qmin, quantize(-1.0)),
              a_max=min(qmax, quantize(1.0)),
          )
      if fused_activation_fn == "RELU":
          return tvm.relay.op.clip(
              expr, a_min=max(qmin, quantize(0.0)), a_max=qmax
          )
      raise ValueError(
          "Invalid argument provided with fused_activation_fn"
      )
  
imports: import math
  from typing import List, Union, Tuple
  import numpy
  import tvm
  from tvm import relay
  from tvm.testing.aot import AOTTestRunner, get_dtype_range
label_desc: Use image node_id 9 for calling a global function with example usage: make_qnn_relu(expr, fused_activation_fn, scale, zero_point, dtype) and returns: expr, tvm, tvm, tvm