ó
    „ñ:iÎ…  ã                   ó@  • S r SSKrSSKrSSKrSSKJr  SSKJrJrJr  SSK	J
r
JrJr  \" \" \\R                   5      5      \" \" \\R"                  5      5      -  \" \" \S5      5      -  r\R&                  " S5      rSS	S
SSSS.r0 4S jrS rS r " S S\5      r " S S\5      r " S S\5      r\" 5       r " S S\
\\\5      r " S S\5      r " S S\
\\5      r  " S S\ 5      r! " S  S!\
\\5      r" " S" S#\5      r# " S$ S%\ 5      r$ " S& S'5      r% " S( S)\ 5      r& " S* S+\ \\5      r' " S, S-\'5      r( " S. S/\)5      r* " S0 S1\*5      r+ " S2 S3\'5      r, " S4 S5\*5      r- " S6 S7\ 5      r. " S8 S9\.5      r/ " S: S;\.5      r0 " S< S=\ 5      r1 " S> S?\5      r2g)@z_
Classes that are LLVM values: Value, Constant...
Instructions are in the instructions module.
é    N)ÚMappingProxyType)ÚvaluesÚtypesÚ_utils)Ú_StrCachingÚ_StringReferenceCachingÚ_HasMetadataz !#$%&'()*+,-./:;<=>?@[]^_`{|}~z[-a-zA-Z$._][-a-zA-Z$._0-9]*$ÚgtÚltÚeqÚneÚgeÚle)Ú>Ú<ú==ú!=z>=z<=c                 óL  • [        U [        5      (       a  U R                  5       n [        U [        [        45      (       d   eU(       d2  [        S5       H#  nU[        ;   a  [        U5      X'   M  SU-  X'   M%     U  Vs/ s H  o!U   PM	     nnSR                  U5      $ s  snf )z„
Escape the given bytestring for safe use as a LLVM array constant.
Any unicode string input is first encoded with utf8 into bytes.
é   z\%02xÚ )	Ú
isinstanceÚstrÚencodeÚbytesÚ	bytearrayÚrangeÚ_VALID_CHARSÚchrÚjoin)ÚtextÚ_mapÚchÚbufs       ÚU/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/llvmlite/ir/values.pyÚ_escape_stringr%      sŽ   € ô
 �$œ×ÑØ�{‰{‹}ˆÜ�dœU¤IÐ.×/Ñ/Ð/Ð/æÜ˜–*ˆBØ”\Ó!Ü˜r›7�“à# b™=�“ñ	 ñ #Ó
#šd˜�Œ8™d€CÐ
#Ø�7‰7�3‹<Ðùò $s   Â B!c                 ó   ^ • U 4S jnU$ )Nc                 óF   >• [         R                  " U 5      U4S j5       nU$ )Nc                 ó>  >• U R                   UR                   :w  a(  [        SU R                   < SUR                   < S35      eSR                  TU R                   U R                  5       UR                   UR                  5       5      n[	        U R                   U5      $ )Nú%Operands must be the same type, got (ú, Ú)z{0} ({1} {2}, {3} {4}))ÚtypeÚ
ValueErrorÚformatÚget_referenceÚFormattedConstant)ÚlhsÚrhsÚfmtÚopnames      €r$   ÚwrappedÚ%_binop.<locals>.wrap.<locals>.wrapped5   s~   ø€ à�x‰x˜3Ÿ8™8Ó#Ý Ø$'§H¤H¨c¯h¬hð"8ó 9ð 9ð +×1Ñ1°&Ø25·(±(¸C×<MÑ<MÓ<OØ25·(±(¸C×<MÑ<MÓ<OóQˆCô % S§X¡X¨sÓ3Ð3ó    ©Ú	functoolsÚwraps©Úfnr5   r4   s     €r$   ÚwrapÚ_binop.<locals>.wrap4   s%   ø€ Ü	�Š˜Ó	ô	4ó 
ð	4ð ˆr7   © ©r4   r=   s   ` r$   Ú_binoprA   3   s   ø€ õð €Kr7   c                 ó   ^ • U 4S jnU$ )Nc                 óJ   >^ • [         R                  " T 5      U U4S j5       nU$ )Nc                 ó¤   >• T" X5        XR                   :X  a  U $ SR                  TU R                   U R                  5       U5      n[        X5      $ )Nz{0} ({1} {2} to {3}))r,   r.   r/   r0   )ÚselfÚtypÚopr<   r4   s      €€r$   r5   Ú&_castop.<locals>.wrap.<locals>.wrappedF   sK   ø€ áˆtŒMØ—i‘iÓØ�à'×.Ñ.¨v°t·y±yØ/3×/AÑ/AÓ/CÀSóJˆBä$ SÓ-Ð-r7   r8   r;   s   ` €r$   r=   Ú_castop.<locals>.wrapE   s%   ù€ Ü	�Š˜Ó	õ	.ó 
ð	.ð ˆr7   r?   r@   s   ` r$   Ú_castoprJ   D   s   ø€ õð €Kr7   c                   ó–  • \ rS rSrSr\" S5      S 5       r\" S5      S 5       r\" S5      S 5       r\" S	5      S
 5       r	\" S5      S 5       r
\" S5      S 5       r\" S5      S 5       r\" S5      S 5       r\" S5      S 5       r\" S5      S 5       r\" S5      S 5       r\" S5      S 5       r\" S5      S 5       r\" S5      S 5       r\" S5      S  5       r\" S!5      S" 5       r\" S#5      S$ 5       r\" S%5      S& 5       rS' rS( rS) rS* rS+ rS, rS- rS. r\ " S/5      S0 5       r!\ " S15      S2 5       r"\ " S35      S4 5       r#\ " S55      S6 5       r$\ " S75      S8 5       r%\ " S95      S: 5       r&\ " S;5      S< 5       r'\ " S=5      S> 5       r(\ " S?5      S@ 5       r)\ " SA5      SB 5       r*\ " SC5      SD 5       r+\ " SE5      SF 5       r,SG r-SHr.gI)JÚ_ConstOpMixinéT   zI
A mixin defining constant operations, for use in constant-like classes.
Úshlc                 ó   • g)z$
Left integer shift:
    lhs << rhs
Nr?   ©rE   Úothers     r$   rN   Ú_ConstOpMixin.shl]   ó   � r7   Úlshrc                 ó   • g)z8
Logical (unsigned) right integer shift:
    lhs >> rhs
Nr?   rP   s     r$   rT   Ú_ConstOpMixin.lshrd   rS   r7   Úashrc                 ó   • g)z9
Arithmetic (signed) right integer shift:
    lhs >> rhs
Nr?   rP   s     r$   rW   Ú_ConstOpMixin.ashrk   rS   r7   Úaddc                 ó   • g)z!
Integer addition:
    lhs + rhs
Nr?   rP   s     r$   rZ   Ú_ConstOpMixin.addr   rS   r7   Úfaddc                 ó   • g)z(
Floating-point addition:
    lhs + rhs
Nr?   rP   s     r$   r]   Ú_ConstOpMixin.faddy   rS   r7   Úsubc                 ó   • g)z$
Integer subtraction:
    lhs - rhs
Nr?   rP   s     r$   r`   Ú_ConstOpMixin.sub€   rS   r7   Úfsubc                 ó   • g)z+
Floating-point subtraction:
    lhs - rhs
Nr?   rP   s     r$   rc   Ú_ConstOpMixin.fsub‡   rS   r7   Úmulc                 ó   • g)z'
Integer multiplication:
    lhs * rhs
Nr?   rP   s     r$   rf   Ú_ConstOpMixin.mulŽ   rS   r7   Úfmulc                 ó   • g)z.
Floating-point multiplication:
    lhs * rhs
Nr?   rP   s     r$   ri   Ú_ConstOpMixin.fmul•   rS   r7   Úudivc                 ó   • g)z*
Unsigned integer division:
    lhs / rhs
Nr?   rP   s     r$   rl   Ú_ConstOpMixin.udivœ   rS   r7   Úsdivc                 ó   • g)z(
Signed integer division:
    lhs / rhs
Nr?   rP   s     r$   ro   Ú_ConstOpMixin.sdiv£   rS   r7   Úfdivc                 ó   • g)z(
Floating-point division:
    lhs / rhs
Nr?   rP   s     r$   rr   Ú_ConstOpMixin.fdivª   rS   r7   Úuremc                 ó   • g)z+
Unsigned integer remainder:
    lhs % rhs
Nr?   rP   s     r$   ru   Ú_ConstOpMixin.urem±   rS   r7   Úsremc                 ó   • g)z)
Signed integer remainder:
    lhs % rhs
Nr?   rP   s     r$   rx   Ú_ConstOpMixin.srem¸   rS   r7   Úfremc                 ó   • g)z)
Floating-point remainder:
    lhs % rhs
Nr?   rP   s     r$   r{   Ú_ConstOpMixin.frem¿   rS   r7   Úorc                 ó   • g)z#
Bitwise integer OR:
    lhs | rhs
Nr?   rP   s     r$   Úor_Ú_ConstOpMixin.or_Æ   rS   r7   Úandc                 ó   • g)z$
Bitwise integer AND:
    lhs & rhs
