Ë
    øÇ:j %  ã                   ó:   — d dl Z d dlmZmZmZmZ  G d„ de«      Zy)é    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y)ÚModuleÚ c                 óÊ   — || _         || _        d| _        t        j                  «       | _        d| _        t        j                  «       | _	        g | _
        i | _        i | _        y )Nr	   zunknown-unknown-unknown)r   ÚnameÚdata_layoutr   Ú	NameScopeÚscopeÚtripleÚcollectionsÚOrderedDictÚglobalsÚmetadataÚnamedmetadataÚ_metadatacache)Úselfr   r   s      úg/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/llvmlite/ir/module.pyÚ__init__zModule.__init__   sV   € ØˆŒØˆŒ	ØˆÔÜ×%Ñ%Ó'ˆŒ
Ø/ˆŒÜ"×.Ñ.Ó0ˆŒàˆŒàˆÔà ˆÕó    c                 ó  — g }|D ]~  }|€ t        j                  «       d «      }nNt        |t        «      rt	        j
                  | |«      }n't        |t        t        f«      r| j                  |«      }|j                  |«       Œ€ |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‘Ü˜B¤¤u Ô.à×&Ñ& rÓ*�Ø×Ñ˜RÕ ð
	!ð Ðr   c                 ó’   — g }|D ]?  \  }}t        |t        t        f«      r| j                  |«      }|j	                  ||f«       ŒA |S r   )r   r    r!   r"   r#   )r   r$   r%   r   r&   s        r   Ú_fix_di_operandszModule._fix_di_operands$   sR   € Øˆ	Ø ò 	)‰HˆD�"Ü˜"œt¤U˜mÔ,à×&Ñ& rÓ*�Ø×Ñ˜d B˜ZÕ(ð		)ð
 Ðr   c                 óš   — g }|D ]C  \  }}|dk(  r&t        |t        j                  «      r|j                  }|j	                  ||f«       ŒE |S )NÚencoding)r   r   ÚDITokenÚvaluer#   )r   r$   Ústr_opsr   r&   s        r   Ústr_ditok_operandszModule.str_ditok_operands-   sO   € ØˆØ ò 	'‰HˆD�"Ø�zÒ!¤j°´V·^±^Ô&Dà—X‘X�Ø�N‰N˜D "˜:Õ&ð		'ð
 ˆr   c                 óN  — t        |t        t        f«      st        d|›�«      ‚| j	                  |«      }t        |«      }|| j
                  vrGt        | j                  «      }t        j                  | |t        |«      ¬«      }|| j
                  |<   |S | 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ÝÙ(0ð3ó 4ð 4à×.Ñ.¨xÓ8ˆÜ�H‹oˆØ�d×)Ñ)Ñ)Ü�D—M‘MÓ"ˆAÜ—‘  h´S¸³VÔ<ˆBØ')ˆD×Ñ Ñ$ð ˆ	ð ×$Ñ$ SÑ)ˆBØˆ	r   c           	      ó„  — t        t        | j                  |j                  «       «      «      «      }t        t        | j	                  |«      «      «      }|||f}|| j
                  vrIt        | j                  «      }t        j                  | |||t        |«      ¬«      }|| j
                  |<   |S | 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Ó GÓHÓIˆÜœ6 $×"9Ñ"9¸(Ó"CÓDÓEˆ
Ø�Z Ð-ˆØ�d×)Ñ)Ñ)Ü�D—M‘MÓ"ˆAÜ—‘  k°4¸ÌÈAËÔOˆBØ')ˆD×Ñ Ñ$ð ˆ	ð ×$Ñ$ SÑ)ˆBØˆ	r   Nc                 ój  — || j                   v r| j                   |   }n$t        j                  | «      x}| j                   |<   |�nt        |t        j                  «      s| j                  |«      }t        |j                  t        j                  «      st        d|›�«      ‚|j                  |«       |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"])
        z%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ä-3×-AÑ-AÀ$Ó-GÐGˆC�$×$Ñ$ TÑ*ØÐÜ˜g¤v§|¡|Ô4Ø×+Ñ+¨GÓ4�Ü˜gŸl™l¬E×,>Ñ,>Ô?ÝÙ#*ð!-ó .ð .à�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                 ó�   — | j                   j                  «       D �cg c]  }t        |t        j                  «      r|‘Œ  c}S c c}w )zI
        A list of functions declared or defined in this module.
        )r   r   r   ÚFunction)r   Úvs     r   Ú	functionszModule.functions   s>   € ð
  Ÿ<™<×.Ñ.Ó0ö 3�aÜ˜a¤§¡Ô1ò ò 3ð 	3ùò 3s   �#Ac                 ó6   — | j                   j                  «       S )z>
        An iterable of global values in this module.
        )r   r   ©r   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                 ój   — |j                   | j                  vsJ ‚|| j                  |j                   <   y)z)
        Add a new global value.
        N)r   r   )r   Úglobalvalues     r   Ú
