Ë
    7^(hi5  ã            
       ó$  — d dl Z d dlZd dlmZmZ d dlmZmZmZ  G d„ d«      Z	dee
   fd„Zde
fd„Z G d	„ d
e«      Z G d„ de«      Z G d„ d«      ZdgZde
de
de
de
ddf
d„Zedk(  r§ e j&                  «       Zej+                  dddd¬«       ej+                  ddd¬«       ej+                  ddd¬«       ej+                  ddd d!¬«       ej-                  «       Z eej0                  ej2                  ej4                  ej6                  «       yy)"é    N)ÚABCÚabstractmethod)ÚDictÚListÚOptionalc                   óò   — e Zd ZU eed<   eed<   eed<   ee   ed<   ee   ed<   dededed	ee   d
ee   ddfd„Zedefd„«       Zedefd„«       Z	edefd„«       Z
edee   fd„«       Zedee   fd„«       Zy)ÚSymbolÚ_nameÚ_op_nameÚ	_ret_typeÚ
_arg_namesÚ
_arg_typesÚnameÚop_nameÚret_typeÚ	arg_namesÚ	arg_typesÚreturnNc                 ón   — || _         || _        || _        t        |«      | _        t        |«      | _        y)a#  
        A symbol is a function declaration.
        :param name: name of the symbol
        :param op_name: name of the operation
        :param ret_type: return type of the operation
        :param arg_names: names of the arguments
        :param arg_types: types of the arguments
        N)r
   r   r   Úlistr   r   )Úselfr   r   r   r   r   s         úW/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/triton/tools/build_extern.pyÚ__init__zSymbol.__init__   s/   € ð  ˆŒ
ØˆŒØ!ˆŒÜ˜y›/ˆŒÜ˜y›/ˆ�ó    c                 ó   — | j                   S ©N©r
   ©r   s    r   r   zSymbol.name$   ó   € à�z‰zÐr   c                 ó   — | j                   S r   )r   r   s    r   r   zSymbol.op_name(   ó   € à�}‰}Ðr   c                 ó   — | j                   S r   )r   r   s    r   r   zSymbol.ret_type,   ó   € à�~‰~Ðr   c                 ó   — | j                   S r   )r   r   s    r   r   zSymbol.arg_names0   ó   € à�‰Ðr   c                 ó   — | j                   S r   )r   r   s    r   r   zSymbol.arg_types4   r%   r   )Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__r   r   Úpropertyr   r   r   r   r   © r   r   r	   r	      sû   … ØƒJØƒMØƒNØ�S‘	ÓØ�S‘	Óð*àð*ð ð*ð ð	*ð
 ˜‘9ð*ð ˜‘9ð*ð 
