+
    ‹°³ji5  ã                   ó  € ^ RI t ^ RIt^ RIHtHt ^ RIHtHtHt  ! R R4      t	R R lt
R R	 lt ! R
 R]4      t ! R R]4      t ! R R4      tR.tR R lt]R8X  d©   ] P$                  ! 4       t]P)                  RRRRR7       ]P)                  RRRR7       ]P)                  RRRR7       ]P)                  R R!R"R#R7       ]P+                  4       t]! ]P.                  ]P0                  ]P2                  ]P4                  4       R# R# )$é    N)ÚABCÚabstractmethod)ÚDictÚListÚOptionalc                   óÊ   a € ] tR t^t o V 3R lR lt]V 3R lR l4       t]V 3R lR l4       t]V 3R lR l4       t]V 3R	 lR
 l4       t	]V 3R lR l4       t
V 3R ltRtV tR# )ÚSymbolc                ó\   <€ V ^8„  d   QhRS[ RS[ RS[ RS[S[ ,          RS[S[ ,          RR/# )é   ÚnameÚop_nameÚret_typeÚ	arg_namesÚ	arg_typesÚreturnN©Ústrr   )ÚformatÚ__classdict__s   "€ÚZ/home/luca/screen-checking/.venv/lib/python3.14/site-packages/triton/tools/build_extern.pyÚ__annotate__ÚSymbol.__annotate__   sO   ø€ ÷ *ñ *áð*ñ ð*ñ ð	*ñ
 ™•9ð*ñ ™•9ð*ð 
ñ*ó    c                ój   € Wn         W n        W0n        \        V4      V n        \        V4      V n        R# )zë
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)Ú_nameÚ_op_nameÚ	_ret_typeÚlistÚ
_arg_namesÚ
_arg_types)Úselfr   r   r   r   r   s   &&&&&&r   Ú__init__ÚSymbol.__init__   s)   € ð  Œ
ØŒØ!ŒÜ˜y›/ˆŒÜ˜y›/ˆŽr   c                ó    <€ V ^8„  d   QhRS[ /# ©r   r   ©r   )r   r   s   "€r   r   r   %   ó   ø€ ÷ ñ ‘cñ r   c                ó   € V P                   # ©N©r   ©r!   s   &r   r   ÚSymbol.name$   ó   € à�z‰zÐr   c                ó    <€ V ^8„  d   QhRS[ /# r%   r&   )r   r   s   "€r   r   r   )   ó   ø€ ÷ ñ ™ñ r   c                ó   € V P                   # r)   )r   r+   s   &r   r   ÚSymbol.op_name(   ó   € à�}‰}Ðr   c                ó    <€ V ^8„  d   QhRS[ /# r%   r&   )r   r   s   "€r   r   r   -   s   ø€ ÷ ñ ™#ñ r   c                ó   € V P                   # r)   )r   r+   s   &r   r   ÚSymbol.ret_type,   ó   € à�~‰~Ðr   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r%   ©r   r   )r   r   s   "€r   r   r   1   ó   ø€ ÷ ñ ™4¡�9ñ r   c                ó   € V P                   # r)   )r   r+   s   &r   r   ÚSymbol.arg_names0   ó   € à�‰Ðr   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r%   r8   )r   r   s   "€r   r   r   5   r9   r   c                ó   € V P                   # r)   )r    r+   s   &r   r   ÚSymbol.arg_types4   r<   r   c                óv   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[ ;R&   S[S[ ,          ;R&   S[S[ ,          ;R&   # )r   r   r   r   r   r    r   )r   r   s   "€r   r   r      sG   ø‡ ‚ Ù�Jñ á�Mñ ñ �Nñ ñ ‘S•	Ññ	 ñ
 ‘S•	Ñò r   )r   r    r   r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r"   Úpropertyr   r   r   r   r   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r   s   @r   r	   r	      s{   ø‡ € ÷*ð *ð, ÷ó ðð ÷ó ðð ÷ó ðð ÷ó ðð ÷ó ð÷] ƒ r   r	   c                ó:   € V ^8„  d   QhR\         \        ,          /# r%   )r   r   )r   s   "r   r   r   9   s   € ÷ ñ œh¤s�mñ r   c                 ór   € V R 8X  d   R# V R8X  d   R# V R8X  d   R# V R8X  d   R# V R8X  d   R	# V R