Nr?   rP   s     r$   Úand_Ú_ConstOpMixin.and_Í   rS   r7   Úxorc                 ó   • g)z$
Bitwise integer XOR:
    lhs ^ rhs
Nr?   rP   s     r$   r†   Ú_ConstOpMixin.xorÔ   rS   r7   c           	      óÐ  • US-   n [         U   nUS:X  a  US;   d  X&-   nU R                  UR                  :w  a(  [        SU R                  < SUR                  < S35      eS	R	                  XVU R                  U R                  5       UR                  UR                  5       5      n[        [        R                  " S
5      U5      $ ! [         a    [        SU< SU< 35      ef = f)NÚcmpzinvalid comparison z for Úi)r   r   r)   r*   r+   z{0} {1} ({2} {3}, {4} {5})é   )	Ú_CMP_MAPÚKeyErrorr-   r,   r.   r/   r0   r   ÚIntType)rE   ÚprefixÚsignÚcmpoprQ   ÚinsrG   r3   s           r$   Ú_cmpÚ_ConstOpMixin._cmpÛ   sÔ   € Ø�u‰nˆð	LÜ˜%‘ˆBð ˜#“ %¨<Ó"7Ø‘ˆBà�9‰9˜Ÿ
™
Ó"ÝØ $§	¤	¨5¯:¬:ð7ó 8ð 8ð +×1Ñ1ØØ�I‰I�t×)Ñ)Ó+Ø�J‰J˜×+Ñ+Ó-ó/ˆô
 !¤§¢¨qÓ!1°3Ó7Ð7øô ó 	LÝ»uÂcÐJÓKÐKð	Lús   ‡	C ÃC%c                 ó(   • U R                  SSX5      $ )ze
Signed integer comparison:
    lhs <cmpop> rhs

where cmpop can be '==', '!=', '<', '<=', '>', '>='
r‹   Ús©r”   ©rE   r’   rQ   s      r$   Úicmp_signedÚ_ConstOpMixin.icmp_signedð   ó   € ð �y‰y˜˜c 5Ó0Ð0r7   c                 ó(   • U R                  SSX5      $ )zt
Unsigned integer (or pointer) comparison:
    lhs <cmpop> rhs

where cmpop can be '==', '!=', '<', '<=', '>', '>='
r‹   Úur˜   r™   s      r$   Úicmp_unsignedÚ_ConstOpMixin.icmp_unsignedù   rœ   r7   c                 ó(   • U R                  SSX5      $ )z{
Floating-point ordered comparison:
    lhs <cmpop> rhs

where cmpop can be '==', '!=', '<', '<=', '>', '>=', 'ord', 'uno'
ÚfÚor˜   r™   s      r$   Úfcmp_orderedÚ_ConstOpMixin.fcmp_ordered  rœ   r7   c                 ó(   • U R                  SSX5      $ )z}
Floating-point unordered comparison:
    lhs <cmpop> rhs

where cmpop can be '==', '!=', '<', '<=', '>', '>=', 'ord', 'uno'
r¢   rž   r˜   r™   s      r$   Úfcmp_unorderedÚ_ConstOpMixin.fcmp_unordered  rœ   r7   c                 ó*  • [        U R                  [        R                  5      (       a9  [        R
                  " U R                  SU R                  R                  -  5      nO![        R
                  " U R                  S5      nU R                  U5      $ )z(
Bitwise integer complement:
    ~value
)éÿÿÿÿrª   )r   r,   r   Ú
VectorTyper   ÚConstantÚcountr†   )rE   r2   s     r$   Únot_Ú_ConstOpMixin.not_  s^   € ô
 �d—i‘i¤×!1Ñ!1×2Ñ2Ü—/’/ $§)¡)¨U°T·Y±Y·_±_Ñ-DÓE‰Cä—/’/ $§)¡)¨RÓ0ˆCà�x‰x˜‹}Ðr7   c                 óf   • [         R                  " U R                  S5      nUR                  U 5      $ )z
Integer negative:
    -value
r   )r   r¬   r,   r`   )rE   Úzeros     r$   ÚnegÚ_ConstOpMixin.neg$  s&   € ô
 �Š˜tŸy™y¨!Ó,ˆØ�x‰x˜‹~Ðr7   c                 ó‚   • SR                  U R                  U R                  5       5      n[        U R                  U5      $ )z%
Floating-point negative:
    -value
zfneg ({0} {1}))r.   r,   r/   r0   )rE   r3   s     r$   ÚfnegÚ_ConstOpMixin.fneg,  s4   € ð
 ×%Ñ% d§i¡i°×1CÑ1CÓ1EÓFˆÜ  §¡¨CÓ0Ð0r7   Útruncc                 ó   • g)z0
Truncating integer downcast to a smaller type.
Nr?   ©rE   rF   s     r$   r·   Ú_ConstOpMixin.trunc8  rS   r7   Úzextc                 ó   • g)z0
Zero-extending integer upcast to a larger type
Nr?   r¹   s     r$   r»   Ú_ConstOpMixin.zext>  rS   r7   Úsextc                 ó   • g)z1
Sign-extending integer upcast to a larger type.
Nr?   r¹   s     r$   r¾   Ú_ConstOpMixin.sextD  rS   r7   Úfptruncc                 ó   • g)z1
Floating-point downcast to a less precise type.
Nr?   r¹   s     r$   rÁ   Ú_ConstOpMixin.fptruncJ  rS   r7   Úfpextc                 ó   • g)z/
Floating-point upcast to a more precise type.
Nr?   r¹   s     r$   rÄ   Ú_ConstOpMixin.fpextP  rS   r7   Úbitcastc                 ó   • g)z+
Pointer cast to a different pointer type.
Nr?   r¹   s     r$   rÇ   Ú_ConstOpMixin.bitcastV  rS   r7   Úfptouic                 ó   • g)z-
Convert floating-point to unsigned integer.
Nr?   r¹   s     r$   rÊ   Ú_ConstOpMixin.fptoui\  rS   r7   Úuitofpc                 ó   • g)z-
Convert unsigned integer to floating-point.
Nr?   r¹   s     r$   rÍ   Ú_ConstOpMixin.uitofpb  rS   r7   Úfptosic                 ó   • g)z+
Convert floating-point to signed integer.
Nr?   r¹   s     r$   rÐ   Ú_ConstOpMixin.fptosih  rS   r7   Úsitofpc                 ó   • g)z+
Convert signed integer to floating-point.
Nr?   r¹   s     r$   rÓ   Ú_ConstOpMixin.sitofpn  rS   r7   Úptrtointc                 óè   • [        U R                  [        R                  5      (       d  Sn[	        X R                  4-  5      e[        U[        R
                  5      (       d  [	        SU< S35      eg)z
Cast pointer to integer.
z2can only call ptrtoint() on pointer type, not '%s'z*can only ptrtoint() to integer type, not 'Ú'N)r   r,   r   ÚPointerTypeÚ	TypeErrorr�   ©rE   rF   Úmsgs      r$   rÖ   Ú_ConstOpMixin.ptrtointt  s_   € ô
 ˜$Ÿ)™)¤U×%6Ñ%6×7Ñ7ØFˆCÜ˜C§9¡9 ,Ñ.Ó/Ð/Ü˜#œuŸ}™}×-Ñ-ÝÛ"ð%ó &ð &ð .r7   Úinttoptrc                 óè   • [        U R                  [        R                  5      (       d  Sn[	        X R                  4-  5      e[        U[        R
                  5      (       d  [	        SU< S35      eg)z
Cast integer to pointer.
z7can only call inttoptr() on integer constants, not '%s'z*can only inttoptr() to pointer type, not 'rØ   N)r   r,   r   r�   rÚ   rÙ   rÛ   s      r$   rÞ   Ú_ConstOpMixin.inttoptr€  s_   € ô
 ˜$Ÿ)™)¤U§]¡]×3Ñ3ØKˆCÜ˜C§9¡9 ,Ñ.Ó/Ð/Ü˜#œu×0Ñ0×1Ñ1ÝÛ"ð%ó &ð &ð 2r7   c                 ó:  • [        U R                  [        R                  5      (       d  [	        SU R                  < S35      eU R                  nU H  nUR                  U5      nM     U Vs/ s H-  nSR                  UR                  UR                  5       5      PM/     nnSR                  U R                  R                  U R                  U R                  5       SR                  U5      5      n[        UR                  U R                  5      U5      $ s  snf )z.
Call getelementptr on this pointer constant.
z/can only call gep() on pointer constants, not 'rØ   ú{0} {1}z!getelementptr ({0}, {1} {2}, {3})r*   )r   r,   r   rÙ   rÚ   Úgepr.   r/   Úpointeer   r0   Ú
as_pointerÚ	addrspace)rE   ÚindicesÚouttyper‹   ÚidxÚ
strindicesrG   s          r$   rã   Ú_ConstOpMixin.gepŒ  sñ   € ô ˜$Ÿ)™)¤U×%6Ñ%6×7Ñ7ÝØ#Ÿyœyð+ó ,ð ,ð —)‘)ˆÛˆAØ—k‘k !“nŠGñ ñ ")ó*Ú!(˜#ð  ×&Ñ& s§x¡x°×1BÑ1BÓ1DÖEÙ!(ð 	ð *ð 1×7Ñ7Ø�I‰I×Ñ˜tŸy™yØ×ÑÓ  $§)¡)¨JÓ"7ó9ˆô ! ×!3Ñ!3°D·N±NÓ!CÀRÓHÐHùò*s   Á.4Dr?   N)/Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rA   rN   rT   rW   rZ   r]   r`   rc   rf   ri   rl   ro   rr   ru   rx   r{   r€   r„   r†   r”   rš   rŸ   r¤   r§   r®   r²   rµ   rJ   r·   r»   r¾   rÁ   rÄ   rÇ   rÊ   rÍ   rÐ   rÓ   rÖ   rÞ   rã   Ú__static_attributes__r?   r7   r$   rL   rL   T   s  † ññ ˆEƒ]ñó ðñ ˆFƒ^ñó ðñ ˆFƒ^ñó ðñ ˆEƒ]ñó ðñ ˆFƒ^ñó ðñ ˆEƒ]ñó ðñ ˆFƒ^ñó ðñ ˆEƒ]ñó ðñ ˆFƒ^ñó ðñ ˆFƒ^ñó ðñ ˆFƒ^ñó ðñ ˆFƒ^ñó ðñ ˆFƒ^ñó ðñ ˆFƒ^ñó ðñ ˆFƒ^ñó ðñ ˆDƒ\ñó ðñ ˆEƒ]ñó ðñ ˆEƒ]ñó ðò8ò*1ò1ò1ò1ò
òò1ñ ˆWÓñó ðñ
 ˆVƒ_ñó ðñ
 ˆVƒ_ñó ðñ
 ˆYÓñó ðñ
 ˆWÓñó ðñ
 ˆYÓñó ðñ
 ˆXÓñó ðñ
 ˆXÓñó ðñ
 ˆXÓñó ðñ
 ˆXÓñó ðñ
 ˆZÓñ	&ó ð	&ñ ˆZÓñ	&ó ð	&õIr7   rL   c                   ó   • \ rS rSrSrS rSrg)ÚValuei¡  z 
