§
    .@Äj &  ã                   óB   — d dl Z d dlmZmZmZmZ  G d„ de¦  «        ZdS )é    N)ÚcontextÚvaluesÚtypesÚ_utilsc                   ó¾   — e Zd Zdej        fd„Zd„ Zd„ Zd„ Zd„ Z	dd„Z
dd
„Zd„ Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Zdd„Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd	S )ÚModuleÚ c                 óÈ   — || _         || _        d| _        t          j        ¦   «         | _        d| _        t          j        ¦   «         | _	        g | _
        i | _        i | _        d S )Nr	   zunknown-unknown-unknown)r   ÚnameÚdata_layoutr   Ú	NameScopeÚscopeÚtripleÚcollectionsÚOrderedDictÚglobalsÚmetadataÚnamedmetadataÚ_metadatacache)Úselfr   r   s      úCC:\Projects\Historical\venv\Lib\site-packages\llvmlite/ir/module.pyÚ__init__zModule.__init__   s\   € ØˆŒØˆŒ	ØˆÔÝÔ%Ñ'Ô'ˆŒ
Ø/ˆŒÝ"Ô.Ñ0Ô0ˆŒàˆŒàˆÔà ˆÔÐÐó    c                 ó4  — g }|D ]’}|€ t          j        ¦   «         d ¦  «        }n\t          |t          ¦  «        rt	          j        | |¦  «        }n1t          |t          t          f¦  «        r|                      |¦  «        }| 	                    |¦  «         Œ“|S ©N)
r   ÚMetaDataTypeÚ
isinstanceÚstrr   ÚMetaDataStringÚlistÚtupleÚadd_metadataÚappend)r   ÚoperandsÚ	fixed_opsÚops       r   Ú_fix_metadata_operandszModule._fix_metadata_operands   s¡   € Øˆ	Øð 
	!ð 
	!ˆBØˆzà)•UÔ'Ñ)Ô)¨$Ñ/Ô/��Ý˜B¥Ñ$Ô$ð +åÔ*¨4°Ñ4Ô4��Ý˜B¥¥u Ñ.Ô.ð +à×&Ò& rÑ*Ô*�Ø×Ò˜RÑ Ô Ð Ð ØÐr   c                 óª   — g }|D ]M\  }}t          |t          t          f¦  «        r|                      |¦  «        }|                     ||f¦  «         ŒN|S r   )r   r    r!   r"   r#   )r   r$   r%   r   r&   s        r   Ú_fix_di_operandszModule._fix_di_operands$   sd   € Øˆ	Ø ð 	)ð 	)‰HˆD�"Ý˜"�t¥U˜mÑ,Ô,ð +à×&Ò& rÑ*Ô*�Ø×Ò˜d B˜ZÑ(Ô(Ð(Ð(ØÐr   c                 ó–   — g }|D ]C\  }}|dk    r!t          |t          j        ¦  «        r|j        }|                     ||f¦  «         ŒD|S )NÚencoding)r   r   ÚDITokenÚvaluer#   )r   r$   Ústr_opsr   r&   s        r   Ústr_ditok_operandszModule.str_ditok_operands-   s[   € ØˆØ ð 	'ð 	'‰HˆD�"Ø�zÒ!Ð!¥j°µV´^Ñ&DÔ&DÐ!à”X�Ø�NŠN˜D "˜:Ñ&Ô&Ð&Ð&Øˆr   c                 ó\  — t          |t          t          f¦  «        st          d|›�¦  «        ‚|                      |¦  «        }t          |¦  «        }|| j        vrCt          | j        ¦  «        }t          j	        | |t          |¦  «        ¬¦  «        }|| j        |<   n| j        |         }|S )zü
        Add an unnamed metadata to the module with the given *operands*
        (a sequence of values) or return a previous equivalent metadata.
        A MDValue instance is returned, it can then be associated to
        e.g. an instruction.
        z1expected a list or tuple of metadata values, got ©r   )r   r    r!   Ú	TypeErrorr'   r   Úlenr   r   ÚMDValuer   )r   r$   ÚkeyÚnÚmds        r   r"   zModule.add_metadata6   s±   € õ ˜(¥T­5 MÑ2Ô2ð 	4Ý�)Ø(0¨ð3ñ 4ô 4ð 4à×.Ò.¨xÑ8Ô8ˆÝ�H‰oŒoˆØ�dÔ)Ð)Ð)Ý�D”MÑ"Ô"ˆAÝ”  hµS¸±V´VÐ<Ñ<Ô<ˆBØ')ˆDÔ Ñ$Ð$àÔ$ SÔ)ˆBØˆ	r   Fc           	      ó¦  — t          t          |                      |                     ¦   «         ¦  «        ¦  «        ¦  «        }t          t          |                      |¦  «        ¦  «        ¦  «        }|||f}|| j        vrEt          | j        ¦  «        }t          j	        | |||t          |¦  «        ¬¦  «        }|| j        |<   n| j        |         }|S )ak  
        Add debug information metadata to the module with the given
        *operands* (a dict of values with string keys) or return
        a previous equivalent metadata.  *kind* is a string of the
        debug information kind (e.g. "DICompileUnit").

        A DIValue instance is returned, it can then be associated to e.g.
        an instruction.
        r1   )r!   Úsortedr)   Úitemsr/   r   r3   r   r   ÚDIValuer   )r   Úkindr$   Úis_distinctÚ