8X  d   R# R# )Úi32Úint32Úu32Úuint32Úi64Úint64Úu64Úuint64ÚfloatÚfp32ÚdoubleÚfp64N© ©Útype_strs   &r   Úconvert_typer[   9   sI   € Ø�5ÔÙØ	�UÔ	ÙØ	�UÔ	ÙØ	�UÔ	ÙØ	�WÔ	ÙØ	�XÔ	Ùñ r   c                ó$   € V ^8„  d   QhR\         /# r%   r&   )r   s   "r   r   r   K   s   € ÷ ñ œSñ r   c                 ó*   € V R 8X  d   R# V R8X  d   R# V # )rM   rO   rQ   rS   rX   rY   s   &r   Úto_unsignedr^   K   s   € Ø�7ÔÙØ	�WÔ	Ùàˆr   c                   óü   a € ] tR t^Tt o RV 3R lR llt]V 3R lR l4       t]V 3R lR l4       t]V 3R lR l4       t]V 3R	 lR
 l4       t	]
V 3R lR l4       t]
V 3R lR l4       tV 3R lR ltV 3R ltRtV tR# )ÚExternLibraryc          
      ó6   <€ V ^8„  d   QhRS[ RS[ RS[RS[RR/# )r   r   Úpathr   Úgroupingr   N)r   Úbool)r   r   s   "€r   r   ÚExternLibrary.__annotate__[   s=   ø€ ÷ "ñ "áð"ñ ð"ñ ð	"ñ
 ð"ð 
ñ"r   c                óD   € Wn         W n        / V n        W0n        W@n        R# )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   Ú_pathÚ_symbolsÚ_formatÚ	_grouping)r!   r   rb   r   rc   s   &&&&&r   r"   ÚExternLibrary.__init__[   s   € ð Œ
ØŒ
ØˆŒØŒØ!Žr   c                ó    <€ V ^8„  d   QhRS[ /# r%   r&   )r   r   s   "€r   r   re   o   r'   r   c                ó   € V P                   # r)   r*   r+   s   &r   r   ÚExternLibrary.namen   r-   r   c                ó    <€ V ^8„  d   QhRS[ /# r%   r&   )r   r   s   "€r   r   re   s   r'   r   c                ó   € V P                   # r)   ©rg   r+   s   &r   rb   ÚExternLibrary.pathr   r-   r   c                ó6   <€ V ^8„  d   QhRS[ S[S[3,          /# r%   )r   r   r	   )r   r   s   "€r   r   re   w   s   ø€ ÷ ñ ™™c¡6˜kÕ*ñ r   c                ó   € V P                   # r)   )rh   r+   s   &r   ÚsymbolsÚExternLibrary.symbolsv   r2   r   c                ó    <€ V ^8„  d   QhRS[ /# r%   )rd   )r   r   s   "€r   r   re   {   s   ø€ ÷ ñ ™$ñ r   c                ó   € V P                   # r)   )rj   r+   s   &r   rc   ÚExternLibrary.groupingz   r6   r   c                ó   <€ V ^8„  d   QhRR/# ©r   r   NrX   )r   r   s   "€r   r   re      s   ø€ ÷ ñ ¨4ñ r   c                ó   € R # r)   rX   )r!   Ú
input_files   &&r   Úparse_symbolsÚExternLibrary.parse_symbols~   ó   € ár   c                ó    <€ V ^8„  d   QhRS[ /# r%   r&   )r   r   s   "€r   r   re   ƒ   s   ø€ ÷ ñ ™sñ r   c                ó   € R # r)   rX   r+   s   &r   Ú_output_stubsÚExternLibrary._output_stubs‚   r€   r   c                ó   <€ V ^8„  d   QhRR/# r{   rX   )r   r   s   "€r   r   re   †   s   ø€ ÷ _ñ _°ñ _r   c           	     ó.  € V P                  4       pVe   \        V4      ^ 8X  d   \        R4      hV RV P                   R2p\	        VR4      ;_uu_ 4       pVP                  V4       VP                  4        V P                  '       dp   \        P                  ! RRRRV.\        P                  R	7      P                  4        \        P                  ! R
V.\        P                  R	7      P                  4        R R R 4       R #   + '       g   i     R # ; i)Nzfile_str is emptyÚ/z.pyÚwÚautopep8z-az-rz-i©ÚstdoutÚisort)rƒ   ÚlenÚ	Exceptionr   ÚopenÚwriteÚcloseri   Ú
subprocessÚPopenÚPIPEÚcommunicate)r!   Ú
output_dirÚfile_strÚoutput_fileÚfs   &&   r   Úgenerate_stub_fileÚ 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#DÄD	c                ól   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[S[ S[3,          ;R&   S[;R&   S[;R&   # )r   r   rg   rh   ri   rj   )r   r   r	   rd   )r   r   s   "€r   r   re   T   sG   ø‡ ‚ Ù�Jñ á�Jñ ñ ‘3™�;ÕÑñ ñ �Mñ	 ñ
 �Oò r   )ri   rj   r   rg   rh   N)TT)rA   rB   rC   rD   r"   rE   r   rb   ru   rc   r   r~   rƒ   rš   rF   rG   rH   rI   s   @r   r`   r`   T   s›   ø‡ € ÷"ò "ð& ÷ó ðð ÷ó ðð ÷ó ðð ÷ó ðð ÷ó ðð ÷ó ð÷_ð _÷e ƒ r   r`   c                   óœ   a a€ ] tR t^”t oV3R lV 3R llt]V3R lR l4       tV3R lR ltV3R lR ltV3R	 lR
 lt	V3R lt
RtVtV ;t# )Ú	Libdevicec                ó   <€ V ^8„  d   QhRR/# r{   rX   )r   r   s   "€r   r   ÚLibdevice.__annotate__—   s   ø€ ÷ ñ  ñ r   c                óD   <€ \         SV `  RV4       / V n        RV n        R# )zG
Constructor for Libdevice.
:param path: path of the libdevice library
Ú	libdeviceTN)Úsuperr"   Ú_symbol_groupsÚis_pure)r!   rb   Ú	__class__s   &&€r   r"   ÚLibdevice.__init__—   s#   ø€ ô
 	‰Ñ˜ dÔ+Ø ˆÔØˆŽr   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r%   )r   r	   )r   r   s   "€r   r   r    ¡   s   ø€ ÷ 'Jñ 'J¡©&Õ!1ñ 'Jr   c                ó2  € V P                  R 4      pV^ ,          pV^,          pVP                  4       pV^,          R8X  d   R# \        V^,          4      pVf   R# VP                  R4      pV^ ,          P                  R R4      pVP                  RR4      pRV9   d   R# V^,          P                  R4      p	. p
