§
    .@Äj³„  ã                   óÔ  — d Z ddlmZ ddlmZmZmZmZmZm	Z	m
Z
mZmZmZ ddlmZ  G d„ dee¦  «        Z G d„ de¦  «        Z eg d	¢¦  «        Z G d
„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ dee¦  «        Z G d„ dee¦  «        Z G d„ dee¦  «        Z G d„ de¦  «        Z G d „ d!e¦  «        Z G d"„ d#e¦  «        Z  G d$„ d%e ¦  «        Z! G d&„ d'e ¦  «        Z" G d(„ d)e¦  «        Z# G d*„ d+e¦  «        Z$ G d,„ d-e¦  «        Z% G d.„ d/e¦  «        Z& G d0„ d1e¦  «        Z' G d2„ d3e¦  «        Z( G d4„ d5e¦  «        Z) G d6„ d7e¦  «        Z* G d8„ d9e¦  «        Z+ G d:„ d;e¦  «        Z, G d<„ d=e¦  «        Z- G d>„ d?e¦  «        Z. G d@„ dAe¦  «        Z/ G dB„ dCe¦  «        Z0 G dD„ dEe1¦  «        Z2 G dF„ dGe¦  «        Z3 G dH„ dIe¦  «        Z4 G dJ„ dKe1¦  «        Z5 G dL„ dMe5¦  «        Z6 G dN„ dOe5¦  «        Z7 G dP„ dQe¦  «        Z8 G dR„ dSe¦  «        Z9 G dT„ dUe¦  «        Z:dVS )Wz)
Implementation of LLVM IR instructions.
é    )Útypes)
ÚBlockÚFunctionÚValueÚ
NamedValueÚConstantÚMetaDataArgumentÚMetaDataStringÚAttributeSetÚ	UndefinedÚArgumentAttributes)Ú_HasMetadatac                   ó^   ‡ — e Zd Zd	ˆ fd„	Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Zd„ Z	ˆ xZ
S )
ÚInstructionÚ © c                 ó  •— t          t          | ¦  «                             |||¬¦  «         t          |t          ¦  «        sJ ‚t          |t
          t          f¦  «        sJ ‚|| _        || _        t          |¦  «        | _	        i | _
        d S ©N©Úname)Úsuperr   Ú__init__Ú
isinstancer   ÚtupleÚlistÚopnameÚoperandsÚflagsÚmetadata)ÚselfÚparentÚtypr   r   r   r   Ú	__class__s          €úIC:\Projects\Historical\venv\Lib\site-packages\llvmlite/ir/instructions.pyr   zInstruction.__init__   s~   ø€ Ý�k˜4Ñ Ô ×)Ò)¨&°#¸DÐ)ÑAÔAÐAÝ˜&¥%Ñ(Ô(Ð(Ð(Ð(Ý˜%¥%­ Ñ/Ô/Ð/Ð/Ð/ØˆŒØ ˆŒÝ˜%‘[”[ˆŒ
ØˆŒˆˆó    c                 ó   — | j         j        S ©N)r!   Úfunction©r    s    r$   r(   zInstruction.function   s   € àŒ{Ô#Ð#r%   c                 ó$   — | j         j        j        S r'   )r!   r(   Úmoduler)   s    r$   r+   zInstruction.module   s   € àŒ{Ô#Ô*Ð*r%   c                 ó6  — | j         }| j        rd                     |g| j        z   ¦  «        }d                     d„ | j        D ¦   «         ¦  «        }| j        }|                      d¬¦  «        }|                     d                     ||||¦  «        ¦  «         d S )Nú ú, c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r   )Úget_reference©Ú.0Úops     r$   ú
<listcomp>z%Instruction.descr.<locals>.<listcomp>"   s$   € ÐIÐIÐI°R˜b×.Ò.Ñ0Ô0ÐIÐIÐIr%   T©Úleading_commaú{0} {1} {2}{3}
)r   r   Újoinr   ÚtypeÚ_stringify_metadataÚappendÚformat)r    Úbufr   r   r"   r   s         r$   ÚdescrzInstruction.descr   s¢   € Ø”ˆØŒ:ð 	5Ø—X’X˜v˜h¨¬Ñ3Ñ4Ô4ˆFØ—9’9ÐIÐI¸4¼=ÐIÑIÔIÑJÔJˆØŒiˆØ×+Ò+¸$Ð+Ñ?Ô?ˆØ�
Š
Ð%ß’F˜6 3¨°(Ñ;Ô;ñ	=ô 	=ð 	=ð 	=ð 	=r%   c                 óº   — || j         v rQg }| j         D ]}|                     ||u r|n|¦  «         Œt          |¦  «        | _         |                      ¦   «          d S d S r'   )r   r;   r   Ú_clear_string_cache)r    ÚoldÚnewÚopsr3   s        r$   Úreplace_usagezInstruction.replace_usage(   ss   € Ø�$”-ÐÐØˆCØ”mð 5ð 5�Ø—
’
 "¨ ) )˜3˜3°Ñ4Ô4Ð4Ð4Ý! #™JœJˆDŒMØ×$Ò$Ñ&Ô&Ð&Ð&Ð&ð  Ðr%   c                 ób   — d| j         j        ›d| j        ›d| j        ›d| j        ›d| j        ›d�S )Nz<ir.r-   z
 of type 'z
', opname z, operands ú>)r#   Ú__name__r   r9   r   r   r)   s    r$   Ú__repr__zInstruction.__repr__0   s=   € € àŒNÔ#Ð#Ð# T¤Y Y Y°´	°	°	ØŒKˆKˆK˜œ˜˜ð(ð 	(r%   ©r   r   )rG   Ú
__module__Ú__qualname__r   Úpropertyr(   r+   r>   rD   rH   Ú__classcell__©r#   s   @r$   r   r      s    ø€ € € € € ðð ð ð ð ð ð ð$ð $ñ „Xð$ð ð+ð +ñ „Xð+ð=ð =ð =ð'ð 'ð 'ð(ð (ð (ð (ð (ð (ð (r%   r   c                   ó(   — e Zd Z eg d¢¦  «        ZdS )ÚCallInstrAttributes)Ú
convergentÚnoreturnÚnounwindÚreadonlyÚreadnoneÚnoinlineÚalwaysinlineN©rG   rJ   rK   Ú	frozensetÚ_knownr   r%   r$   rP   rP   6   s3   € € € € € ØˆYð @ð @ð @ñ Aô A€F€F€Fr%   rP   )ÚtailÚmusttailÚnotailc                   ó(   — e Zd Z eg d¢¦  «        ZdS )ÚFastMathFlags)ÚfastÚnnanÚninfÚnszÚarcpÚcontractÚafnÚreassocNrX   r   r%   r$   r_   r_   >   s.   € € € € € ØˆYð *ð *ð *ñ +ô +€F€F€Fr%   r_   c                   ó˜   ‡ — e Zd Z	 	 dˆ fd„	Zed„ ¦   «         Zej        d„ ¦   «         Zed„ ¦   «         Zd„ Zed	„ ¦   «         Z	d
„ Z
d„ Zˆ xZS )Ú	CallInstrr   Nr   c
           	      ó  •— |€t          |t          ¦  «        r|j        n|| _        t          |t          ¦  «        r
|t
          v rn|rd}nd}|| _        t          |¦  «        | _        t          |¦  «        | _
        i | _        |	ro|	                     ¦   «         D ]Z\  }
}d|
cxk    rt          |¦  «        k     s$n t          d                     |
¦  «        ¦  «        ‚t!          |¦  «        | j        |
<   Œ[t#          |¦  «        }t%          t          |j        j        ¦  «        ¦  «        D ]Ž}||         }|j        j        |         }t          |t*          j        ¦  «        r|j        |k    rt1          |¦  «        }|j        |k    r.d                     d|z   ||j        ¦  «        }t3          |¦  «        ‚|||<   Œ�t5          t6          | ¦  «                             ||j        j        d|gt#          |¦  «        z   |¬¦  «         d S )	Nr[   r   r   zInvalid argument index {}z%Type of #{0} arg mismatch: {1} != {2}é   Úcallr   )r   r   Úcalling_conventionÚcconvÚstrÚTailMarkerOptionsr[   r_   ÚfastmathrP   Ú
attributesÚarg_attributesÚitemsÚlenÚ
ValueErrorr<   r   r   ÚrangeÚfunction_typeÚargsr   ÚMetaDataTyper9   r	   Ú	TypeErrorr   ri   r   Úreturn_type)r    r!   Úfuncry   r   rn   r[   rq   ÚattrsÚ	arg_attrsÚidxÚiÚargÚexpected_typeÚmsgr#   s                  €r$   r   zCallInstr.__init__D   s&  ø€ ð ˜­:°d½HÑ+EÔ+E˜ð Ô-Ð-à ð 	Œ
õ �d�CÑ Ô ð 	 TÕ->Ð%>Ð%>ØØð 	ØˆDˆDàˆDàˆŒ	Ý% hÑ/Ô/ˆŒÝ-¨eÑ4Ô4ˆŒØ ˆÔØð 	EØ'ŸošoÑ/Ô/ð Eð E‘
��UØ˜SÐ,Ð,Ò,Ð,¥3 t¡9¤9Ò,Ð,Ð,Ð,Ý$Ð%@ß&,¢f¨S¡k¤kñ3ô 3ð 3å+=¸eÑ+DÔ+D�Ô# CÑ(Ð(õ �D‰zŒzˆÝ•s˜4Ô-Ô2Ñ3Ô3Ñ4Ô4ð 
	ð 
	ˆAØ�q”'ˆCØ Ô.Ô3°AÔ6ˆMÝ˜=­%Ô*<Ñ=Ô=ð ,Ø”H Ò-Ð-Ý& sÑ+Ô+�ØŒx˜=Ò(Ð(Ø>ßš˜q 1™u m°S´XÑ>Ô>ð å ‘n”nÐ$ØˆD�‰GˆGå�i˜ÑÔ×'Ò'¨°Ô0BÔ0NØ(.°°½¸d¹¼Ñ0CÈ$ð 	(ñ 	Pô 	Pð 	Pð 	Pð 	Pr%   c                 ó   — | j         d         S ©Nr   ©r   r)   s    r$   ÚcalleezCallInstr.calleeo   ó   € àŒ}˜QÔÐr%   c                 ó   — || j         d<   d S r†   r‡   )r    Ú	newcallees     r$   rˆ   zCallInstr.callees   s   € à$ˆŒ�aÑÐÐr%   c                 ó    — | j         dd …         S ©Nrk   r‡   r)   s    r$   ry   zCallInstr.argsw   s   € àŒ}˜Q˜R˜RÔ Ð r%   c                 ó\   — |j         | j        j         k    rt          d¦  «        ‚|| _        d S )Nz"New function has incompatible type)rx   rˆ   r{   )r    Únewfuncs     r$   Úreplace_calleezCallInstr.replace_callee{   s/   € ØÔ  D¤KÔ$=Ò=Ð=ÝÐ@ÑAÔAÐAØˆŒˆˆr%   c                 ó   — | j         S )zThe callee function)rˆ   r)   s    r$   Úcalled_functionzCallInstr.called_function€   s   € ð Œ{Ðr%   c                 ó(  ‡ ‡
— ˆ fd„Š
d                      ˆ
fd„t          ‰ j        ¦  «        D ¦   «         ¦  «        }‰ j        j        }|j        r|}n|j        }d                     |‰ j                             ¦   «         ¦  «        }‰ j	        rd                     ‰ j	        |¦  «        }d}‰ j
        rd                     ‰ j
        ¦  «        }‰ j        r5dd                      ‰ j                             |j        ¦  «        ¦  «        z   nd}‰ j        r5dd                      ‰ j                             |j        ¦  «        ¦  «        z   nd}	|                     d                     |‰ j        ||	|||r‰                      d	¬