ó*ð, ð�cò ó ðð ð˜ò ó ðð ð˜#ò ó ðð ð˜4 ™9ò ó ðð ð˜4 ™9ò ó ñr   r	   r   c                 óL   — | dk(  ry| dk(  ry| dk(  ry| dk(  ry| d	k(  ry
| dk(  ryy )NÚi32Úint32Úu32Úuint32Úi64Úint64Úu64Úuint64ÚfloatÚfp32ÚdoubleÚfp64r-   ©Útype_strs    r   Úconvert_typer=   9   sI   € Ø�5ÒØØ	�UÒ	ØØ	�UÒ	ØØ	�UÒ	ØØ	�WÒ	ØØ	�XÒ	Øð r   c                 ó   — | dk(  ry| dk(  ry| S )Nr0   r2   r4   r6   r-   r;   s    r   Úto_unsignedr?   K   s   € Ø�7ÒØØ	�WÒ	Øàˆr   c                   óþ   — e Zd ZU eed<   eed<   eeef   ed<   eed<   eed<   	 	 ddededed	ed
df
d„Ze	d
efd„«       Z
e	d
efd„«       Ze	d
eeef   fd„«       Ze	d
efd„«       Zedd„«       Zed
efd„«       Zdd„Zy)ÚExternLibraryr
   Ú_pathÚ_symbolsÚ_formatÚ	_groupingr   ÚpathÚformatÚgroupingr   Nc                 óJ   — || _         || _        i | _        || _        || _        y)zÇ
        Abstract class for extern library.
        :param name: name of the library
        :param path: path of the library
        :param format: whether to format the generated stub file
        N)r
   rB   rC   rD   rE   )r   r   rF   rG   rH   s        r   r   zExternLibrary.__init__[   s'   € ð ˆŒ
ØˆŒ
ØˆŒØˆŒØ!ˆ�r   c                 ó   — | j                   S r   r   r   s    r   r   zExternLibrary.namen   r   r   c                 ó   — | j                   S r   ©rB   r   s    r   rF   zExternLibrary.pathr   r   r   c                 ó   — | j                   S r   )rC   r   s    r   ÚsymbolszExternLibrary.symbolsv   r!   r   c                 ó   — | j                   S r   )rE   r   s    r   rH   zExternLibrary.groupingz   r#   r   c                  ó   — y r   r-   )r   Ú
input_files     r   Úparse_symbolszExternLibrary.parse_symbols~   ó   € àr   c                  ó   — y r   r-   r   s    r   Ú_output_stubszExternLibrary._output_stubs‚   rS   r   c                 óô  — | j                  «       }|�t        |«      dk(  rt        d«      ‚|› d| j                  › d�}t	        |d«      5 }|j                  |«       |j                  «        | j                  rmt        j                  dddd	|gt        j                  ¬
«      j                  «        t        j                  d|gt        j                  ¬
«      j                  «        d d d «       y # 1 sw Y   y xY w)Nr   zfile_str is emptyú/z.pyÚwÚautopep8z-az-rz-i©ÚstdoutÚisort)rU   ÚlenÚ	Exceptionr
   ÚopenÚwriteÚcloserD   Ú
subprocessÚPopenÚPIPEÚcommunicate)r   Ú
output_dirÚfile_strÚoutput_fileÚfs        r   Úgenerate_stub_filez ExternLibrary.generate_stub_file†   sÑ   € Ø×%Ñ%Ó'ˆØÐœs 8›}°Ò1ÜÐ/Ó0Ð0à#˜ A d§j¡j \°Ð5ˆÜ�+˜sÓ#ð 	_ qØ�G‰G�HÔØ�G‰GŒIØ�|Š|Ü× Ñ  *¨d°D¸$ÀÐ!LÔU_×UdÑUdÔe×qÑqÔsÜ× Ñ  '¨;Ð!7Ä
ÇÁÔP×\Ñ\Ô^÷	_÷ 	_ñ 	_ús   Á
BC.Ã.C7)TT©r   N)r'   r(   r)   r*   r+   r   r	   Úboolr   r,   r   rF   rN   rH   r   rR   rU   rj   r-   r   r   rA   rA   T   s  … ØƒJØƒJØ�3˜�;ÑÓØƒMØƒOð Øñ"àð"ð ð"ð ð	"ð
 ð"ð 
ó"ð& ð�cò ó ðð ð�cò ó ðð ð˜˜c 6˜kÑ*ò ó ðð ð˜$ò ó ðð òó ðð ð˜sò ó ðô_r   rA   c                   ót   ‡ — e Zd ZU eeee   f   ed<   dˆ fd„Ze	de
e   fd„«       Zdd„Zdd„Zdefd„Zˆ xZS )	Ú	LibdeviceÚ_symbol_groupsr   c                 óB   •— t         ‰| �  d|«       i | _        d| _        y)z_
        Constructor for Libdevice.
        :param path: path of the libdevice library
        Ú	libdeviceTN)Úsuperr   ro   Úis_pure)r   rF   Ú	__class__s     €r   r   zLibdevice.__init__—   s#   ø€ ô
 	‰Ñ˜ dÔ+Ø ˆÔØˆ�r   c                 óÂ  — | j                  d«      }|d   }|d   }|j                  «       }|d   dk(  ry t        |d   «      }|€y |j                  d«      }|d   j                  dd«      }|j                  dd«      }d|v ry |d   j                  d	«      }	g }
