ó
    „ñ:i�  ã                   óÜ  • S r SSKJr  SSKJrJrJrJrJrJ	r	J
r
JrJrJr  SSKJr   " S S\\5      r " S S\5      r\" / S	Q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 " 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      r, " S< S=\5      r- " S> S?\5      r. " S@ SA\5      r/ " SB SC\5      r0 " SD SE\15      r2 " SF SG\5      r3 " SH SI\5      r4 " SJ SK\15      r5 " SL SM\55      r6 " SN SO\55      r7 " SP SQ\5      r8 " SR SS\5      r9 " ST SU\5      r:gV)Wz)
Implementation of LLVM IR instructions.
é    )Útypes)
ÚBlockÚFunctionÚValueÚ
NamedValueÚConstantÚMetaDataArgumentÚMetaDataStringÚAttributeSetÚ	UndefinedÚArgumentAttributes)Ú_HasMetadatac                   ó^   ^ • \ rS rSrS	U 4S jjr\S 5       r\S 5       rS rS r	S r
SrU =r$ )
ÚInstructioné   c                 óØ   >• [         [        U ]  XUS9  [        U[        5      (       d   e[        U[
        [        45      (       d   eX0l        X@l        [        U5      U l	        0 U l
        g ©N©Úname)Úsuperr   Ú__init__Ú
isinstancer   ÚtupleÚlistÚopnameÚoperandsÚflagsÚmetadata)ÚselfÚparentÚtypr   r   r   r   Ú	__class__s          €Ú[/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/llvmlite/ir/instructions.pyr   ÚInstruction.__init__   s]   ø€ ÜŒk˜4Ñ)¨&¸DÐ)ÑAÜ˜&¤%×(Ñ(Ð(Ð(Ü˜%¤%¬ ×/Ñ/Ð/Ð/ØŒØ ŒÜ˜%“[ˆŒ
Øˆ�ó    c                 ó.   • U R                   R                  $ ©N)r    Úfunction©r   s    r#   r(   ÚInstruction.function   s   € à�{‰{×#Ñ#Ð#r%   c                 óB   • U R                   R                  R                  $ r'   )r    r(   Úmoduler)   s    r#   r,   ÚInstruction.module   s   € à�{‰{×#Ñ#×*Ñ*Ð*r%   c                 óp  • U R                   nU R                  (       a  SR                  U/U R                  -   5      nSR                  U R                   Vs/ s H  o3R	                  5       PM     sn5      nU R
                  nU R                  SS9nUR                  SR                  X%XF5      5        g s  snf )NÚ ú, T©Úleading_commaú{0} {1} {2}{3}
)	r   r   Újoinr   Úget_referenceÚtypeÚ_stringify_metadataÚappendÚformat)r   Úbufr   Úopr   r!   r   s          r#   ÚdescrÚInstruction.descr   s�   € Ø—‘ˆØ�:�:Ø—X‘X˜v˜h¨¯©Ñ3Ó4ˆFØ—9‘9¸4¿=º=ÓIº=°R×.Ñ.Ö0¹=ÑIÓJˆØ�i‰iˆØ×+Ñ+¸$Ð+Ð?ˆØ�
‰
Ð%ß‘F˜6¨Ó;õ	=ùò Js   ÁB3c                 ó¼   • XR                   ;   aM  / nU R                    H  nUR                  XAL a  UOU5        M     [        U5      U l         U R                  5         g g r'   )r   r8   r   Ú_clear_string_cache)r   ÚoldÚnewÚopsr;   s        r#   Úreplace_usageÚInstruction.replace_usage(   sM   € Ø—-‘-ÓØˆCØ—m”m�Ø—
‘
 "¢)™3°Ö4ñ $ä! #›JˆDŒMØ×$Ñ$Õ&ð  r%   c                 ó¨   • SU R                   R                  < SU R                  < SU R                  < SU R                  < SU R
                  < S3$ )Nz<ir.r/   z
 of type 'z
', opname z, operands Ú>)r"   Ú__name__r   r6   r   r   r)   s    r#   Ú__repr__ÚInstruction.__repr__0   s2   � à�N‰N×#Ô# T§Y¤Y°·	´	Ø�KŒK˜Ÿœð(ð 	(r%   )r   r   r   r   ©Ú © )rG   Ú
__module__Ú__qualname__Ú__firstlineno__r   Úpropertyr(   r,   r<   rC   rH   Ú__static_attributes__Ú__classcell__©r"   s   @r#   r   r      sD   ø† ÷ð ñ$ó ð$ð ñ+ó ð+ò=ò'÷(ð (r%   r   c                   ó(   • \ rS rSr\" / SQ5      rSrg)ÚCallInstrAttributesé6   )Ú
convergentÚnoreturnÚnounwindÚreadonlyÚreadnoneÚnoinlineÚalwaysinlinerL   N©rG   rM   rN   rO   Ú	frozensetÚ_knownrQ   rL   r%   r#   rU   rU   6   s   † Ùò @ó AƒFr%   rU   )ÚtailÚmusttailÚnotailc                   ó(   • \ rS rSr\" / SQ5      rSrg)ÚFastMathFlagsé>   )ÚfastÚnnanÚninfÚnszÚarcpÚcontractÚafnÚreassocrL   Nr^   rL   r%   r#   re   re   >   s   † Ùò *ó +ƒFr%   re   c                   ó–   ^ • \ rS rSr  SU 4S jjr\S 5       r\R                  S 5       r\S 5       rS r	\S 5       r
S rS	 rS
rU =r$ )Ú	CallInstréC   c
           	      óê  >• Uc!  [        U[        5      (       a  UR                  OUU l        [        U[        5      (       a  U[
        ;   a  OU(       a  SnOSnX`l        [        U5      U l        [        U5      U l
        0 U l        U	(       ac  U	R                  5        HO  u  p¨SU
s=::  a  [        U5      :  d  O  [        SR                  U
5      5      e[!        U5      U R                  U
'   MQ     [#        U5      n[%        [        UR&                  R(                  5      5       H˜  nX;   nUR&                  R(                  U   n[        U[*        R,                  5      (       a  UR.                  U:w  a  [1        U5      nUR.                  U:w  a*  SR                  SU-   XÜR.                  5      n[3        U5      eXÃU'   Mš     [4        [6        U ]s  XR&                  R:                  SU/[#        U5      -   US9  g )	Nra   rK   r   zInvalid argument index {}z%Type of #{0} arg mismatch: {1} != {2}é   Úcallr   )r   r   Úcalling_conventionÚcconvÚstrÚTailMarkerOptionsra   re   ÚfastmathrU   Ú
attributesÚarg_attributesÚitemsÚlenÚ
ValueErrorr9   r   r   ÚrangeÚfunction_typeÚargsr   ÚMetaDataTyper6   r	   Ú	TypeErrorr   rp   r   Úreturn_type)r   r    Úfuncr�   r   rv   ra   ry   ÚattrsÚ	arg_attrsÚidxÚiÚargÚexpected_typeÚmsgr"   s                  €r#   r   ÚCallInstr.__init__D   s­  ø€ ð ™¬:°d¼H×+EÑ+Eð ×-Ò-à ð 	Œ
ô �dœC× Ñ  TÔ->Ó%>ØÞØ‰DàˆDàŒ	Ü% hÓ/ˆŒÜ-¨eÓ4ˆŒØ ˆÔÞØ'Ÿo™oÖ/‘
�Ø˜SÕ,¤3 t£9Õ,Ü$Ð%@ß&,¡f¨S£kó3ð 3ä+=¸eÓ+D�×#Ñ# CÓ(ñ	 0ô �D‹zˆÜ”s˜4×-Ñ-×2Ñ2Ó3Ö4ˆAØ‘'ˆCØ ×.Ñ.×3Ñ3°AÑ6ˆMÜ˜=¬%×*<Ñ*<×=Ñ=Ø—H‘H Ó-Ü& sÓ+�Ø�x‰x˜=Ó(Ø>ß™˜q 1™u m·X±XÓ>ð ä “nÐ$Ø�‹Gñ 5ô 	Œi˜Ñ'¨×0BÑ0B×0NÑ0NØ(.°°¼¸d»Ñ0CÈ$ð 	(ò 	Pr%   c                 ó    • U R                   S   $ ©Nr   ©r   r)   s    r#   ÚcalleeÚCallInstr.calleeo   ó   € à�}‰}˜QÑÐr%   c                 ó    • XR                   S'   g r�   r�   )r   Ú	newcallees     r#   r‘   r’   s   s   € à$�‰�aÒr%   c                 ó    • U R                   SS  $ ©Nrs   r�   r)   s    r#   r�   ÚCallInstr.argsw   s   € à�}‰}˜Q˜RÐ Ð r%   c                 ón   • UR                   U R                  R                   :w  a  [        S5      eXl        g )Nz"New function has incompatible type)r€   r‘   rƒ   )r   Únewfuncs     r#   Úreplace_calleeÚCallInstr.replace_callee{   s+   € Ø× Ñ  D§K¡K×$=Ñ$=Ó=ÜÐ@ÓAÐAØ�r%   c                 ó   • U R                   $ )zThe callee function)r‘   r)   s    r#   Úcalled_functionÚCallInstr.called_function€   s   € ð �{‰{Ðr%   c                 óÂ  ^ • U 4S jnSR                  [        T R                  5       VVs/ s H  u  pEU" XE5      PM     snn5      nT R                  R                  nUR
                  (       a  UnOUR                  nSR                  UT R                  R                  5       5      n	T R                  (       a  SR                  T R                  U	5      n	Sn
T R                  (       a  SR                  T R                  5      n
T R                  (       a7  SSR                  T R                  R                  UR                  5      5      -   OSnT R                  (       a7  SSR                  T R                  R                  UR                  5      5      -   OSnUR                  SR                  U
T R                  U	UUUU(       a  T R!                  SS	9OSS
95        g s  snnf )Nc                 óò   >• U TR                   ;   a;  SR                  TR                   U    R                  UR                  5      5      S-   nOSnSR	                  UR                  X!R                  5       5      $ )Nr/   rK   ú
{0} {1}{2})r{   r4   Ú_to_listr6   r9   r5   )r‰   Úar†   r   s      €r#   Ú	descr_argÚ#CallInstr._descr.<locals>.descr_arg†   sa   ø€ Ø�D×'Ñ'Ó'ØŸ™ ×!4Ñ!4°QÑ!7×!@Ñ!@ÀÇÁÓ!HÓIÈCÑO‘à�Ø×&Ñ& q§v¡v¨u·o±oÓ6GÓHÐHr%   r0   ú{0} {1}rK   z{0} r/   z2{tail}{op}{fastmath} {callee}({args}){attr}{meta}
Tr1   )ra   r;   r‘   ry   r�   ÚattrÚmeta)r4   Ú	enumerater�   r‘   r€   Úvar_argr„   r9   r5   rv   ra   rz   r£   ry   r8   r   r7   )r   r:   Úadd_metadatar¥   r‰   r¤   r�   ÚfntyÚtyÚ
callee_refÚtail_markerÚfn_attrsÚfm_attrss   `            r#   Ú_descrÚCallInstr._descr…   s„  ø€ õ	Ið �y‰y´iÀÇ	Á	Ô6JÔKÒ6J©d¨a™) Až/Ñ6JÒKÓLˆà�{‰{×(Ñ(ˆà�<�<Ø‰Bð ×!Ñ!ˆBØ×%Ñ% b¨$¯+©+×*CÑ*CÓ*EÓFˆ
Ø�:�:Ø"×)Ñ)¨$¯*©*°jÓAˆJàˆØ�9�9Ø Ÿ-™-¨¯	©	Ó2ˆKð ��ð ˜Ÿ™ $§/¡/×":Ñ":¸4×;KÑ;KÓ"LÓMÒMØ$&ð 	ð �}�}ð ˜Ÿ™ $§-¡-×"8Ñ"8¸×9IÑ9IÓ"JÓKÒKØ"$ð 	ð 	�
‰
ÐH×OÑOØØ�{‰{ØØØØæ!ð ×*Ñ*¸Ð*Ñ>Ø')ð Pð 	
õ 		ùó1 Ls   «G
c                 ó$   • U R                  USS9  g )NT©r¬   )r³   ©r   r:   s     r#   r<   ÚCallInstr.descr¯   s   € Ø�‰�C dˆÒ+r%   )r{   rz   r‘   rv   ry   ra   )rK   NNrL   rL   N)rG   rM   rN   rO   r   rP   r‘   Úsetterr�   r›   rž   r³   r<   rQ   rR   rS   s   @r#   rp   rp   C   sy   ø† ØEIØ26÷)PðV ñ ó ð ð ‡]�]ñ%ó ð%ð ñ!ó ð!òð
 ñó ðò(÷T,ð ,r%   rp   c                   ó<   ^ • \ rS rSr  SU 4S jjrU 4S jrSrU =r$ )ÚInvokeInstré³   c                 ó´   >• [        U[        5      (       d   e[        U[        5      (       d   e[        [        U ]  XX6USUXšS9	  SU l        X@l        XPl        g )NF)ra   ry   r†   r‡   Úinvoke)r   r   r   r»   r   r   Ú	normal_toÚ	unwind_to)r   r    r…   r�   r¿   rÀ   r   rv   ry   r†   r‡   r"   s              €r#   r   ÚInvokeInstr.__init__´   s_   ø€ ä˜)¤U×+Ñ+Ð+Ð+Ü˜)¤U×+Ñ+Ð+Ð+ÜŒk˜4Ñ)¨&¸ÀEØ/4¸xØ05ð 	*ñ 	Lð ˆŒØ"ŒØ"�r%   c           
      óä   >• [         [        U ]  USS9  UR                  SR	                  U R
                  R                  5       U R                  R                  5       U R                  SS9S95        g )NFr¶   z.      to label {0} unwind label {1}{metadata}
Tr1   )r   )	r   r»   r³   r8   r9   r¿   r5   rÀ   r7   )r   r:   r"   s     €r#   r<   ÚInvokeInstr.descr¿   sh   ø€ ÜŒk˜4Ñ'¨¸%Ð'Ñ@Ø�
‰
ÐD×KÑKØ�N‰N×(Ñ(Ó*Ø�N‰N×(Ñ(Ó*Ø×-Ñ-¸DÐ-ÐAð Lð 
õ 	r%   )r¿   r   rÀ   )rK   NrL   rL   N©rG   rM   rN   rO   r   r<   rQ   rR   rS   s   @r#   r»   r»   ³   s   ø† ØFHØ>B÷	#÷ó r%   r»   c                   ó.   ^ • \ rS rSrU 4S jrS rSrU =r$ )Ú
TerminatoréÈ   c                 óX   >• [         [        U ]  U[        R                  " 5       UU5        g r'   )r   rÆ   r   r   ÚVoidType)r   r    r   r   r"   s       €r#   r   ÚTerminator.__init__É   s"   ø€ ÜŒj˜$Ñ(¨´·²Ó1AÀ6Ø)1õ	3r%   c           
      ó.  • U R                   nSR                  U R                   Vs/ s H-  nSR                  UR                  UR                  5       5      PM/     sn5      nU R                  SS9nUR                  SR                  X$U5      5        g s  snf )Nr0   r§   Tr1   r¢   )r   r4   r   r9   r6   r5   r7   r8   )r   r:   r   r;   r   r   s         r#   r<   ÚTerminator.descrÍ   sƒ   € Ø—‘ˆØ—9‘9Ø(,¯ªó7Ú(5 "ð (×.Ñ.¨r¯w©w¸×8HÑ8HÓ8JÖKÙ(5ñ7ó 8ˆà×+Ñ+¸$Ð+Ð?ˆØ�
‰
�<×&Ñ& v¸ÓBÕCùò7s   ¦4BrL   rÄ   rS   s   @r#   rÆ   rÆ   È   s   ø† õ3÷Dð Dr%   rÆ   c                   ó   • \ rS rSrS rSrg)ÚPredictableInstréÕ   c                 ó  • [        U R                  S5      /nU HC  nUS:  a  [        S5      eUR                  [	        [
        R                  " S5      U5      5        ME     U R                  R                  U5      nU R                  SU5        g )NÚbranch_weightsr   z(branch weight must be a positive integeré    Úprof)	r
   r,   r~   r8   r   r   ÚIntTyper¬   Úset_metadata)r   Úweightsr   ÚwÚmds        r#   Úset_weightsÚPredictableInstr.set_weights×   su   € Ü" 4§;¡;Ð0@ÓAÐBˆÛˆAØ�1‹uÜ Ð!KÓLÐLØ�O‰OœH¤U§]¢]°2Ó%6¸Ó:Ö;ñ ð �[‰[×%Ñ% hÓ/ˆØ×Ñ˜& "Õ%r%   rL   N)rG   rM   rN   rO   rÙ   rQ   rL   r%   r#   rÎ   rÎ   Õ   s   † õ&r%   rÎ   c                   óB   ^ • \ rS rSrSU 4S jjr\S 5       rS rSrU =r	$ )ÚRetéá   c                 ó>   >• Ub  U/O/ n[         [        U ]  XU5        g r'   )r   rÜ   r   )r   r    r   Úreturn_valuer   r"   s        €r#   r   ÚRet.__init__â   s"   ø€ Ø%1Ñ%=�L‘>À2ˆÜŒc�4Ñ! &°(Õ;r%   c                 óD   • U R                   (       a  U R                   S   $ g r�   r�   r)   s    r#   rß   ÚRet.return_valueæ   s   € à�=�=Ø—=‘= Ñ#Ð#àr%   c                 ó"  • U R                   nU R                  SS9nUbF  UR                  SR                  U R                  UR
                  UR                  5       U5      5        g UR                  SR                  U R                  U5      5        g )NTr1   r3   z{0}{1}
)rß   r7   r8   r9   r   r6   r5   )r   r:   rß   r   s       r#   r<   Ú	Ret.descrí   s{   € Ø×(Ñ(ˆØ×+Ñ+¸$Ð+Ð?ˆØÑ#Ø�J‰JÐ)ß™˜tŸ{™{¨L×,=Ñ,=Ø+×9Ñ9Ó;Ø'ó)õ*ð
 �J‰J�z×(Ñ(¨¯©°hÓ?Õ@r%   rL   r'   )
rG   rM   rN   rO   r   rP   rß   r<   rQ   rR   rS   s   @r#   rÜ   rÜ   á   s(   ø† ÷<ð ñó ð÷	Að 	Ar%   rÜ   c                   ó   • \ rS rSrSrg)ÚBranchéù   rL   N©rG   rM   rN   rO   rQ   rL   r%   r#   ræ   ræ   ù   ó   † Úr%   ræ   c                   ó   • \ rS rSrSrg)ÚConditionalBranchéý   rL   Nrè   rL   r%   r#   rë   rë   ý   ré   r%   rë   c                   óD   ^ • \ rS rSrU 4S jr\S 5       rS rS rSr	U =r
$ )ÚIndirectBranchi  c                 ó>   >• [         [        U ]  XU/5        / U l        g r'   )r   rî   r   Údestinations)r   r    r   Úaddrr"   s       €r#   r   ÚIndirectBranch.__init__  s   ø€ ÜŒn˜dÑ,¨V¸d¸VÔDØˆÕr%   c                 ó    • U R                   S   $ r�   r�   r)   s    r#   ÚaddressÚIndirectBranch.address  r“   r%   c                 óh   • [        U[        5      (       d   eU R                  R                  U5        g r'   )r   r   rð   r8   )r   Úblocks     r#   Úadd_destinationÚIndirectBranch.add_destination
  s)   € Ü˜%¤×'Ñ'Ð'Ð'Ø×Ñ× Ñ  Õ'r%   c                 óV  • U R                    Vs/ s H"  nSR                  UR                  5       5      PM$     nnUR                  SR                  U R                  R
                  U R                  R                  5       SR                  U5      U R                  SS95      5        g s  snf )Nz	label {0}zindirectbr {0} {1}, [{2}]  {3}
r0   Tr1   )rð   r9   r5   r8   rô   r6   r4   r7   )r   r:   Úblkrð   s       r#   r<   ÚIndirectBranch.descr  s•   € à#'×#4Ò#4ó6Ú#4˜Cð $×*Ñ*¨3×+<Ñ+<Ó+>Ö?Ù#4ð 	ð 6à�
‰
Ð5×<Ñ<Ø�L‰L×ÑØ�L‰L×&Ñ&Ó(Ø�I‰I�lÓ#Ø×$Ñ$°4Ð$Ð8ó	
õ 	ùò6s   �)B&)rð   )rG   rM   rN   rO   r   rP   rô   rø   r<   rQ   rR   rS   s   @r#   rî   rî     s+   ø† õð ñ ó ð ò(÷ð r%   rî   c                   óD   ^ • \ rS rSrU 4S jr\S 5       rS rS rSr	U =r
$ )ÚSwitchInstri  c                 óJ   >• [         [        U ]  XU/5        X@l        / U l        g r'   )r   rþ   r   ÚdefaultÚcases)r   r    r   Úvalr   r"   s        €r#   r   ÚSwitchInstr.__init__  s"   ø€ ÜŒk˜4Ñ)¨&¸3¸%Ô@ØŒØˆ�
r%   c                 ó    • U R                   S   $ r�   r�   r)   s    r#   ÚvalueÚSwitchInstr.value   r“   r%   c                 óÔ   • [        U[        5      (       d   e[        U[        5      (       d   [        U R                  R
                  U5      nU R                  R                  X45        g r'   )r   r   r   r   r  r6   r  r8   )r   r  r÷   s      r#   Úadd_caseÚSwitchInstr.add_case$  sJ   € Ü˜%¤×'Ñ'Ð'Ð'Ü˜#œu×%Ñ%Ü˜4Ÿ:™:Ÿ?™?¨CÓ0ˆCØ�
‰
×Ñ˜3˜,Õ'r%   c                 óÆ  • U R                    VVs/ s H>  u  p#SR                  UR                  UR                  5       UR                  5       5      PM@     nnnUR	                  SR                  U R
                  R                  U R
                  R                  5       U R                  R                  5       SR                  U5      U R                  SS95      5        g s  snnf )Nz{0} {1}, label {2}z%switch {0} {1}, label {2} [{3}]  {4}
r/   Tr1   )	r  r9   r6   r5   r8   r  r   r4   r7   )r   r:   r  rû   r  s        r#   r<   ÚSwitchInstr.descr*  s»   € ð "&§¢ô-â!+‘X�Sð &×,Ñ,¨S¯X©X°s×7HÑ7HÓ7JØ-0×->Ñ->Ó-@öBá!+ð 	ñ -ð 	�
‰
Ð;×BÑBØ�J‰J�O‰OØ�J‰J×$Ñ$Ó&Ø�L‰L×&Ñ&Ó(Ø�H‰H�U‹OØ×$Ñ$°4Ð$Ð8ó
õ 	ùó-s   �AC)r  r   )rG   rM   rN   rO   r   rP   r  r  r<   rQ   rR   rS   s   @r#   rþ   rþ     s+   ø† õð
 ñ ó ð ò(÷
ð 
r%   rþ   c                   ó   • \ rS rSrSrg)ÚResumei7  rL   Nrè   rL   r%   r#   r  r  7  ré   r%   r  c                   ób   ^ • \ 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
U =r$ )	ÚSelectInstri;  rL   c           	      ó€   >• UR                   UR                   :X  d   e[        [        U ]  XR                   SX#U/UUS9  g )NÚselect©r   r   )r6   r   r  r   )r   r    ÚcondÚlhsÚrhsr   r   r"   s          €r#   r   ÚSelectInstr.__init__<  sB   ø€ Ø�x‰x˜3Ÿ8™8Ó#Ð#Ð#ÜŒk˜4Ñ)¨&·(±(¸HØ+/°cÐ*:ÀØ05ð 	*ò 	7r%   c                 ó    • U R                   S   $ r�   r�   r)   s    r#   r  ÚSelectInstr.condB  r“   r%   c                 ó    • U R                   S   $ r—   r�   r)   s    r#   r  ÚSelectInstr.lhsF  r“   r%   c                 ó    • U R                   S   $ )Né   r�   r)   s    r#   r  ÚSelectInstr.rhsJ  r“   r%   c                 ó¦  • UR                  SR                  SR                  U R                  5      U R                  R
                  U R                  R                  5       U R                  R
                  U R                  R                  5       U R                  R
                  U R                  R                  5       U R                  SS95      5        g )Nz)select {0} {1} {2}, {3} {4}, {5} {6} {7}