¦  «        nd¬¦  «        ¦  «         d S )Nc                 óî   •— | ‰j         v r<d                     ‰j         |                               |j        ¦  «        ¦  «        dz   }nd}d                     |j        ||                     ¦   «         ¦  «        S )Nr-   r   ú
{0} {1}{2})rs   r8   Ú_to_listr9   r<   r0   )r�   Úar~   r    s      €r$   Ú	descr_argz#CallInstr._descr.<locals>.descr_arg†   sj   ø€ Ø�DÔ'Ð'Ð'ØŸš Ô!4°QÔ!7×!@Ò!@ÀÄÑ!HÔ!HÑIÔIÈCÑO��à�Ø×&Ò& q¤v¨u°a·o²oÑ6GÔ6GÑHÔHÐHr%   r.   c                 ó.   •— g | ]\  }} ‰||¦  «        ‘ŒS r   r   )r2   r�   r—   r˜   s      €r$   r4   z$CallInstr._descr.<locals>.<listcomp>Œ   s'   ø€ ÐKÐKÐK©d¨a°˜)˜) A q™/œ/ÐKÐKÐKr%   ú{0} {1}r   z{0} r-   z2{tail}{op}{fastmath} {callee}({args}){attr}{meta}
Tr5   )r[   r3   rˆ   rq   ry   ÚattrÚmeta)r8   Ú	enumeratery   rˆ   rx   Úvar_argr|   r<   r0   rn   r[   rr   r–   rq   r;   r   r:   )r    r=   Úadd_metadatary   ÚfntyÚtyÚ
callee_refÚtail_markerÚfn_attrsÚfm_attrsr˜   s   `         @r$   Ú_descrzCallInstr._descr…   sÊ  øø€ ð	Ið 	Ið 	Ið 	Ið 	Ið �yŠyÐKÐKÐKÐKµiÀÄ	Ñ6JÔ6JÐKÑKÔKÑLÔLˆàŒ{Ô(ˆàŒ<ð 	"ØˆBˆBð Ô!ˆBØ×%Ò% b¨$¬+×*CÒ*CÑ*EÔ*EÑFÔFˆ
ØŒ:ð 	BØ"×)Ò)¨$¬*°jÑAÔAˆJàˆØŒ9ð 	3Ø Ÿ-š-¨¬	Ñ2Ô2ˆKð Œð'�3˜Ÿš $¤/×":Ò":¸4Ô;KÑ"LÔ"LÑMÔMÑMÐMØ$&ð 	ð Œ}ð%�3˜Ÿš $¤-×"8Ò"8¸Ô9IÑ"JÔ"JÑKÔKÑKÐKØ"$ð 	ð 	�
Š
ÐH×OÒOØØŒ{ØØØØà!ð*�$×*Ò*¸Ð*Ñ>Ô>Ð>Ø')ð Pñ 	
ô 	
ñ 		ô 		ð 		ð 		ð 		r%   c                 ó4   — |                       |d¬¦  «         d S )NT©rŸ   )r¦   ©r    r=   s     r$   r>   zCallInstr.descr¯   s   € Ø�Š�C dˆÑ+Ô+Ð+Ð+Ð+r%   )r   NNr   r   N)rG   rJ   rK   r   rL   rˆ   Úsetterry   r�   r’   r¦   r>   rM   rN   s   @r$   ri   ri   C   sæ   ø€ € € € € ØEIØ26ð)Pð )Pð )Pð )Pð )Pð )PðV ð ð  ñ „Xð ð „]ð%ð %ñ „]ð%ð ð!ð !ñ „Xð!ðð ð ð
 ðð ñ „Xðð(ð (ð (ðT,ð ,ð ,ð ,ð ,ð ,ð ,r%   ri   c                   ó.   ‡ — e Zd Z	 	 dˆ fd„	Zˆ fd„Zˆ xZS )ÚInvokeInstrr   Nr   c                 óð   •— t          |t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚t          t          | ¦  «                             |||||d||	|
¬¦	  «	         d| _        || _        || _        d S )NF)r[   rq   r~   r   Úinvoke)r   r   r   r¬   r   r   Ú	normal_toÚ	unwind_to)r    r!   r}   ry   r¯   r°   r   rn   rq   r~   r   r#   s              €r$   r   zInvokeInstr.__init__´   sˆ   ø€ å˜)¥UÑ+Ô+Ð+Ð+Ð+Ý˜)¥UÑ+Ô+Ð+Ð+Ð+Ý�k˜4Ñ Ô ×)Ò)¨&°$¸¸dÀEØ/4¸xØ05Àð 	*ñ 	Lô 	Lð 	Lð ˆŒØ"ˆŒØ"ˆŒˆˆr%   c           	      ó6  •— t          t          | ¦  «                             |d¬¦  «         |                     d                     | j                             ¦   «         | j                             ¦   «         |                      d¬¦  «        ¬¦  «        ¦  «         d S )NFr¨   z.      to label {0} unwind label {1}{metadata}
Tr5   )r   )	r   r¬   r¦   r;   r<   r¯   r0   r°   r:   )r    r=   r#   s     €r$   r>   zInvokeInstr.descr¿   s•   ø€ Ý�k˜4Ñ Ô ×'Ò'¨¸%Ð'Ñ@Ô@Ð@Ø�
Š
ÐD×KÒKØŒN×(Ò(Ñ*Ô*ØŒN×(Ò(Ñ*Ô*Ø×-Ò-¸DÐ-ÑAÔAð Lñ 
ô 
ñ 	ô 	ð 	ð 	ð 	r%   )r   Nr   r   N©rG   rJ   rK   r   r>   rM   rN   s   @r$   r¬   r¬   ³   s\   ø€ € € € € ØFHØ>Bð	#ð 	#ð 	#ð 	#ð 	#ð 	#ðð ð ð ð ð ð ð ð r%   r¬   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )Ú
Terminatorc                 ó€   •— t          t          | ¦  «                             |t          j        ¦   «         ||¦  «         d S r'   )r   r´   r   r   ÚVoidType)r    r!   r   r   r#   s       €r$   r   zTerminator.__init__É   s@   ø€ Ý�j˜$ÑÔ×(Ò(¨µ´Ñ1AÔ1AÀ6Ø)1ñ	3ô 	3ð 	3ð 	3ð 	3r%   c                 óÜ   — | j         }d                     d„ | j        D ¦   «         ¦  «        }|                      d¬¦  «        }|                     d                     |||¦  «        ¦  «         d S )Nr.   c                 óh   — g | ]/}d                       |j        |                     ¦   «         ¦  «        ‘Œ0S ©rš   ©r<   r9   r0   r1   s     r$   r4   z$Terminator.descr.<locals>.<listcomp>Ï   sF   € ð 7ð 7ð 7Ø"$ð (×.Ò.¨r¬w¸×8HÒ8HÑ8JÔ8JÑKÔKð 7ð 7ð 7r%   Tr5   r•   )r   r8   r   r:   r;   r<   )r    r=   r   r   r   s        r$   r>   zTerminator.descrÍ   sz   € Ø”ˆØ—9’9ð 7ð 7Ø(,¬ð7ñ 7ô 7ñ 8ô 8ˆà×+Ò+¸$Ð+Ñ?Ô?ˆØ�
Š
�<×&Ò& v¨x¸ÑBÔBÑCÔCÐCÐCÐCr%   r²   rN   s   @r$   r´   r´   È   sN   ø€ € € € € ð3ð 3ð 3ð 3ð 3ðDð Dð Dð Dð Dð Dð Dr%   r´   c                   ó   — e Zd Zd„ ZdS )ÚPredictableInstrc                 ó0  — t          | j        d¦  «        g}|D ]L}|dk     rt          d¦  «        ‚|                     t	          t          j        d¦  «        |¦  «        ¦  «         ŒM| j                             |¦  «        }|                      d|¦  «         d S )NÚbranch_weightsr   z(branch weight must be a positive integeré    Úprof)	r
   r+   rv   r;   r   r   ÚIntTyperŸ   Úset_metadata)r    Úweightsr   ÚwÚmds        r$   Úset_weightszPredictableInstr.set_weights×   s˜   € Ý" 4¤;Ð0@ÑAÔAÐBˆØð 	<ð 	<ˆAØ�1ŠuˆuÝ Ð!KÑLÔLÐLØ�OŠO�H¥U¤]°2Ñ%6Ô%6¸Ñ:Ô:Ñ;Ô;Ð;Ð;ØŒ[×%Ò% hÑ/Ô/ˆØ×Ò˜& "Ñ%Ô%Ð%Ð%Ð%r%   N)rG   rJ   rK   rÆ   r   r%   r$   r¼   r¼   Õ   s#   € € € € € ð&ð &ð &ð &ð &r%   r¼   c                   ó<   ‡ — e Zd Zdˆ fd„	Zed„ ¦   «         Zd„ Zˆ xZS )ÚRetNc                 ój   •— |�|gng }t          t          | ¦  «                             |||¦  «         d S r'   )r   rÈ   r   )r    r!   r   Úreturn_valuer   r#   s        €r$   r   zRet.__init__â   s;   ø€ Ø%1Ð%=�L�>�>À2ˆÝ�c�4ÑÔ×!Ò! &¨&°(Ñ;Ô;Ð;Ð;Ð;r%   c                 ó.   — | j         r| j         d         S d S r†   r‡   r)   s    r$   rÊ   zRet.return_valueæ   s   € àŒ=ð 	Ø”= Ô#Ð#à�4r%   c                 ó2  — | j         }|                      d¬¦  «        }|�I|                     d                     | j        |j        |                     ¦   «         |¦  «        ¦  «         d S |                     d                     | j        |¦  «        ¦  «         d S )NTr5   r7   z{0}{1}
)rÊ   r:   r;   r<   r   r9   r0   )r    r=   rÊ   r   s       r$   r>   z	Ret.descrí   sŸ   € ØÔ(ˆØ×+Ò+¸$Ð+Ñ?Ô?ˆØÐ#Ø�JŠJÐ)ßš˜tœ{¨LÔ,=Ø+×9Ò9Ñ;Ô;Ø'ñ)ô )ñ*ô *ð *ð *ð *ð
 �JŠJ�z×(Ò(¨¬°hÑ?Ô?Ñ@Ô@Ð@Ð@Ð@r%   r'   )rG   rJ   rK   r   rL   rÊ   r>   rM   rN   s   @r$   rÈ   rÈ   á   sn   ø€ € € € € ð<ð <ð <ð <ð <ð <ð ðð ñ „Xðð	Að 	Að 	Að 	Að 	Að 	Að 	Ar%   rÈ   c                   ó   — e Zd ZdS )ÚBranchN©rG   rJ   rK   r   r%   r$   rÎ   rÎ   ù   ó   € € € € € Ø€Dr%   rÎ   c                   ó   — e Zd ZdS )ÚConditionalBranchNrÏ   r   r%   r$   rÒ   rÒ   ý   rÐ   r%   rÒ   c                   ó@   ‡ — e Zd Zˆ fd„Zed„ ¦   «         Zd„ Zd„ Zˆ xZS )ÚIndirectBranchc                 ól   •— t          t          | ¦  «                             |||g¦  «         g | _        d S r'   )r   rÔ   r   Údestinations)r    r!   r   Úaddrr#   s       €r$   r   zIndirectBranch.__init__  s5   ø€ Ý�n˜dÑ#Ô#×,Ò,¨V°V¸d¸VÑDÔDÐDØˆÔÐÐr%   c                 ó   — | j         d         S r†   r‡   r)   s    r$   ÚaddresszIndirectBranch.address  r‰   r%   c                 óh   — t          |t          ¦  «        sJ ‚| j                             |¦  «         d S r'   )r   r   rÖ   r;   )r    Úblocks     r$   Úadd_destinationzIndirectBranch.add_destination
  s5   € Ý˜%¥Ñ'Ô'Ð'Ð'Ð'ØÔ× Ò  Ñ'Ô'Ð'Ð'Ð'r%   c           
      ó  — d„ | j         D ¦   «         }|                     d                     | j        j        | j                             ¦   «         d                     |¦  «        |                      d¬¦  «        ¦  «        ¦  «         d S )Nc                 ó\   — g | ])}d                       |                     ¦   «         ¦  «        ‘Œ*S )z	label {0}©r<   r0   )r2   Úblks     r$   r4   z(IndirectBranch.descr.<locals>.<listcomp>  sB   € ð 6ð 6ð 6Øð $×*Ò*¨3×+<Ò+<Ñ+>Ô+>Ñ?Ô?ð 6ð 6ð 6r%   zindirectbr {0} {1}, [{2}]  {3}
r.   Tr5   )rÖ   r;   r<   rÙ   r9   r0   r8   r:   )r    r=   rÖ   s      r$   r>   zIndirectBranch.descr  s’   € ð6ð 6Ø#'Ô#4ð6ñ 6ô 6ˆà�
Š
Ð5×<Ò<ØŒLÔØŒL×&Ò&Ñ(Ô(Ø�IŠI�lÑ#Ô#Ø×$Ò$°4Ð$Ñ8Ô8ñ	
ô 
ñ 	ô 	ð 	ð 	ð 	r%   )	rG   rJ   rK   r   rL   rÙ   rÜ   r>   rM   rN   s   @r$   rÔ   rÔ     sq   ø€ € € € € ðð ð ð ð ð ð ð  ñ „Xð ð(ð (ð (ðð ð ð ð ð ð r%   rÔ   c                   ó@   ‡ — e Zd Zˆ fd„Zed„ ¦   «         Zd„ Zd„ Zˆ xZS )ÚSwitchInstrc                 óz   •— t          t          | ¦  «                             |||g¦  «         || _        g | _        d S r'   )r   râ   r   ÚdefaultÚcases)r    r!   r   Úvalrä   r#   s        €r$   r   zSwitchInstr.__init__  s9   ø€ Ý�k˜4Ñ Ô ×)Ò)¨&°&¸3¸%Ñ@Ô@Ð@ØˆŒØˆŒ
ˆ
ˆ
r%   c                 ó   — | j         d         S r†   r‡   r)   s    r$   ÚvaluezSwitchInstr.value   r‰   r%   c                 óÊ   — t          |t          ¦  «        sJ ‚t          |t          ¦  «        st          | j        j        |¦  «        }| j                             ||f¦  «         d S r'   )r   r   r   r   rè   r9   rå   r;   )r    ræ   rÛ   s      r$   Úadd_casezSwitchInstr.add_case$  s]   € Ý˜%¥Ñ'Ô'Ð'Ð'Ð'Ý˜#�uÑ%Ô%ð 	1Ý˜4œ:œ?¨CÑ0Ô0ˆCØŒ
×Ò˜3 ˜,Ñ'Ô'Ð'Ð'Ð'r%   c                 ó>  — d„ | j         D ¦   «         }|                     d                     | j        j        | j                             ¦   «         | j                             ¦   «         d                     |¦  «        |                      d¬¦  «        ¦  «        ¦  «         d S )Nc                 ó”   — g | ]E\  }}d                       |j        |                     ¦   «         |                     ¦   «         ¦  «        ‘ŒFS )z{0} {1}, label {2}rº   )r2   ræ   rà   s      r$   r4   z%SwitchInstr.descr.<locals>.<listcomp>+  s_   € ð -ð -ð -á�S˜#ð &×,Ò,¨S¬X°s×7HÒ7HÑ7JÔ7JØ-0×->Ò->Ñ-@Ô-@ñBô Bð -ð -ð -r%   z%switch {0} {1}, label {2} [{3}]  {4}
r-   Tr5   )	rå   r;   r<   rè   r9   r0   rä   r8   r:   )r    r=   rå   s      r$   r>   zSwitchInstr.descr*  s¡   € ð-ð -à!%¤ð-ñ -ô -ˆð 	�
Š
Ð;×BÒBØŒJŒOØŒJ×$Ò$Ñ&Ô&ØŒL×&Ò&Ñ(Ô(Ø�HŠH�U‰OŒOØ×$Ò$°4Ð$Ñ8Ô8ñ
ô 
ñ 	ô 	ð 	ð 	ð 	r%   )	rG   rJ   rK   r   rL   rè   rê   r>   rM   rN   s   @r$   râ   râ     sq   ø€ € € € € ðð ð ð ð ð
 ð ð  ñ „Xð ð(ð (ð (ð
ð 
ð 
ð 
ð 
ð 
ð 
r%   râ   c                   ó   — e Zd ZdS )ÚResumeNrÏ   r   r%   r$   rî   rî   7  rÐ   r%   rî   c                   óh   ‡ — e Zd Zdˆ fd„	Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Zˆ xZ	S )	ÚSelectInstrr   r   c                 ó˜   •— |j         |j         k    sJ ‚t          t          | ¦  «                             ||j         d|||g||¬¦  «         d S )NÚselect©r   r   )r9   r   rð   r   )r    r!   ÚcondÚlhsÚrhsr   r   r#   s          €r$   r   zSelectInstr.__init__<  s`   ø€ ØŒx˜3œ8Ò#Ð#Ð#Ð#Ý�k˜4Ñ Ô ×)Ò)¨&°#´(¸HØ+/°°cÐ*:ÀØ05ð 	*ñ 	7ô 	7ð 	7ð 	7ð 	7r%   c                 ó   — | j         d         S r†   r‡   r)   s    r$   rô   zSelectInstr.condB  r‰   r%   c                 ó   — | j         d         S r�   r‡   r)   s    r$   rõ   zSelectInstr.lhsF  r‰   r%   c                 ó   — | j         d         S )Né   r‡   r)   s    r$   rö   zSelectInstr.rhsJ  r‰   r%   c                 ó‚  — |                      d                     d                     | j        ¦  «        | j        j        | j                             ¦   «         | j        j        | j                             ¦   «         | j        j        | j                             ¦   «         |  	                    d¬¦  «        ¦  «        ¦  «         d S )Nz)select {0} {1} {2}, {3} {4}, {5} {6} {7}
r-   Tr5   )
r;   r<   r8   r   rô   r9   r0   rõ   rö   r:   r©   s     r$   r>   zSelectInstr.descrN  sŸ   € Ø�
Š
Ð?×FÒFØ�HŠH�T”ZÑ Ô ØŒIŒN˜DœI×3Ò3Ñ5Ô5ØŒHŒM˜4œ8×1Ò1Ñ3Ô3ØŒHŒM˜4œ8×1Ò1Ñ3Ô3Ø×$Ò$°4Ð$Ñ8Ô8ñ
ô 
ñ 	ô 	ð 	ð 	ð 	r%   rI   )
rG   rJ   rK   r   rL   rô   rõ   rö   r>   rM   rN   s   @r$   rð   rð   ;  s�   ø€ € € € € ð7ð 7ð 7ð 7ð 7ð 7ð ð ð  ñ „Xð ð ð ð  ñ „Xð ð ð ð  ñ „Xð ðð ð ð ð ð ð r%   rð   c                   ó2   ‡ — e Zd ZdZi Zdg fˆ fd„	Zd„ Zˆ xZS )ÚCompareInstrzinvalid-comparer   c                 óä  •— || j         vrt          d|›d| j        ›�¦  «        ‚|D ]%}|| j        vrt          d|›d| j        ›�¦  «        ‚Œ&| j        }t	          |j        t          j        ¦  «        r2t          j        t          j        d¦  «        |j        j	        ¦  «        }	nt          j        d¦  «        }	t          t          | ¦  «                             ||	|||g||¬¦  «         || _        d S )Nzinvalid comparison z for zinvalid flag rk   )r   r   )ÚVALID_OPrv   ÚOPNAMEÚ
VALID_FLAGr   r9   r   Ú
VectorTyperÁ   Úcountr   rý   r   r3   )r    r!   r3   rõ   rö   r   r   Úflagr   r"   r#   s             €r$   r   zCompareInstr.__init__]  s  ø€ Ø�T”]Ð"Ð"Ý�*¸r¸r¸rÀ4Ä;À;ÐOÑPÔPÐPØð 	Qð 	QˆDØ˜4œ?Ð*Ð*Ý �j¸T¸T¸TÀ4Ä;À;Ð!OÑPÔPÐPð +à”ˆÝ�c”h¥Ô 0Ñ1Ô1ð 	#ÝÔ"¥5¤=°Ñ#3Ô#3°S´X´^ÑDÔDˆCˆCå”- Ñ"Ô"ˆCÝ�l˜DÑ!Ô!×*Ò*¨6°3Ø+1°C¸°:ÀUØ04ð 	+ñ 	6ô 	6ð 	6ð ˆŒˆˆr%   c                 óx  — |                      d                     | j        d                     d„ | j        D ¦   «         ¦  «        | j        | j        d         j        | j        d                              ¦   «         | j        d                              ¦   «         |  	                    d¬¦  «        ¬¦  «        ¦  «         d S )	Nz.{opname}{flags} {op} {ty} {lhs}, {rhs} {meta}
r   c              3   ó    K  — | ]	}d |z   V — Œ
dS )r-   Nr   )r2   Úits     r$   ú	<genexpr>z%CompareInstr.descr.<locals>.<genexpr>p  s&   è è € Ð8Ð8 r˜# ™(Ð8Ð8Ð8Ð8Ð8Ð8r%   r   rk   Tr5   )r   r   r3   r¡   rõ   rö   rœ   )
r;   r<   r   r8   r   r3   r   r9   r0   r:   r©   s     r$   r>   zCompareInstr.descrm  s²   € Ø�
Š
ÐD×KÒKØ”;Ø—'’'Ð8Ð8¨T¬ZÐ8Ñ8Ô8Ñ8Ô8ØŒwØŒ}˜QÔÔ$Ø”˜aÔ ×.Ò.Ñ0Ô0Ø”˜aÔ ×.Ò.Ñ0Ô0Ø×)Ò)¸Ð)Ñ=Ô=ð Lñ 
ô 
ñ 	ô 	ð 	ð 	ð 	r%   )rG   rJ   rK   r   rÿ   r   r>   rM   rN   s   @r$   rý   rý   X  s[   ø€ € € € € à€FØ€Hà24¸Bð ð ð ð ð ð ð 	ð 	ð 	ð 	ð 	ð 	ð 	r%   rý   c                   ó@   — e Zd ZdZdddddddd	d
ddœ
Z e¦   «         ZdS )Ú	ICMPInstrÚ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ÚsleN)rG   rJ   rK   r   rÿ   Úsetr  r   r%   r$   r
  r
  y  sJ   € € € € € Ø€FàØØ&Ø*Ø#Ø'Ø$Ø(Ø!Ø%ðð €Hð �‘”€J€J€Jr%   r
  c                   ó~   — e Zd ZdZi dd“dd“dd“dd	“d