g }t        |	«      D ]U  \  }}t        |j                  «       d   «      }|€ y d
t	        |«      z   }|
j                  |«       |j                  |«       ŒW |dk(  rt        |
d   «      |
d<   n=|j                  d«      r,t        |«      }t        |
«      D ]  \  }}t        |«      |
|<   Œ t        |||||
«      S )Nú@r   é   Úinternalú(Ú Ú__nv_Úieeeú,ÚargÚsadéÿÿÿÿÚu)	Úsplitr=   ÚreplaceÚ	enumerater*   Úappendr?   Ú
startswithr	   )ÚlineÚentriesÚret_strÚfunc_strÚret_strsr   Ú	func_strsÚ	func_namer   Úarg_strsr   r   ÚiÚarg_strÚarg_typeÚarg_names                   r   Ú_extract_symbolzLibdevice._extract_symbol    s�  € ð —*‘*˜S“/ˆØ˜!‘*ˆØ˜1‘:ˆà—=‘=“?ˆØ�A‰;˜*Ò$ØÜ ¨¡Ó,ˆØÐØà—N‘N 3Ó'ˆ	Ø˜a‘L×(Ñ(¨¨bÓ1ˆ	Ø×#Ñ# G¨RÓ0ˆØ�WÑØà˜Q‘<×%Ñ% cÓ*ˆØˆ	Øˆ	Ü# HÓ-ò 	'‰JˆAˆwÜ# G§M¡M£O°AÑ$6Ó7ˆHØÐÙØœs 1›v‘~ˆHØ×Ñ˜XÔ&Ø×Ñ˜XÕ&ð	'ð �eÒä'¨	°"©Ó6ˆI�bŠMØ×Ñ Ô$ô # 8Ó,ˆHÜ(¨Ó3ò 5‘��8Ü*¨8Ó4�	˜!’ð5ä�i ¨(°I¸yÓIÐIr   c                 ó6  — i }| j                   j                  «       D ]  }|j                  }|||<   Œ 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“dd“i dd “d!d"“d#d$“d%d&“d'd(“d)d*“d+d,“d-d.“d/d0“d1d2“d3d2“d4d5“d6d5“d7d8“d9d8“d:d;“d<d;“¥i d=d>“d?d@“dAdB“dCdD“dEdF“dGdH“dIdJ“dKdL“dMdN“dOd“dPd“dQdR“dSdT“dUdV“dWdX“dYdZ“d[d\“¥i d]d^“d_d`“dadb“dcdd“dedf“dgdh“didj“dkdl“dmdl“dndo“dpdo“dqdr“dsdt“dudv“dwdx“dydz“d{d|“¥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�“d•d–“¥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°“d±d²“¥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Ì“dÍdÎ“¥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ì“dídì“¥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“�d�d	“¥�d
�d�dœ¥}| j                   j                  «       D ][  }|j                  }||v r||   }||_        || j                  v r| j                  |   j                  |«       ŒL|g| j                  |<   Œ] y (  NÚllabsÚabsÚacosfÚacosÚacoshfÚacoshÚdadd_rdÚadd_rdÚfadd_rdÚdadd_rnÚadd_rnÚfadd_rnÚdadd_ruÚadd_ruÚfadd_ruÚdadd_rzÚadd_rzÚfadd_rzÚasinfÚasinÚasinhfÚasinhÚatanfÚatanÚatan2fÚatan2ÚatanhfÚatanhÚbrevllÚbrevÚcbrtfÚcbrtÚceilfÚceilÚclzllÚclzÚ	copysignfÚcopysignÚcosfÚcosÚcoshfÚcoshÚcospifÚcospiÚcyl_bessel_i0fÚcyl_bessel_i0Úcyl_bessel_i1fÚcyl_bessel_i1Úfdiv_rdÚdiv_rdÚddiv_rdÚfdiv_rnÚdiv_rnÚddiv_rnÚfdiv_ruÚdiv_ruÚddiv_ruÚfdiv_rzÚdiv_rzÚddiv_rzÚerffÚerfÚerfcfÚerfcÚerfcinvfÚerfcinvÚerfcxfÚerfcxÚerfinvfÚerfinvÚexpfÚexpÚexp10fÚexp10Úexp2fÚexp2Úexpm1fÚexpm1ÚfabsfÚfabsÚfast_fdividefÚfast_dividefÚfdimfÚfdimÚffsllÚffsÚfloorfÚfloorÚfmafÚfmaÚfmaf_rdÚfma_rdÚfmaf_rnÚfma_rnÚfmaf_ruÚfma_ruÚfmaf_rzÚfma_rzÚfmodfÚfmodÚuhaddÚhaddÚhypotfÚhypotÚilogbfÚilogbÚisinffÚisinfÚisinfdÚisnanfÚisnanÚisnandÚj0fÚj0Új1fÚj1ÚjnfÚjnÚldexpfÚldexpÚlgammafÚlgammaÚllrintfÚllrintÚllroundfÚllroundÚlogfÚlogÚlog10fÚlog10Úlog1pfÚlog1pÚlog2fÚlog2ÚlogbfÚlogbÚumaxÚmaxÚllmaxÚullmaxÚfmaxfÚfmaxÚuminÚminÚllminÚullminÚfminfÚfminÚdmul_rdÚmul_rdÚfmul_rdÚdmul_rnÚmul_rnÚfmul_rnÚdmul_ruÚmul_ruÚfmul_ruÚdmul_rzÚmul_rzÚfmul_rzÚumul24Úmul24ÚumulhiÚmulhiÚmul64hiÚumul64hiÚ
nearbyintfÚ	nearbyintÚ
nextafterfÚ	nextafterÚnorm3dfÚnorm3dÚnorm4dfÚnorm4dÚnormcdffÚnormcdfÚnormcdfinvfÚ
normcdfinvÚpopcllÚpopcÚpowifÚpowÚpowiÚpowfÚrcbrtfÚrcbrtÚfrcp_rdÚrcp_rdÚdrcp_rdÚfrcp_rnÚrcp_rnÚdrcp_rnÚfrcp_ruÚrcp_ruÚdrcp_ruÚfrcp_rzÚrcp_rzÚdrcp_rzÚ
remainderfÚ	remainderÚurhaddÚrhaddÚrhypotfÚrhypotÚrintfÚrintÚrnorm3dfÚrnorm3dÚrnorm4dfÚrnorm4dÚroundfÚroundÚrsqrtfÚrsqrtÚ	frsqrt_rnÚrsqrt_rnÚusadr   ÚscalbnfÚscalbnÚsignbitfÚsignbitÚsignbitdÚsinfÚsinÚsinhfÚsinhÚsinpifÚsinpiÚsqrtfÚsqrtÚfsqrt_rdÚsqrt_rdÚdsqrt_rdÚfsqrt_rnÚsqrt_rnÚdsqrt_rnÚfsqrt_ruÚsqrt_ruÚdsqrt_ruÚfsqrt_rzÚsqrt_rzÚdsqrt_rzÚfsub_rdÚsub_rdÚdsub_rdÚfsub_rnÚsub_rnÚdsub_rnÚfsub_ruÚsub_ruÚdsub_ruÚfsub_rzÚsub_rzÚdsub_rzÚtanfÚtanÚtanhfÚtanhÚtgammafÚtgammaÚtruncfÚtruncÚy0fÚy0Úy1Úyn)Úy1fÚynf)rC   Úvaluesr   r   ro   r…   )r   Ú
symbol_setÚsymbolr   Úrenamings        r   Ú_group_symbolszLibdevice._group_symbolsÊ   s   € Øˆ
Ø—m‘m×*Ñ*Ó,ò 	)ˆFØ—n‘nˆGØ"(ˆJ�wÒð	)ð