r/   Tr1   )
r8   r9   r4   r   r  r6   r5   r  r  r7   r·   s     r#   r<   ÚSelectInstr.descrN  s‹   € Ø�
‰
Ð?×FÑFØ�H‰H�T—Z‘ZÓ Ø�I‰I�N‰N˜DŸI™I×3Ñ3Ó5Ø�H‰H�M‰M˜4Ÿ8™8×1Ñ1Ó3Ø�H‰H�M‰M˜4Ÿ8™8×1Ñ1Ó3Ø×$Ñ$°4Ð$Ð8ó
õ 	r%   rJ   )rG   rM   rN   rO   r   rP   r  r  r  r<   rQ   rR   rS   s   @r#   r  r  ;  sN   ø† ÷7ð ñ ó ð ð ñ ó ð ð ñ ó ð ÷ð r%   r  c                   ó>   ^ • \ rS rSrSr0 rS/ 4U 4S jjrS rSrU =r	$ )ÚCompareInstriX  zinvalid-comparerK   c           	      ó  >• X R                   ;  a  [        SU< SU R                  < 35      eU H/  nXpR                  ;  d  M  [        SU< SU R                  < 35      e   U R                  n[	        UR
                  [        R                  5      (       a@  [        R                  " [        R                  " S5      UR
                  R                  5      n	O[        R                  " S5      n	[        [        U ]3  XXƒU/UUS9  X l        g )Nzinvalid comparison z for zinvalid flag rs   )r   r   )ÚVALID_OPr~   ÚOPNAMEÚ
VALID_FLAGr   r6   r   Ú
VectorTyperÔ   Úcountr   r!  r   r;   )r   r    r;   r  r  r   r   Úflagr   r!   r"   s             €r#   r   ÚCompareInstr.__init__]  sÅ   ø€ Ø—]‘]Ó"Ý»rÀ4Ç;Ã;ÐOÓPÐPÛˆDØŸ?™?Õ*Ý »TÀ4Ç;Ã;Ð!OÓPÐPñ ð —‘ˆÜ�c—h‘h¤× 0Ñ 0×1Ñ1Ü×"Ò"¤5§=¢=°Ó#3°S·X±X·^±^ÓD‰Cä—-’- Ó"ˆCÜŒl˜DÑ*¨6Ø+1¸°:ÀUØ04ð 	+ñ 	6ð �r%   c                 óh  • UR                  SR                  U R                  SR                  S U R                   5       5      U R
                  U R                  S   R                  U R                  S   R                  5       U R                  S   R                  5       U R                  SS9S95        g )	Nz.{opname}{flags} {op} {ty} {lhs}, {rhs} {meta}
rK   c              3   ó,   #   • U  H
  nS U-   v •  M     g7f)r/   NrL   )Ú.0Úits     r#   Ú	<genexpr>Ú%CompareInstr.descr.<locals>.<genexpr>p  s   é € Ð8ªZ r˜# ž(ªZùs   ‚r   rs   Tr1   )r   r   r;   r®   r  r  r©   )