. p\        V	4       F`  w  rÍ\        VP                  4       ^ ,          4      pVf    R# R\	        V4      ,           pV
P                  V4       VP                  V4       Kb  	  VR	8X  d   \        V
R,          4      V
R&   MCVP                  R
4      '       d-   \        V4      p\        V
4       F  w  rÎ\        V4      W¬&   K  	  \        WxW[V
4      # )Ú@ÚinternalNÚ(Ú Ú__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_symbolÚLibdevice._extract_symbol    sp  € ð —*‘*˜S“/ˆØ˜!•*ˆØ˜1•:ˆà—=‘=“?ˆØ�A�;˜*Ô$ÙÜ ¨¥Ó,ˆØÒÙà—N‘N 3Ó'ˆ	Ø˜a•L×(Ñ(¨¨bÓ1ˆ	Ø×#Ñ# G¨RÓ0ˆØ�WÔÙà˜Q•<×%Ñ% cÓ*ˆØˆ	Øˆ	Ü# HÖ-‰JˆAÜ# G§M¡M£O°AÕ$6Ó7ˆHØÒÚØœs 1›v•~ˆHØ×Ñ˜XÔ&Ø×Ñ˜XÖ&ñ .ð �eÔä'¨	°"­Ó6ˆI�bŠMØ×Ñ ×$Ò$ô # 8Ó,ˆHÜ(¨Ö3‘�Ü*¨8Ó4�	“ñ  4ä�i¨(¸yÓIÐIr   c                ó   <€ V ^8„  d   QhRR/# r{   rX   )r   r   s   "€r   r   r    Ê   s   ø€ ÷ 08ñ 08 ñ 08r   c                óX  € / pV P                   P                  4        F  pVP                  pW!V&   K  	  / R RbRRbRRbRRbRRbR	R
bRR
bRRbRRbRRbRRbRRbRRbRRbRRbRRbRRb/ RRbR R!bR"R#bR$R%bR&R'bR(R)bR*R+bR,R-bR.R/bR0R1bR2R1bR3R4bR5R4bR6R7bR8R7bR9R:bR;R:bC/ R<R=bR>R?bR@RAbRBRCbRDREbRFRGbRHRIbRJRKbRLRMbRNRbRORbRPRQbRRRSbRTRUbRVRWbRXRYbRZR[bC/ R\R]bR^R_bR`RabRbRcbRdRebRfRgbRhRibRjRkbRlRkbRmRnbRoRnbRpRqbRrRsbRtRubRvRwbRxRybRzR{bC/ R|R}bR~RbR€R�bR‚RƒbR„R…bR†R‡bRˆR‰bRŠR‰bR‹R‰bRŒR‰bR�R‰bRŽR�bR�R�bR‘R�bR’R�bR“R�bR”R•bC/ R–R•bR—R˜bR™R˜bRšR›bRœR›bR�RžbRŸRžbR R¡bR¢R£bR¤R£bR¥R£bR¦R§bR¨R©bRªR«bR¬R­bR®R¯bR°R±bC/ R²R³bR´RµbR¶RµbR·RµbR¸R¹bRºR»bR¼R»bR½R¾bR¿R¾bRÀRÁbRÂRÁbRÃRÄbRÅRÄbRÆRÇbRÈRÉbRÊRËbRÌRÍbC/ RÎRÏbRÐRÑbRÒRÓbRÔRÕbRÖR×bRØRÙbRÚRÛbRÜRÝbRÞRÝbRßRàbRáRâbRãRäbRåRæbRçRèbRéRèbRêRëbRìRëbC/ RíRîbRïRîbRðRñbRòRñbRóRôbRõRôbRöR÷bRøR÷bRùRúbRûRúbRüRýbRþRýbRÿER bERERbERERbERERbERERbCER	ER
ERER/CpV P                   P                  4        Fg  pVP                  pW49   d   WC,          pW2n        W0P                  9   d%   V P                  V,          P                  V4       KW  V.V P                  V&   Ki  	  ER# (  Ú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Úy1fÚy1ÚynfÚynN)rh   Úvaluesr   r   r¤   r¸   )r!   Ú
symbol_setÚsymbolr   Úrenamings   &    r   Ú_group_symbolsÚLibdevice._group_symbolsÊ   s’  € Øˆ
Ø—m‘m×*Ñ*Ö,ˆFØ—n‘nˆGØ"(�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Ñ[_ñ;
ñ: bgÑhlÑnsÙñ=
ˆðB —m‘m×*Ñ*Ö,ˆFØ—n‘nˆGØÔ"Ø"Õ+�Ø")”Ø×-Ñ-Ô-Ø×#Ñ# GÕ,×3Ñ3°FÖ;à06¨x�×#Ñ# GÓ,ô -r   c                ó   <€ V ^8„  d   QhRR/# r{   rX   )r   r   s   "€r   r   r    ü   s   ø€ ÷ 
ñ 
¨4ñ 
r   c                ó8  € \        V P                  4      ^ 8”  d   R# \        P                  ! RRV.4      P	                  4       P                  4       pV F2  pV P                  V4      pVf   K  W@P                  VP                  &   K4  	  V P                  4        R# )r   NÚgrepÚdefine)
r�   ru   r’   Úcheck_outputÚdecodeÚ
splitlinesrÆ   rh   r   rÚ  )r!   r}   Úoutputrº   rØ  s   &&   r   r~   ÚLibdevice.parse_symbolsü   s   € Üˆt�|‰|Ó˜qÔ ÙÜ×(Ò(¨&°(¸JÐ)GÓH×OÑOÓQ×\Ñ\Ó^ˆÛˆDØ×)Ñ)¨$Ó/ˆFØŠ~ÙØ)/�M‰M˜&Ÿ+™+Ó&ñ	 ð 	×ÑÖr   c                ó    <€ V ^8„  d   QhRS[ /# r%   r&   )r   r   s   "€r   r   r      s   ø€ ÷ &ñ &™sñ &r   c                ó   € R pRpRpV P                   P                  4        EFI  pVR,          pRV^ ,          P                   R2pV^ ,          P                   F  pWV R2,          pK  	  VR,          pRV P                   R2pV^ ,          P                   F  pWv R2,          pK  	  VR	,          pR
pV Fk  p	VR,          pV	P
                   F  p
VRV
 R2,          pK  	  RV	P                   R2pVRV	P                  ,           R,           V,           R,           ,          pKm  	  VR,          pWx,          pVRV P                   2,          pVR,          pW5V,           R,           ,          pEKL  	  W,           V,           pV# )zfrom . import core
r­   z@core.extern
zdef r¬   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)
Ú
)	r¤   rÖ  r   r   r   r   r   r   r¥   )r!   Ú
import_strÚ
header_strr½   ru   Úfunc_name_strrÅ   Ú
return_strÚarg_type_symbol_dict_strrØ  rÄ   r   r—   s   &            r   rƒ   ÚLibdevice._output_stubs  s�  € ð ,ˆ
àˆ
ØˆØ×*Ñ*×1Ñ1×3ˆGØÐ(Õ(ˆHØ" 7¨1¥:×#5Ñ#5Ð"6°aÐ8ˆMØ# A�J×0Ô0�Ø :¨R Õ0’ñ 1àÐ0Õ0ˆMà>¸t¿z¹z¸lÐJaÐbˆJØ# A�J×0Ô0�Ø 
¨"˜oÕ-’
ñ 1à˜'Õ!ˆJà'*Ð$Û!�Ø(¨CÕ/Ð(Ø &× 0Ô 0�HØ,°,¸x¸jÈÐ0LÕLÒ,ñ !1à)¨&¯/©/Ð):¸"Ð=�Ø(¨H°v·{±{Õ,BÀVÕ,KÈhÕ,VÐY_Õ,_Õ_Ò(ñ "ð %¨Õ+Ð$àÕ2ˆJØ˜J t§|¡| nÐ5Õ5ˆJØÐ2Õ2ˆJà¨
Õ2°TÕ9Õ9‹Hñ3 4ð4 Õ*¨XÕ5ˆàˆr   c                óL   <€ V ^8„  d   Qh/ S[ S[S[S[,          3,          ;R&   # )r   r¤   )r   r   r   r	   )r   r   s   "€r   r   r    ”   s   ø‡ ‚ Ù™™d¡6�lÐ*Õ+Ñ+ò r   )r¤   r¥   )rA   rB   rC   rD   r"   ÚstaticmethodrÆ   rÚ  r~   rƒ   rF   rG   rH   Ú__classcell__)r¦   r   s   @@r   rž   rž   ”   sM   ù‡ € ÷ó ð ÷'Jó ð'J÷R08ð 08÷d
ð 
÷&ð &÷i … r   rž   c                   óˆ   a € ] tR tRt o V 3R lR ltV 3R lR lt]V 3R lR l4       t]V 3R lR	 l4       tV 3R
 lt	Rt
V tR# )ÚLLVMDisassembleri1  c                ó   <€ V ^8„  d   QhRR/# r{   rX   )r   r   s   "€r   r   ÚLLVMDisassembler.__annotate__5  s   ø€ ÷ -ñ - ñ -r   c                ó    € Wn         RV n        R# )zN
Invoke llvm-dis to disassemble the given file.
:param path: path to llvm-dis
z/tmp/extern_lib.llN)rg   Ú_ll_file)r!   rb   s   &&r   r"   ÚLLVMDisassembler.__init__5  s   € ð
 Œ
Ø,ˆŽr   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   Úlib_pathr   Nr&   )r   r   s   "€r   r   rö  =  s   ø€ ÷ kñ k™sð k tñ kr   c                óž   € \         P                  ! V P                  VR V P                  .\         P                  R7      P                  4        R# )z-orŠ   N)r’   r“   rg   Úll_filer”   r•   )r!   rû  s   &&r   ÚdisasmÚLLVMDisassembler.disasm=  s0   € Ü×Ò˜$Ÿ*™* h°°d·l±lÐCÌJÏOÉOÔ\×hÑhÖjr   c                ó    <€ V ^8„  d   QhRS[ /# r%   r&   )r   r   s   "€r   r   rö  A  r/   r   c                ó   € V P                   # r)   )rø  r+   s   &r   rý  ÚLLVMDisassembler.ll_file@  r2   r   c                ó    <€ V ^8„  d   QhRS[ /# r%   r&   )r   r   s   "€r   r   rö  E  r'   r   c                ó   € V P                   # r)   rq   r+   s   &r   rb   ÚLLVMDisassembler.pathD  r-   r   c                ó2   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   # )r   rg   rø  r&   )r   r   s   "€r   r   rö  1  s   ø‡ ‚ Ù�Jñ á�Mò r   )rø  rg   N)rA   rB   rC   rD   r"   rþ  rE   rý  rb   rF   rG   rH   rI   s   @r   rô  rô  1  sJ   ø‡ € ÷-ð -÷kð kð ÷ó ðð ÷ó ð÷) ƒ r   rô  r¢   c          
      óL   € V ^8„  d   QhR\         R\         R\         R\         RR/# )r   Úllvm_dis_pathrû  Úlib_namer–   r   Nr&   )r   s   "r   r   r   L  s:   € ÷ .ñ .Üð.äð.ô ð.ô ð	.ð
 