Ø�Uð
Ø# Vð
Ø-5°wð
Ø@IÈ8ð
ØU^Ð`hð
ØjsØð
à ð
à+4°hð
à@IÈ8ð
àU^Ð`hð
àjsØð
ð ˜vð
ð (0°ð
ð ;BÀ6ð
ð LTÐU\ð
ð _gÐhoð
ð �fñ	
ð & vð	
ð 07¸ð	
ð AHÈð	
ð Q\Ð]gð	
ð jpÐqvð	
ð
 �Vð
ð
 & wð
ð
 1AÀ/ð
ð
 TdÐetð
ð �xð
ð "+¨Hð
ð 7@Àð
ð LUÐV^ð
ð ajÐksð
ð �xð
ð "+¨Hð
ð 7@Àò
ð LRÐSXð
ð [bÐcið
ð lvØð
ð   ð
ð +4°Xð
ð @FÀuð
ð OWÐX_ð
ð biÐjpð
ð �gð
ð  '¨ð
ð 06°uð
ð ?NÈ~ð
ð `gÐhnð
ð qxØð
ð ˜Wð
ð '-¨eð
ð 6?Àò
ð KTÐU]ð
ð `iÐjrð
ð �xð
ð ")¨&ð
ð 3:¸6ð
ð DLÈWð
ð W_Ð`gð
ð jrØð
ð ˜wð
ð )1°'ð
ð <DÀWð
ð OTÐUYð
ð \aÐbfð
ð inÐosð
ð �gð
ð  )¨(ð
ð 5>¸xò
ð JTÐU^ð
ð agÐhmð
ð pxØð
ð ˜wð
ð )0°ð
ð :AÀ&ð
ð KQÐRWð
ð ZaÐbgð
ð jrØð
ð ˜Eð
ð $*¨5ð
ð 39¸%ð
ð BIÈ%ð
ð RZÐ[`ð
ð cjÐkpð
ð  �Eð!
ð  % hò!
ð  1:¸8ð!
ð  FOÐPXð!
ð  [dÐemð!
ð" �xð#
ð" "+¨Hð#
ð" 7@Àð#
ð" LUÐV^ð#
ð" aiÐjqð#
ð$ �gð%
ð$  )¨'ð%
ð$ 4>¸wð%
ð$ IUÐVað%
ð$ dpØð'
ð& # Hð'
ð& /8¸ð'
ð& DNÈyð'
ð& [hÐiuò'
ð( �fð)
ð( & uð)
ð( /5°eð)
ð( >DÀUð)
ð( MUÐV]ð)
ð( `iÐjrð)
ð* �xð+
ð* "+¨Hð+
ð* 7@Àð+
ð* LUÐV^ð+
ð* ajÐksð+
ð, �xð-
ð, "+¨Hð-
ð, 7CÀKð-
ð, RZÐ[bð-
ð, enÐowð-
ð. �Vò/
ð. (¨ð/
ð. 5?À	ð/
ð. LTÐU\ð/
ð. _gÐhoð/
ð0 ˜ð1
ð0 &,¨Uð1
ð0 5>¸xð1
ð0 JTÐU^ð1
ð0 akÐluð1
ð2 �Eð3
ð2 # Fð3
ð2 -5°gð3
ð2 @GÈð3
ð2 Q[Ð\eð3
ð2 hrØð5
ð4 " 9ð5
ð4 /9¸)ò5
ð4 FPÐQZð5
ð4 ]gÐhqð5
ð6 ˜	ð7
ð6 $.¨yð7
ð6 ;DÀXð7
ð6 PYÐZbð7
ð6 enÐowð7
ð8 �xð9
ð8 "+¨Hð9
ð8 7@Àð9
ð8 LUÐV^ð9
ð8 ajÐksð9
ñ: ‘Eð;
ñ: #¡Fð;
ñ: -6±xð;
ñ: BJÉ7ð;
ñ: UZÑ[_ñ;
ñ: imÙó=
ˆðB —m‘m×*Ñ*Ó,ò 	8ˆFØ—n‘nˆGØ˜(Ñ"Ø" 7Ñ+�Ø")�”Ø˜$×-Ñ-Ñ-Ø×#Ñ# GÑ,×3Ñ3°FÕ;à06¨x�×#Ñ# GÒ,ñ	8r   c                 ó&  — t        | j                  «      dkD  ry t        j                  dd|g«      j	                  «       j                  «       }|D ]/  }| j                  |«      }|€Œ|| j                  |j                  <   Œ1 | j                  «        y )Nr   ÚgrepÚdefine)
r]   rN   rb   Úcheck_outputÚdecodeÚ
splitlinesr“   rC   r   r¥  )r   rQ   Úoutputr‡   r£  s        r   rR   zLibdevice.parse_symbolsü   s†   € Üˆt�|‰|Ó˜qÒ ØÜ×(Ñ(¨&°(¸JÐ)GÓH×OÑOÓQ×\Ñ\Ó^ˆØò 	0ˆDØ×)Ñ)¨$Ó/ˆFØˆ~ØØ)/ˆD�M‰M˜&Ÿ+™+Ò&ð		0ð 	×ÑÕr   c                 ó2  — d}d}d}| j                   j                  «       D ]ë  }|dz  }d|d   j                  › d�}|d   j                  D ]
  }||› d�z  }Œ |dz  }d	| j                  › d
�}|d   j                  D ]
  }||› d�z  }Œ |dz  }d}|D ]L  }	|dz  }|	j
                  D ]  }
|d|
› d�z  }Œ d|	j                  › d�}|d|	j                  z   dz   |z   dz   z  }ŒN |dz  }||z  }|d| j                  › �z  }|dz  }|||z   dz   z  }Œí ||z   |z   }|S )Nzfrom . import core
rz   z@core.extern
zdef r   ry   z, z_builder=None):
z!	return core.extern_elementwise("z", libdevice_path(), [z], 
ú{zcore.dtype("z"),z")z): ("z", z),
ú}z
, is_pure=z, _builder=_builder)
ú
)	ro   r¡  r   r   r
   r   r   r   rs   )r   Ú
import_strÚ
header_strrŠ   rN   Úfunc_name_strr’   Ú
return_strÚarg_type_symbol_dict_strr£  r‘   r   rg   s                r   rU   zLibdevice._output_stubs  sµ  € ð ,ˆ
àˆ
ØˆØ×*Ñ*×1Ñ1Ó3ò 	:ˆGØÐ(Ñ(ˆHØ" 7¨1¡:×#5Ñ#5Ð"6°aÐ8ˆMØ# A™J×0Ñ0ò 1�Ø H :¨R Ñ0‘ð1àÐ0Ñ0ˆMà>¸t¿z¹z¸lÐJaÐbˆJØ# A™J×0Ñ0ò .�Ø  
¨"˜oÑ-‘
ð.à˜'Ñ!ˆJà'*Ð$Ø!ò `�Ø(¨CÑ/Ð(Ø &× 0Ñ 0ò M�HØ,°,¸x¸jÈÐ0LÑLÑ,ðMà)¨&¯/©/Ð):¸"Ð=�Ø(¨H°v·{±{Ñ,BÀVÑ,KÈhÑ,VÐY_Ñ,_Ñ_Ñ(ð`ð %¨Ñ+Ð$àÐ2Ñ2ˆJØ˜J t§|¡| nÐ5Ñ5ˆJØÐ2Ñ2ˆJà˜¨
Ñ2°TÑ9Ñ9‰Hð3	:ð4  
Ñ*¨XÑ5ˆàˆr   rk   )r'   r(   r)   r   r*   r   r	   r+   r   Ústaticmethodr   r“   r¥  rR   rU   Ú__classcell__)rt   s   @r   rn   rn   ”   sW   ø… Ø˜˜d 6™lÐ*Ñ+Ó+õð ð'J ¨&Ñ!1ò 'Jó ð'JóR08ód
ð&˜s÷ &r   rn   c                   óf   — e Zd ZU eed<   eed<   d
d„Zdeddfd„Zedefd„«       Zedefd	„«       Z	y)ÚLLVMDisassemblerrB   Ú_ll_filer   Nc                 ó    — || _         d| _        y)zf
        Invoke llvm-dis to disassemble the given file.
        :param path: path to llvm-dis
        z/tmp/extern_lib.llN)rB   rº  )r   rF   s     r   r   zLLVMDisassembler.__init__5  s   € ð
 ˆŒ