r8   r9   r   r4   r   r;   r   r6   r5   r7   r·   s     r#   r<   ÚCompareInstr.descrm  s“   € Ø�
‰
ÐD×KÑKØ—;‘;Ø—'‘'Ñ8¨T¯ZªZÓ8Ó8Ø�w‰wØ�}‰}˜QÑ×$Ñ$Ø—‘˜aÑ ×.Ñ.Ó0Ø—‘˜aÑ ×.Ñ.Ó0Ø×)Ñ)¸Ð)Ð=ð Lð 
õ 	r%   )r;   )
rG   rM   rN   rO   r$  r#  r   r<   rQ   rR   rS   s   @r#   r!  r!  X  s!   ø† à€FØ€Hà24¸B÷ ÷ 	ð 	r%   r!  c                   ó@   • \ rS rSrSrSSSSSSS	S
SSS.
r\" 5       rSrg)Ú	ICMPInstriy  ÚicmpÚequalz	not equalzunsigned greater thanzunsigned greater or equalzunsigned less thanzunsigned less or equalzsigned greater thanzsigned greater or equalzsigned less thanzsigned less or equal)
ÚeqÚneÚugtÚugeÚultÚuleÚsgtÚsgeÚsltÚslerL   N)	rG   rM   rN   rO   r$  r#  Úsetr%  rQ   rL   r%   r#   r2  r2  y  s5   † Ø€FàØØ&Ø*Ø#Ø'Ø$Ø(Ø!Ø%ñ€Hñ “ƒJr%   r2  c                   ó„   • \ rS 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"_r1 S#krS$rg%)&Ú	FCMPInstriŠ  ÚfcmpÚfalsez#no comparison, always returns falseÚoeqzordered and equalÚogtzordered and greater thanÚogez!ordered and greater than or equalÚoltzordered and less thanÚolezordered and less than or equalÚonezordered and not equalÚordzordered (no nans)Úueqzunordered or equalr7  zunordered or greater thanr8  z"unordered or greater than or equalr9  zunordered or less thanr:  zunordered or less than or equalÚunezunordered or not equalÚunozunordered (either nans)Útruez"no comparison, always returns true>   rm   rj   rk   rg   ri   rh   rn   rl   rL   N)rG   rM   rN   rO   r$  r#  r%  rQ   rL   r%   r#   rA  rA  Š  sá   † Ø€FðØÐ6ðàÐ"ðð 	Ð)ðð 	Ð2ð	ð
 	Ð&ðð 	Ð/ðð 	Ð&ðð 	Ð"ðð 	Ð#ðð 	Ð*ðð 	Ð3ðð 	Ð'ðð 	Ð0ðð 	Ð'ðð 	Ð(ðð  	Ð4ð!€Hò$ƒJr%   rA  c                   ó2   ^ • \ rS rSrSU 4S jjrS rSrU =r$ )Ú	CastInstri¢  c                 ó.   >• [         [        U ]  XX#/US9  g r   )r   rP  r   )r   r    r;   r  r!   r   r"   s         €r#   r   ÚCastInstr.__init__£  s   ø€ ÜŒi˜Ñ'¨°R¸ÀTÐ'ÒJr%   c                 óò   • UR                  SR                  U R                  U R                  S   R                  U R                  S   R                  5       U R                  U R                  SS95      5        g )Nz{0} {1} {2} to {3} {4}
