§
    �Ûg	|  ã                   óÔ  — 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          €úN/granary/edev/quantum/lib/python3.11/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)ÚnoreturnÚnounwindÚreadonlyÚreadnoneÚnoinlineÚalwaysinlineN©rG   rJ   rK   Ú	frozensetÚ_knownr   r%   r$   rP   rP   6   s.   € € € € € ØˆYð 4ð 4ð 4ñ 5ô 5€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ÚreassocNrW   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 )	NrZ   r   r   zInvalid argument index {}z%Type of #{0} arg mismatch: {1} != {2}é   Úcallr   )r   r   Úcalling_conventionÚcconvÚstrÚTailMarkerOptionsrZ   r^   ÚfastmathrP   Ú
attributesÚarg_attributesÚitemsÚlenÚ
ValueErrorr<   r   r   ÚrangeÚfunction_typeÚargsr   ÚMetaDataTyper9   r	   Ú	TypeErrorr   rh   r   Úreturn_type)r    r!   Úfuncrx   r   rm   rZ   rp   Ú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 ©Nrj   r†   r)   s    r$   rx   zCallInstr.argsw   s   € àŒ}˜Q˜R˜RÔ Ð r%   c                 ó\   — |j         | j        j         k    rt          d¦  «        ‚|| _        d S )Nz"New function has incompatible type)rw   r‡   rz   )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})rr   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   )rZ   r3   r‡   rp   rx   ÚattrÚmeta)r8   Ú	enumeraterx   r‡   rw   Úvar_argr{   r<   r0   rm   rZ   rq   r•   rp   r;   r   r:   )r    r=   Úadd_metadatarx   Ú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‡   Úsetterrx   r�   r‘   r¥   r>   rM   rN   s   @r$   rh   rh   C   sæ   ø€ € € € € ØEIØ26ð)Pð )Pð )Pð )Pð )Pð )PðV ð ð  ñ „Xð ð „]ð%ð %ñ „]ð%ð ð!ð !ñ „Xð!ðð ð ð
 ðð ñ „Xðð(ð (ð (ðT,ð ,ð ,ð ,ð ,ð ,ð ,r%   rh   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)rZ   rp   r}   r~   Úinvoke)r   r   r   r«   r   r   Ú	normal_toÚ	unwind_to)r    r!   r|   rx   r®   r¯   r   rm   rp   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+   ru   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 rj   )r   r   )ÚVALID_OPru   Ú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   rj   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>   re   rb   rc   r_   ra   r`   rf   rd   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   c                 ó†   •— t          t          | ¦  «                             ||j        j        d|g|¬¦  «         d | _        d S )NÚloadr   )r   r,  r   r9   ÚpointeeÚalign)r    r!   Úptrr   r#   s       €r$   r   zLoadInstr.__init__²  sG   ø€ Ý�i˜ÑÔ×'Ò'¨°´Ô0@À&Ø),¨°Dð 	(ñ 	:ô 	:ð 	:àˆŒ
ˆ
ˆ
r%   c                 ó  — | j         \  }| j        �d| j        z  }nd}|                     d                     |j        j        |j        |                     ¦   «         ||                      d¬¦  «        ¦  «        ¦  «         d S )Nú
, align %dr   zload {0}, {1} {2}{3}{4}
Tr5   )r   r0  r;   r<   r9   r/  r0   r:   )r    r=   rå   r0  s       r$   r>   zLoadInstr.descr·  sŒ   € Ø”‰ˆØŒ:Ð!Ø  D¤JÑ/ˆEˆEàˆEØ�
Š
Ð.×5Ò5ØŒHÔØŒHØ×ÒÑÔØØ×$Ò$°4Ð$Ñ8Ô8ñ
ô 
ñ 	ô 	ð 	ð 	ð 	r%   r*  r±   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   r5  r   r   rµ   )r    r!   rå   r1  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 )Nr3  r   zstore {0} {1}, {2} {3}{4}{5}
Tr5   )r   r0  r;   r<   r9   r0   r:   )r    r=   rå   r1  r0  s        r$   r>   zStoreInstr.descrË  sš   € Ø”=‰ˆˆSØŒ:Ð!Ø  D¤JÑ/ˆEˆEàˆEØ�
Š
Ð3×:Ò:ØŒHØ×ÒÑÔØŒHØ×ÒÑÔØØ×$Ò$°4Ð$Ñ8Ô8ñ
ô 
ñ 	ô 	ð 	ð 	ð 	r%   r±   rN   s   @r$   r5  r5  Æ  sG   ø€ € € € € ð5ð 5ð 5ð 5ð 5ðð ð ð ð ð ð r%   r5  c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚLoadAtomicInstrr   c                 ó”   •— t          t          | ¦  «                             ||j        j        d|g|¬¦  «         || _        || _        d S )Nzload atomicr   )r   r:  r   r9   r/  Úorderingr0  )r    r!   r1  r<  r0  r   r#   s         €r$   r   zLoadAtomicInstr.__init__Ü  sQ   ø€ Ý�o˜tÑ$Ô$×-Ò-¨f°c´hÔ6FØ.;¸c¸UÈð 	.ñ 	Oô 	Oð 	Oà ˆŒØˆŒ
ˆ
ˆ
r%   c                 óð   — | j         \  }|                     d                     |j        j        |j        |                     ¦   «         | j        | j        |                      d¬¦  «        ¦  «        ¦  «         d S )Nz+load atomic {0}, {1} {2} {3}, align {4}{5}
Tr5   )	r   r;   r<   r9   r/  r0   r<  r0  r:   )r    r=   rå   s      r$   r>   zLoadAtomicInstr.descrâ  sx   € Ø”‰ˆØ�
Š
ÐA×HÒHØŒHÔØŒHØ×ÒÑÔØŒMØŒJØ×$Ò$°4Ð$Ñ8Ô8ñ
ô 
ñ 	ô 	ð 	ð 	ð 	r%   r*  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   r?  r   r   rµ   r<  r0  )r    r!   rå   r1  r<  r0  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   )r   r;   r<   r9   r0   r<  r0  r:   )r    r=   rå   r1  s       r$   r>   zStoreAtomicInstr.descrõ  s†   € Ø”=‰ˆˆSØ�
Š
ÐF×MÒMØŒHØ×ÒÑÔØŒHØ×ÒÑÔØŒMØŒJØ×$Ò$°4Ð$Ñ8Ô8ñ
ô 
ñ 	ô 	ð 	ð 	ð 	r%   r±   rN   s   @r$   r?  r?  î  sG   ø€ € € € € ðð ð ð ð ð
ð 
ð 
ð 
ð 
ð 
ð 
r%   r?  c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚAllocaInstrc                 ó    •— |r|gnd}t          t          | ¦  «                             ||                     ¦   «         d||¦  «         d | _        d S )Nr   Úalloca)r   rC  r   Ú
as_pointerr0  )r    r!   r"   r  r   r   r#   s         €r$   r   zAllocaInstr.__init__  sU   ø€ Ø#Ð+�E�7�7¨ˆÝ�k˜4Ñ Ô ×)Ò)¨&°#·.².Ñ2BÔ2BÀHØ*2°Dñ	:ô 	:ð 	:àˆŒ
ˆ
ˆ
r%   c                 óâ  — |                      d                     | j        | 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   r9   r/  r   r0   r0  r   r:   )r    r=   r3   s      r$   r>   zAllocaInstr.descr	  sÙ   € Ø�
Š
�9×#Ò# D¤K°´Ô1BÑCÔCÑDÔDÐDØŒ=ð 	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$   rC  rC    sN   ø€ € € € € ðð ð ð ð ðEð Eð Eð Eð Eð Eð Er%   rC  c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚGEPInstrc           	      óÖ  •— |j         }d }d}|D ]:}	||                     |	¦  «        }}t          |t          j        ¦  «        r|j        }Œ;t          |t          j        ¦  «        st          |t          j        ¦  «        r|}n|                     |¦  «        }t          t          | ¦  «         	                    ||d|gt          |¦  «        z   |¬¦  «         || _        || _        || _        d S )Nr   Úgetelementptrr   )r9   Úgepr   r   ÚPointerTypeÚ	addrspacerF  r   rI  r   r   ÚpointerÚindicesÚinbounds)r    r!   r1  rP  rQ  r   r"   ÚlasttypÚlastaddrspacer€   r#   s             €r$   r   zGEPInstr.__init__  sñ   ø€ ØŒhˆØˆØˆØð 	2ð 	2ˆAØ §¢¨¡
¤
�SˆGå˜'¥5Ô#4Ñ5Ô5ð 2Ø 'Ô 1�øå˜3¥Ô 1Ñ2Ô2ð 	0Ý˜7¥EÔ$5Ñ6Ô6ð	0àˆCˆCà—.’. Ñ/Ô/ˆCå�h˜ÑÔ×&Ò& v¨s°OØ(+ u­t°G©}¬}Ñ'<À4ð 	'ñ 	Iô 	Ið 	IàˆŒØˆŒØ ˆŒˆˆr%   c                 óF  — d„ | j         D ¦   «         }| j        rdnd}|                     d                     || j        j        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>,  sD   € ð *ð *ð *Øð ×#Ò# A¤F¨A¯OªOÑ,=Ô,=Ñ>Ô>ð *ð *ð *r%   zgetelementptr inboundsrK  z{0} {1}, {2} {3}, {4} {5}
r.   Tr5   )
rP  rQ  r;   r<   rO  r9   r/  r0   r8   r:   )r    r=   rP  r3   s       r$   r>   zGEPInstr.descr+  s±   € ð*ð *Ø œLð*ñ *ô *ˆà)-¬ÐKÐ%Ð%¸OˆØ�
Š
Ð0×7Ò7ØØ”<Ô$Ô,Ø”<Ô$Ø”<×-Ò-Ñ/Ô/Ø—9’9˜WÑ%Ô%Ø×+Ò+¸$Ð+Ñ?Ô?ñô ñ 	ô 	ð 	ð 	ð 	r%   r±   rN   s   @r$   rI  rI    sG   ø€ € € € € ð!ð !ð !ð !ð !ð,ð ð ð ð ð ð r%   rI  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   rX  r   Ú	incomings)r    r!   r"   r   r   r#   s        €r$   r   zPhiInstr.__init__:  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   r[  r;   r<   r   r9   r:   )r    r=   Úincss      r$   r>   zPhiInstr.descr?  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   r[  r;   )r    rç   rÚ   s      r$   Úadd_incomingzPhiInstr.add_incomingJ  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>O  s>   ø€ ð <ð <ð <Ù(˜s Cð $'¨# : :˜C˜C°3¸Ð=ð <ð <ð <r%   )r[  )r    rA   rB   s    ``r$   rD   zPhiInstr.replace_usageN  s9   øø€ ð<ð <ð <ð <ð <Ø,0¬Nð<ñ <ô <ˆŒˆˆr%   )r   )rG   rJ   rK   r   r>   rb  rD   rM   rN   s   @r$   rX  rX  9  sj   ø€ € € € € ðð ð ð ð ð ð
	ð 	ð 	ð.ð .ð .ð<ð <ð <ð <ð <ð <ð <r%   rX  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  rz   rÀ   Úelementr   rf  r   )r    r!   ÚvectorÚindexr   r"   r#   s         €r$   r   zExtractElement.__init__T  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>^  ó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.descr]  óy   € Ø—9’9ð Ið IØ:>¼-ðIñ Iô Iñ Iô Iˆà�
Š
Ð*×1Ò1Øœ+°ð 2ñ :ô :ñ 	;ô 	;ð 	;ð 	;ð 	;r%   r*  r±   rN   s   @r$   rf  rf  S  sR   ø€ € € € € ðIð Ið Ið Ið Ið Ið;ð ;ð ;ð ;ð ;ð ;ð ;r%   rf  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 )Nrh  z$value needs to be of type {} not {}.ri  Úinsertelementr   )r   r9   r   r  rz   rk  r<   rÀ   r   rx  r   )r    r!   rl  rç   rm  r   r"   r#   s          €r$   r   zInsertElement.__init__e  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 rp  r¹   r1   s     r$   r  z&InsertElement.descr.<locals>.<genexpr>s  rq  r%   rr  rs  rt  ru  s      r$   r>   zInsertElement.descrr  rv  r%   r*  r±   rN   s   @r$   rx  rx  d  sR   ø€ € € € € ðOð Oð Oð Oð Oð Oð;ð ;ð ;ð ;ð ;ð ;ð ;r%   rx  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  rz   r   r   rk  rÀ   Úwidthr  rv   Úallr�  Ú
IndexErrorr<   r   r~  r   )	r    r!   Úvector1Úvector2Úmaskr   r"   rƒ  r#   s	          @€r$   r   zShuffleVector.__init__z  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 rp  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~  y  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‡  rz   r   r   rŽ  r   Ú	aggregaterP  )r    r!   ÚaggrP  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   ©rn   rV  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   )rP  r;   r<   r•  r9   r0   r8   r:   ©r    r=   rP  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‡  rz   r   r   rž  r   r•  rç   rP  )	r    r!   r–  ÚelemrP  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š  rV  s     r$   r4   z%InsertValue.descr.<locals>.<listcomp>È  r›  r%   z&insertvalue {0} {1}, {2} {3}, {4} {5}
r.   Tr5   )	rP  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   rw   Ú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ˆ
Ø:ˆØ�
Š
�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   Ú	operationr<  )r    r!   r3   r1  rå   r<  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   Úptrtyr1  Úvaltyrå   r<  r   )r   r;   r<   r¼  r9   r0   r<  r:   )r    r=   r1  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 )Nrj   Úcmpxchgr   )	r   ÚLiteralStructTyper9   rÀ   r   rÁ  r   r<  Úfailordering)
r    r!   r1  Úcmprå   r<  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¾  r1  r    rÆ  rå   r<  rÅ  r   )r   r;   r<   r9   r0   r<  rÅ  r:   )r    r=   r1  Ú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__(  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Ò  /  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__6  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Õ  3  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__=  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_clauseC  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>K  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.descrG  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Ú  <  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_ORDERINGSru   r<   r8   r<  Útargetscope)r    r!   r<  rí  r   rƒ   r#   s         €r$   r   zFence.__init__[  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}
)Ú	syncscoper<  )rí  r<   r;   r<  )r    r=   rï  r³  s       r$   r>   zFence.descre  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å  P  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__v  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ñ  q  sQ   ø€ € € € € ðð ðð ð ð ð ð%ð %ð %ð %ð %ð %ð %r%   rñ  N);rË  Úllvmlite.irr   Úllvmlite.ir.valuesr   r   r   r   r   r	   r
   r   r   r   Úllvmlite.ir._utilsr   r   rP   rX   ro   r^   rh   r«   r³   r»   rÇ   rÍ   rÑ   rÓ   rá   rí   rï   rü   r	  r  r'  r,  r5  r:  r?  rC  rI  rX  rf  rx  r~  rŽ  rž  r¥  Úobjectr«  r¹  rÁ  rÍ  rÒ  rÕ  rÚ  rå  rñ  r   r%   r$   ú<module>rú     s�  ððð ð Ð Ð Ð Ð Ð ð?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ,Ð +Ð +Ð +Ð +Ð +ð'(ð '(ð '(ð '(ð '(�*˜lñ '(ô '(ð '(ðT5ð 5ð 5ð 5ð 5˜,ñ 5ô 5ð 5ð
 �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ñ ô ð ð&ð ð ð ð �{ñ ô ð ð(Eð Eð Eð Eð E�+ñ Eô Eð Eð$"ð "ð "ð "ð "ˆ{ñ "ô "ð "ðJ<ð <ð <ð <ð <ˆ{ñ <ô <ð <ð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%   