str_op_keyr5   r6   Údis           r   Úadd_debug_infozModule.add_debug_infoJ   s¿   € õ � × 5Ò 5°h·n²nÑ6FÔ6FÑ GÔ GÑHÔHÑIÔIˆÝ�6 $×"9Ò"9¸(Ñ"CÔ"CÑDÔDÑEÔEˆ
Ø�Z Ð-ˆØ�dÔ)Ð)Ð)Ý�D”MÑ"Ô"ˆAÝ”  k°4¸ÍÈAÉÌÐOÑOÔOˆBØ')ˆDÔ Ñ$Ð$àÔ$ SÔ)ˆBØˆ	r   Nc                 ó^  — || j         v r| j         |         }nt          j        | ¦  «        x}| j         |<   |�ut          |t          j        ¦  «        s|                      |¦  «        }t          |j        t          j        ¦  «        st          d|›�¦  «        ‚| 
                    |¦  «         |S )a­  
        Add a named metadata node to the module, if it doesn't exist,
        or return the existing node.
        If *element* is given, it will append a new element to
        the named metadata node.  If *element* is a sequence of values
        (rather than a metadata value), a new unnamed node will first be
        created.

        Example::
            module.add_named_metadata("llvm.ident", ["llvmlite/1.0"])
        Nz%wrong type for metadata element: got )r   r   ÚNamedMetaDatar   ÚValuer"   Útyper   r   r2   Úadd)r   r   ÚelementÚnmds       r   Úadd_named_metadatazModule.add_named_metadata_   s·   € ð �4Ô%Ð%Ð%ØÔ$ TÔ*ˆCˆCå-3Ô-AÀ$Ñ-GÔ-GÐGˆC�$Ô$ TÑ*ØÐÝ˜g¥v¤|Ñ4Ô4ð 5Ø×+Ò+¨GÑ4Ô4�Ý˜gœl­EÔ,>Ñ?Ô?ð .Ý�iØ#* 7ð!-ñ .ô .ð .à�GŠG�GÑÔÐØˆ
r   c                 ó   — | j         |         S )zš
        Return the metadata node with the given *name*.  KeyError is raised
        if no such node exists (contrast with add_named_metadata()).
        )r   ©r   r   s     r   Úget_named_metadatazModule.get_named_metadatax   s   € ð
 Ô! $Ô'Ð'r   c                 óH   — d„ | j                              ¦   «         D ¦   «         S )zI
        A list of functions declared or defined in this module.
        c                 óF   — g | ]}t          |t          j        ¦  «        ¯|‘ŒS © )r   r   ÚFunction©Ú.0Úvs     r   ú