r   Tr1   )r8   r9   r   r   r6   r5   r7   r·   s     r#   r<   ÚCastInstr.descr¦  sb   € Ø�
‰
Ð-×4Ñ4Ø�K‰KØ�M‰M˜!Ñ×!Ñ!Ø�M‰M˜!Ñ×*Ñ*Ó,Ø�I‰IØ×$Ñ$°4Ð$Ð8ó
õ 	r%   rL   ©rK   rÄ   rS   s   @r#   rP  rP  ¢  s   ø† ÷K÷ð r%   rP  c                   ó2   ^ • \ rS rSrSU 4S jjrS rSrU =r$ )Ú	LoadInstri°  c                 ó  >• Uc_  [        U[        5      (       a  UR                  nO=UR                  R                  (       d  UR                  R
                  nO[        S5      e[        [        U ]'  XSU/US9  S U l
        g )NzLoad lacks type.Úloadr   )r   ÚAllocaInstrÚallocated_typer6   Ú	is_opaqueÚpointeer~   r   rW  r   Úalign)r   r    Úptrr   r!   r"   s        €r#   r   ÚLoadInstr.__init__²  sk   ø€ Ø‰;Ü˜#œ{×+Ñ+Ø×(Ñ(‘ð —X‘X×'×'Ø—h‘h×&Ñ&‘ä Ð!3Ó4Ð4ÜŒi˜Ñ'¨°V¸c¸UÈÐ'ÑNØˆ�
r%   c                 ó  • U R                   u  nU R                  b  SU R                  -  nOSnUR                  SR                  U R                  UR                  UR                  5       UU R                  SS95      5        g )Nú
, align %drK   zload {0}, {1} {2}{3}{4}
Tr1   ©r   r^  r8   r9   r6   r5   r7   )r   r:   r  r^  s       r#   r<   ÚLoadInstr.descr¿  sr   € Ø—‘‰ˆØ�:‰:Ñ!Ø  D§J¡JÑ/‰EàˆEØ�
‰
Ð.×5Ñ5Ø�I‰IØ�H‰HØ×ÑÓØØ×$Ñ$°4Ð$Ð8ó
õ 	r%   )r^  ©rK   NrÄ   rS   s   @r#   rW  rW  °  s   ø† ÷÷ð r%   rW  c                   ó.   ^ • \ rS rSrU 4S jrS rSrU =r$ )Ú
StoreInstriÎ  c                 óZ   >• [         [        U ]  U[        R                  " 5       SX#/5        g )NÚstore)r   rg  r   r   rÉ   )r   r    r  r_  r"   s       €r#   r   ÚStoreInstr.__init__Ï  s$   ø€ ÜŒj˜$Ñ(¨´·²Ó1AÀ7Ø*-¨õ	5r%   c                 ó"  • U R                   u  p#U R                  b  SU R                  -  nOSnUR                  SR                  UR                  UR                  5       UR                  UR                  5       UU R                  SS95      5        g )Nrb  rK   zstore {0} {1}, {2} {3}{4}{5}
Tr1   rc  )r   r:   r  r_  r^  s        r#   r<   ÚStoreInstr.descrÓ  s~   € Ø—=‘=‰ˆØ�:‰:Ñ!Ø  D§J¡JÑ/‰EàˆEØ�
‰
Ð3×:Ñ:Ø�H‰HØ×ÑÓØ�H‰HØ×ÑÓØØ×$Ñ$°4Ð$Ð8ó
õ 	r%   rL   rÄ   rS   s   @r#   rg  rg  Î  s   ø† õ5÷ð r%   rg  c                   ó2   ^ • \ rS rSrSU 4S jjrS rSrU =r$ )ÚLoadAtomicInstriã  c                 ó  >• Uc_  [        U[        5      (       a  UR                  nO=UR                  R                  (       d  UR                  R
                  nO[        S5      e[        [        U ]'  XSU/US9  X0l
        X@l        g )NzLoad atomic lacks type.zload atomicr   )r   rZ  r[  r6   r\  r]  r~   r   rn  r   Úorderingr^  )r   r    r_  rp  r^  r   r!   r"   s          €r#   r   ÚLoadAtomicInstr.__init__ä  st   ø€ Ø‰;Ü˜#œ{×+Ñ+Ø×(Ñ(‘ð —X‘X×'×'Ø—h‘h×&Ñ&‘ä Ð!:Ó;Ð;ÜŒo˜tÑ-¨f¸=Ø/2¨e¸$ð 	.ñ 	@à ŒØ�
