xref: /aosp_15_r20/external/executorch/backends/arm/operators/op_dequant.py (revision 523fa7a60841cd1ecfb9cc4201f1ca8b03ed023a)
1# Copyright 2023 Arm Limited and/or its affiliates.
2#
3# This source code is licensed under the BSD-style license found in the
4# LICENSE file in the root directory of this source tree.
5
6# pyre-unsafe
7from typing import List
8
9import serializer.tosa_serializer as ts
10import torch
11from executorch.backends.arm.operators.node_visitor import (
12    NodeVisitor,
13    register_node_visitor,
14)
15from executorch.backends.arm.tosa_mapping import TosaArg
16from serializer.tosa_serializer import TosaOp
17
18
19@register_node_visitor
20class DequantVisitor(NodeVisitor):
21    target = "quantized_decomposed.dequantize_per_tensor.default"
22
23    def __init__(self, *args):
24        super().__init__(*args)
25
26    def define_node(
27        self,
28        node: torch.fx.Node,
29        tosa_graph: ts.TosaSerializer,
30        inputs: List[TosaArg],
31        output: TosaArg,
32        is_quant_node: bool,
33    ) -> None:
34        item_name = inputs[0].name
35        ## Simply add an identityOp
36        tosa_graph.addOperator(TosaOp.Op().IDENTITY, [item_name], [output.name])
37