code: def CanonicalizeOps():
      """Converts/Lowers an expression containing QNN ops to an expression containing only core
      (non-Dialect) Relay ops. Each QNN op is lowered to a sequence of existing Relay ops. This is a
      target-independent pass. One can register the lowering/transformation function for this op using
      FTVMQnnCanonicalize attr_name for FTVMLegalize op attribute.  An example of this transformation
      is below
  
      Examples
      ________
  
      .. code-block:: python
  
          # Original expression
          qnn_expr = relay.qnn.op.requantize(y,
                                             input_scale=1,
                                             input_zero_point=0,
                                             output_scale=1,
                                             output_zero_point=0,
                                             out_dtype='int8')
  
          # We want to utilize all the existing Relay infrastructure. So, instead of supporting this
          # QNN requantize op, we convert it into a sequence of existing Relay operators.
          mod = tvm.IRModule.from_expr(qnn_expr)
          mod = relay.qnn.transform.CanonicalizeOps()(mod)
          relay_expr = mod['main']
          print(relay_expr)
  
          def @main(%quantized_data: Tensor[(200), int32]) -> Tensor[(200), int8] {
            %0 = cast(%quantized_data, dtype="int64") /* ty=Tensor[(200), int64] */;
            %1 = multiply(%0, 2 /* ty=int64 */) /* ty=Tensor[(200), int64] */;
            %2 = multiply(%1, 1073741824 /* ty=int64 */) /* ty=Tensor[(200), int64] */;
            %3 = add(%2, 1073741824 /* ty=int64 */) /* ty=Tensor[(200), int64] */;
            %4 = right_shift(%3, 31 /* ty=int64 */) /* ty=Tensor[(200), int64] */;
            %5 = add(0 /* ty=int64 */, %4) /* ty=Tensor[(200), int64] */;
            %6 = clip(%5, a_min=-128f, a_max=127f) /* ty=Tensor[(200), int64] */;
            cast(%6, dtype="int8") /* ty=Tensor[(200), int8] */
          }
  
      Returns
      -------
      ret : tvm.transform.Pass
          The registered pass that canonicalizes QNN ops to Relay ops.
      """
  
      return relay.transform.Legalize("FTVMQnnCanonicalize")
  
label_desc: Use image node_id 1 for calling a global function with example usage: CanonicalizeOps() and returns: relay