r%   c                 óð   • U R                   u  nUR                  SR                  U R                  UR                  UR	                  5       U R
                  U R                  U R                  SS95      5        g )Nz+load atomic {0}, {1} {2} {3}, align {4}{5}
Tr1   ©r   r8   r9   r6   r5   rp  r^  r7   )r   r:   r  s      r#   r<   ÚLoadAtomicInstr.descró  s`   € Ø—‘‰ˆØ�
‰
ÐA×HÑHØ�I‰IØ�H‰HØ×ÑÓØ�M‰MØ�J‰JØ×$Ñ$°4Ð$Ð8ó
õ 	r%   ©r^  rp  re  rÄ   rS   s   @r#   rn  rn  ã  s   ø† ÷÷	ð 	r%   rn  c                   ó.   ^ • \ rS rSrU 4S jrS rSrU =r$ )ÚStoreAtomicInstriÿ  c                 ór   >• [         [        U ]  U[        R                  " 5       SX#/5        X@l        XPl        g )Nzstore atomic)r   rw  r   r   rÉ   rp  r^  )r   r    r  r_  rp  r^  r"   s         €r#   r   ÚStoreAtomicInstr.__init__   s0   ø€ ÜÔ Ñ.¨v´u·~²~Ó7GØ/=À¸zô	Kà ŒØ�
r%   c                 ó  • U R                   u  p#UR                  SR                  UR                  UR	                  5       UR                  UR	                  5       U R
                  U R                  U R                  SS95      5        g )Nz0store atomic {0} {1}, {2} {3} {4}, align {5}{6}
Tr1   rs  )r   r:   r  r_  s       r#   r<   ÚStoreAtomicInstr.descr  sl   € Ø—=‘=‰ˆØ�
‰
ÐF×MÑMØ�H‰HØ×ÑÓØ�H‰HØ×ÑÓØ�M‰MØ�J‰JØ×$Ñ$°4Ð$Ð8ó
õ 	r%   ru  rÄ   rS   s   @r#   rw  rw  ÿ  s   ø† õ÷
ð 
r%   rw  c                   ó.   ^ • \ rS rSrU 4S jrS rSrU =r$ )rZ  i  c                 ó~   >• U(       a  U/OSn[         [        U ]  XR                  5       SXT5        X l        S U l        g )NrL   Úalloca)r   rZ  r   Ú
as_pointerr[  r^  )r   r    r!   r'  r   r   r"   s         €r#   r   ÚAllocaInstr.__init__  s8   ø€ Þ#�E‘7¨ˆÜŒk˜4Ñ)¨&·.±.Ó2BÀHØ*2ô	:à!ÔØˆ�
r%   c                 óì  • UR                  SR                  U R                  U R                  5      5        U R                  (       aG  U R                  u  nUR                  SR                  UR
                  UR                  5       5      5        U R                  b*  UR                  SR                  U R                  5      5        U R                  (       a  UR                  U R                  SS95        g g )Nr§   z	, {0} {1}z, align {0}Tr1   )