Ø,ˆ�r   Úlib_pathc                 óš   — t        j                  | j                  |d| j                  gt         j                  ¬«      j                  «        y )Nz-orZ   )rb   rc   rB   Úll_filerd   re   )r   r¼  s     r   ÚdisasmzLLVMDisassembler.disasm=  s0   € Ü×Ñ˜$Ÿ*™* h°°d·l±lÐCÌJÏOÉOÔ\×hÑhÕjr   c                 ó   — | j                   S r   )rº  r   s    r   r¾  zLLVMDisassembler.ll_file@  r!   r   c                 ó   — | j                   S r   rL   r   s    r   rF   zLLVMDisassembler.pathD  r   r   rk   )
r'   r(   r)   r*   r+   r   r¿  r,   r¾  rF   r-   r   r   r¹  r¹  1  s]   … ØƒJØƒMó-ðk˜sð k tó kð ð˜ò ó ðð ð�cò ó ñr   r¹  rq   Úllvm_dis_pathr¼  Úlib_namerf   c                 óÒ   — |dk(  rt        |«      }nt        d|› �«      ‚t        | «      }|j                  |«       |j	                  |j
                  «       |j                  |«       y)a  
      Interface function to build the library file.
      :param llvm_dis_path: path to the llvm-dis binary
      :param lib_path: path to the external library file
      :param lib_name: name of the library
      :param output_dir: path to the output directory
    rq   zUnknown extern library: N)rn   r^   r¹  r¿  rR   r¾  rj   )rÂ  r¼  rÃ  rf   Ú