add_globalzModule.add_global”   s0   € ð ×Ñ t§|¡|Ñ3Ð3Ð3Ø)4ˆ�‰�[×%Ñ%Ò&r   c                 ó8   — | j                   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‰z×%Ñ% dÓ+Ð+r   c                 óø  ‡‡— ˆˆfd„}‰dv r‰d   j                   g}n‰D �cg c]  }|j                   ‘Œ }}dj                  ‰g|z   «      }|| j                  v r| j                  |   S |��nrt        ‰«      dk(  rC‰dk(  r>t	        j
                  t	        j                  «       t	        j                  d«      g«      }�n!t        ‰«      dk(  rÚ‰dk(  r3t	        j
                  ‰d   ‰d   t	        j                  d«      g«      }�nÛ‰d	k(  rt	        j
                  ‰d   ‰d
z  «      }�n¸‰dk(  r/t	        j
                  ‰d   t	        j                  d«      g«      }�n„‰dk(  r+t	        j
                  t	        j                  d«      ‰«      }�nTt	        j
                  ‰d   ‰«      }�n9t        ‰«      d
k(  r ‰dk(  r[‰d   t	        j                  d«      ‰d   t	        j                  d«      gŠt	        j
                  t	        j                  «       ‰«      }nË‰dv r4‰d   t	        j                  d«      gŠt	        j
                  ‰d   ‰«      }n“ |«        n‹t        ‰«      dk(  rv‰dv rB‰t	        j                  d«      gz   Št	        j
                  t	        j                  «       ‰«      }n7‰dk(  r#‰d   gdz  Št	        j
                  ‰d   ‰«      }n |«        n |«        t        j                  | ||¬«      S c c}w )Nc                  ó6   •— 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Ð(=ñ'>ó ?ð ?r   >   úllvm.fmaú	llvm.ctlzú	llvm.cttzr   ú.zllvm.assumeé   z	llvm.powié    zllvm.powé   zllvm.convert.from.fp16é   zllvm.convert.to.fp16zllvm.memseté   >   rb   rc   é   )zllvm.memcpyzllvm.memmovera   r1   )
Úintrinsic_nameÚjoinr   r3   r   ÚFunctionTypeÚVoidTypeÚIntTyper   rM   )r   r^   r_   Úfntyr`   ÚsuffixesÚtr   s    ``     r   Údeclare_intrinsiczModule.declare_intrinsic¡   s•  ù€ õ	?ð Ð>Ñ>Ø˜A™×-Ñ-Ð.‰Hà25Ö6¨Q˜×(Ó(Ð6ˆHÐ6Ø�x‰x˜˜ hÑ.Ó/ˆØ�4—<‘<ÑØ—<‘< Ñ%Ð%àÐáä�‹X˜Š]˜y¨MÒ9Ü×%Ñ%¤e§n¡nÓ&6¼¿¹ÀqÓ9IÐ8JÓKŠDÜ�‹X˜Š]Ø˜KÒ'Ü×)Ñ)¨#¨a©&°3°q±6¼5¿=¹=ÈÓ;LÐ2MÓN’Ø˜jÒ(Ü×)Ñ)¨#¨a©&°#¸±'Ó:’ØÐ6Ò6Ü×)Ñ)¨#¨a©&´5·=±=ÀÓ3DÐ2EÓF’ØÐ4Ò4Ü×)Ñ)¬%¯-©-¸Ó*;¸SÓA’ä×)Ñ)¨#¨a©&°#Ó6’Ü�‹X˜Š]Ø˜MÒ)Ø˜1‘vœuŸ}™}¨QÓ/°°Q±Ü—}‘} QÓ'ð)�ä×)Ñ)¬%¯.©.Ó*:¸CÓ@‘ØÐ8Ñ8Ø˜1‘vœuŸ}™}¨QÓ/Ð0�Ü×)Ñ)¨#¨a©&°#Ó6‘á•Ü�‹X˜Š]ØÐ;Ñ;ØœUŸ]™]¨1Ó-Ð.Ñ.�Ü×)Ñ)¬%¯.©.Ó*:¸CÓ@‘Ø˜jÒ(Ø˜1‘v�h ‘l�Ü×)Ñ)¨#¨a©&°#Ó6‘á•áŒHÜ�‰˜t T°Ô5Ð5ùòW 7s   ¢K7c                 ó.   — | j                   j                  S r   )r   Úidentified_typesrQ   s    r   Úget_identified_typeszModule.get_identified_typesÖ   s   € Ø�|‰|×,Ñ,Ð,r   c                 óô   — | j                  «       j                  «       D �cg c]  }|j                  «       ‘Œ }}|| j                  j                  «       D �cg c]  }t	        |«      ‘Œ c}z  }|S c c}w c c}w r   )rv   r   Úget_declarationr   r   )r   ÚitÚlinesrN   s       r   Ú_get_body_lineszModule._get_body_linesÙ   sw   € ð  ×4Ñ4Ó6×=Ñ=Ó?öAØð ×#Ñ#Õ%ð Aˆð Að 	 $§,¡,×"5Ñ"5Ó"7Ö8˜Q”#�a•&Ò8Ñ8ˆØˆùò	Aùò 9s   ¡A0ÁA5c           
      ó(  — g }| j                   j                  «       D ]G  \  }}|j                  dj                  |dj	                  d„ |j
                  D «       «      ¬«      «       ŒI | j                  D ]  }|j                  t        |«      «       Œ |S )Nz!{name} = !{{ {operands} }}z, c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wr   )Úget_reference)Ú.0Úis     r   ú	<genexpr>z-Module._get_metadata_lines.<locals>.<genexpr>å   s!   è ø€ ò +@Ø/0ð ,-¯?©?×+<ñ +@ùs   ‚)r   r$   )r   r:   r#   Úformatrl   r$   r   r   )r   ÚmdbufÚkrN   r7   s        r   Ú_get_metadata_lineszModule._get_metadata_linesá   s˜   € ØˆØ×&Ñ&×,Ñ,Ó.ò 	B‰DˆAˆqØ�L‰LÐ6×=Ñ=Ø §¡ñ +@Ø45·J±Jô+@ó "@ð >ó Aõ Bð	Bð —-‘-ò 	"ˆBØ�L‰Lœ˜R›Õ!ð	"àˆr   c                 ó@   — dj                  | j                  «       «      S ©Nú
)rl   r{   rQ   s    r   Ú_stringify_bodyzModule._stringify_bodyë   s   € à�y‰y˜×-Ñ-Ó/Ó0Ð0r   c                 ó@   — dj                  | j                  «       «      S r‡   )rl   r…   rQ   s    r   Ú_stringify_metadatazModule._stringify_metadataï   s   € à�y‰y˜×1Ñ1Ó3Ó4Ð4r   c                 óÚ   — g }|d| j                   ›d�d| j                  ›d�d| j                  ›d�dgz  }|| j                  «       z  }|| j	                  «       z  }dj                  |«      S )Nz; ModuleID = "ú"ztarget triple = "ztarget datalayout = "r	   rˆ   )r   r   r   r{   r…   rl   )r   rz   s     r   Ú__repr__zModule.__repr__ó   sp   € ØˆáØ#'§9£9Ñ.Ø&*§k£kÑ3Ø*.×*:Ó*:Ð<Øð	ñ 	ˆð 	�×%Ñ%Ó'Ñ'ˆà�×)Ñ)Ó+Ñ+ˆà�y‰y˜ÓÐr   )Fr   )r	   )© N)Ú__name__Ú
__module__Ú__qualname__r   Úglobal_contextr   r'   r)   r/   r"   r@   rH   rK   ÚpropertyrO   rR   rT   rW   rZ   rs   rv   r{   r…   r‰   r‹   rŽ   r�   r   r   r   r      s�   „ Ø¨×(>Ñ(>ó !òòòòó(ó*ò2(ð ñ3ó ð3ð ñ%ó ð%ò"ò5ó,ó36òj-òòò1ò5ó r   r   )r   Úllvmlite.irr   r   r   r   Úobjectr   r�   r   r   ú<module>r—      s   ðÛ ç 6Ó 6ôz ˆVõ z r   