r8   r9   r   r[  r   r6   r5   r^  r   r7   )r   r:   r;   s      r#   r<   ÚAllocaInstr.descr  s¨   € Ø�
‰
�9×#Ñ# D§K¡K°×1DÑ1DÓEÔFØ�=�=Ø—-‘-‰CˆBØ�J‰J�{×)Ñ)¨"¯'©'°2×3CÑ3CÓ3EÓFÔGØ�:‰:Ñ!Ø�J‰J�}×+Ñ+¨D¯J©JÓ7Ô8Ø�=�=Ø�J‰J�t×/Ñ/¸dÐ/ÐCÕDð r%   )r^  r[  rÄ   rS   s   @r#   rZ  rZ    s   ø† õ÷Eð Er%   rZ  c                   ó4   ^ • \ rS rSr SU 4S jjrS rSrU =r$ )ÚGEPInstri&  c           	      ón  >• Ub  UR                   nX`l        OëUR                   R                  (       dÅ  UR                   nS nSn	U HA  n
XwR                  U
5      px[	        U[
        R                  5      (       d  M5  UR                  n	MC     [	        U[
        R                  5      (       d"  [	        U[
        R                  5      (       a  UnOUR                  U	5      nUR                   R                  U l        O[        S5      e[        [        U ]7  XSU/[        U5      -   US9  X l        X0l        X@l        g )Nr   zGEP lacks type.Úgetelementptrr   )r6   Úsource_etyper\  Úgepr   r   ÚPointerTypeÚ	addrspacer  r]  r~   r   r„  r   r   ÚpointerÚindicesÚinbounds)r   r    r_  rŒ  r�  r   r‡  r!   ÚlasttypÚlastaddrspacer‰   r"   s              €r#   r   ÚGEPInstr.__init__'  s   ø€ àÑ#Ø—(‘(ˆCØ ,Õð —‘×#×#Ø—(‘(ˆCØˆGØˆMÛ�Ø"§G¡G¨A£J˜ä˜g¤u×'8Ñ'8×9Ó9Ø$+×$5Ñ$5’Mñ	 ô ˜s¤E×$5Ñ$5×6Ñ6Ü˜w¬×(9Ñ(9×:Ñ:Ø‘à—n‘n ]Ó3�Ø #§¡× 0Ñ 0ˆDÕäÐ.Ó/Ð/ÜŒh˜Ñ& v°OØ(+ u¬t°G«}Ñ'<À4ð 	'ñ 	IàŒØŒØ �r%   c                 ó®  • U R                    Vs/ s H-  nSR                  UR                  UR                  5       5      PM/     nnU R                  (       a  SOSnUR                  SR                  UU R                  U R                  R                  U R                  R                  5       SR                  U5      U R                  SS95      5        g s  snf )Nr§   zgetelementptr inboundsr†  z{0} {1}, {2} {3}, {4} {5}
r0   Tr1   )
rŒ  r9   r6   r5   r�  r8   r‡  r‹  r4   r7   )r   r:   r‰   rŒ  r;   s        r#   r<   ÚGEPInstr.descrF  s±   € à ŸLšLó*Ú(�qð ×#Ñ# A§F¡F¨A¯O©OÓ,=Ö>Ù(ð 	ð *à)-¯¯Ñ%¸OˆØ�
‰
Ð0×7Ñ7ØØ×$Ñ$Ø—<‘<×$Ñ$Ø—<‘<×-Ñ-Ó/Ø—9‘9˜WÓ%Ø×+Ñ+¸$Ð+Ð?óõ 	ùò*s   �4C)r�  rŒ  r‹  r‡  r'   rÄ   rS   s   @r#   r„  r„  &  s   ø† à"÷!÷>ð r%   r„  c                   ó>   ^ • \ rS rSrSU 4S jjrS rS rS rSrU =r	$ )ÚPhiInstriT  c           	      ó>   >• [         [        U ]  XSSUUS9  / U l        g )NÚphirL   r  )r   r”  r   Ú	incomings)r   r    r!   r   r   r"   s        €r#   r   ÚPhiInstr.__init__U  s)   ø€ ÜŒh˜Ñ& v°E¸2ÀDØ-2ð 	'ñ 	4àˆ�r%   c                 óî   • SR                  S U R                   5       5      nUR                  SR                  SR                  U R                  5      U R
                  UU R                  SS95      5        g )Nr0   c              3   ó‚   #   • U  H5  u  pS R                  UR                  5       UR                  5       5      v •  M7     g7f)z
[{0}, {1}]N)r9   r5   )r,  ÚvÚbs      r#   r.  Ú!PhiInstr.descr.<locals>.<genexpr>[  s>   é € ð 5â%3™T˜Qð &×,Ñ,¨Q¯_©_Ó->Ø-.¯_©_Ó->÷@ð @â%3ùs   ‚=?zphi {0} {1} {2} {3}
r/   Tr1   )r4   r—  r8   r9   r   r6   r7   )r   r:   Úincss      r#   r<   ÚPhiInstr.descrZ  sh   € Ø�y‰yñ 5à%)§^¢^ó5ó 5ˆð 	�
‰
Ð*×1Ñ1Ø—8‘8˜DŸJ™JÓ'Ø—9‘9ØØ×+Ñ+¸$Ð+Ð?ó	õ 	r%   c                 ój   • [        U[        5      (       d   eU R                  R                  X45        g r'   )r   r   r—  r8   )r   r  r÷   s      r#   Úadd_incomingÚPhiInstr.add_incominge  s)   € Ü˜%¤×'Ñ'Ð'Ð'Ø�‰×Ñ˜u˜nÕ-r%   c                 ól   • U R                    VVs/ s H  u  p4X1L a  UOUU4PM     snnU l         g s  snnf r'   ©r—  )r   r@   rA   r  rû   s        r#   rC   ÚPhiInstr.replace_usagei  s7   € à,0¯NªNô<Ú,:™j˜sð $'¢:™C°3¸Ó=Ù,:ò<ˆ�ùó <s   �0r¤  )rL   )
rG   rM   rN   rO   r   r<   r¡  rC   rQ   rR   rS   s   @r#   r”  r”  T  s   ø† ÷ò
	ò.÷<ð <r%   r”  c                   ó2   ^ • \ rS rSrSU 4S jjrS rSrU =r$ )ÚExtractElementin  c                 ó,  >• [        UR                  [        R                  5      (       d  [	        S5      e[        UR                  [        R
                  5      (       d  [	        S5      eUR                  R                  n[        [        U ]'  XSX#/US9  g )Nú!vector needs to be of VectorType.úindex needs to be of IntType.Úextractelementr   )
r   r6   r   r&  rƒ   rÔ   Úelementr   r§  r   )r   r    ÚvectorÚindexr   r!   r"   s         €r#   r   ÚExtractElement.__init__o  sw   ø€ Ü˜&Ÿ+™+¤u×'7Ñ'7×8Ñ8ÜÐ?Ó@Ð@Ü˜%Ÿ*™*¤e§m¡m×4Ñ4ÜÐ;Ó<Ð<Ø�k‰k×!Ñ!ˆÜŒn˜dÑ,¨VÐ:JØ.4¨_À4ð 	-ò 	Ir%   c                 óš   • SR                  S U R                   5       5      nUR                  SR                  U R                  US95        g )Nr0   c              3   óv   #   • U  H/  nS R                  UR                  UR                  5       5      v •  M1     g7f©r§   N©r9   r6   r5   ©r,  r;   s     r#   r.  Ú'ExtractElement.descr.<locals>.<genexpr>y  ó:   é € ð IÚ:G°Bð '×-Ñ-Ø—7‘7˜B×,Ñ,Ó.÷0ð 0Ú:Gùó   ‚79ú{opname} {operands}
©r   r   ©r4   r   r8   r9   r   ©r   r:   r   s      r#   r<   ÚExtractElement.descrx  óL   € Ø—9‘9ñ IØ:>¿-º-óIó Iˆà�
‰
Ð*×1Ñ1ØŸ+™+°ð 2ð :õ 	;r%   rL   rU  rÄ   rS   s   @r#   r§  r§  n  s   ø† ÷I÷;ð ;r%   r§  c                   ó2   ^ • \ rS rSrSU 4S jjrS rSrU =r$ )ÚInsertElementi  c                 óÔ  >• [        UR                  [        R                  5      (       d  [	        S5      eUR                  UR                  R
                  :X  d9  [	        SR                  UR                  R
                  UR                  5      5      e[        UR                  [        R                  5      (       d  [	        S5      eUR                  n[        [        U ]+  XSX#U/US9  g )Nr©  z$value needs to be of type {} not {}.rª  Úinsertelementr   )r   r6   r   r&  rƒ   r¬  r9   rÔ   r   r¿  r   )r   r    r­  r  r®  r   r!   r"   s          €r#   r   ÚInsertElement.__init__€  s¹   ø€ Ü˜&Ÿ+™+¤u×'7Ñ'7×8Ñ8ÜÐ?Ó@Ð@Ø�z‰z˜VŸ[™[×0Ñ0Ó0ÜØ6×=Ñ=Ø—K‘K×'Ñ'¨¯©ó5ó6ð 6ô ˜%Ÿ*™*¤e§m¡m×4Ñ4ÜÐ;Ó<Ð<Ø�k‰kˆÜŒm˜TÑ+¨F¸Ø-3¸EÐ,BÈð 	,ò 	Or%   c                 óš   • SR                  S U R                   5       5      nUR                  SR                  U R                  US95        g )Nr0   c              3   óv   #   • U  H/  nS R                  UR                  UR                  5       5      v •  M1     g7fr²  r³  r´  s     r#   r.  Ú&InsertElement.descr.<locals>.<genexpr>Ž  r¶  r·  r¸  r¹  rº  r»  s      r#   r<   ÚInsertElement.descr�  r½  r%   rL   rU  rÄ   rS   s   @r#   r¿  r¿    s   ø† ÷O÷;ð ;r%   r¿  c                   ó2   ^ • \ rS rSrSU 4S jjrS rSrU =r$ )ÚShuffleVectori”  c                 ó¸  >^• [        UR                  [        R                  5      (       d  [	        S5      eU[
        :w  a%  UR                  UR                  :w  a  [	        S5      e[        U[        5      (       a€  [        UR                  [        R                  5      (       aW  [        UR                  R                  [        R                  5      (       a$  UR                  R                  R                  S:X  d  [	        S5      e[        R                  " UR                  R                  UR                  R                  5      n[        U[
        :X  a  UR                  R                  OSUR                  R                  -  5      m[        U4S jUR                   5       5      (       d  [        SR                  T5      5      e[         ["        U ]K  XSX#U/US	9  g )
Nz"vector1 needs to be of VectorType.z=vector2 needs to be Undefined or of the same type as vector1.rÒ   z'mask needs to be a constant i32 vector.r  c              3   ó@   >#   • U  H  oR                   T;   v •  M     g 7fr'   )Úconstant)r,  ÚiiÚindex_ranges     €r#   r.  Ú)ShuffleVector.__init__.<locals>.<genexpr>¥  s   øé € ÐFº°"—;‘; +Ö-ºùs   ƒzmask values need to be in {0}Úshufflevectorr   )r   r6   r   r&  rƒ   r   r   r¬  rÔ   Úwidthr'  r   ÚallrË  Ú
IndexErrorr9   r   rÈ  r   )	r   r    Úvector1Úvector2Úmaskr   r!   rÍ  r"   s	          @€r#   r   ÚShuffleVector.__init__•  sd  ù€ Ü˜'Ÿ,™,¬×(8Ñ(8×9Ñ9ÜÐ@ÓAÐAØ”iÓØ�|‰|˜wŸ|™|Ó+Üð !Ló Mð Mä˜4¤×*Ñ*Ü˜4Ÿ9™9¤e×&6Ñ&6×7Ñ7Ü˜DŸI™I×-Ñ-¬u¯}©}×=Ñ=Ø—‘×"Ñ"×(Ñ(¨BÓ.ÜÐEÓFÐFÜ×Ò˜wŸ|™|×3Ñ3°T·Y±Y·_±_ÓEˆÜØ&¬)Ó3ð $ŸL™L×.Ò.à!" W§\¡\×%7Ñ%7Ñ!7ó9ˆô ÔF¸¿ºÓF×FÑFÜØ/×6Ñ6°{ÓCóð ô 	Œm˜TÑ+¨F¸Ø-4¸tÐ,DÈ4ð 	,ò 	Qr%   c           	      ó    • UR                  SR                  SR                  S U R                   5       5      U R	                  SS95      5        g )Nzshufflevector {0} {1}
r0   c              3   óv   #   • U  H/  nS R                  UR                  UR                  5       5      v •  M1     g7fr²  r³  r´  s     r#   r.  Ú&ShuffleVector.descr.<locals>.<genexpr>®  s4   é € ð 6Ú'4 ð '×-Ñ-¨b¯g©g°r×7GÑ7GÓ7I×JÐJÚ'4ùr·  Tr1   )r8   r9   r4   r   r7   r·   s     r#   r<   ÚShuffleVector.descr¬  sJ   € Ø�
‰
Ð,×3Ñ3Ø—9‘9ñ 6Ø'+§}¢}ó6ó 6à×+Ñ+¸$Ð+Ð?óõ 	r%   rL   rU  rÄ   rS   s   @r#   rÈ  rÈ  ”  s   ø† ÷Q÷.ð r%   rÈ  c                   ó2   ^ • \ rS rSrSU 4S jjrS rSrU =r$ )ÚExtractValuei´  c                 ó  >• UR                   n U H  nUR                  U   nM     [        [        U ]#  XSU/US9  X l	        X0l
        g ! [        [        4 a'    [	        S[        U5      < SUR                   < 35      ef = f)NúCan't index at ú in Úextractvaluer   )r6   ÚelementsÚAttributeErrorrÒ  rƒ   r   r   rÜ  r   Ú	aggregaterŒ  )r   r    ÚaggrŒ  r   r!   r‰   r"   s          €r#   r   ÚExtractValue.__init__µ  sŠ   ø€ Ø�h‰hˆð	9Û�Ø—l‘l 1‘o’ñ ô 	Œl˜DÑ*¨6¸Ø,/¨5°tð 	+ñ 	=ð ŒØ�øô ¤
Ð+ó 	9ÝÜ# Gž}¨c¯h«hð8ó 9ð 9ð	9ús   �A	 Á	7B c                 ó.  • U R                    Vs/ s H  n[        U5      PM     nnUR                  SR                  U R                  R
                  U R                  R                  5       SR                  U5      U R                  SS95      5        g s  snf )Nzextractvalue {0} {1}, {2} {3}
r0   Tr1   )	rŒ  rw   r8   r9   rã  r6   r5   r4   r7   ©r   r:   r‰   rŒ  s       r#   r<   ÚExtractValue.descrÄ  sw   € Ø#'§<¢<Ó0¢<˜a”3�q–6¡<ˆÐ0à�
‰
Ð4×;Ñ;Ø—>‘>×&Ñ&Ø—>‘>×/Ñ/Ó1Ø—9‘9˜WÓ%Ø×+Ñ+¸$Ð+Ð?ó	õ 	ùò 1s   �B)rã  rŒ  rU  rÄ   rS   s   @r#   rÜ  rÜ  ´  s   ø† ÷÷ð r%   rÜ  c                   ó2   ^ • \ rS rSrSU 4S jjrS rSrU =r$ )ÚInsertValueiÏ  c           
      ó¶  >• UR                   n U H  nUR                  U   nM     UR                   U:w  a8  [	        SU< S[        U5      < SUR                   < SUR                   < 35      e[        [        U ]#  XR                   SX#/US9  X l	        X0l
        X@l        g ! [        [        4 a'    [	        S[        U5      < SUR                   < 35      ef = f)NrÞ  rß  zCan only insert z at z: got Úinsertvaluer   )r6   rá  râ  rÒ  rƒ   r   r   rê  r   rã  r  rŒ  )	r   r    rä  ÚelemrŒ  r   r!   r‰   r"   s	           €r#   r   ÚInsertValue.__init__Ð  sÊ   ø€ Ø�h‰hˆð	9Û�Ø—l‘l 1‘o’ñ ð
 �9‰9˜ÓÝÛ"¤D¨¦M°3·8´8¸T¿Y»YðHó Ið IäŒk˜4Ñ)¨&·(±(¸MØ+.¨+¸Dð 	*ñ 	Bð ŒØŒ
Ø�øô ¤
Ð+ó 	9ÝÜ# Gž}¨c¯h«hð8ó 9ð 9ð	9ús   �B! Â!7Cc                 óŠ  • U R                    Vs/ s H  n[        U5      PM     nnUR                  SR                  U R                  R
                  U R                  R                  5       U R                  R
                  U R                  R                  5       SR                  U5      U R                  SS95      5        g s  snf )Nz&insertvalue {0} {1}, {2} {3}, {4} {5}
r0   Tr1   )
rŒ  rw   r8   r9   rã  r6   r5   r  r4   r7   rç  s       r#   r<   ÚInsertValue.descrâ  s�   € Ø#'§<¢<Ó0¢<˜a”3�q–6¡<ˆÐ0à�
‰
Ð<×CÑCØ—>‘>×&Ñ&¨¯©×(DÑ(DÓ(FØ—:‘:—?‘? D§J¡J×$<Ñ$<Ó$>Ø—9‘9˜WÓ%Ø×+Ñ+¸$Ð+Ð?ó	õ 	ùò 1s   �C )rã  rŒ  r  rU  rÄ   rS   s   @r#   rê  rê  Ï  s   ø† ÷÷$ð r%   rê  c                   ó.   ^ • \ rS rSrU 4S jrS rSrU =r$ )ÚUnreachableií  c                 óV   >• [         [        U ]  U[        R                  " 5       SSSS9  g )NÚunreachablerL   rK   r   )r   rò  r   r   rÉ   )r   r    r"   s     €r#   r   ÚUnreachable.__init__î  s*   ø€ ÜŒk˜4Ñ)¨&´%·.².Ó2BØ*7¸À"ð 	*ò 	Fr%   c                 ó$   • XR                   S4-  ng )NÚ
)r   r·   s     r#   r<   ÚUnreachable.descrò  s   € Ø—‘˜TÐ"Ñ"‰r%   rL   rÄ   rS   s   @r#   rò  rò  í  s   ø† õF÷#ð #r%   rò  c                   ó0   • \ rS rSrSS jrS rS rS rSrg)	Ú	InlineAsmiö  c                 óV   • UR                   U l        Xl        X l        X0l        X@l        g r'   )r„   r6   r€   ÚasmÚ
constraintÚside_effect)r   Úftyperü  rý  rþ  s        r#   r   ÚInlineAsm.__init__÷  s%   € Ø×%Ñ%ˆŒ	Ø"ÔØŒØ$ŒØ&Õr%   c                 ó˜   • U R                   (       a  SOSnSnUR                  UR                  X R                  U R                  S95        g )NÚ
sideeffectrK   z(asm {sideeffect} "{asm}", "{constraint}")r  rü  rý  )rþ  r8   r9   rü  rý  )r   r:   r  Úfmts       r#   r<   ÚInlineAsm.descrþ  s?   € Ø%)×%5×%5‘\¸2ˆ
Ø8ˆØ�
‰
�3—:‘:¨¿¹Ø)-¯©ð ð :õ 	;r%   c                 óJ   • / nU R                  U5        SR                  U5      $ ©NrK   )r<   r4   r·   s     r#   r5   ÚInlineAsm.get_reference  s    € ØˆØ�
‰
�3ŒØ�w‰w�s‹|Ðr%   c                 óV   • SR                  U R                  U R                  5       5      $ )Nr§   r³  r)   s    r#   Ú__str__ÚInlineAsm.__str__	  s"   € Ø×Ñ §	¡	¨4×+=Ñ+=Ó+?Ó@Ð@r%   )rü  rý  r€   rþ  r6   N)F)	rG   rM   rN   rO   r   r<   r5   r	  rQ   rL   r%   r#   rú  rú  ö  s   † ô'ò;òõ
Ar%   rú  c                   ó.   ^ • \ rS rSrU 4S jrS rSrU =r$ )Ú	AtomicRMWi  c                 ó\   >• [         [        U ]  XR                  SX44US9  X l        XPl        g )NÚ	atomicrmwr   )r   r  r   r6   Ú	operationrp  )r   r    r;   r_  r  rp  r   r"   s          €r#   r   ÚAtomicRMW.__init__  s0   ø€ ÜŒi˜Ñ'¨·±¸+Ø),¨
¸ð 	(ñ 	?àŒØ �r%   c                 ó  • U R                   u  p#SnUR                  UR                  U R                  UR                  UR                  5       UR                  UR                  5       U R                  U R                  SS9S95        g )NzBatomicrmw {op} {ptrty} {ptr}, {valty} {val} {ordering} {metadata}
Tr1   )r;   Úptrtyr_  Úvaltyr  rp  r   )r   r8   r9   r  r6   r5   rp  r7   )r   r:   r_  r  r  s        r#   r<   ÚAtomicRMW.descr  sz   € Ø—=‘=‰ˆðˆà�
‰
�3—:‘: §¡Ø$'§H¡HØ"%×"3Ñ"3Ó"5Ø$'§H¡HØ"%×"3Ñ"3Ó"5Ø'+§}¡}Ø'+×'?Ñ'?Ø04ð (@ð (6ð ð  õ 	!r%   )r  rp  rÄ   rS   s   @r#   r  r    s   ø† õ!÷!ð !r%   r  c                   ó2   ^ • \ rS rSrSrU 4S jrS rSrU =r$ )ÚCmpXchgi#  z\This instruction has changed since llvm3.5.  It is not compatible with
older llvm versions.
c                 ó¶   >• [         R                  " UR                  [         R                  " S5      /5      n[        [
        U ]  XSX#U4US9  XPl        X`l        g )Nrs   Úcmpxchgr   )	r   ÚLiteralStructTyper6   rÔ   r   r  r   rp  Úfailordering)
r   r    r_  Úcmpr  rp  r  r   Úouttyper"   s
            €r#   r   ÚCmpXchg.__init__(  sR   ø€ Ü×)Ò)¨3¯8©8´U·]²]À1Ó5EÐ*FÓGˆÜŒg�tÑ% f°yØ'*° o¸Dð 	&ñ 	Bà ŒØ(Õr%   c                 ó.  • U R                   u  p#nSnUR                  UR                  UR                  UR	                  5       UR                  UR	                  5       UR	                  5       U R
                  U R                  U R                  SS9S95        g )NzScmpxchg {ptrty} {ptr}, {ty} {cmp}, {ty} {val} {ordering} {failordering} {metadata}
Tr1   )r  r_  r®   r  r  rp  r  r   )r   r8   r9   r6   r5   rp  r  r7   )r   r:   r_  Úcmpvalr  r  s         r#   r<   ÚCmpXchg.descr/  s‹   € ØŸ=™=Ñˆ�Sð,ˆà�
‰
�3—:‘: C§H¡HØ"%×"3Ñ"3Ó"5Ø!'§¡Ø"(×"6Ñ"6Ó"8Ø"%×"3Ñ"3Ó"5Ø'+§}¡}Ø+/×+<Ñ+<Ø'+×'?Ñ'?Ø04ð (@ð (6ð ð 	 õ 		!r%   )r  rp  ©	rG   rM   rN   rO   Ú__doc__r   r<   rQ   rR   rS   s   @r#   r  r  #  s   ø† ñõ)÷!ð !r%   r  c                   ó    • \ rS rSrS rS rSrg)Ú_LandingPadClausei?  c                 ó   • Xl         g r'   ©r  )r   r  s     r#   r   Ú_LandingPadClause.__init__@  s   € Ø�
r%   c                 ó�   • SR                  U R                  U R                  R                  U R                  R	                  5       S9$ )Nz{kind} {type} {value})Úkindr6   r  )r9   r)  r  r6   r5   r)   s    r#   r	  Ú_LandingPadClause.__str__C  s<   € Ø&×-Ñ-Ø—‘Ø—‘—‘Ø—*‘*×*Ñ*Ó,ð .ð .ð 	.r%   r&  N)rG   rM   rN   rO   r   r	  rQ   rL   r%   r#   r$  r$  ?  s   † òõ.r%   r$  c                   ó   • \ rS rSrSrSrg)ÚCatchClauseiJ  ÚcatchrL   N)rG   rM   rN   rO   r)  rQ   rL   r%   r#   r,  r,  J  s   † ØƒDr%   r,  c                   ó,   ^ • \ rS rSrSrU 4S jrSrU =r$ )ÚFilterClauseiN  Úfilterc                 ó°   >• [        U[        5      (       d   e[        UR                  [        R                  5      (       d   e[
        [        U ]  U5        g r'   )r   r   r6   r   Ú	ArrayTyper   r/  r   )r   r  r"   s     €r#   r   ÚFilterClause.__init__Q  s@   ø€ Ü˜%¤×*Ñ*Ð*Ð*Ü˜%Ÿ*™*¤e§o¡o×6Ñ6Ð6Ð6ÜŒl˜DÑ*¨5Õ1r%   rL   )rG   rM   rN   rO   r)  r   rQ   rR   rS   s   @r#   r/  r/  N  s   ø† Ø€D÷2ó 2r%   r/  c                   ó8   ^ • \ rS rSrSU 4S jjrS rS rSrU =r$ )ÚLandingPadInstriW  c                 óH   >• [         [        U ]  XS/ US9  X@l        / U l        g )NÚ
landingpadr   )r   r5  r   ÚcleanupÚclauses)r   r    r!   r   r8  r"   s        €r#   r   ÚLandingPadInstr.__init__X  s,   ø€ ÜŒo˜tÑ-¨f¸<ÈØ37ð 	.ñ 	9àŒØˆ�r%   c                 óh   • [        U[        5      (       d   eU R                  R                  U5        g r'   )r   r$  r9  r8   )r   Úclauses     r#   Ú
add_clauseÚLandingPadInstr.add_clause^  s(   € Ü˜&Ô"3×4Ñ4Ð4Ð4Ø�‰×Ñ˜FÕ#r%   c                 óþ   • SnUR                  UR                  U R                  U R                  (       a  SOSSR	                  U R
                   Vs/ s H  nSR                  U5      PM     sn5      S95        g s  snf )Nz$landingpad {type}{cleanup}{clauses}
z cleanuprK   z

      {0})r6   r8  r9  )r8   r9   r6   r8  r4   r9  )r   r:   r  r<  s       r#   r<   ÚLandingPadInstr.descrb  ss   € Ø5ˆØ�
‰
�3—:‘: 4§9¡9Ø48·L·L¡jÀbØ&(§g¡gØ=A¿\º\ó/KÚ=I°6ð 0=×/CÑ/CÀFÖ/KÙ=Iñ/Kó 'Lð ð  õ 	!ùò/Ks   ÁA:)r9  r8  )rK   F)	rG   rM   rN   rO   r   r=  r<   rQ   rR   rS   s   @r#   r5  r5  W  s   ø† ÷ò$÷!ð !r%   r5  c                   ó>   ^ • \ rS rSrSr1 SkrSU 4S jjrS rSrU =r	$ )ÚFenceik  zl
The `fence` instruction.

As of LLVM 5.0.1:

fence [syncscope("<target-scope>")] <ordering>  ; yields void
>   Úacq_relÚacquireÚreleaseÚseq_cstc                 óø   >• [         [        U ]  U[        R                  " 5       SSUS9  X R
                  ;  a6  Sn[        UR                  USR                  U R
                  5      5      5      eX l	        X0l
        g )NÚfencerL   r   z3Invalid fence ordering "{0}"! Should be one of {1}.r0   )r   rB  r   r   rÉ   ÚVALID_FENCE_ORDERINGSr~   r9   r4   rp  Útargetscope)r   r    rp  rJ  r   rŒ   r"   s         €r#   r   ÚFence.__init__v  st   ø€ ÜŒe�TÑ# F¬E¯NªNÓ,<¸gÀrØ)-ð 	$ñ 	/à×5Ñ5Ó5ØIˆCÜ˜SŸ[™[¨Ø)-¯©°4×3MÑ3MÓ)NóPó Qð Qà ŒØ&Õr%   c                 ó°   • U R                   c  SnOSR                  U R                   5      nSnUR                  UR                  UU R                  S95        g )NrK   zsyncscope("{0}") zfence {syncscope}{ordering}
)Ú	syncscoperp  )rJ  r9   r8   rp  )r   r:   rM  r  s       r#   r<   ÚFence.descr€  sS   € Ø×ÑÑ#Ø‰Ià+×2Ñ2°4×3CÑ3CÓDˆIà-ˆØ�
‰
�3—:‘:¨	Ø'+§}¡}ð ð  õ 	!r%   )rp  rJ  r  )
rG   rM   rN   rO   r"  rI  r   r<   rQ   rR   rS   s   @r#   rB  rB  k  s    ø† ñò IÐ÷'÷	!ð 	!r%   rB  c                   ó2   ^ • \ rS rSrSrU 4S jrS rSrU =r$ )ÚCommentiŒ  z
A line comment.
c                 ó|   >• [         [        U ]  U[        R                  " 5       SSSS9  SU;  d   S5       eX l        g )NÚ;rL   rK   r   r÷  zComment cannot contain new line)r   rP  r   r   rÉ   Útext)r   r    rS  r"   s      €r#   r   ÚComment.__init__‘  sB   ø€ ÜŒg�tÑ% f¬e¯nªnÓ.>ÀÀRØ+-ð 	&ñ 	/à˜4ÓÐBÐ!BÓBÐØ�	r%   c                 ó@   • UR                  SU R                   35        g )Nz; )r8   rS  r·   s     r#   r<   ÚComment.descr—  s   € Ø�
‰
�R˜Ÿ	™	�{Ð#Õ$r%   )rS  r!  rS   s   @r#   rP  rP  Œ  s   ø† ñõ÷%ð %r%   rP  N);r"  Úllvmlite.irr   Úllvmlite.ir.valuesr   r   r   r   r   r	   r
   r   r   r   Úllvmlite.ir._utilsr   r   rU   r_   rx   re   rp   r»   rÆ   rÎ   rÜ   ræ   rë   rî   rþ   r  r  r!  r2  rA  rP  rW  rg  rn  rw  rZ  r„  r”  r§  r¿  rÈ  rÜ  rê  rò  Úobjectrú  r  r  r$  r,  r/  r5  rB  rP  rL   r%   r#   Ú<module>r[     s0  ðñõ ÷?÷ ?÷ ?õ ,ô'(�*˜lô '(ôTA˜,ô Añ
 Ò<Ó=Ð ô+�Lô +ô
m,�ô m,ô`�)ô ô*
D�ô 
Dô	&�{ô 	&ôAˆ*ô Aô0	ˆZô 	ô	Ð(¨*ô 	ôÐ% zô ô0Ð" Jô ô<	ˆZô 	ô�+ô ô:�;ô ôB�ô ô"�ô ô0�ô ô�ô ô<�ô ô*�kô ô8�{ô ô(E�+ô Eô&+ˆ{ô +ô\<ˆ{ô <ô4;�[ô ;ô";�Kô ;ô*�Kô ô@�;ô ô6�+ô ô<#�+ô #ôA�ô Aô.!�ô !ô,!ˆkô !ô8.˜ô .ôÐ#ô ô2Ð$ô 2ô!�kô !ô(!ˆKô !ôB%ˆkõ %r%   