Source code for afe.ir.transform_ir_generator

#########################################################
# Copyright (C) 2022 SiMa Technologies, Inc.
#
# This material is SiMa proprietary and confidential.
#
# This material may not be copied or distributed without
# the express prior written permission of SiMa.
#
# All rights reserved.
#########################################################
# Code owner: Christopher Rodrigues
#########################################################
"""
Generation of AwesomeNodes from a tensor transform.
"""
from typing import Optional, List, Tuple

from afe.ir.defines import NodeName
from afe.ir.node import AwesomeNode
from afe.ir.tensor_type import TensorType


[docs] class TransformIRGenerationContext: """ Context for generating AwesomeNodes for a tensor transform. """ # To be implemented pass
[docs] class TransformIRGenerator: """ Generator of AwesomeNodes for a tensor transform. Class instances are produced from tensor transforms. """
[docs] def generate(self, generation_info: TransformIRGenerationContext, input_type: TensorType, input_name: Optional[NodeName], output_name: Optional[NodeName]) \ -> Tuple[NodeName, NodeName, TensorType, List[AwesomeNode]]: """ Generate AwesomeNodes for the transform. A caller must pass None for at least one of input_name and output_name. :param generation_info: The context where generation occurs :param input_type: Type of the input node. :param input_name: Name of the input node. If not given, and a name is needed, a name will be created. :param output_name: Name of the output node. If not given, and a name is needed, a name will be created. :return: Tuple of input node name, output node name, output type, and newly created nodes. The nodes should be inserted into an AwesomeNet. """ raise NotImplementedError("Method is abstract")