d“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“d d!“Zh d"£Zd#S )$Ú	FCMPInstrÚ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 equalr  zunordered or greater thanr  z"unordered or greater than or equalr  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>   rf   rc   rd   r`   rb   ra   rg   re   N)rG   rJ   rK   r   rÿ   r  r   r%   r$   r  r  Š  s÷   € € € € € Ø€FðØÐ6ðàÐ"ðð 	Ð)ðð 	Ð2ð	ð
 	Ð&ðð 	Ð/ðð 	Ð&ðð 	Ð"ðð 	Ð#ðð 	Ð*ðð 	Ð3ðð 	Ð'ðð 	Ð0ðð 	Ð'ðð 	Ð(ðð  	Ð4ð!€Hð$ð ð €J€J€Jr%   r  c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )Ú	CastInstrr   c                 ód   •— t          t          | ¦  «                             ||||g|¬¦  «         d S r   )r   r(  r   )r    r!   r3   ræ   r"   r   r#   s         €r$   r   zCastInstr.__init__£  s4   ø€ Ý�i˜ÑÔ×'Ò'¨°°R¸#¸ÀTÐ'ÑJÔJÐJÐJÐJr%   c                 óô   — |                      d                     | j        | j        d         j        | j        d                              ¦   «         | j        |                      d¬¦  «        ¦  «        ¦  «         d S )Nz{0} {1} {2} to {3} {4}
r   Tr5   )r;   r<   r   r   r9   r0   r:   r©   s     r$   r>   zCastInstr.descr¦  sv   € Ø�
Š
Ð-×4Ò4ØŒKØŒM˜!ÔÔ!ØŒM˜!Ô×*Ò*Ñ,Ô,ØŒIØ×$Ò$°4Ð$Ñ8Ô8ñ
ô 
ñ 	ô 	ð 	ð 	ð 	r%   ©r   r²   rN   s   @r$   r(  r(  ¢  sR   ø€ € € € € ðKð Kð Kð Kð Kð Kðð ð ð ð ð ð r%   r(  c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )Ú	LoadInstrr   Nc                 ó   •— |€Et          |t          ¦  «        r|j        }n(|j        j        s|j        j        }nt          d¦  «        ‚t          t          | ¦  «         	                    ||d|g|¬¦  «         d | _
        d S )NzLoad lacks type.Úloadr   )r   ÚAllocaInstrÚallocated_typer9   Ú	is_opaqueÚpointeerv   r   r-  r   Úalign)r    r!   Úptrr   r"   r#   s        €r$   r   zLoadInstr.__init__²  s„   ø€ Øˆ;Ý˜#�{Ñ+Ô+ð 5ØÔ(��ð ”XÔ'ð 5Ø”hÔ&��å Ð!3Ñ4Ô4Ð4Ý�i˜ÑÔ×'Ò'¨°°V¸c¸UÈÐ'ÑNÔNÐNØˆŒ
ˆ
ˆ
r%   c                 óø   — | j         \  }| j        �d| j        z  }nd}|                     d                     | j        |j        |                     ¦   «         ||                      d¬¦  «        ¦  «        ¦  «         d S )Nú
, align %dr   zload {0}, {1} {2}{3}{4}
Tr5   ©r   r4  r;   r<   r9   r0   r:   )r    r=   ræ   r4  s       r$   r>   zLoadInstr.descr¿  s‰   € Ø”‰ˆØŒ:Ð!Ø  D¤JÑ/ˆEˆEàˆEØ�
Š
Ð.×5Ò5ØŒIØŒHØ×ÒÑÔØØ×$Ò$°4Ð$Ñ8Ô8ñ
ô 
ñ 	ô 	ð 	ð 	ð 	r%   ©r   Nr²   rN   s   @r$   r-  r-  °  sL   ø€ € € € € ðð ð ð ð ð ðð ð ð ð ð ð r%   r-  c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )Ú
StoreInstrc                 ó„   •— t          t          | ¦  «                             |t          j        ¦   «         d||g¦  «         d S )NÚstore)r   r;  r   r   r¶   )r    r!   ræ   r5  r#   s       €r$   r   zStoreInstr.__init__Ï  sD   ø€ Ý�j˜$ÑÔ×(Ò(¨µ´Ñ1AÔ1AÀ7Ø*-¨s¨ñ	5ô 	5ð 	5ð 	5ð 	5r%   c                 ó   — | j         \  }}| j        �d| j        z  }nd}|                     d                     |j        |                     ¦   «         |j        |                     ¦   «         ||                      d¬¦  «        ¦  «        ¦  «         d S )Nr7  r   zstore {0} {1}, {2} {3}{4}{5}
Tr5   r8  )r    r=   ræ   r5  r4  s        r$   r>   zStoreInstr.descrÓ  sš   € Ø”=‰ˆˆSØŒ:Ð!Ø  D¤JÑ/ˆEˆEàˆEØ�
Š
Ð3×:Ò:ØŒHØ×ÒÑÔØŒHØ×ÒÑÔØØ×$Ò$°4Ð$Ñ8Ô8ñ
ô 
ñ 	ô 	ð 	ð 	ð 	r%   r²   rN   s   @r$   r;  r;  Î  sG   ø€ € € € € ð5ð 5ð 5ð 5ð 5ðð ð ð ð ð ð r%   r;  c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLoadAtomicInstrr   Nc                 ó  •— |€Et          |t          ¦  «        r|j        }n(|j        j        s|j        j        }nt          d¦  «        ‚t          t          | ¦  «         	                    ||d|g|¬¦  «         || _
        || _        d S )NzLoad atomic lacks type.zload atomicr   )r   r0  r1  r9   r2  r3  rv   r   r@  r   Úorderingr4  )r    r!   r5  rB  r4  r   r"   r#   s          €r$   r   zLoadAtomicInstr.__init__ä  s—   ø€ Øˆ;Ý˜#�{Ñ+Ô+ð <ØÔ(��ð ”XÔ'ð <Ø”hÔ&��å Ð!:Ñ;Ô;Ð;Ý�o˜tÑ$Ô$×-Ò-¨f°c¸=Ø/2¨e¸$ð 	.ñ 	@ô 	@ð 	@à ˆŒØˆŒ
ˆ
ˆ
r%   c                 óæ   — | j         \  }|                     d                     | j        |j        |                     ¦   «         | j        | j        |                      d¬¦  «        ¦  «        ¦  «         d S )Nz+load atomic {0}, {1} {2} {3}, align {4}{5}
Tr5   ©r   r;   r<   r9   r0   rB  r4  r:   )r    r=   ræ   s      r$   r>   zLoadAtomicInstr.descró  su   € Ø”‰ˆØ�
Š
ÐA×HÒHØŒIØŒHØ×ÒÑÔØŒMØŒJØ×$Ò$°4Ð$Ñ8Ô8ñ
ô 
ñ 	ô 	ð 	ð 	ð 	r%   r9  r²   rN   s   @r$   r@  r@  ã  sL   ø€ € € € € ðð ð ð ð ð ð	ð 	ð 	ð 	ð 	ð 	ð 	r%   r@  c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚStoreAtomicInstrc                 ó    •— t          t          | ¦  «                             |t          j        ¦   «         d||g¦  «         || _        || _        d S )Nzstore atomic)r   rF  r   r   r¶   rB  r4  )r    r!   ræ   r5  rB  r4  r#   s         €r$   r   zStoreAtomicInstr.__init__   sP   ø€ ÝÕ Ñ%Ô%×.Ò.¨vµu´~Ñ7GÔ7GØ/=ÀÀS¸zñ	Kô 	Kð 	Kà ˆŒØˆŒ
ˆ
ˆ
r%   c                 ó  — | j         \  }}|                     d                     |j        |                     ¦   «         |j        |                     ¦   «         | j        | j        |                      d¬¦  «        ¦  «        ¦  «         d S )Nz0store atomic {0} {1}, {2} {3} {4}, align {5}{6}
Tr5   rD  )r    r=   ræ   r5  s       r$   r>   zStoreAtomicInstr.descr  s†   € Ø”=‰ˆˆSØ�
Š
ÐF×MÒMØŒHØ×ÒÑÔØŒHØ×ÒÑÔØŒMØŒJØ×$Ò$°4Ð$Ñ8Ô8ñ
ô 
ñ 	ô 	ð 	ð 	ð 	r%   r²   rN   s   @r$   rF  rF  ÿ  sG   ø€ € € € € ðð ð ð ð ð
ð 
ð 
ð 
ð 
ð 
ð 
r%   rF  c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )r0  c                 ó®   •— |r|gnd}t          t          | ¦  «                             ||                     ¦   «         d||¦  «         || _        d | _        d S )Nr   Úalloca)r   r0  r   Ú
as_pointerr1  r4  )r    r!   r"   r  r   r   r#   s         €r$   r   zAllocaInstr.__init__  s]   ø€ Ø#Ð+�E�7�7¨ˆÝ�k˜4Ñ Ô ×)Ò)¨&°#·.².Ñ2BÔ2BÀHØ*2°Dñ	:ô 	:ð 	:à!ˆÔØˆŒ
ˆ
ˆ
r%   c                 óØ  — |                      d                     | j        | j        ¦  «        ¦  «         | j        rI| j        \  }|                      d                     |j        |                     ¦   «         ¦  «        ¦  «         | j        �-|                      d                     | j        ¦  «        ¦  «         | j        r+|                      |  	                    d¬¦  «        ¦  «         d S d S )Nrš   z	, {0} {1}z, align {0}Tr5   )
r;   r<   r   r1  r   r9   r0   r4  r   r:   )r    r=   r3   s      r$   r>   zAllocaInstr.descr  s×   € Ø�
Š
�9×#Ò# D¤K°Ô1DÑEÔEÑFÔFÐFØŒ=ð 	HØ”-‰CˆBØ�JŠJ�{×)Ò)¨"¬'°2×3CÒ3CÑ3EÔ3EÑFÔFÑGÔGÐGØŒ:Ð!Ø�JŠJ�}×+Ò+¨D¬JÑ7Ô7Ñ8Ô8Ð8ØŒ=ð 	EØ�JŠJ�t×/Ò/¸dÐ/ÑCÔCÑDÔDÐDÐDÐDð	Eð 	Er%   r²   rN   s   @r$   r0  r0    sN   ø€ € € € € ðð ð ð ð ðEð Eð Eð Eð Eð Eð Er%   r0  c                   ó(   ‡ — e Zd Z	 dˆ fd„	Zd„ Zˆ xZS )ÚGEPInstrNc           	      óR  •— |�|j         }|| _        nÁ|j         j        s¦|j         }d }d}	|D ]:}
||                     |
¦  «        }}t	          |t
          j        ¦  «        r|j        }	Œ;t	          |t
          j        ¦  «        st	          |t
          j        ¦  «        r|}n|                     |	¦  «        }|j         j	        | _        nt          d¦  «        ‚t          t          | ¦  «                             ||d|gt          |¦  «        z   |¬¦  «         || _        || _        || _        d S )Nr   zGEP lacks type.Úgetelementptrr   )r9   Úsource_etyper2  Úgepr   r   ÚPointerTypeÚ	addrspacerL  r3  rv   r   rO  r   r   ÚpointerÚindicesÚinbounds)r    r!   r5  rW  rX  r   rR  r"   ÚlasttypÚlastaddrspacer�   r#   s              €r$   r   zGEPInstr.__init__'  s7  ø€ àÐ#Ø”(ˆCØ ,ˆDÔÐð ”Ô#ð 	0Ø”(ˆCØˆGØˆMØð 6ð 6�Ø" C§G¢G¨A¡J¤J˜�å˜g¥uÔ'8Ñ9Ô9ð 6Ø$+Ô$5�Møå˜s¥EÔ$5Ñ6Ô6ð 4Ý˜w­Ô(9Ñ:Ô:ð4à��à—n’n ]Ñ3Ô3�Ø #¤Ô 0ˆDÔÐåÐ.Ñ/Ô/Ð/Ý�h˜ÑÔ×&Ò& v¨s°OØ(+ u­t°G©}¬}Ñ'<À4ð 	'ñ 	Iô 	Ið 	IàˆŒØˆŒØ ˆŒˆˆr%   c                 ó2  — d„ | j         D ¦   «         }| j        rdnd}|                     d                     || j        | j        j        | j                             ¦   «         d                     |¦  «        |  	                    d¬¦  «        ¦  «        ¦  «         d S )Nc                 óh   — g | ]/}d                       |j        |                     ¦   «         ¦  «        ‘Œ0S r¹   rº   ©r2   r�   s     r$   r4   z"GEPInstr.descr.<locals>.<listcomp>G  sD   € ð *ð *ð *Øð ×#Ò# A¤F¨A¯OªOÑ,=Ô,=Ñ>Ô>ð *ð *ð *r%   zgetelementptr inboundsrQ  z{0} {1}, {2} {3}, {4} {5}
r.   Tr5   )
rW  rX  r;   r<   rR  rV  r9   r0   r8   r:   )r    r=   rW  r3   s       r$   r>   zGEPInstr.descrF  s¬   € ð*ð *Ø œLð*ñ *ô *ˆà)-¬ÐKÐ%Ð%¸OˆØ�
Š
Ð0×7Ò7ØØÔ$Ø”<Ô$Ø”<×-Ò-Ñ/Ô/Ø—9’9˜WÑ%Ô%Ø×+Ò+¸$Ð+Ñ?Ô?ñô ñ 	ô 	ð 	ð 	ð 	r%   r'   r²   rN   s   @r$   rO  rO  &  sO   ø€ € € € € à"ð!ð !ð !ð !ð !ð !ð>ð ð ð ð ð ð r%   rO  c                   ó2   ‡ — e Zd Zdˆ fd„	Zd„ Zd„ Zd„ Zˆ xZS )ÚPhiInstrr   c                 ór   •— t          t          | ¦  «                             ||dd||¬¦  «         g | _        d S )NÚphir   ró   )r   r_  r   Ú	incomings)r    r!   r"   r   r   r#   s        €r$   r   zPhiInstr.__init__U  sB   ø€ Ý�h˜ÑÔ×&Ò& v¨s°E¸2ÀDØ-2ð 	'ñ 	4ô 	4ð 	4àˆŒˆˆr%   c           
      ó  — d                      d„ | j        D ¦   «         ¦  «        }|                     d                     d                      | j        ¦  «        | j        ||                      d¬¦  «        ¦  «        ¦  «         d S )Nr.   c              3   ó�   K  — | ]A\  }}d                       |                     ¦   «         |                     ¦   «         ¦  «        V — ŒBdS )z
[{0}, {1}]Nrß   )r2   ÚvÚbs      r$   r  z!PhiInstr.descr.<locals>.<genexpr>[  se   è è € ð 5ð 5á!˜Q ð &×,Ò,¨Q¯_ª_Ñ->Ô->Ø-.¯_ª_Ñ->Ô->ñ@ô @ð 5ð 5ð 5ð 5ð 5ð 5r%   zphi {0} {1} {2} {3}
r-   Tr5   )r8   rb  r;   r<   r   r9   r:   )r    r=   Úincss      r$   r>   zPhiInstr.descrZ  s•   € Ø�yŠyð 5ð 5à%)¤^ð5ñ 5ô 5ñ 5ô 5ˆð 	�
Š
Ð*×1Ò1Ø—8’8˜DœJÑ'Ô'Ø”9ØØ×+Ò+¸$Ð+Ñ?Ô?ñ	ô ñ 	ô 	ð 	ð 	ð 	r%   c                 ól   — t          |t          ¦  «        sJ ‚| j                             ||f¦  «         d S r'   )r   r   rb  r;   )r    rè   rÛ   s      r$   Úadd_incomingzPhiInstr.add_incominge  s8   € Ý˜%¥Ñ'Ô'Ð'Ð'Ð'ØŒ×Ò˜u e˜nÑ-Ô-Ð-Ð-Ð-r%   c                 ó<   ‡‡— ˆˆfd„| j         D ¦   «         | _         d S )Nc                 ó*   •— g | ]\  }}|‰u r‰n||f‘ŒS r   r   )r2   ræ   rà   rB   rA   s      €€r$   r4   z*PhiInstr.replace_usage.<locals>.<listcomp>j  s>   ø€ ð <ð <ð <Ù(˜s Cð $'¨# : :˜C˜C°3¸Ð=ð <ð <ð <r%   )rb  )r    rA   rB   s    ``r$   rD   zPhiInstr.replace_usagei  s9   øø€ ð<ð <ð <ð <ð <Ø,0¬Nð<ñ <ô <ˆŒˆˆr%   )r   )rG   rJ   rK   r   r>   ri  rD   rM   rN   s   @r$   r_  r_  T  sj   ø€ € € € € ðð ð ð ð ð ð
	ð 	ð 	ð.ð .ð .ð<ð <ð <ð <ð <ð <ð <r%   r_  c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚExtractElementr   c                 ó6  •— t          |j        t          j        ¦  «        st	          d¦  «        ‚t          |j        t          j        ¦  «        st	          d¦  «        ‚|j        j        }t          t          | ¦  «         	                    ||d||g|¬¦  «         d S )Nú!vector needs to be of VectorType.úindex needs to be of IntType.Úextractelementr   )
r   r9   r   r  r{   rÁ   Úelementr   rm  r   )r    r!   ÚvectorÚindexr   r"   r#   s         €r$   r   zExtractElement.__init__o  sŸ   ø€ Ý˜&œ+¥uÔ'7Ñ8Ô8ð 	AÝÐ?Ñ@Ô@Ð@Ý˜%œ*¥e¤mÑ4Ô4ð 	=ÝÐ;Ñ<Ô<Ð<ØŒkÔ!ˆÝ�n˜dÑ#Ô#×,Ò,¨V°SÐ:JØ.4°e¨_À4ð 	-ñ 	Iô 	Ið 	Ið 	Ið 	Ir%   c                 ó¬   — d                      d„ | j        D ¦   «         ¦  «        }|                     d                     | j        |¬¦  «        ¦  «         d S )Nr.   c              3   óp   K  — | ]1}d                       |j        |                     ¦   «         ¦  «        V — Œ2dS ©rš   Nrº   r1   s     r$   r  z'ExtractElement.descr.<locals>.<genexpr>y  óa   è è € ð Ið IØ46ð '×-Ò-Ø”7˜B×,Ò,Ñ.Ô.ñ0ô 0ð Ið Ið Ið Ið Ið Ir%   ú{opname} {operands}
©r   r   ©r8   r   r;   r<   r   ©r    r=   r   s      r$   r>   zExtractElement.descrx  óy   € Ø—9’9ð Ið IØ:>¼-ðIñ Iô Iñ Iô Iˆà�
Š
Ð*×1Ò1Øœ+°ð 2ñ :ô :ñ 	;ô 	;ð 	;ð 	;ð 	;r%   r+  r²   rN   s   @r$   rm  rm  n  sR   ø€ € € € € ðIð Ið Ið Ið Ið Ið;ð ;ð ;ð ;ð ;ð ;ð ;r%   rm  c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚInsertElementr   c                 ó¼  •— t          |j        t          j        ¦  «        st	          d¦  «        ‚|j        |j        j        k    s2t	          d                     |j        j        |j        ¦  «        ¦  «        ‚t          |j        t          j        ¦  «        st	          d¦  «        ‚|j        }t          t          | ¦  «         
                    ||d|||g|¬¦  «         d S )Nro  z$value needs to be of type {} not {}.rp  Úinsertelementr   )r   r9   r   r  r{   rr  r<   rÁ   r   r  r   )r    r!   rs  rè   rt  r   r"   r#   s          €r$   r   zInsertElement.__init__€  sã   ø€ Ý˜&œ+¥uÔ'7Ñ8Ô8ð 	AÝÐ?Ñ@Ô@Ð@ØŒz˜Vœ[Ô0Ò0Ð0ÝØ6×=Ò=Ø”KÔ'¨¬ñ5ô 5ñ6ô 6ð 6õ ˜%œ*¥e¤mÑ4Ô4ð 	=ÝÐ;Ñ<Ô<Ð<ØŒkˆÝ�m˜TÑ"Ô"×+Ò+¨F°C¸Ø-3°U¸EÐ,BÈð 	,ñ 	Oô 	Oð 	Oð 	Oð 	Or%   c                 ó¬   — d                      d„ | j        D ¦   «         ¦  «        }|                     d                     | j        |¬¦  «        ¦  «         d S )Nr.   c              3   óp   K  — | ]1}d                       |j        |                     ¦   «         ¦  «        V — Œ2dS rw  rº   r1   s     r$   r  z&InsertElement.descr.<locals>.<genexpr>Ž  rx  r%   ry  rz  r{  r|  s      r$   r>   zInsertElement.descr�  r}  r%   r+  r²   rN   s   @r$   r  r    sR   ø€ € € € € ðOð Oð Oð Oð Oð Oð;ð ;ð ;ð ;ð ;ð ;ð ;r%   r  c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚShuffleVectorr   c                 óN  •‡— t          |j        t          j        ¦  «        st	          d¦  «        ‚|t
          k    r|j        |j        k    rt	          d¦  «        ‚t          |t          ¦  «        rXt          |j        t          j        ¦  «        r9t          |j        j        t          j        ¦  «        r|j        j        j	        dk    st	          d¦  «        ‚t          j        |j        j        |j        j
        ¦  «        }t          |t
          k    r|j        j
        nd|j        j
        z  ¦  «        Št          ˆfd„|j        D ¦   «         ¦  «        s"t          d                     ‰¦  «        ¦  «        ‚t!          t"          | ¦  «                             ||d|||g|¬	¦  «         d S )
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   ó*   •K  — | ]}|j         ‰v V — Œd S r'   )Úconstant)r2   ÚiiÚindex_ranges     €r$   r  z)ShuffleVector.__init__.<locals>.<genexpr>¥  s*   øè è € ÐFÐF°"�2”; +Ð-ÐFÐFÐFÐFÐFÐFr%   zmask values need to be in {0}Úshufflevectorr   )r   r9   r   r  r{   r   r   rr  rÁ   Úwidthr  rw   Úallrˆ  Ú
IndexErrorr<   r   r…  r   )	r    r!   Úvector1Úvector2Úmaskr   r"   rŠ  r#   s	          @€r$   r   zShuffleVector.__init__•  s®  øø€ Ý˜'œ,­Ô(8Ñ9Ô9ð 	BÝÐ@ÑAÔAÐAØ•iÒÐØŒ|˜wœ|Ò+Ð+Ýð !Lñ Mô Mð Må˜4¥Ñ*Ô*ð 	GÝ˜4œ9¥eÔ&6Ñ7Ô7ð	Gå˜DœIÔ-­u¬}Ñ=Ô=ð	Gð ”Ô"Ô(¨BÒ.Ð.ÝÐEÑFÔFÐFÝÔ˜wœ|Ô3°T´Y´_ÑEÔEˆÝØ&­)Ò3Ð3ð $œLÔ.Ð.à!" W¤\Ô%7Ñ!7ñ9ô 9ˆõ ÐFÐFÐFÐF¸¼ÐFÑFÔFÑFÔFð 	ÝØ/×6Ò6°{ÑCÔCñô ð õ 	�m˜TÑ"Ô"×+Ò+¨F°C¸Ø-4°g¸tÐ,DÈ4ð 	,ñ 	Qô 	Qð 	Qð 	Qð 	Qr%   c                 óÄ   — |                      d                     d                     d„ | j        D ¦   «         ¦  «        |                      d¬¦  «        ¦  «        ¦  «         d S )Nzshufflevector {0} {1}
r.   c              3   óp   K  — | ]1}d                       |j        |                     ¦   «         ¦  «        V — Œ2dS rw  rº   r1   s     r$   r  z&ShuffleVector.descr.<locals>.<genexpr>®  sT   è è € ð 6ð 6Ø!#ð '×-Ò-¨b¬g°r×7GÒ7GÑ7IÔ7IÑJÔJð 6ð 6ð 6ð 6ð 6ð 6r%   Tr5   )r;   r<   r8   r   r:   r©   s     r$   r>   zShuffleVector.descr¬  sx   € Ø�
Š
Ð,×3Ò3Ø—9’9ð 6ð 6Ø'+¤}ð6ñ 6ô 6ñ 6ô 6à×+Ò+¸$Ð+Ñ?Ô?ñô ñ 	ô 	ð 	ð 	ð 	r%   r+  r²   rN   s   @r$   r…  r…  ”  sR   ø€ € € € € ðQð Qð Qð Qð Qð Qð.ð ð ð ð ð ð r%   r…  c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚExtractValuer   c                 ó.  •— |j         }	 |D ]}|j        |         }Œn<# t          t          f$ r( t	          dt          |¦  «        ›d|j         ›�¦  «        ‚w xY wt          t          | ¦  «                             ||d|g|¬¦  «         || _	        || _
        d S )NúCan't index at ú in Úextractvaluer   )r9   ÚelementsÚAttributeErrorrŽ  r{   r   r   r•  r   Ú	aggregaterW  )r    r!   ÚaggrW  r   r"   r�   r#   s          €r$   r   zExtractValue.__init__µ  sÆ   ø€ ØŒhˆð	9Øð &ð &�Ø”l 1”o��ð&øå¥
Ð+ð 	9ð 	9ð 	9Ý�)Ý# G™}œ}˜}˜}¨c¬h¨hð8ñ 9ô 9ð 9ð	9øøøõ 	�l˜DÑ!Ô!×*Ò*¨6°3¸Ø,/¨5°tð 	+ñ 	=ô 	=ð 	=ð ˆŒØˆŒˆˆó	   Š �9Ac           
      ó  — d„ | j         D ¦   «         }|                     d                     | j        j        | j                             ¦   «         d                     |¦  «        |                      d¬¦  «        ¦  «        ¦  «         d S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS r   ©ro   r]  s     r$   r4   z&ExtractValue.descr.<locals>.<listcomp>Å  ó   € Ð0Ð0Ð0˜a•3�q‘6”6Ð0Ð0Ð0r%   zextractvalue {0} {1}, {2} {3}
r.   Tr5   )rW  r;   r<   rœ  r9   r0   r8   r:   ©r    r=   rW  s      r$   r>   zExtractValue.descrÄ  s†   € Ø0Ð0 4¤<Ð0Ñ0Ô0ˆà�
Š
Ð4×;Ò;Ø”>Ô&Ø”>×/Ò/Ñ1Ô1Ø—9’9˜WÑ%Ô%Ø×+Ò+¸$Ð+Ñ?Ô?ñ	ô ñ 	ô 	ð 	ð 	ð 	r%   r+  r²   rN   s   @r$   r•  r•  ´  sL   ø€ € € € € ðð ð ð ð ð ðð ð ð ð ð ð r%   r•  c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚInsertValuer   c           
      óÂ  •— |j         }	 |D ]}|j        |         }Œn<# t          t          f$ r( t	          dt          |¦  «        ›d|j         ›�¦  «        ‚w xY w|j         |k    r2t	          d|›dt          |¦  «        ›d|j         ›d|j         ›�¦  «        ‚t          t          | ¦  «                             ||j         d||g|¬¦  «         || _	        || _
        || _        d S )Nr—  r˜  zCan only insert z at z: got Úinsertvaluer   )r9   rš  r›  rŽ  r{   r   r   r¥  r   rœ  rè   rW  )	r    r!   r�  ÚelemrW  r   r"   r�   r#   s	           €r$   r   zInsertValue.__init__Ð  s  ø€ ØŒhˆð	9Øð &ð &�Ø”l 1”o��ð&øå¥
Ð+ð 	9ð 	9ð 	9Ý�)Ý# G™}œ}˜}˜}¨c¬h¨hð8ñ 9ô 9ð 9ð	9øøøð Œ9˜ÒÐÝ�)Ø"˜s˜s¥D¨¡M¤M M M°3´8°8°8¸T¼Y¸YðHñ Iô Ið Iå�k˜4Ñ Ô ×)Ò)¨&°#´(¸MØ+.°¨+¸Dð 	*ñ 	Bô 	Bð 	Bð ˆŒØˆŒ
ØˆŒˆˆrž  c                 óT  — d„ | j         D ¦   «         }|                     d                     | j        j        | j                             ¦   «         | j        j        | j                             ¦   «         d                     |¦  «        |                      d¬¦  «        ¦  «        ¦  «         d S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS r   r¡  r]  s     r$   r4   z%InsertValue.descr.<locals>.<listcomp>ã  r¢  r%   z&insertvalue {0} {1}, {2} {3}, {4} {5}
r.   Tr5   )	rW  r;   r<   rœ  r9   r0   rè   r8   r:   r£  s      r$   r>   zInsertValue.descrâ  sœ   € Ø0Ð0 4¤<Ð0Ñ0Ô0ˆà�
Š
Ð<×CÒCØ”>Ô&¨¬×(DÒ(DÑ(FÔ(FØ”:”? D¤J×$<Ò$<Ñ$>Ô$>Ø—9’9˜WÑ%Ô%Ø×+Ò+¸$Ð+Ñ?Ô?ñ	ô ñ 	ô 	ð 	ð 	ð 	r%   r+  r²   rN   s   @r$   r¥  r¥  Ï  sL   ø€ € € € € ðð ð ð ð ð ð$ð ð ð ð ð ð r%   r¥  c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚUnreachablec                 ó„   •— t          t          | ¦  «                             |t          j        ¦   «         ddd¬¦  «         d S )NÚunreachabler   r   r   )r   r¬  r   r   r¶   )r    r!   r#   s     €r$   r   zUnreachable.__init__î  sL   ø€ Ý�k˜4Ñ Ô ×)Ò)¨&µ%´.Ñ2BÔ2BØ*7¸À"ð 	*ñ 	Fô 	Fð 	Fð 	Fð 	Fr%   c                 ó   — || j         dfz  }d S )Nú
)r   r©   s     r$   r>   zUnreachable.descrò  s   € Ø�”˜TÐ"Ñ"ˆˆˆr%   r²   rN   s   @r$   r¬  r¬  í  sL   ø€ € € € € ðFð Fð Fð Fð Fð#ð #ð #ð #ð #ð #ð #r%   r¬  c                   ó(   — e Zd Zdd„Zd„ Zd„ Zd„ ZdS )Ú	InlineAsmFc                 óV   — |j         | _        || _        || _        || _        || _        d S r'   )r|   r9   rx   ÚasmÚ
constraintÚside_effect)r    Úftyper´  rµ  r¶  s        r$   r   zInlineAsm.__init__÷  s0   € ØÔ%ˆŒ	Ø"ˆÔØˆŒØ$ˆŒØ&ˆÔÐÐr%   c                 óŠ   — | j         rdnd}d}|                     |                     || j        | j        ¬¦  «        ¦  «         d S )NÚ
sideeffectr   z(asm {sideeffect} "{asm}", "{constraint}")r¹  r´  rµ  )r¶  r;   r<   r´  rµ  )r    r=   r¹  Úfmts       r$   r>   zInlineAsm.descrþ  sX   € Ø%)Ô%5Ð=�\�\¸2ˆ
Ø8ˆØ�
Š
�3—:’:¨¸¼Ø)-¬ð ñ :ô :ñ 	;ô 	;ð 	;ð 	;ð 	;r%   c                 óZ   — g }|                       |¦  «         d                     |¦  «        S ©Nr   )r>   r8   r©   s     r$   r0   zInlineAsm.get_reference  s&   € ØˆØ�
Š
�3‰ŒˆØ�wŠw�s‰|Œ|Ðr%   c                 ó\   — d                      | j        |                      ¦   «         ¦  «        S )Nrš   rº   r)   s    r$   Ú__str__zInlineAsm.__str__	  s&   € Ø×Ò ¤	¨4×+=Ò+=Ñ+?Ô+?Ñ@Ô@Ð@r%   N)F)rG   rJ   rK   r   r>   r0   r¾  r   r%   r$   r²  r²  ö  sZ   € € € € € ð'ð 'ð 'ð 'ð;ð ;ð ;ðð ð ð
Að Að Að Að Ar%   r²  c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )Ú	AtomicRMWc                 óŒ   •— t          t          | ¦  «                             ||j        d||f|¬¦  «         || _        || _        d S )NÚ	atomicrmwr   )r   rÀ  r   r9   Ú	operationrB  )r    r!   r3   r5  ræ   rB  r   r#   s          €r$   r   zAtomicRMW.__init__  sM   ø€ Ý�i˜ÑÔ×'Ò'¨°´¸+Ø),¨c¨
¸ð 	(ñ 	?ô 	?ð 	?àˆŒØ ˆŒˆˆr%   c                 ó  — | j         \  }}d}|                     |                     | j        |j        |                     ¦   «         |j        |                     ¦   «         | j        |                      d¬¦  «        ¬¦  «        ¦  «         d S )NzBatomicrmw {op} {ptrty} {ptr}, {valty} {val} {ordering} {metadata}
Tr5   )r3   Úptrtyr5  Úvaltyræ   rB  r   )r   r;   r<   rÃ  r9   r0   rB  r:   )r    r=   r5  ræ   rº  s        r$   r>   zAtomicRMW.descr  s–   € Ø”=‰ˆˆSðˆà�
Š
�3—:’: ¤Ø$'¤HØ"%×"3Ò"3Ñ"5Ô"5Ø$'¤HØ"%×"3Ò"3Ñ"5Ô"5Ø'+¤}Ø'+×'?Ò'?Ø04ð (@ñ (6ô (6ð ñ  ô  ñ 	!ô 	!ð 	!ð 	!ð 	!r%   r²   rN   s   @r$   rÀ  rÀ    sG   ø€ € € € € ð!ð !ð !ð !ð !ð!ð !ð !ð !ð !ð !ð !r%   rÀ  c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚCmpXchgzdThis instruction has changed since llvm3.5.  It is not compatible with
    older llvm versions.
    c                 óÞ   •— t          j        |j        t          j        d¦  «        g¦  «        }t	          t
          | ¦  «                             ||d|||f|¬¦  «         || _        || _        d S )Nrk   Úcmpxchgr   )	r   ÚLiteralStructTyper9   rÁ   r   rÈ  r   rB  Úfailordering)
r    r!   r5  Úcmpræ   rB  rÌ  r   Úouttyper#   s
            €r$   r   zCmpXchg.__init__(  st   ø€ ÝÔ)¨3¬8µU´]À1Ñ5EÔ5EÐ*FÑGÔGˆÝ�g�tÑÔ×%Ò% f¨g°yØ'*¨C° o¸Dð 	&ñ 	Bô 	Bð 	Bà ˆŒØ(ˆÔÐÐr%   c                 ó<  — | j         \  }}}d}|                     |                     |j        |                     ¦   «         |j        |                     ¦   «         |                     ¦   «         | j        | j        |                      d¬¦  «        ¬¦  «        ¦  «         d S )NzScmpxchg {ptrty} {ptr}, {ty} {cmp}, {ty} {val} {ordering} {failordering} {metadata}
Tr5   )rÅ  r5  r¡   rÍ  ræ   rB  rÌ  r   )r   r;   r<   r9   r0   rB  rÌ  r:   )r    r=   r5  Úcmpvalræ   rº  s         r$   r>   zCmpXchg.descr/  s©   € Øœ=ÑˆˆV�Sð,ˆà�
Š
�3—:’: C¤HØ"%×"3Ò"3Ñ"5Ô"5Ø!'¤Ø"(×"6Ò"6Ñ"8Ô"8Ø"%×"3Ò"3Ñ"5Ô"5Ø'+¤}Ø+/Ô+<Ø'+×'?Ò'?Ø04ð (@ñ (6ô (6ð ñ 	 ô 	 ñ 		!ô 		!ð 		!ð 		!ð 		!r%   ©rG   rJ   rK   Ú__doc__r   r>   rM   rN   s   @r$   rÈ  rÈ  #  sQ   ø€ € € € € ðð ð)ð )ð )ð )ð )ð!ð !ð !ð !ð !ð !ð !r%   rÈ  c                   ó   — e Zd Zd„ Zd„ ZdS )Ú_LandingPadClausec                 ó   — || _         d S r'   )rè   )r    rè   s     r$   r   z_LandingPadClause.__init__@  s   € ØˆŒ
ˆ
ˆ
r%   c                 ó~   — d                      | j        | j        j        | j                             ¦   «         ¬¦  «        S )Nz{kind} {type} {value})Úkindr9   rè   )r<   r×  rè   r9   r0   r)   s    r$   r¾  z_LandingPadClause.__str__C  s<   € Ø&×-Ò-Ø”Ø””Ø”*×*Ò*Ñ,Ô,ð .ñ .ô .ð 	.r%   N)rG   rJ   rK   r   r¾  r   r%   r$   rÔ  rÔ  ?  s2   € € € € € ðð ð ð.ð .ð .ð .ð .r%   rÔ  c                   ó   — e Zd ZdZdS )ÚCatchClauseÚcatchN)rG   rJ   rK   r×  r   r%   r$   rÙ  rÙ  J  s   € € € € € Ø€D€D€Dr%   rÙ  c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )ÚFilterClauseÚfilterc                 óÈ   •— t          |t          ¦  «        sJ ‚t          |j        t          j        ¦  «        sJ ‚t          t          | ¦  «                             |¦  «         d S r'   )r   r   r9   r   Ú	ArrayTyper   rÜ  r   )r    rè   r#   s     €r$   r   zFilterClause.__init__Q  sW   ø€ Ý˜%¥Ñ*Ô*Ð*Ð*Ð*Ý˜%œ*¥e¤oÑ6Ô6Ð6Ð6Ð6Ý�l˜DÑ!Ô!×*Ò*¨5Ñ1Ô1Ð1Ð1Ð1r%   )rG   rJ   rK   r×  r   rM   rN   s   @r$   rÜ  rÜ  N  s=   ø€ € € € € Ø€Dð2ð 2ð 2ð 2ð 2ð 2ð 2ð 2ð 2r%   rÜ  c                   ó,   ‡ — e Zd Zdˆ fd„	Zd„ Zd„ Zˆ xZS )ÚLandingPadInstrr   Fc                 ó~   •— t          t          | ¦  «                             ||dg |¬¦  «         || _        g | _        d S )NÚ
landingpadr   )r   rá  r   ÚcleanupÚclauses)r    r!   r"   r   rä  r#   s        €r$   r   zLandingPadInstr.__init__X  sG   ø€ Ý�o˜tÑ$Ô$×-Ò-¨f°c¸<ÈØ37ð 	.ñ 	9ô 	9ð 	9àˆŒØˆŒˆˆr%   c                 óh   — t          |t          ¦  «        sJ ‚| j                             |¦  «         d S r'   )r   rÔ  rå  r;   )r    Úclauses     r$   Ú
add_clausezLandingPadInstr.add_clause^  s5   € Ý˜&Õ"3Ñ4Ô4Ð4Ð4Ð4ØŒ×Ò˜FÑ#Ô#Ð#Ð#Ð#r%   c           
      óÀ   — d}|                      |                     | j        | j        rdndd                     d„ | j        D ¦   «         ¦  «        ¬¦  «        ¦  «         d S )Nz$landingpad {type}{cleanup}{clauses}
z cleanupr   c                 ó8   — g | ]}d                       |¦  «        ‘ŒS )z

      {0})r<   )r2   rç  s     r$   r4   z)LandingPadInstr.descr.<locals>.<listcomp>f  s<   € ð /Kð /Kð /KØ39ð 0=×/CÒ/CÀFÑ/KÔ/Kð /Kð /Kð /Kr%   )r9   rä  rå  )r;   r<   r9   rä  r8   rå  )r    r=   rº  s      r$   r>   zLandingPadInstr.descrb  s„   € Ø5ˆØ�
Š
�3—:’: 4¤9Ø48´LÐ&H j jÀbØ&(§g¢gð /Kð /KØ=A¼\ð/Kñ /Kô /Kñ 'Lô 'Lð ñ  ô  ñ 	!ô 	!ð 	!ð 	!ð 	!r%   )r   F)rG   rJ   rK   r   rè  r>   rM   rN   s   @r$   rá  rá  W  s[   ø€ € € € € ðð ð ð ð ð ð$ð $ð $ð!ð !ð !ð !ð !ð !ð !r%   rá  c                   ó2   ‡ — e Zd ZdZh d£Zdˆ fd„	Zd„ Zˆ xZS )ÚFencez|
    The `fence` instruction.

    As of LLVM 5.0.1:

    fence [syncscope("<target-scope>")] <ordering>  ; yields void
    >   Úacq_relÚacquireÚreleaseÚseq_cstNr   c                 ó,  •— t          t          | ¦  «                             |t          j        ¦   «         dd|¬¦  «         || j        vr=d}t          |                     |d                     | j        ¦  «        ¦  «        ¦  «        ‚|| _	        || _
        d S )NÚfencer   r   z3Invalid fence ordering "{0}"! Should be one of {1}.r.   )r   rì  r   r   r¶   ÚVALID_FENCE_ORDERINGSrv   r<   r8   rB  Útargetscope)r    r!   rB  rô  r   r„   r#   s         €r$   r   zFence.__init__v  s    ø€ Ý�e�TÑÔ×#Ò# F­E¬NÑ,<Ô,<¸gÀrØ)-ð 	$ñ 	/ô 	/ð 	/à˜4Ô5Ð5Ð5ØIˆCÝ˜SŸ[š[¨Ø)-¯ª°4Ô3MÑ)NÔ)NñPô Pñ Qô Qð Qà ˆŒØ&ˆÔÐÐr%   c                 ó°   — | j         €d}nd                     | j         ¦  «        }d}|                     |                     || j        ¬¦  «        ¦  «         d S )Nr   zsyncscope("{0}") zfence {syncscope}{ordering}
)Ú	syncscoperB  )rô  r<   r;   rB  )r    r=   rö  rº  s       r$   r>   zFence.descr€  si   € ØÔÐ#ØˆIˆIà+×2Ò2°4Ô3CÑDÔDˆIà-ˆØ�
Š
�3—:’:¨	Ø'+¤}ð ñ  ô  ñ 	!ô 	!ð 	!ð 	!ð 	!r%   r¼  )rG   rJ   rK   rÒ  ró  r   r>   rM   rN   s   @r$   rì  rì  k  se   ø€ € € € € ðð ð IÐHÐHÐð'ð 'ð 'ð 'ð 'ð 'ð	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!r%   rì  c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚCommentz
    A line comment.
    c                 ó®   •— t          t          | ¦  «                             |t          j        ¦   «         ddd¬¦  «         d|vs
J d¦   «         ‚|| _        d S )Nú;r   r   r   r°  zComment cannot contain new line)r   rø  r   r   r¶   Útext)r    r!   rû  r#   s      €r$   r   zComment.__init__‘  sb   ø€ Ý�g�tÑÔ×%Ò% f­e¬nÑ.>Ô.>ÀÀRØ+-ð 	&ñ 	/ô 	/ð 	/à˜4ÐÐÐÐ!BÑÔÐØˆŒ	ˆ	ˆ	r%   c                 ó@   — |                      d| j        › �¦  «         d S )Nz; )r;   rû  r©   s     r$   r>   zComment.descr—  s%   € Ø�
Š
Ð#˜œ	Ð#Ð#Ñ$Ô$Ð$Ð$Ð$r%   rÑ  rN   s   @r$   rø  rø  Œ  sQ   ø€ € € € € ðð ðð ð ð ð ð%ð %ð %ð %ð %ð %ð %r%   rø  N);rÒ  Úllvmlite.irr   Úllvmlite.ir.valuesr   r   r   r   r   r	   r
   r   r   r   Úllvmlite.ir._utilsr   r   rP   rY   rp   r_   ri   r¬   r´   r¼   rÈ   rÎ   rÒ   rÔ   râ   rî   rð   rý   r
  r  r(  r-  r;  r@  rF  r0  rO  r_  rm  r  r…  r•  r¥  r¬  Úobjectr²  rÀ  rÈ  rÔ  rÙ  rÜ  rá  rì  rø  r   r%   r$   ú<module>r     s¥  ððð ð Ð Ð Ð Ð Ð ð?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ,Ð +Ð +Ð +Ð +Ð +ð'(ð '(ð '(ð '(ð '(�*˜lñ '(ô '(ð '(ðTAð Að Að Að A˜,ñ Aô Að Að
 �IÐ<Ð<Ð<Ñ=Ô=Ð ð+ð +ð +ð +ð +�Lñ +ô +ð +ð
m,ð m,ð m,ð m,ð m,�ñ m,ô m,ð m,ð`ð ð ð ð �)ñ ô ð ð*
Dð 
Dð 
Dð 
Dð 
D�ñ 
Dô 
Dð 
Dð	&ð 	&ð 	&ð 	&ð 	&�{ñ 	&ô 	&ð 	&ðAð Að Að Að Aˆ*ñ Aô Að Að0	ð 	ð 	ð 	ð 	ˆZñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð(¨*ñ 	ô 	ð 	ðð ð ð ð Ð% zñ ô ð ð0ð ð ð ð Ð" Jñ ô ð ð<	ð 	ð 	ð 	ð 	ˆZñ 	ô 	ð 	ðð ð ð ð �+ñ ô ð ð:ð ð ð ð �;ñ ô ð ðBð ð ð ð �ñ ô ð ð"ð ð ð ð �ñ ô ð ð0ð ð ð ð �ñ ô ð ðð ð ð ð �ñ ô ð ð<ð ð ð ð �ñ ô ð ð*ð ð ð ð �kñ ô ð ð8ð ð ð ð �{ñ ô ð ð(Eð Eð Eð Eð E�+ñ Eô Eð Eð&+ð +ð +ð +ð +ˆ{ñ +ô +ð +ð\<ð <ð <ð <ð <ˆ{ñ <ô <ð <ð4;ð ;ð ;ð ;ð ;�[ñ ;ô ;ð ;ð";ð ;ð ;ð ;ð ;�Kñ ;ô ;ð ;ð*ð ð ð ð �Kñ ô ð ð@ð ð ð ð �;ñ ô ð ð6ð ð ð ð �+ñ ô ð ð<#ð #ð #ð #ð #�+ñ #ô #ð #ðAð Að Að Að A�ñ Aô Að Að.!ð !ð !ð !ð !�ñ !ô !ð !ð,!ð !ð !ð !ð !ˆkñ !ô !ð !ð8.ð .ð .ð .ð .˜ñ .ô .ð .ðð ð ð ð Ð#ñ ô ð ð2ð 2ð 2ð 2ð 2Ð$ñ 2ô 2ð 2ð!ð !ð !ð !ð !�kñ !ô !ð !ð(!ð !ð !ð !ð !ˆKñ !ô !ð !ðB%ð %ð %ð %ð %ˆkñ %ô %ð %ð %ð %r%   