The base class for all values.
c                 óT   • SU R                   R                  < SU R                  < S3$ )Nú<ir.z type='z' ...>)Ú	__class__rì   r,   ©rE   s    r$   Ú__repr__ÚValue.__repr__¦  s   � Ø*.¯.©.×*AÔ*AÀ4Ç9Ä9ÐNÐNr7   r?   N)rì   rí   rî   rï   rð   rø   rñ   r?   r7   r$   ró   ró   ¡  s   † ñõOr7   ró   c                   ó   • \ rS rSrSrS rSrg)Ú
_Undefinediª  z(
'undef': a value for undefined values.
c                 ób   •  [         $ ! [         a    [        R                  [        5      s $ f = f©N)Ú	UndefinedÚ	NameErrorÚobjectÚ__new__rû   )Úclss    r$   r  Ú_Undefined.__new__®  s+   € ð	.ÜÐøÜó 	.Ü—>‘>¤*Ó-Ò-ð	.ús   ‚ ˆ#.­.r?   N)rì   rí   rî   rï   rð   r  rñ   r?   r7   r$   rû   rû   ª  s   † ñõ.r7   rû   c                   óv   • \ rS rSrSrS rS rS r\S 5       r	\SS j5       r
\S 5       rS	 rS
 rS rS rSrg)r¬   i¸  z
A constant LLVM value.
c                 óÂ   • [        U[        R                  5      (       d   e[        U[        R                  5      (       a   eXl        UR                  U5      nX l        g rý   )r   r   ÚTypeÚVoidTyper,   Úwrap_constant_valueÚconstant©rE   rF   r	  s      r$   Ú__init__ÚConstant.__init__½  sJ   € Ü˜#œuŸz™z×*Ñ*Ð*Ð*Ü˜c¤5§>¡>×2Ñ2Ð2Ð2ØŒ	Ø×*Ñ*¨8Ó4ˆØ �r7   c                 óV   • SR                  U R                  U R                  5       5      $ ©Nrâ   ©r.   r,   r/   r÷   s    r$   Ú
_to_stringÚConstant._to_stringÄ  ó"   € Ø×Ñ §	¡	¨4×+=Ñ+=Ó+?Ó@Ð@r7   c                 óR  • U R                   c  U R                  R                  nU$ U R                   [        L a  SnU$ [	        U R                   [
        5      (       a&  SR                  [        U R                   5      5      nU$ U R                  R                  U R                   5      nU$ )NÚundefzc"{0}")	r	  r,   Únullrþ   r   r   r.   r%   Úformat_constant©rE   Úvals     r$   Ú_get_referenceÚConstant._get_referenceÇ  sŠ   € Ø�=‰=Ñ Ø—)‘)—.‘.ˆCð ˆ
ð �]‰]œiÒ'ØˆCð ˆ
ô ˜Ÿ™¤y×1Ñ1Ø—/‘/¤.°·±Ó"?Ó@ˆCð
 ˆ
ð —)‘)×+Ñ+¨D¯M©MÓ:ˆCàˆ
r7   c                 ó   • U Vs/ s H  o"R                   PM     nn[        U5      S:X  a  [        S5      eUS   nU H  nXE:w  d  M
  [        S5      e   U " [        R
                  " U[        U5      5      U5      $ s  snf )z?
Construct a literal array constant made of the given members.
r   zneed at least one elementz$all elements must have the same type)r,   Úlenr-   rÚ   r   Ú	ArrayType)r  ÚelemsÚelÚtysÚtyrQ   s         r$   Úliteral_arrayÚConstant.literal_arrayÖ  sx   € ñ
 "'Ó'¢˜2�wŒw¡ˆÐ'Üˆs‹8�q‹=ÜÐ8Ó9Ð9Ø�‰VˆÛˆEØ�{ÜÐ FÓGÐGñ ñ ”5—?’? 2¤s¨5£zÓ2°EÓ:Ð:ùò (s   …A;c                 ó|   • U Vs/ s H  o3R                   PM     nnU " [        R                  " XB5      U5      $ s  snf )zC
Construct a literal structure constant made of the given members.
)r,   r   ÚLiteralStructType)r  r  Úpackedr  r   s        r$   Úliteral_structÚConstant.literal_structä  s7   € ñ
 "'Ó'¢˜2�wŒw¡ˆÐ'Ù”5×*Ò*¨3Ó7¸Ó?Ð?ùò (s   …9c                 ó–   • [        U R                  [        R                  5      (       d  [	        S5      eU R                  R
                  $ )Nz)Only pointer constant have address spaces)r   r,   r   rÙ   rÚ   ræ   r÷   s    r$   ræ   ÚConstant.addrspaceì  s5   € ä˜$Ÿ)™)¤U×%6Ñ%6×7Ñ7ÜÐGÓHÐHØ�y‰y×"Ñ"Ð"r7   c                 ó\   • [        U[        5      (       a  [        U 5      [        U5      :H  $ g©NF)r   r¬   r   rP   s     r$   Ú__eq__ÚConstant.__eq__ò  s%   € Ü�eœX×&Ñ&Ü�t“9¤ E£