<listcomp>z$Module.functions.<locals>.<listcomp>„   s8   € ð 3ð 3ð 3�aÝ˜a¥¤Ñ1Ô1ð3�ð 3ð 3ð 3r   ©r   r   ©r   s    r   Ú	functionszModule.functions   s0   € ð
3ð 3˜4œ<×.Ò.Ñ0Ô0ð 3ñ 3ô 3ð 	3r   c                 ó4   — | j                              ¦   «         S )z>
        An iterable of global values in this module.
        rT   rU   s    r   Úglobal_valueszModule.global_values‡   s   € ð
 Œ|×"Ò"Ñ$Ô$Ð$r   c                 ó   — | j         |         S )z-
        Get a global value by name.
        )r   rJ   s     r   Ú
get_globalzModule.get_globalŽ   s   € ð Œ|˜DÔ!Ð!r   c                 óD   — |j         | j        vsJ ‚|| j        |j         <   dS )z)
        Add a new global value.
        N)r   r   )r   Úglobalvalues     r   Ú
add_globalzModule.add_global”   s/   € ð Ô t¤|Ð3Ð3Ð3Ð3Ø)4ˆŒ�[Ô%Ñ&Ð&Ð&r   c                 ó6   — | j                              |¦  «        S )zJ
        Get a unique global name with the following *name* hint.
        )r   ÚdeduplicaterJ   s     r   Úget_unique_namezModule.get_unique_name›   s   € ð Œz×%Ò% dÑ+Ô+Ð+r   rN   c                 ó(  ‡‡— ˆˆfd„}‰dv r‰d         j         g}nd„ ‰D ¦   «         }d                     ‰g|z   ¦  «        }|| j        v r| j        |         S |��n¢t          ‰¦  «        dk    rA‰dk    r;t	          j        t	          j        ¦   «         t	          j        d¦  «        g¦  «        }�nNt          ‰¦  «        dk    rå‰dk    r7t	          j        ‰d         ‰d         t	          j        d	¦  «        g¦  «        }�nþ‰d
k    r t	          j        ‰d         ‰dz  ¦  «        }�nØ‰dk    r0t	          j        ‰d         t	          j        d¦  «        g¦  «        }�n¢‰dk    r)t	          j        t	          j        d¦  «        ‰¦  «        }�nst	          j        ‰d         ‰¦  «        }�nVt          ‰¦  «        dk    rª‰dk    r]‰d         t	          j        d¦  «        ‰d         t	          j        d¦  «        gŠt	          j        t	          j        ¦   «         ‰¦  «        }nà‰dv r8‰d         t	          j        d¦  «        gŠt	          j        ‰d         ‰¦  «        }n¤ |¦   «          n™t          ‰¦  «        dk    r|‰dv r?‰t	          j        d¦  «        gz   Št	          j        t	          j        ¦   «         ‰¦  «        }nC‰dk    r(‰d         gdz  Št	          j        ‰d         ‰¦  «        }n |¦   «          n
 |¦   «          t          j	        | ||¬¦  «        S )Nc                  óF   •— t          d‰ t          ‰¦  «        fz  ¦  «        ‚)Nz"unknown intrinsic %r with %d types)ÚNotImplementedErrorr3   )Ú	intrinsicÚtyss   €€r   Ú_errorz(Module.declare_intrinsic.<locals>._error¢   s+   ø€ Ý%Ð&JØ)2µC¸±H´HÐ(=ñ'>ñ ?ô ?ð ?r   >   úllvm.fmaú	llvm.ctlzú	llvm.cttzr   c                 ó   — g | ]	}|j         ‘Œ