ñ.r   c                óØ   € VR8X  d   \        V4      pM\        RV 24      h\        V 4      pVP                  V4       VP	                  VP
                  4       VP                  V4       R# )zé
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
r¢   zUnknown extern library: N)rž   rŽ   rô  rþ  r~   rý  rš   )r  rû  r	  r–   Ú
extern_libÚllvm_disassemblers   &&&&  r   Úbuildr  L  se   € ð �;ÔÜ˜xÓ(‰
äÐ2°8°*Ð=Ó>Ð>ä(¨Ó7ÐØ×Ñ˜XÔ&à×ÑÐ.×6Ñ6Ô7Ø×!Ñ! *Ö-r   Ú__main__z
--llvm-disr  zPath to llvm-diszllvm-dis)ÚdestÚhelpÚdefaultz
--lib-pathrû  zPath to the extern library)r  r  z
--lib-namer	  zName of the extern libraryz--outputr–   zOutput file pathz/tmp/)Úargparser’   Úabcr   r   Útypingr   r   r   r	   r[   r^   r`   rž   rô  Úextern_libsr  rA   ÚArgumentParserÚparserÚadd_argumentÚ
parse_argsÚargsr  rû  r	  r–   rX   r   r   Ú<module>r     s  ðÛ Û ß #ß 'Ñ '÷/ñ /õdõ$ô=_�Cô =_ô@Z�ô Z÷zñ ð0 ˆm€õ.ð2 ˆzÔØ×$Ò$Ó&€FØ
×Ñ˜¨?ÐASÐ]gÐÔhØ
×Ñ˜¨:Ð<XÐÔYØ
×Ñ˜¨:Ð<XÐÔYØ
×Ñ˜
¨Ð<NÐX_ÐÔ`Ø×ÑÓ€Dá	ˆ$×
Ñ
˜dŸm™m¨T¯]©]¸D¿O¹OÖLñ r   