Ñ*Ð*àr7   c                 ó.   • U R                  U5      (       + $ rý   ©r-  rP   s     r$   Ú__ne__ÚConstant.__ne__ø  ó   € Ø—;‘;˜uÓ%Ô%Ð%r7   c                 ó*   • [        [        U 5      5      $ rý   )Úhashr   r÷   s    r$   Ú__hash__ÚConstant.__hash__û  s   € Ü”C˜“I‹Ðr7   c                 ó@   • SU R                   < SU R                  < S3$ )Nz<ir.Constant type='z' value=r   )r,   r	  r÷   s    r$   rø   ÚConstant.__repr__þ  s   � Ø59·Y´YÀÇÄÐNÐNr7   )r	  r,   N)F)rì   rí   rî   rï   rð   r  r  r  Úclassmethodr"  r'  Úpropertyræ   r-  r1  r6  rø   rñ   r?   r7   r$   r¬   r¬   ¸  sj   † ñò!òAòð ñ;ó ð;ð ó@ó ð@ð ñ#ó ð#ò
ò&òõOr7   r¬   c                   ó*   • \ rS rSrSrS rS rS rSrg)r0   i  z9
A constant with an already formatted IR representation.
c                 ó^   • [        U[        5      (       d   e[        R                  XU5        g rý   )r   r   r¬   r  r
  s      r$   r  ÚFormattedConstant.__init__  s%   € Ü˜(¤C×(Ñ(Ð(Ð(Ü×Ñ˜$ XÕ.r7   c                 ó   • U R                   $ rý   ©r	  r÷   s    r$   r  ÚFormattedConstant._to_string  ó   € Ø�}‰}Ðr7   c                 ó   • U R                   $ rý   r@  r÷   s    r$   r  Ú FormattedConstant._get_reference  rB  r7   r?   N)	rì   rí   rî   rï   rð   r  r  r  rñ   r?   r7   r$   r0   r0     s   † ñò/òõr7   r0   c                   ól   • \ rS rSrSrSrSrS rS rS r	S r
S	 r\" \
\5      rS
 rS r\S 5       rSrg)Ú
NamedValuei  z"
The base class for named values.
Ú%Tc                 óŠ   • Uc   e[        U[        R                  5      (       d   eXl        X l        U R                  U5        g rý   )r   r   r  Úparentr,   Ú	_set_name)rE   rI  r,   Únames       r$   r  ÚNamedValue.__init__  s;   € ØÑ!Ð!Ð!Ü˜$¤§
¡
×+Ñ+Ð+Ð+ØŒØŒ	Ø�‰�tÕr7   c                 ó  • / n[        U R                  [        R                  5      (       d.  UR	                  SR                  U R                  5       5      5        U R                  U5        SR                  U5      R                  5       $ )Nz{0} = r   )
r   r,   r   r  Úappendr.   r/   Údescrr   Úrstrip©rE   r#   s     r$   r  ÚNamedValue._to_string   s\   € ØˆÜ˜$Ÿ)™)¤U§^¡^×4Ñ4Ø�J‰J�x—‘ t×'9Ñ'9Ó';Ó<Ô=Ø�
‰
�3ŒØ�w‰w�s‹|×"Ñ"Ó$Ð$r7   c                 ó   • [         erý   )ÚNotImplementedErrorrQ  s     r$   rO  ÚNamedValue.descr'  s   € Ü!Ð!r7   c                 ó   • U R                   $ rý   )Ú_namer÷   s    r$   Ú	_get_nameÚNamedValue._get_name*  s   € Ø�z‰zÐr7   c                 ól   • U R                   R                  R                  UU R                  S9nXl        g )N)Údeduplicate)rI  ÚscopeÚregisterÚdeduplicate_namerW  ©rE   rK  s     r$   rJ  ÚNamedValue._set_name-  s2   € Ø�{‰{× Ñ ×)Ñ)¨$Ø6:×6KÑ6Kð *ð Mˆà�
r7   c                 ó®   • U R                   nSU;   d  SU;   a"  UR                  SS5      R                  SS5      nSR                  U R                  U5      $ )NÚ\Ú"ú\5cú\22z{0}"{1}")rK  Úreplacer.   Úname_prefixr_  s     r$   r  ÚNamedValue._get_reference4  sN   € Ø�y‰yˆà�4‹<˜3 $›;Ø—<‘<  fÓ-×5Ñ5°c¸6ÓBˆDØ× Ñ  ×!1Ñ!1°4Ó8Ð8r7   c                 óp   • SU R                   R                  < SU R                  < SU R                  < S3$ )Nrõ   Ú z
 of type 'z'>©rö   rì   rK  r,   r÷   s    r$   rø   ÚNamedValue.__repr__;  s%   � à�N‰N×#Ô# T§Y¤Y°·	´	ð;ð 	;r7   c                 ó  • U R                   n[        U[        R                  5      (       a  U R                   R                  n[        U[        R
                  5      (       a  U$ [        SR                  U R                   5      5      e)NzNot a function: {0})r,   r   r   rÙ   rä   ÚFunctionTyperÚ   r.   )rE   r!  s     r$   Úfunction_typeÚNamedValue.function_type?  s`   € à�Y‰YˆÜ�bœ%×+Ñ+×,Ñ,Ø—‘×"Ñ"ˆBÜ�bœ%×,Ñ,×-Ñ-ØˆIäÐ1×8Ñ8¸¿¹ÓCÓDÐDr7   )rW  rI  r,   N)rì   rí   rî   rï   rð   rg  r^  r  r  rO  rX  rJ  r;  rK  r  rø   ro  rñ   r?   r7   r$   rF  rF    s[   † ñð €KØÐòò%ò"òòñ
 �I˜yÓ)€Dò9ò;ð ñEó óEr7   rF  c                   óN   ^ • \ rS rSrSrU 4S jrS rS r\rS r	S r
S rS	rU =r$ )
ÚMetaDataStringiJ  zO
A metadata string, i.e. a constant string used as a value in a metadata
node.
c                 ó^   >• [         [        U ]  U[        R                  " 5       SS9  X l        g )Nr   ©rK  )Úsuperrr  r  r   ÚMetaDataTypeÚstring)rE   rI  rw  rö   s      €r$   r  ÚMetaDataString.__init__P  s/   ø€ ÜŒn˜dÑ,¨VÜ-2×-?Ò-?Ó-AØ24ð 	-ñ 	6ð �r7   c                 ó,   • XR                  5       S4-  ng )NÚ
)r/   rQ  s     r$   rO  ÚMetaDataString.descrV  s   € Ø×"Ñ"Ó$ dÐ+Ñ+‰r7   c                 óJ   • SR                  [        U R                  5      5      $ )Nz!"{0}")r.   r%   rw  r÷   s    r$   r  ÚMetaDataString._get_referenceY  s   € Ø�‰œ~¨d¯k©kÓ:Ó;Ð;r7   c                 ó`   • [        U[        5      (       a  U R                  UR                  :H  $ gr,  )r   rr  rw  rP   s     r$   r-  ÚMetaDataString.__eq__^  s%   € Ü�eœ^×,Ñ,Ø—;‘; %§,¡,Ñ.Ð.àr7   c                 ó.   • U R                  U5      (       + $ rý   r0  rP   s     r$   r1  ÚMetaDataString.__ne__d  r3  r7   c                 ó,   • [        U R                  5      $ rý   )r5  rw  r÷   s    r$   r6  ÚMetaDataString.__hash__g  s   € Ü�D—K‘KÓ Ð r7   )rw  )rì   rí   rî   rï   rð   r  rO  r  r  r-  r1  r6  rñ   Ú__classcell__©rö   s   @r$   rr  rr  J  s2   ø† ñõ
ò,ò<ð  €Jòò&÷!ð !r7   rr  c                   ó(   • \ rS rSrSrS rS r\rSrg)ÚMetaDataArgumentik  z¶
An argument value to a function taking metadata arguments.
This can wrap any other kind of LLVM value.

Do not instantiate directly, Builder.call() will create these
automatically.
c                 óÈ   • [        U[        5      (       d   e[        UR                  [        R                  5      (       a   e[        R                  " 5       U l        Xl        g rý   )r   ró   r,   r   rv  Úwrapped_value©rE   Úvalues     r$   r  ÚMetaDataArgument.__init__t  sH   € Ü˜%¤×'Ñ'Ð'Ð'Ü˜eŸj™j¬%×*<Ñ*<×=Ñ=Ð=Ð=Ü×&Ò&Ó(ˆŒ	Ø"Õr7   c                 ó~   • SR                  U R                  R                  U R                  R                  5       5      $ r  )r.   r‰  r,   r/   r÷   s    r$   r  ÚMetaDataArgument._get_referencez  s7   € à×Ñ × 2Ñ 2× 7Ñ 7Ø $× 2Ñ 2× @Ñ @Ó BóDð 	Dr7   )r,   r‰  N)	rì   rí   rî   rï   rð   r  r  r  rñ   r?   r7   r$   r‡  r‡  k  s   † ñò#òDð
  ƒJr7   r‡  c                   ó$   • \ rS rSrSrS rS rSrg)ÚNamedMetaDatai‚  z_
A named metadata node.

Do not instantiate directly, use Module.add_named_metadata() instead.
c                 ó   • Xl         / U l        g rý   )rI  Úoperands)rE   rI  s     r$   r  ÚNamedMetaData.__init__‰  s   € ØŒØˆ�r7   c                 ó:   • U R                   R                  U5        g rý   )r’  rN  )rE   Úmds     r$   rZ   ÚNamedMetaData.add�  s   € Ø�‰×Ñ˜RÕ r7   )r’  rI  N)rì   rí   rî   rï   rð   r  rZ   rñ   r?   r7   r$   r�  r�  ‚  s   † ñòõ!r7   r�  c                   óN   ^ • \ rS rSrSrSrU 4S jrS rS rS r	S r
S	 rS
rU =r$ )ÚMDValuei‘  zŽ
A metadata node's value, consisting of a sequence of elements ("operands").