S rN   )Úintrinsic_name)rQ   Úts     r   rS   z,Module.declare_intrinsic.<locals>.<listcomp>©   s   € Ð6Ð6Ð6¨Q˜Ô(Ð6Ð6Ð6r   ú.zllvm.assumeé   z	llvm.powié    zllvm.powé   zllvm.convert.from.fp16é   zllvm.convert.to.fp16zllvm.memseté   >   rh   ri   é   )zllvm.memcpyzllvm.memmoverg   r1   )
rk   Újoinr   r3   r   ÚFunctionTypeÚVoidTypeÚIntTyper   rO   )r   rd   re   Úfntyrf   Úsuffixesr   s    ``    r   Údeclare_intrinsiczModule.declare_intrinsic¡   s  øø€ ð	?ð 	?ð 	?ð 	?ð 	?ð 	?ð Ð>Ð>Ð>Ø˜AœÔ-Ð.ˆHˆHà6Ð6°#Ð6Ñ6Ô6ˆHØ�xŠx˜˜ hÑ.Ñ/Ô/ˆØ�4”<ÐÐØ”< Ô%Ð%àÐáå�‰XŒX˜Š]ˆ]˜y¨MÒ9Ð9ÝÔ%¥e¤nÑ&6Ô&6½¼ÀqÑ9IÔ9IÐ8JÑKÔKˆD‰DÝ�‰XŒX˜Š]ˆ]Ø˜KÒ'Ð'ÝÔ)¨#¨a¬&°3°q´6½5¼=ÈÑ;LÔ;LÐ2MÑNÔN�‘Ø˜jÒ(Ð(ÝÔ)¨#¨a¬&°#¸±'Ñ:Ô:�‘ØÐ6Ò6Ð6ÝÔ)¨#¨a¬&µ5´=ÀÑ3DÔ3DÐ2EÑFÔF�‘ØÐ4Ò4Ð4ÝÔ)­%¬-¸Ñ*;Ô*;¸SÑAÔA�‘åÔ)¨#¨a¬&°#Ñ6Ô6�‘Ý�‰XŒX˜Š]ˆ]Ø˜MÒ)Ð)Ø˜1”v�uœ}¨QÑ/Ô/°°Q´Ý”} QÑ'Ô'ð)�åÔ)­%¬.Ñ*:Ô*:¸CÑ@Ô@��ØÐ8Ð8Ð8Ø˜1”v�uœ}¨QÑ/Ô/Ð0�ÝÔ)¨#¨a¬&°#Ñ6Ô6��à�‘”��Ý�‰XŒX˜Š]ˆ]ØÐ;Ð;Ð;Ø�Uœ]¨1Ñ-Ô-Ð.Ñ.�ÝÔ)­%¬.Ñ*:Ô*:¸CÑ@Ô@��Ø˜jÒ(Ð(Ø˜1”v�h ‘l�ÝÔ)¨#¨a¬&°#Ñ6Ô6��à�‘”��àˆF‰HŒHˆHÝŒ˜t T°Ð5Ñ5Ô5Ð5r   c                 ó   — | j         j        S r   )r   Úidentified_typesrU   s    r   Úget_identified_typeszModule.get_identified_typesÖ   s   € ØŒ|Ô,Ð,r   c                 ó²   — d„ |                       ¦   «                              ¦   «         D ¦   «         }|d„ | j                             ¦   «         D ¦   «         z  }|S )Nc                 ó6   — g | ]}|                      ¦   «         ‘ŒS rN   )Úget_declaration)rQ   Úits     r   rS   z*Module._get_body_lines.<locals>.<listcomp>Û   s:   € ð Að Að AØð ×#Ò#Ñ%Ô%ð Að Að Ar   c                 ó,   — g | ]}t          |¦  «        ‘ŒS rN   )r   rP   s     r   rS   z*Module._get_body_lines.<locals>.<listcomp>Þ   s   € Ð8Ð8Ð8˜Q•#�a‘&”&Ð8Ð8Ð8r   )r}   r   r   ©r   Úliness     r   Ú_get_body_lineszModule._get_body_linesÙ   sk   € ðAð AØ×4Ò4Ñ6Ô6×=Ò=Ñ?Ô?ðAñ Aô Aˆð 	Ð8Ð8 $¤,×"5Ò"5Ñ"7Ô"7Ð8Ñ8Ô8Ñ8ˆØˆr   c           
      ó8  — g }| j                              ¦   «         D ]Q\  }}|                     d                     |d                     d„ |j        D ¦   «         ¦  «        ¬¦  «        ¦  «         ŒR| j        D ]$}|                     t          |¦  «        ¦  «         Œ%|S )Nz!{name} = !{{ {operands} }}z, c              3   ó>   K  — | ]}|                      ¦   «         V — Œd S r   )Úget_reference)rQ   Úis     r   ú	<genexpr>z-Module._get_metadata_lines.<locals>.<genexpr>å   sH   è è € ð +@ð +@Ø/0ð ,-¯?ª?Ñ+<Ô+<ð +@ð +@ð +@ð +@ð +@ð +@r   )r   r$   )r   r:   r#   Úformatrt   r$   r   r   )r   ÚmdbufÚkrR   r7   s        r   Ú_get_metadata_lineszModule._get_metadata_linesá   sÏ   € ØˆØÔ&×,Ò,Ñ.Ô.ð 	Bð 	B‰DˆAˆqØ�LŠLÐ6×=Ò=Ø §¢ð +@ð +@Ø45´Jð+@ñ +@ô +@ñ "@ô "@ð >ñ Aô Añ Bô Bð Bð Bð ”-ð 	"ð 	"ˆBØ�LŠL�˜R™œÑ!Ô!Ð!Ð!Øˆr   c                 óP   — d                      |                      ¦   «         ¦  «        S ©Nú
)rt   r…   rU   s    r   Ú_stringify_bodyzModule._stringify_bodyë   s    € à�yŠy˜×-Ò-Ñ/Ô/Ñ0Ô0Ð0r   c                 óP   — d                      |                      ¦   «         ¦  «        S r�   )rt   rŽ   rU   s    r   Ú_stringify_metadatazModule._stringify_metadataï   s    € à�yŠy˜×1Ò1Ñ3Ô3Ñ4Ô4Ð4r   c                 óÔ   — g }|d| j         ›d�d| j        ›d�d| j        ›d�dgz  }||                      ¦   «         z  }||                      ¦   «         z  }d                     |¦  «        S )Nz; ModuleID = "ú"ztarget triple = "ztarget datalayout = "r	   r‘   )r   r   r   r…   rŽ   rt   rƒ   s     r   Ú__repr__zModule.__repr__ó   sˆ   € ØˆàˆØ#'¤9 9 9Ð.Ð.Ø&*¤k k kÐ3Ð3Ø*.Ô*:Ð*:Ð*:Ð<Øð	ñ 	ˆð 	�×%Ò%Ñ'Ô'Ñ'ˆà�×)Ò)Ñ+Ô+Ñ+ˆà�yŠy˜ÑÔÐr   )Fr   )r	   )rN   N)Ú__name__Ú
__module__Ú__qualname__r   Úglobal_contextr   r'   r)   r/   r"   r@   rH   rK   ÚpropertyrV   rX   rZ   r]   r`   rz   r}   r…   rŽ   r’   r”   r—   rN   r   r   r   r      sz  € € € € € Ø¨Ô(>ð !ð !ð !ð !ðð ð ðð ð ðð ð ðð ð ð(ð ð ð ð*ð ð ð ð2(ð (ð (ð ð3ð 3ñ „Xð3ð ð%ð %ñ „Xð%ð"ð "ð "ð5ð 5ð 5ð,ð ,ð ,ð ,ð36ð 36ð 36ð 36ðj-ð -ð -ðð ð ðð ð ð1ð 1ð 1ð5ð 5ð 5ð ð  ð  ð  ð  r   r   )r   Úllvmlite.irr   r   r   r   Úobjectr   rN   r   r   ú<module>rŸ      ss   ðØ Ð Ð Ð à 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6ðz ð z ð z ð z ð z ˆVñ z ô z ð z ð z ð z r   