extern_libÚllvm_disassemblers         r   ÚbuildrÇ  L  se   € ð �;ÒÜ˜xÓ(‰
äÐ2°8°*Ð=Ó>Ð>ä(¨Ó7ÐØ×Ñ˜XÔ&à×ÑÐ.×6Ñ6Ô7Ø×!Ñ! *Õ-r   Ú__main__z
--llvm-diszPath to llvm-diszllvm-dis)ÚdestÚhelpÚdefaultz
--lib-pathzPath to the extern library)rÉ  rÊ  z
--lib-namezName of the extern libraryz--outputzOutput file pathz/tmp/)Úargparserb   Úabcr   r   Útypingr   r   r   r	   r*   r=   r?   rA   rn   r¹  Úextern_libsrÇ  r'   ÚArgumentParserÚparserÚadd_argumentÚ
parse_argsÚargsrÂ  r¼  rÃ  rf   r-   r   r   ú<module>rÕ     sJ  ðÛ Û ß #ß 'Ñ '÷/ñ /ðd˜h s™mó ð$˜Só ô=_�Cô =_ô@Z�ô Z÷zñ ð0 ˆm€ð.Øð.àð.ð ð.ð ð	.ð
 
ó.ð2 ˆzÒØ$ˆX×$Ñ$Ó&€FØ
×Ñ˜¨?ÐASÐ]gÐÔhØ
×Ñ˜¨:Ð<XÐÔYØ
×Ñ˜¨:Ð<XÐÔYØ
×Ñ˜
¨Ð<NÐX_ÐÔ`Ø×ÑÓ€Dá	ˆ$×
Ñ
˜dŸm™m¨T¯]©]¸D¿O¹OÕLð r   