Do not instantiate directly, use Module.add_metadata() instead.
Ú!c                 ó¨   >• [         [        U ]  U[        R                  " 5       US9  [        U5      U l        UR                  R                  U 5        g ©Nrt  )	ru  r˜  r  r   rv  Útupler’  ÚmetadatarN  )rE   rI  r   rK  rö   s       €r$   r  ÚMDValue.__init__™  sG   ø€ ÜŒg�tÑ% fÜ&+×&8Ò&8Ó&:Ø+/ð 	&ñ 	1ô ˜f›ˆŒØ�‰×Ñ˜tÕ$r7   c                 óì  • / nU R                    H»  n[        UR                  [        R                  5      (       aV  [        U[
        5      (       a   UR                  c  UR                  S5        Ma  UR                  UR                  5       5        M‚  UR                  SR                  UR                  UR                  5       5      5        M½     SR                  U5      nUSR                  U5      S4-  ng )Nr  râ   r*   z
!{{ {0} }}rz  )r’  r   r,   r   rv  r¬   r	  rN  r/   r.   r   )rE   r#   r’  rG   s       r$   rO  ÚMDValue.descr   s³   € ØˆØ—-”-ˆBÜ˜"Ÿ'™'¤5×#5Ñ#5×6Ñ6Ü˜b¤(×+Ñ+°·±Ñ0CØ—O‘O FÖ+à—O‘O B×$4Ñ$4Ó$6Ö7à—‘ 	× 0Ñ 0°·±¸"×:JÑ:JÓ:LÓ MÖNñ  ð —9‘9˜XÓ&ˆØ�×#Ñ# HÓ-¨tÐ4Ñ4‰r7   c                 óF   • U R                   [        U R                  5      -   $ rý   ©rg  r   rK  r÷   s    r$   r  ÚMDValue._get_reference­  ó   € Ø×Ñ¤# d§i¡i£.Ñ0Ð0r7   c                 ó`   • [        U[        5      (       a  U R                  UR                  :H  $ gr,  )r   r˜  r’  rP   s     r$   r-  ÚMDValue.__eq__°  s%   € Ü�eœW×%Ñ%Ø—=‘= E§N¡NÑ2Ð2àr7   c                 ó.   • U R                  U5      (       + $ rý   r0  rP   s     r$   r1  ÚMDValue.__ne__¶  r3  r7   c                 ó,   • [        U R                  5      $ rý   )r5  r’  r÷   s    r$   r6  ÚMDValue.__hash__¹  s   € Ü�D—M‘MÓ"Ð"r7   )r’  ©rì   rí   rî   rï   rð   rg  r  rO  r  r-  r1  r6  rñ   r„  r…  s   @r$   r˜  r˜  ‘  s2   ø† ñð
 €Kõ%ò5ò1òò&÷#ð #r7   r˜  c                   ó   • \ rS rSrSrS rSrg)ÚDITokeni½  z—
A debug information enumeration value that should appear bare in
the emitted metadata.

Use this to wrap known constants, e.g. the DW_* enumerations.
c                 ó   • Xl         g rý   ©r‹  rŠ  s     r$   r  ÚDIToken.__init__Å  s   € Ø�
r7   r¯  N)rì   rí   rî   rï   rð   r  rñ   r?   r7   r$   r­  r­  ½  s   † ñõr7   r­  c                   óN   ^ • \ rS rSrSrSrU 4S jrS rS rS r	S r
S	 rS
rU =r$ )ÚDIValueiÉ  z€
A debug information descriptor, containing key-value pairs.

