
    Xh                         d dl mZmZ d dlmZ d dlmZ d dlmZm	Z	 d dl
mZ  ed           G d d	e                      Z G d
 de          Z G d de          ZdS )    )ABCMetaabstractmethod)	dataclass)Enum)DictUnion)
ModuleTypeT)frozenc                   >    e Zd ZU eed<   eeef         ed<   eed<   dS )	GPUTargetbackendarch	warp_sizeN)__name__
__module____qualname__str__annotations__r   int     j/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/triton/backends/compiler.pyr   r      s8          LLL
S/NNNNNr   r   c                       e Zd ZdZdZdZdS )Languagez1The input language being compiled by the backend.r      N)r   r   r   __doc__TRITONGLUONr   r   r   r   r      s        ;;FEEEr   r   c                      e Zd ZdeddfdZeedefd                        Zedefd            Z	ede
defd            Zed	e
deddfd
            Zed             Zedeeef         fd            Zed             Zed             ZdS )BaseBackendtargetreturnNc                 B    || _         |                     |          sJ d S N)r!   supports_target)selfr!   s     r   __init__zBaseBackend.__init__   s)    ##F+++++++r   c                     t           r$   NotImplementedError)r!   s    r   r%   zBaseBackend.supports_target   
     "!r   c                     t           )z,Returns a unique identifier for this backendr)   r&   s    r   hashzBaseBackend.hash"   r+   r   optionsc                     t           )z
        Converts an `options` dictionary into an arbitrary object and returns it.
        This function may contain target-specific heuristics and check the legality of the provided options
        r)   )r&   r/   s     r   parse_optionszBaseBackend.parse_options'   s
     "!r   stagesc                     t           )a  
        Populates `stages` dictionary with entries of the form:
        ir_name [str] => Function[(src: str, metadata: dict) -> str|bytes]
        The value of each entry may populate a `metadata` dictionary.
        Stages will be run sequentially (in inseriton order) and can communicate using `metadata`.
        All stages are expected to return a `str` object, except for the last stage which returns
        a `bytes` object for execution by the launcher.
        r)   )r&   r2   r/   s      r   
add_stageszBaseBackend.add_stages/   s
     "!r   c                     t           )zK
        Load additional MLIR dialects into the provided `context`
        r)   )r&   contexts     r   load_dialectszBaseBackend.load_dialects;   
    
 "!r   c                     t           )z\
        Return a map of interface modules to their device-specific implementations
        r)   r-   s    r   get_module_mapzBaseBackend.get_module_mapB   r8   r   c                 P    t          | t                    sJ g }d| v r|ddggz  }|S )NDztt.divisibility   )
isinstancer   )descrets     r   
parse_attrzBaseBackend.parse_attrI   s>    $$$$$$$;;&+,,C
r   c                     |dk    r!| dz  dk    r|                     dd          rdS |dk    r3|                                 dz  dk    r|                     dd          rdS dS )	zX
        Return a string unique to each possible specialization of the argument
        r   r=   r   alignFr<   tensor )getdata_ptr)argtykwargss      r   get_arg_specializationz"BaseBackend.get_arg_specializationQ   sm    
 ;;38q==VZZ-G-G=3>>cllnnr1Q666::gu;U;U63rr   )r   r   r   r   r'   staticmethodr   r%   r   r.   dictobjectr1   r4   r7   r   r	   r:   rA   rK   r   r   r   r    r       sr       ,y ,T , , , , "	 " " " ^ \" "c " " " ^" "T "f " " " ^" 	" 	" 	"4 	" 	" 	" ^	" " " ^" "S*_ 5 " " " ^"   \   \  r   r    )	metaclassN)abcr   r   dataclassesr   enumr   typingr   r   typesr	   rN   r   r   r    r   r   r   <module>rU      s   ' ' ' ' ' ' ' ' ! ! ! ! ! !                     $           t   C C C C CG C C C C C Cr   