Do not instantiate directly, use Module.add_debug_info() instead.
r™  c                 óÀ   >• [         [        U ]  U[        R                  " 5       US9  X l        X0l        [        U5      U l        UR                  R                  U 5        g r›  )ru  r²  r  r   rv  Úis_distinctÚkindrœ  r’  r�  rN  )rE   rI  r´  rµ  r’  rK  rö   s         €r$   r  ÚDIValue.__init__Ñ  sR   ø€ ÜŒg�tÑ% fÜ&+×&8Ò&8Ó&:Ø+/ð 	&ñ 	1ð 'ÔØŒ	Ü˜h›ˆŒØ�‰×Ñ˜tÕ$r7   c                 óª  • U R                   (       a  US-  n/ nU R                   GH  u  p4Uc  SnOÙUSL a  SnOÑUSL a  SnOÉ[        U[        5      (       a  UR                  nO§[        U[
        5      (       a  SR                  [        U5      5      nOw[        U[        5      (       a  [        U5      nOV[        U[        5      (       a  [        U5      nO5[        U[        5      (       a  UR                  5       nO[        SU< 35      eUR                  S	R                  X55      5        GM     S
R                  U5      nUSU R                  SUS4-  ng )N)z	distinct r  TÚtrueFÚfalsez"{}"z%invalid operand type for debug info: z{0}: {1}r*   r™  Ú(z)
)r´  r’  r   r­  r‹  r   r.   r%   Úintr¬   rF  r/   rÚ   rN  r   rµ  )rE   r#   r’  Úkeyr‹  Ústrvalues         r$   rO  ÚDIValue.descrÚ  s   € Ø××Ø�>Ñ!ˆCØˆØŸ-�-‰JˆCØ‰}Ø!‘Ø˜$’Ø!‘Ø˜%’Ø"‘Ü˜E¤7×+Ñ+Ø Ÿ;™;‘Ü˜E¤3×'Ñ'Ø!Ÿ=™=¬¸Ó)>Ó?‘Ü˜E¤3×'Ñ'Ü˜u›:‘Ü˜E¤8×,Ñ,ô ˜u›:‘Ü˜E¤:×.Ñ.Ø ×.Ñ.Ó0‘åÚ#(ð!+ó ,ð ,à�O‰O˜J×-Ñ-¨cÓ<×=ñ- (ð. —9‘9˜XÓ&ˆØ��T—Y‘Y  X¨uÐ5Ñ5‰r7   c                 óF   • U R                   [        U R                  5      -   $ rý   r¢  r÷   s    r$   r  ÚDIValue._get_referenceø  r¤  r7   c                 óà   • [        U[        5      (       aY  U R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ gr,  )r   r²  r´  rµ  r’  rP   s     r$   r-  ÚDIValue.__eq__û  sW   € Ü�eœW×%Ñ%Ø×#Ñ# u×'8Ñ'8Ñ8÷ 0Ø—	‘	˜UŸZ™ZÑ'÷0à—‘ §¡Ñ/ð0ð r7   c                 ó.   • U R                  U5      (       + $ rý   r0  rP   s     r$   r1  ÚDIValue.__ne__  r3  r7   c                 óZ   • [        U R                  U R                  U R                  45      $ rý   )r5  r´  rµ  r’  r÷   s    r$   r6  ÚDIValue.__hash__  s"   € Ü�T×%Ñ% t§y¡y°$·-±-Ð@ÓAÐAr7   )r´  rµ  r’  r«  r…  s   @r$   r²  r²  É  s4   ø† ñð
 €Kõ%ò6ò<1òò&÷Bð Br7   r²  c                   ó4   ^ • \ rS rSrSrSrSrU 4S jrSrU =r	$ )ÚGlobalValuei
  z
A global value.
Ú@Fc                 óf   >• [         [        U ]
  " U0 UD6  SU l        SU l        SU l        0 U l        g ©Nr   )ru  rÈ  r  ÚlinkageÚstorage_classÚsectionr�  )rE   ÚargsÚkwargsrö   s      €r$   r  ÚGlobalValue.__init__  s4   ø€ ÜŒk˜4Ò)¨4Ð:°6Ò:ØˆŒØˆÔØˆŒØˆ�r7   )rÌ  r�  rÎ  rÍ  )
rì   rí   rî   rï   rð   rg  r^  r  rñ   r„  r…  s   @r$   rÈ  rÈ  
  s   ø† ñð €KØÐ÷ó r7   rÈ  c                   ó6   ^ • \ rS rSrSrSU 4S jjrS rSrU =r$ )ÚGlobalVariablei  z
A global variable.
c                 ó  >• [        U[        R                  5      (       d   e[        [        U ]  XR                  U5      US9  X l        S U l        SU l	        SU l
        X@l        S U l        U R                  R                  U 5        g )Nrt  F)r   r   r  ru  rÓ  r  rå   Ú
value_typeÚinitializerÚunnamed_addrÚglobal_constantræ   ÚalignrI  Ú
add_global)rE   ÚmodulerF   rK  ræ   rö   s        €r$   r  ÚGlobalVariable.__init__  sw   ø€ Ü˜#œuŸz™z×*Ñ*Ð*Ð*ÜŒn˜dÑ,¨V·^±^ÀIÓ5NØ26ð 	-ñ 	8àŒØˆÔØ!ˆÔØ$ˆÔØ"ŒØˆŒ
Ø�‰×Ñ˜tÕ$r7   c                 óø  • U R                   (       a  SnOSnU R                  (       d  U R                  c  SOSnOU R                  nU(       a  UR                  US-   5        U R                  (       a  UR                  U R                  S-   5        U R
                  (       a  UR                  S5        U R                  S:w  a*  UR                  SR                  U R                  5      5        UR                  S	R                  X R                  S
95        U R                  b‚  U R                  R                  U R                  :w  a1  [        SU R                  R                  < SU R                  < 35      eUR                  SU R                  R                  5       -   5        O;US;  a5  UR                  SU R                  [        5      R                  5       -   5        U R                  (       a   UR                  SU R                  < S35        U R                  b  UR                  SU R                  4-  5        U R                  (       a  UR                  U R!                  SS95        UR                  S5        g )Nr	  ÚglobalÚexternalr   rj  zunnamed_addr r   zaddrspace({0:d}) z{kind} {type})rµ  r,   zgot initializer of type z for global value type )rß  Úextern_weakz, section "rc  z
, align %dT)Úleading_commarz  )rØ  rÌ  rÖ  rN  rÍ  r×  ræ   r.   rÕ  r,   rÚ   r/   rþ   rÎ  rÙ  r�  Ú_stringify_metadata)rE   r#   rµ  rÌ  s       r$   rO  ÚGlobalVariable.descr*  sÉ  € Ø××Ø‰DàˆDà�|�|à$(×$4Ñ$4Ñ$<‘jÀ"‰Gà—l‘lˆGæØ�J‰J�w ‘}Ô%Ø××Ø�J‰J�t×)Ñ)¨CÑ/Ô0Ø××Ø�J‰J�Ô'Ø�>‰>˜QÓØ�J‰JÐ*×1Ñ1°$·.±.ÓAÔBà�
‰
�?×*Ñ*°¿?¹?Ð*ÐKÔLà×ÑÑ'Ø×Ñ×$Ñ$¨¯©Ó7Ýà#'×#3Ñ#3×#8Ô#8¸$¿/»/ð!Kó Lð Lð �J‰J�s˜T×-Ñ-×;Ñ;Ó=Ñ=Õ>ØÐ7Ó7à�J‰J�s˜TŸ_™_¬YÓ7×EÑEÓGÑGÔHà�<�<Ø�JŠJ¨T¯\¬\Ð;Ô<à�:‰:Ñ!Ø�J‰J�| t§z¡z mÑ3Ô4à�=�=Ø�J‰J�t×/Ñ/¸dÐ/ÐCÔDà�
‰
�4Õr7   )ræ   rÙ  rØ  rÖ  r×  rÕ  )r   )	rì   rí   rî   rï   rð   r  rO  rñ   r„  r…  s   @r$   rÓ  rÓ    s   ø† ñ÷
%÷*ð *r7   rÓ  c                   óL   ^ • \ rS rSrSrSrSU 4S jjrS rU 4S jrS r	Sr
U =r$ )	ÚAttributeSetiW  zhA set of string attribute.
Only accept items listed in *_known*.

Properties:
* Iterate in sorted order
r?   c                 ó†   >• [         TU ]  5         [        U[        5      (       a  U/nU H  nU R	                  U5        M     g rý   )ru  r  r   r   rZ   )rE   rÏ  rK  rö   s      €r$   r  ÚAttributeSet.__init__`  s7   ø€ Ü‰ÑÔÜ�dœC× Ñ Ø�6ˆDÛˆDØ�H‰H�TŽNò r7   c                 ó   • U$ rý   r?   )rE   rK  rF   s      r$   Ú_expandÚAttributeSet._expandg  s   € Øˆr7   c                 ó|   >• XR                   ;  a  [        SR                  X5      5      e[        [        U ]  U5      $ )Nzunknown attr {!r} for {})Ú_knownr-   r.   ru  rå  rZ   ©rE   rK  rö   s     €r$   rZ   ÚAttributeSet.addj  s6   ø€ Ø—{‘{Ó"ÜÐ7×>Ñ>¸tÓJÓKÐKÜ”\ 4Ñ,¨TÓ2Ð2r7   c                 ó`   • [        U 5       Vs/ s H  o R                  X!5      PM     sn$ s  snf rý   )Úsortedré  )rE   rF   r‹   s      r$   Ú_to_listÚAttributeSet._to_listo  s%   € Ü.4°T¬lÓ;ªl¨—‘˜QÖ$©lÑ;Ð;ùÒ;s   Ž+©r?   )rì   rí   rî   rï   rð   rì  r  ré  rZ   rñ  rñ   r„  r…  s   @r$   rå  rå  W  s(   ø† ñð €F÷òõ3÷
<ð <r7   rå  c                   óÀ   ^ • \ rS rSr\" / SQ5      rSU 4S jjrU 4S jr\S 5       r	\	R                  S 5       r	\S 5       r\R                  S 5       rU 4S	 jrS
rU =r$ )ÚFunctionAttributesis  ) Ú
argmemonlyÚalwaysinlineÚbuiltinÚcoldÚ
convergentÚinaccessiblememonlyÚinaccessiblemem_or_argmemonlyÚ
inlinehintÚ	jumptableÚminsizeÚnakedÚ	nobuiltinÚnoduplicateÚnoimplicitfloatÚnoinlineÚnonlazybindÚ	norecurseÚ	noredzoneÚnoreturnÚnounwindÚoptnoneÚoptsizeÚreadnoneÚreadonlyÚreturns_twiceÚsanitize_addressÚsanitize_memoryÚsanitize_threadÚsspÚsspregÚ	sspstrongÚuwtablec                 óH   >• SU l         S U l        [        [        U ]  U5        g ©Nr   )Ú_alignstackÚ_personalityru  rõ  r  ©rE   rÏ  rö   s     €r$   r  ÚFunctionAttributes.__init__~  s#   ø€ ØˆÔØ ˆÔÜÔ  $Ñ0°Õ6r7   c                 ój   >• US:X  a  SU ;   d  US:X  a  SU ;   a  [        S5      e[        TU ]	  U5        g )Nr÷  r  z$Can't have alwaysinline and noinline)r-   ru  rZ   rí  s     €r$   rZ   ÚFunctionAttributes.addƒ  s9   ø€ Ø�^Ó#¨
°dÓ(:Ø˜Ó#¨¸$Ó(>ÜÐCÓDÐDä‰‰�DÕr7   c                 ó   • U R                   $ rý   ©r  r÷   s    r$   Ú
alignstackÚFunctionAttributes.alignstackŠ  s   € à×ÑÐr7   c                 ó    • US:¼  d   eXl         g r  r  r  s     r$   r   r!  Ž  s   € à�a‹xˆˆxØÕr7   c                 ó   • U R                   $ rý   )r  r÷   s    r$   ÚpersonalityÚFunctionAttributes.personality“  s   € à× Ñ Ð r7   c                 óD   • Ub  [        U[        5      (       d   eXl        g rý   )r   rÈ  r  r  s     r$   r$  r%  —  s   € à‰{œj¨¬k×:Ñ:Ð:Ð:ØÕr7   c                 óT  >• [         TU ]  U5      nU R                  (       a*  UR                  SR	                  U R                  5      5        U R
                  (       aK  UR                  SR	                  U R
                  R                  U R
                  R                  5       S95        U$ )Nzalignstack({0:d})zpersonality {persty} {persfn})ÚperstyÚpersfn)ru  rñ  r   rN  r.   r$  r,   r/   )rE   Úret_typeÚattrsrö   s      €r$   rñ  ÚFunctionAttributes._to_listœ  s†   ø€ Ü‘Ñ  Ó*ˆØ�?�?Ø�L‰LÐ,×3Ñ3°D·O±OÓDÔEØ××Ø�L‰LÐ8×?Ñ?Ø×'Ñ'×,Ñ,Ø×'Ñ'×5Ñ5Ó7ð @ð 9ô :ð ˆr7   )r  r  ró  )rì   rí   rî   rï   Ú	frozensetrì  r  rZ   r;  r   Úsetterr$  rñ  rñ   r„  r…  s   @r$   rõ  rõ  s  s‚   ø† Ùò *ó +€F÷7õ
ð ñ ó ð ð ×Ññó ðð ñ!ó ð!ð ×Ññ ó ð ÷ó r7   rõ  c                   ó˜   ^ • \ rS rSrSrU 4S jr\S 5       r\S 5       r\S 5       r	SS jr
SS jrS	 rS
 rS rS r\S 5       rSrU =r$ )ÚFunctioni§  z…Represent a LLVM Function but does uses a Module as parent.
Global Values are stored as a set of dependencies (attribute `depends`).
c           	      óÞ  >• [        U[        R                  5      (       d   e[        [        U ]  XR                  5       US9  X l        [        R                  " 5       U l
        / U l        [        5       U l        [        UR                   Vs/ s H  n[!        X5      PM     sn5      U l        [#        XR$                  5      U l        U R(                  R+                  U 5        SU l        g s  snf )Nrt  r   )r   r   r  ru  r0  r  rå   Úftyper   Ú	NameScoper\  Úblocksrõ  Ú
attributesrœ  rÏ  ÚArgumentÚReturnValueÚreturn_typeÚreturn_valuerI  rÚ  Úcalling_convention)rE   rÛ  r2  rK  Útrö   s        €r$   r  ÚFunction.__init__¬  s¿   ø€ Ü˜%¤§¡×,Ñ,Ð,Ð,ÜŒh˜Ñ& v×/?Ñ/?Ó/AÈÐ&ÑMØŒ
Ü×%Ò%Ó'ˆŒ
ØˆŒÜ,Ó.ˆŒÜØ$)§J¢Jó0Ú$.˜qô $ DÖ,Ù$.ñ0ó 1ˆŒ	ä'¨×.?Ñ.?Ó@ˆÔØ�‰×Ñ˜tÔ$Ø"$ˆÕùò	0s   ÂC*c                 ó   • U R                   $ rý   ©rI  r÷   s    r$   rÛ  ÚFunction.module¹  ó   € à�{‰{Ðr7   c                 ó    • U R                   S   $ r  ©r4  r÷   s    r$   Úentry_basic_blockÚFunction.entry_basic_block½  s   € à�{‰{˜1‰~Ðr7   c                 ó   • U R                   $ rý   rB  r÷   s    r$   Úbasic_blocksÚFunction.basic_blocksÁ  r@  r7   c                 óN   • [        XS9nU R                  R                  U5        U$ )N©rI  rK  )ÚBlockr4  rN  )rE   rK  Úblks      r$   Úappend_basic_blockÚFunction.append_basic_blockÅ  s#   € Ü˜4Ñ+ˆØ�‰×Ñ˜3ÔØˆ
r7   c                 óN   • [        XS9nU R                  R                  X5        U$ )zInsert block before
        rI  )rJ  r4  Úinsert)rE   ÚbeforerK  rK  s       r$   Úinsert_basic_blockÚFunction.insert_basic_blockÊ  s%   € ô ˜4Ñ+ˆØ�‰×Ñ˜6Ô'Øˆ
r7   c           
      ód  • U R                   (       a  SOSnU R                  nSR                  S U R                   5       5      nU R	                  5       nU R
                  (       aA  SSR                  U R
                  R                  U R                  R                  5      5      -   OSn[        U R                  5      (       a   U R                  R                  (       a  SOSnOU R                  R                  (       a  SOSnU R                  nU R                  n	SR                  S	 X(X“4 5       5      n
U R                  5       nU(       a  S
R                  U5      OSnU R                  (       a  SR                  U R                  5      OSnSnUR                  X¥UXvUUS9nUR!                  U5        g)z2
Describe the prototype ("head") of the function.
ÚdefineÚdeclarer*   c              3   ó8   #   • U  H  n[        U5      v •  M     g 7frý   ©r   )Ú.0Úas     r$   Ú	<genexpr>Ú+Function.descr_prototype.<locals>.<genexpr>×  s   é € Ð3ª Aœ˜QŸ˜ªùs   ‚rj  r   z, ...z...c              3   óH   #   • U  H  o(       d  M  [        U5      v •  M     g 7frý   rW  )rX  Úxs     r$   rZ  r[  á  s   é € ÐLÒ*F QË!›&œ#˜aŸ&˜&Ò*Fùs   ‚
"�"z {}z section "{}"z:{prefix} {name}({args}{vararg}){attrs}{section}{metadata}
)r�   rK  rÏ  Úvarargr+  rÎ  r�  N)r4  r9  r   rÏ  r/   r5  rñ  r2  r8  ÚanyÚvar_argrÌ  r:  râ  r.   rÎ  rN  )rE   r#   ÚstateÚretrÏ  rK  r+  r^  rÌ  Úcconvr�   r�  rÎ  Úpt_strÚ	prototypes                  r$   Údescr_prototypeÚFunction.descr_prototypeÑ  sR  € ð !ŸKŸK‘¨YˆØ×ÑˆØ�y‰yÑ3¨¯ªÓ3Ó3ˆØ×!Ñ!Ó#ˆà(,¯¯ð �c—h‘h˜tŸ™×7Ñ7Ø�J‰J×"Ñ"ó $ó %ò %Ø=?ð 	äˆt�y‰y�>‰>Ø $§
¡
× 2× 2‘W¸‰Fà"Ÿj™j×0×0‘U°bˆFØ—,‘,ˆØ×'Ñ'ˆØ—‘ÑL¨5¸5Ñ*FÓLÓLˆØ×+Ñ+Ó-ˆÞ-5�5—<‘< Ô)¸2ˆØ:>¿,¿,�/×(Ñ(¨¯©Ô6ÈBˆØNˆØ—M‘M¨ÀØ)/ÀgØ+3ð "ð 5ˆ	ð 	�
‰
�9Õr7   c                 óL   • U R                    H  nUR                  U5        M     g)z'
Describe of the body of the function.
N)r4  rO  )rE   r#   rK  s      r$   Ú
descr_bodyÚFunction.descr_bodyë  s   € ð —;”;ˆCØ�I‰I�cŽNò r7   c                 ó°   • U R                  U5        U R                  (       a4  UR                  S5        U R                  U5        UR                  S5        g g )Nz{
z}
)rf  r4  rN  ri  rQ  s     r$   rO  ÚFunction.descrò  s@   € Ø×Ñ˜SÔ!Ø�;�;Ø�J‰J�uÔØ�O‰O˜CÔ Ø�J‰J�uÕð r7   c                 óJ   • / nU R                  U5        SR                  U5      $ rË  )rO  r   rQ  s     r$   Ú__str__ÚFunction.__str__ù  s    € ØˆØ�
‰
�3ŒØ�w‰w�s‹|Ðr7   c                 ó2   • [        U R                  5      S:H  $ r  )r  r4  r÷   s    r$   Úis_declarationÚFunction.is_declarationþ  s   € ä�4—;‘;Ó 1Ñ$Ð$r7   )rÏ  r5  r4  r:  r2  r9  r\  ©r   )rì   rí   rî   rï   rð   r  r;  rÛ  rC  rF  rL  rQ  rf  ri  rO  rn  rq  rñ   r„  r…  s   @r$   r0  r0  §  s{   ø† ñõ%ð ñó ðð ñó ðð ñó ðôô
òò4òòð
 ñ%ó ö%r7   r0  c                   ó\  ^ • \ rS rSr\" 0 SS_SS_SS_SS_SS_S	S_S
S_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SSSS.E5      rS U 4S jjrS r\S 5       r	\	R                  S 5       r	\S 5       r\R                  S 5       r\S 5       r\R                  S 5       rU 4S jrSrU =r$ )!ÚArgumentAttributesi  ÚbyrefTÚbyvalÚelementtypeÚimmargFÚinallocaÚinregÚnestÚnoaliasÚ	nocaptureÚnofreeÚnonnullÚnoundefÚpreallocatedÚreturnedÚsignextÚsretÚ
swiftasync)Ú
swifterrorÚ	swiftselfÚzeroextc                 óV   >• SU l         SU l        SU l        [        [        U ]  U5        g r  )Ú_alignÚ_dereferenceableÚ_dereferenceable_or_nullru  ru  r  r  s     €r$   r  ÚArgumentAttributes.__init__  s*   ø€ ØˆŒØ !ˆÔØ()ˆÔ%ÜÔ  $Ñ0°Õ6r7   c                 ón   • U R                   R                  U5      nU(       a  U SUR                   S3$ U$ )Nrº  r+   )rì  Úgeträ   )rE   rK  rF   Úrequires_types       r$   ré  ÚArgumentAttributes._expand%  s3   € ØŸ™Ÿ™¨Ó-ˆÞØ�V˜1˜SŸ[™[˜M¨Ð+Ð+àˆKr7   c                 ó   • U R                   $ rý   )r‹  r÷   s    r$   rÙ  ÚArgumentAttributes.align,  r@  r7   c                 óJ   • [        U[        5      (       a  US:¼  d   eXl        g r  )r   r»  r‹  r  s     r$   rÙ  r”  0  s    € ä˜#œs×#Ñ#¨¨q«Ð0Ð0Ø�r7   c                 ó   • U R                   $ rý   )rŒ  r÷   s    r$   ÚdereferenceableÚ"ArgumentAttributes.dereferenceable5  s   € à×$Ñ$Ð$r7   c                 óJ   • [        U[        5      (       a  US:¼  d   eXl        g r  )r   r»  rŒ  r  s     r$   r—  r˜  9  s!   € ä˜#œs×#Ñ#¨¨q«Ð0Ð0Ø #Õr7   c                 ó   • U R                   $ rý   )r�  r÷   s    r$   Údereferenceable_or_nullÚ*ArgumentAttributes.dereferenceable_or_null>  s   € à×,Ñ,Ð,r7   c                 óJ   • [        U[        5      (       a  US:¼  d   eXl        g r  )r   r»  r�  r  s     r$   r›  rœ  B  s!   € ä˜#œs×#Ñ#¨¨q«Ð0Ð0Ø(+Õ%r7   c                 óŒ  >• [         TU ]  U5      nU R                  (       a*  UR                  SR	                  U R                  5      5        U R
                  (       a*  UR                  SR	                  U R
                  5      5        U R                  (       a,  SnUR                  UR	                  U R                  5      5        U$ )Nzalign {0:d}zdereferenceable({0:d})zdereferenceable_or_null({0:d}))ru  rñ  rÙ  rN  r.   r—  r›  )rE   rF   r+  Údrefrö   s       €r$   rñ  ÚArgumentAttributes._to_listG  s‰   ø€ Ü‘Ñ  Ó%ˆØ�:�:Ø�L‰L˜×-Ñ-¨d¯j©jÓ9Ô:Ø××Ø�L‰LÐ1×8Ñ8¸×9MÑ9MÓNÔOØ×'×'Ø3ˆDØ�L‰L˜Ÿ™ T×%AÑ%AÓBÔCØˆr7   )r‹  rŒ  r�  ró  )rì   rí   rî   rï   r   rì  r  ré  r;  rÙ  r.  r—  r›  rñ  rñ   r„  r…  s   @r$   ru  ru    sŒ  ø† ñ ð ð 	�ðð 	�ð	ð
 	�tðð 	�%ðð 	�Dðð 	�ðð 	�ðð 	�5ðð 	�Uðð 	�%ðð 	�5ðð 	�5ðð 	˜ðð  	�Eð!ð" 	�5ð#ð$ 	�ð%ð& 	�eð'ð( ØØò-ó €F÷27òð ñó ðð ‡\�\ñó ðð ñ%ó ð%ð ×Ññ$ó ð$ð ñ-ó ð-ð ×#Ñ#ñ,ó $ð,÷	ó 	r7   ru  c                   ó8   ^ • \ rS rSrSU 4S jjrS rS rSrU =r$ )Ú_BaseArgumentiS  c                 ó–   >• [        U[        R                  5      (       d   e[        [        U ]  XUS9  Xl        [        5       U l        g r›  )	r   r   r  ru  r¢  r  rI  ru  r5  )rE   rI  rF   rK  rö   s       €r$   r  Ú_BaseArgument.__init__T  s=   ø€ Ü˜#œuŸz™z×*Ñ*Ð*Ð*ÜŒm˜TÑ+¨F¸dÐ+ÑCØŒÜ,Ó.ˆ�r7   c                 óp   • SU R                   R                  < SU R                  < SU R                  < S3$ )Nrõ   rj  z	 of type r   rk  r÷   s    r$   rø   Ú_BaseArgument.__repr__Z  s&   � Ø*.¯.©.×*AÔ*AÀ4Ç9Ä9Ø*.¯)¬)ð5ð 	5r7   c                 ó:   • U R                   R                  U5        g rý   )r5  rZ   )rE   Úattrs     r$   Úadd_attributeÚ_BaseArgument.add_attribute^  s   € Ø�‰×Ñ˜DÕ!r7   )r5  rI  rs  )	rì   rí   rî   rï   r  rø   r©  rñ   r„  r…  s   @r$   r¢  r¢  S  s   ø† ÷/ò5÷"ð "r7   r¢  c                   ó   • \ rS rSrSrS rSrg)r6  ib  z+
The specification of a function argument.
c                 ó"  • U R                   R                  U R                  5      nU(       a:  SR                  U R                  SR	                  U5      U R                  5       5      $ SR                  U R                  U R                  5       5      $ )Nz{0} {1} {2}rj  râ   )r5  rñ  r,   r.   r   r/   ©rE   r+  s     r$   rn  ÚArgument.__str__g  sn   € Ø—‘×(Ñ(¨¯©Ó3ˆÞØ ×'Ñ'¨¯	©	°3·8±8¸E³?Ø(,×(:Ñ(:Ó(<ó>ð >ð ×#Ñ# D§I¡I¨t×/AÑ/AÓ/CÓDÐDr7   r?   N©rì   rí   rî   rï   rð   rn  rñ   r?   r7   r$   r6  r6  b  s   † ñõEr7   r6  c                   ó   • \ rS rSrSrS rSrg)r7  ip  z1
The specification of a function's return value.
c                 óÚ   • U R                   R                  U R                  5      nU(       a+  SR                  SR	                  U5      U R                  5      $ [        U R                  5      $ )Nrâ   rj  )r5  rñ  r,   r.   r   r   r­  s     r$   rn  ÚReturnValue.__str__u  sJ   € Ø—‘×(Ñ(¨¯©Ó3ˆÞØ×#Ñ# C§H¡H¨U£O°T·Y±YÓ?Ð?ä�t—y‘y“>Ð!r7   r?   Nr¯  r?   r7   r$   r7  r7  p  s   † ñõ"r7   r7  c                   ór   ^ • \ rS rSrSrSU 4S jjr\S 5       r\S 5       r\S 5       r	S r
S rS	 rS
rU =r$ )rJ  i}  a  
A LLVM IR basic block. A basic block is a sequence of
instructions whose execution always goes from start to end.  That
is, a control flow instruction (branch) can only appear as the
last instruction, and incoming branches can only jump to the first
instruction.
c                 ó�   >• [         [        U ]  U[        R                  " 5       US9  UR
                  U l        / U l        S U l        g r›  )ru  rJ  r  r   Ú	LabelTyper\  ÚinstructionsÚ
terminator)rE   rI  rK  rö   s      €r$   r  ÚBlock.__init__†  s:   ø€ ÜŒe�TÑ# F¬E¯OªOÓ,=ÀDÐ#ÑIØ—\‘\ˆŒ
ØˆÔØˆ�r7   c                 ó   • U R                   S L$ rý   )r·  r÷   s    r$   Úis_terminatedÚBlock.is_terminatedŒ  s   € à�‰ dÐ*Ð*r7   c                 ó   • U R                   $ rý   r>  r÷   s    r$   ÚfunctionÚBlock.function�  r@  r7   c                 ó.   • U R                   R                  $ rý   )rI  rÛ  r÷   s    r$   rÛ  ÚBlock.module”  s   € à�{‰{×!Ñ!Ð!r7   c                 óÆ   • UR                  SR                  U R                  5       5      5        XR                   Vs/ s H  nSR                  U5      PM     sn-  ng s  snf )Nz{0}:
z  {0}
)rN  r.   Ú_format_namer¶  )rE   r#   Úinstrs      r$   rO  ÚBlock.descr˜  sM   € Ø�
‰
�8—?‘? 4×#4Ñ#4Ó#6Ó7Ô8Ø×5FÒ5FÓGÒ5F¨E�	× Ñ  Ö'Ñ5FÑGÑG‰ùÒGs   ½Ac                 ór  • UR                   UR                   :w  a  [        S5      eU R                  R                  U5      nU R                  R	                  U5        U R                  R                  X25        U R                  R                   H'  nUR                   H  nUR                  X5        M     M)     g)zReplace an instructionz$new instruction has a different typeN)	r,   rÚ   r¶  ÚindexÚremoverO  rI  rF  Úreplace_usage)rE   ÚoldÚnewÚposÚbbrÃ  s         r$   rf  ÚBlock.replaceœ  sŒ   € à�8‰8�s—x‘xÓÜÐBÓCÐCØ×Ñ×%Ñ% cÓ*ˆØ×Ñ× Ñ  Ô%Ø×Ñ× Ñ  Ô*à—+‘+×*Ô*ˆBØŸœ�Ø×#Ñ# CÖ-ó )ò +r7   c                 ó¸   • U R                   n[        R                  U5      (       d3  UR                  SS5      R                  SS5      nSR	                  U5      nU$ )Nrb  rd  rc  re  z"{0}")rK  Ú_SIMPLE_IDENTIFIER_REÚmatchrf  r.   r_  s     r$   rÂ  ÚBlock._format_name¨  sN   € ð �y‰yˆÜ$×*Ñ*¨4×0Ñ0Ø—<‘<  fÓ-×5Ñ5°c¸6ÓBˆDØ—>‘> $Ó'ˆDØˆr7   )r¶  r\  r·  rs  )rì   rí   rî   rï   rð   r  r;  rº  r½  rÛ  rO  rf  rÂ  rñ   r„  r…  s   @r$   rJ  rJ  }  s^   ø† ñ÷ð ñ+ó ð+ð ñó ðð ñ"ó ð"òHò
.÷ð r7   rJ  c                   ó*   • \ rS rSrSrS rS rS rSrg)ÚBlockAddressi³  z
The address of a basic block.
c                 óÊ   • [        U[        5      (       d   e[        U[        5      (       d   e[        R                  " S5      R                  5       U l        Xl        X l        g )Né   )	r   r0  rJ  r   r�   rå   r,   r½  Úbasic_block)rE   r½  rÖ  s      r$   r  ÚBlockAddress.__init__¸  sL   € Ü˜(¤H×-Ñ-Ð-Ð-Ü˜+¤u×-Ñ-Ð-Ð-Ü—M’M !Ó$×/Ñ/Ó1ˆŒ	Ø ŒØ&Õr7   c                 óV   • SR                  U R                  U R                  5       5      $ r  r  r÷   s    r$   rn  ÚBlockAddress.__str__¿  r  r7   c                 ó†   • SR                  U R                  R                  5       U R                  R                  5       5      $ )Nzblockaddress({0}, {1}))r.   r½  r/   rÖ  r÷   s    r$   r/   ÚBlockAddress.get_referenceÂ  s7   € Ø'×.Ñ.Ø�M‰M×'Ñ'Ó)Ø×Ñ×*Ñ*Ó,ó.ð 	.r7   )rÖ  r½  r,   N)	rì   rí   rî   rï   rð   r  rn  r/   rñ   r?   r7   r$   rÓ  rÓ  ³  s   † ñò'òAõ.r7   rÓ  )3rð   r9   rw  Úrer   r   Úllvmlite.irr   r   Úllvmlite.ir._utilsr   r   r	   r-  ÚmapÚordÚascii_lettersÚdigitsr   ÚcompilerÏ  r�   r%   rA   rJ   r   rL   ró   rû   rþ   r¬   r0   rF  rr  r‡  r�  r˜  r­  r²  rÈ  rÓ  Úsetrå  rõ  r0  ru  r¢  r6  r7  rJ  rÓ  r?   r7   r$   Ú<module>rå     sÿ  ðñó
 Û Û 	Ý "ç -Ñ -÷.ñ .ñ ™#˜c 6×#7Ñ#7Ó8Ó9Ù™#˜c 6§=¡=Ó1Ó2ñ3á™#˜cÐ#EÓFÓGñH€ð Ÿ
š
Ð#CÓDÐ ð 
Ø	Ø
Ø
Ø
Ø
ñ€ð !ô ò(ò"ô JI�Fô JIôZ
OˆFô Oô.�ô .ñ ‹L€	ôGOˆ{Ð3°]ÀEô GOôT˜ô ô 5E�Ð5°uô 5Eôp!�Zô !ôB �{Ð$;¸Uô  ô.!�Fô !ô)#ˆjô )#÷X	ñ 	ô>Bˆjô >BôB�*˜m¨\ô ô;�[ô ;ô|<�3ô <ô81˜ô 1ôhY%ˆ{ô Y%ôxM˜ô Mô`"�Jô "ôEˆ}ô Eô
"�-ô 
"ô3ˆJô 3ôl.�5õ .r7   