+
    ‹°³j21  ã                   ój  € ^ RI Ht ^ RIHt ^ RIHtHt ^ RIHt R t	 ! R R]
4      t] ! R R	4      4       t ! R
 R4      tR tR tR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR t]R!8X  Edm   ^ R"IHt ]! ]R#7      t]P=                  R$R%R&R'7       ]P=                  R(R)]R*R+7       ]P=                  R,]R-R.R/7       ]PA                  4       t!]! 4       t. t"]!PF                   FG  t$]! ]$4      t%]%PM                  4       t']"PQ                  ]%PR                  4       ]PU                  ]'4       KI  	  ]PV                  PY                  4        U Uu. uF  w  r]! W4      NK  	  upp t-]PV                  PY                  4        U Uu. uF  w  rVNK	  	  upp t.].^ ,          ^ ,          t/]! ]/4      t0]! ]/4      t1]! ]24      Pf                  R0,          ]Ph                  ,          R1,          PM                  4       t5]!Pl                  Po                  R24      Pq                  R34      ;_uu_ 4       t9]5t6]6R4Pu                  ]-4      ,          t6]6R4,          t6]6]0,          t6]6R4,          t6]6]1,          t6]9Pw                  ]64       R5R5R54       ]PV                  PY                  4        U Uu. uF  w  r]! W4      NK  	  upp t<]PV                  P{                  4        U u. uF  q NK  	  up t>]! ]>]/4      t?]! ]/4      t@]! ]>]/4      tA]! ]/4      tB]! ]/4      tC]!Pl                  Po                  R64      Pq                  R34      ;_uu_ 4       t9]5t6]6R7,          t6]6R8,          t6]6R4,          t6]6R4Pu                  ]<4      ,          t6]6R4,          t6]6]?,          t6]6R4,          t6]6]B,          t6]6R4,          t6]6]@,          t6]6R4,          t6]6]A,          t6]6R4,          t6]6]C,          t6]9Pw                  ]64       R5R5R54       R5# R5# u upp i u upp i   + '       g   i     ELƒ; iu upp i u up i   + '       g   i     R5# ; i)9é    )Údefaultdict)ÚPath)ÚSequenceÚUnion)Ú	dataclassc                 ó
   € V R J# ©N© )Úxs   &ÚR/home/luca/screen-checking/.venv/lib/python3.14/site-packages/triton/tools/link.pyÚ_existsr      s   € Ø�Dˆ=Ðó    c                   ó   € ] tR t^tRtR# )ÚLinkerErrorr
   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r
   r   r   r   r      s   † Ûr   r   c                   ó.   a € ] tR t^t o  V 3R ltRtV tR# )ÚKernelLinkerMetac                ó¾   <€ V ^8„  d   Qh/ S[ ;R&   S[S[ ,          ;R&   S[S[ ,          ;R&   S[S[S[R3,          ,          ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[;R	&   # )
é   Úorig_kernel_nameÚ	arg_namesÚ
arg_ctypesNÚsizesÚsig_hashÚtriton_suffixÚsuffixÚ	num_specs)Ústrr   r   Úint)ÚformatÚ__classdict__s   "€r   Ú__annotate__ÚKernelLinkerMeta.__annotate__   s~   ø‡ ‚ áÑñ ñ ™�}Ññ ñ ™•Ññ	 ñ
 ‘E™#˜t˜)Õ$Õ%Ñ%ñ ñ �Mñ ñ Ññ ñ �Kñ ñ �Nò r   r
   N)r   r   r   r   Ú__annotate_func__r   Ú__classdictcell__©r%   s   @r   r   r      s   ø‡ € ð ,÷ ƒ r   r   c                   óŒ   a € ] tR t^t o 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R ltV 3R	 lR
 ltV 3R lR lt	Rt
V tR# )ÚHeaderParserc                ó   <€ V ^8„  d   QhRR/# )r   ÚreturnNr
   )r$   r%   s   "€r   r&   ÚHeaderParser.__annotate__   s   ø€ ÷ !ñ !˜$ñ !r   c                ó   € ^ RI pVP                  R4      V n        VP                  R4      V n        VP                  R4      V n        VP                  R4      V n        VP                  R4      V n        \        \        4      V n	        RV n
        R# )r   Nz'//[\s]*tt-linker:[\s]*([\w]+):(.+):(.+)z^([\w]+)_([\w]+)_([\w]*)$z[\s]*(\w+)\s(\w+)[,]?z[c,d]z%//[\s]*tt-linker-backend:[\s]*([\w]+))ÚreÚcompileÚlinker_directivesÚkernel_nameÚc_sigÚ
arg_suffixÚbackend_name_rer   ÚlistÚkernelsÚbackend_name)Úselfr1   s   & r   Ú__init__ÚHeaderParser.__init__   sr   € Ûð "$§¡Ð,XÓ!YˆÔàŸ:™:Ð&DÓEˆÔà—Z‘ZÐ ;Ó<ˆŒ
àŸ*™* WÓ-ˆŒà!Ÿz™zÐ*TÓUˆÔä"¤4Ó(ˆŒØ ˆÖr   c                ó    <€ V ^8„  d   QhRS[ /# )r   Úheader©r"   )r$   r%   s   "€r   r&   r/   0   s   ø€ ÷ lñ l©#ñ lr   c                ó
  € VP                  4        EFm  pVP                  R 4      '       g   K  V P                  P                  V4      p\	        V4      '       d¢   VP                  ^4      VP                  ^4      VP                  ^4      repV P                  V4      w  rxp	V P                  V4      w  r«V P                  W•4      w  rÍV P                  RP                  Wv.4      \        VVV
VVV	V	VR7      4       Kê  V P                  P                  V4      p\	        V4      '       g   EK  VP                  ^4      pV P                  f
   Wàn        EKA  V P                  V8w  g   EKU  \        RV P                   RV 24      h	  R# )z//Ú_)r   r   r   r   r   r   r    r!   Nzdiffering backend z vs. )Ú
splitlinesÚ
startswithr3   Úmatchr   ÚgroupÚ_match_nameÚ_match_c_sigÚ_match_suffixÚ_add_kernelÚjoinr   r7   r:   ÚRuntimeError)r;   r?   ÚlnÚmÚker_namer5   Ú	algo_infoÚnamer   r    Úc_typesr   r!   r   r:   s   &&             r   Úextract_linker_metaÚ HeaderParser.extract_linker_meta0   sP  € Ø×#Ñ#×%ˆBØ�}‰}˜T×"Ô"Ø×*Ñ*×0Ñ0°Ó4�Ü˜1—:’:Ø12·±¸³¸Q¿W¹WÀQ»ZÈÏÉÐQRË Y�HØ-1×-=Ñ-=¸hÓ-GÑ*�D FØ)-×):Ñ):¸5Ó)AÑ&�GØ'+×'9Ñ'9¸&Ó'HÑ$�IØ×$Ñ$ØŸ™ $Ð!2Ó3Ü(Ø-1Ø&/Ø'.Ø"'Ø%-Ø*0Ø#)Ø&/ô	öð ×,Ñ,×2Ñ2°2Ó6�AÜ˜q—z•zØ'(§w¡w¨q£z˜Ø×,Ñ,Ò4Ø0<×-Ø!×.Ñ.°,×>Ü".Ð1CÀD×DUÑDUÐCVÐV[Ð\hÐ[iÐ/jÓ"kÐkó9 &r   c                ó    <€ V ^8„  d   QhRS[ /# )r   rO   r@   )r$   r%   s   "€r   r&   r/   O   s   ø€ ÷ Dñ D¡Cñ Dr   c                óâ   € V P                   P                  V4      p\        V4      '       d7   VP                  ^4      VP                  ^4      VP                  ^4      rTpW4V3# \	        V R24      h)é   z is not a valid kernel name)r4   rE   r   rF   r   )r;   rO   rN   rQ   r   r    s   &&    r   rG   ÚHeaderParser._match_nameO   sb   € Ø×Ñ×"Ñ" 8Ó,ˆÜ�1�:Š:Ø%&§W¡W¨Q£Z°·±¸³¸Q¿W¹WÀQ»Z˜FˆDØ 6Ð)Ð)Ü˜X˜JÐ&AÐBÓCÐCr   c                ó    <€ V ^8„  d   QhRS[ /# )r   r5   r@   )r$   r%   s   "€r   r&   r/   V   s   ø€ ÷ 	Hñ 	H¡#ñ 	Hr   c                óÜ   € V P                   P                  V4      p\        V4      '       d4   . . rCV F'  w  rVVP                  V4       VP                  V4       K)  	  W43# \	        V R 24      h)z" is not a valid argument signature)r5   ÚfindallÚlenÚappendr   )r;   r5   rN   ÚtysÚargsÚtyÚarg_names   &&     r   rH   ÚHeaderParser._match_c_sigV   sf   € Ø�J‰J×Ñ˜uÓ%ˆÜˆq�6Š6Ø˜B�Û !‘�Ø—
‘
˜2”Ø—‘˜HÖ%ñ !"ð �9Ðä˜U˜GÐ#EÐFÓGÐGr   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# )r   r    r5   r@   )r$   r%   s   "€r   r&   r/   a   s   ø€ ÷  ñ  ¡Cð  ±ñ  r   c                ó’  € VP                  R 4      pR^R^/p^ p. p\        \        V4      4       FÂ  p^ pVP                  \	        V4      4      p	V	'       g   K)  V\        \	        V4      4      ,          pV P
                  P                  W4      '       dZ   V^,          pVP                  R.V\        V4      ,
          ,          4       VP                  WAV,          ,          4       V^,          pWR pKÄ  	  \        V4      ^ 8”  d   \        RV 24      hVP                  R.\        V4      \        V4      ,
          ,          4       WV3# )Ú,ÚcÚdNzHas invalid extra suffix: )
ÚsplitÚranger\   rD   r"   r6   rE   Úextendr]   Ú	Exception)
r;   r    r5   r_   Ús2ir!   r   ÚiÚposÚidx_matcheds
   &&&       r   rI   ÚHeaderParser._match_suffixa   s  € Ø�{‰{˜3ÓˆØ�A�s˜BÐˆØˆ	Øˆä”s˜4“yÖ!ˆAØˆCØ ×+Ñ+¬C°«FÓ3ˆKßÙØ”3”s˜1“v“;ÕˆCØ�‰×$Ñ$ V×1Ò1Ø˜Q•�	Ø—‘˜d˜V q¬3¨u«:¥~Õ6Ô7Ø—‘˜S¨¥Õ-Ô.Ø�q•�Ø˜D�\ŠFñ "ô ˆv‹;˜Œ?ÜÐ8¸¸ÐAÓBÐBØ�‰�d�Vœs 4›y¬3¨u«:Õ5Õ6Ô7àÐÐr   c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   rQ   Úker©r"   r   )r$   r%   s   "€r   r&   r/   z   s   ø€ ÷ 
'ñ 
'¡ð 
'Ñ*:ñ 
'r   c                óˆ  € WP                   9   d�   V P                   V,          R,          p\        VP                  VP                  4       FQ  w  rEWE8w  g   K  \        RV RRP	                  VP                  4       RRP	                  VP                  4       24      h	  V P                   V,          P                  V4       R# )rW   z Mismatched signature for kernel z: 
	existing sig is: re   z
	current is: Néÿÿÿÿ)r9   Úzipr   r   rK   r]   )r;   rQ   rr   ÚlastÚcurÚnew_s   &&&   r   rJ   ÚHeaderParser._add_kernelz   sÍ   € Ø—<‘<ÔØ%)§\¡\°$Õ%7¸Õ%;ˆDä  §¡°#·.±.ÖA‘	�Ø–;Ü%Ø:¸4¸&Ð@WÐX[×X`ÑX`Ðae×apÑapÓXqÐWrð  sCð  DG÷  DLñ  DLð  MP÷  M[ñ  M[ó  D\ð  C]ð  ^óð ñ Bð 	�‰�TÕ×!Ñ! #Ö&r   )r6   r:   r7   r5   r4   r9   r3   N)r   r   r   r   r<   rS   rG   rH   rI   rJ   r   r)   r*   s   @r   r,   r,      sG   ø‡ € ÷!ð !÷"lð l÷>Dð D÷	Hð 	H÷ ð  ÷2
'ö 
'r   r,   c           	      óž   € R P                  \        V P                  V P                  4       UUu. uF  w  rV RV 2NK  	  upp4      # u uppi )ú, Ú )rK   rv   r   r   )rN   r`   Úargs   &  r   Úgen_signature_with_full_argsr   ‡   s@   € Ø�9‰9´3°q·|±|ÀQÇ[Á[Ô3QÔRÑ3Q©¨˜˜˜A˜c˜U“mÑ3QÒRÓSÐSùÓRs   ¯A	
c           	      ó€  € \        V P                  V P                  4       UUu. uF  w  rV^8w  g   K  VNK  	  ppp\        V P                  V P                  4       UUu. uF  w  rBV^8w  g   K  VNK  	  pppRP	                  \        W54       UUu. uF  w  rV RV 2NK  	  upp4      pV# u uppi u uppi u uppi )rW   r|   r}   )rv   r   r   r   rK   )rN   r`   ÚhintÚ	arg_typesr~   r   Úsigs   &      r   Úgen_signaturer„   ‹   s¡   € Ü$'¨¯©°a·g±gÔ$>ÔLÑ$>™˜À$È!Á)—�Ñ$>€IÑLÜ&)¨!¯+©+°q·w±wÔ&?ÔMÑ&?™˜À4È1Á9—�Ñ&?€IÑMØ
�)‰)´#°iÔ2KÔLÑ2K¡w r˜�t˜1˜S˜E“]Ñ2KÒLÓ
M€CØ€Jùó MùÛMùÛLs   ¤B.´B.Á B4Á0B4ÂB:
c                óR   € V ^8„  d   QhR\         R\        \        ,          R\         /# ©r   rQ   Úmetasr.   ©r"   r   r   )r$   s   "r   r&   r&   “   s'   € ÷ ñ œ#ð ¤hÔ/?Õ&@ð ÄSñ r   c           	      ó@   € R V  R\        VR,          4       RV  RV  R2	# )ú
TT_ResultTy ú(TT_StreamTy stream, z);
void load_ú();
void unload_ú();
    ru   )r   )rQ   r‡   s   &&r   Úmake_algo_declsrŽ   “   sB   € ðØˆFÐ'Ô(DÀUÈ2ÅYÓ(OÐ'Pð QØˆ&ð ØˆFð ðð r   c                ó0   € V ^8„  d   QhR\         R\        /# ©r   Úmetar.   ©r   r"   )r$   s   "r   r&   r&   œ   s   € ÷ ñ Ô+ð ´ñ r   c                 ó    € R V P                    R\        V 4       RV P                    R\        V 4       RV P                    RV P                    R2# )rŠ   ú_default(TT_StreamTy stream, z);
TT_ResultTy r‹   z, int algo_id);
void load_rŒ   r�   )r   r   )r‘   s   &r   Úmake_global_declr•   œ   su   € ðØ×"Ñ"Ð#Ð#@ÔA]Ð^bÓAcÐ@dð eØ×"Ñ"Ð#Ð#8Ô9UÐVZÓ9[Ð8\ð ]Ø× Ñ Ð
!ð "Ø×"Ñ"Ð#ð $ð	ð r   c                ó0   € V ^8„  d   QhR\         R\        /# r�   r’   )r$   s   "r   r&   r&   ¦   s   € ÷ ñ Ô#3ð ¼ñ r   c                 ó¶   € R V P                    R\        V 4       R2pVRV P                    RRP                  V P                  4       R2,          pVR,          pV# )úTT_ResultTy r”   z){
ú	  return ú	(stream, r|   z, 0);
ú}
©r   r   rK   r   ©r‘   Úsrcs   & r   Úmake_default_algo_kernelrŸ   ¦   sd   € Ø˜×.Ñ.Ð/Ð/LÔMiÐjnÓMoÐLpÐpuÐ
v€CØˆi˜×-Ñ-Ð.¨i¸¿	¹	À$Ç.Á.Ó8QÐ7RÐRYÐZÕ[€CØˆ5…L€CØ€Jr   c                óR   € V ^8„  d   QhR\         R\        \        ,          R\         /# r†   rˆ   )r$   s   "r   r&   r&   ®   s(   € ÷ %ñ %¤sð %´8Ô<LÕ3Mð %ÔRUñ %r   c                 ó$  € R V  R2p\        VR R7       F@  pVRVP                   RVP                   RVP                   R\	        V4       R2	,          pKB  	  VR,          pVRV  R\        VR,          4       R2,          pVR,          p\        VR	 R7       Fÿ  pR
 pRP                  \        VP                  VP                  4       UUu. uF  w  rVVf   K  V! WV4      NK  	  upp4      pT\        VP                  4      '       d   RV R2MR,          p\        VP                  VP                  4       UUu. uF  w  r†V^8w  g   K  VNK  	  p	ppVRVP                   RVP                   RVP                   RRP                  V	4       R2	,          pEK  	  VR,          pVR,          pVR,          pR FÇ  p
VRV
 RV  R2,          p\        VR R7       F7  pVRV
 RVP                   RVP                   RVP                   R2	,          pK9  	  VRV
 RV  R2,          pVR,          p\        VR R7       F7  pVRV
 RVP                   RVP                   RVP                   R2	,          pK9  	  VR,          pKÉ  	  V# u uppi u uppi )z// launcher for: Ú
c                 ó   € V P                   ) # r	   ©r!   ©rN   s   &r   Ú<lambda>Ú.make_kernel_hints_dispatcher.<locals>.<lambda>°   ó
   € ¨Q¯[©[©Lr   )Úkeyr˜   rB   r‹   ú);
z){c                 ó   € V P                   ) # r	   r¤   r¥   s   &r   r¦   r§   ¶   r¨   r   c                 óF   € V^8X  d
   RV  RV R2# V^8X  d
   RV  RV R2# R# )é   z((uintptr_t)z % z == 0)Ú(z == Ú)Nr
   )Úvalr�   s   &&r   r¦   r§   ¸   sN   € Ø�rŒzð !-¨S¨E°°T°F¸&ÐAð ð �qŒyð �S�E˜˜d˜V 1Ð%ðð ð	r   z && z  if (z)
zif (1)
z    return rš   r|   z!  return TT_ERROR_INVALID_VALUE;
r›   z
// z for: c                 ó   € V P                   ) # r	   r¤   r¥   s   &r   r¦   r§   Ì   ó
   € °·±±r   úvoid ú();
z() {c                 ó   € V P                   ) # r	   r¤   r¥   s   &r   r¦   r§   Ð   r²   r   ú  ru   ©ÚloadÚunload)Úsortedr   r   r    r„   r   rK   rv   r   r   Úany)rQ   r‡   rž   r‘   Úcond_fnr°   r�   Úcondsr~   r   Úmodes   &&         r   Úmake_kernel_hints_dispatcherr¿   ®   s­  € Ø˜d˜V 2Ð
&€CÜ�uÑ"8×9ˆØ�˜d×3Ñ3Ð4°A°d·m±m°_ÀAÀdÇkÁkÀ]ÐRgÔhuÐvzÓh{Ðg|ð  }Að  Bõ  	BŠñ :àˆ4…K€Càˆl˜4˜&Ð 5Ô6RÐSXÐY[ÕS\Ó6]Ð5^Ð^aÐbÕc€CØˆ4…K€CÜ�uÑ"8×9ˆñð 	ð —‘ä  §¡°·±Ô<ô
á<‘	�Øô ‰G�CÖÙ<ò
ó ˆð
 	¤s¨4¯:©:§¢�&˜˜˜sÑ#¸Jõ 	ˆä*-¨d¯n©n¸d¿j¹jÔ*IÔWÑ*I™Y˜SÈTÐUVÉY—S�SÑ*Iˆ	ÑWØ�˜T×2Ñ2Ð3°1°T·]±]°OÀ1ÀTÇ[Á[ÀMÐQZÐ[_×[dÑ[dÐenÓ[oÐZpÐptÐuÕu‹ñ :ð  ˆ4…K€CØÐ/Õ/€CØˆ5…L€Cã"ˆØ��t�f˜F 4 &¨Ð+Õ+ˆÜ˜5Ñ&<×=ˆDØ�U˜4˜&  $×"7Ñ"7Ð!8¸¸$¿-¹-¸ÈÈ$Ï+É+ÈÐV[Ð\Õ\ŠCñ >à��t�f˜A˜d˜V 5Ð)Õ)ˆØˆt�ˆÜ˜5Ñ&<×=ˆDØ�b˜˜˜a × 5Ñ 5Ð6°a¸¿¹°ÀaÈÏÉÀ}ÐTYÐZÕ[ŠCñ >àˆu�Šñ #ð €Jùó-
ùó Xs   ÃJÃJÄ;JÅJc                ó0   € V ^8„  d   QhR\         R\        /# r�   r’   )r$   s   "r   r&   r&   ×   s   € ÷ ñ Ô,<ð Äñ r   c                 óä   € R V P                    R\        V 4       R2pVRV P                    R2,          pVRV P                    RRP                  V P                  4       R2,          pVR	,          pV# )
r˜   r‹   z, int algo_id){
z   assert (algo_id < (int)sizeof(z_kernels));
r™   z_kernels[algo_id](stream, r|   rª   r›   rœ   r�   s   & r   Ú!make_kernel_meta_const_dispatcherrÂ   ×   sƒ   € Ø˜×.Ñ.Ð/Ð/DÔEaÐbfÓEgÐDhÐhzÐ
{€CØÐ-¨d×.CÑ.CÐ-DÀMÐRÕR€CØˆY�t×,Ñ,Ð-Ð-GÈÏ	É	ÐRV×R`ÑR`ÓHaÐGbÐbfÐgÕg€CØˆ5…L€CØ€Jr   c                ó<   € V ^8„  d   QhR\         R\        R\         /# ©r   Únamesr‘   r.   rs   )r$   s   "r   r&   r&   à   s"   € ÷ ñ œcð Ô)9ð ¼cñ r   c                 ó�   € R \        V4       R2pVRVP                   R2,          pV  F  pVRV R2,          pK  	  VR,          pV# )z9typedef TT_ResultTy (*kernel_func_t)(TT_StreamTy stream, rª   zkernel_func_t z_kernels[] = {
r¶   z,
z};
)r   r   )rÅ   r‘   rž   rQ   s   &&  r   Úmake_func_pointersrÇ   à   s^   € àEÔFbÐcgÓFhÐEiÐimÐ
n€CØˆ^˜D×1Ñ1Ð2Ð2CÐDÕD€CÛˆØ��D�6˜ˆ~ÕŠñ àˆ6…M€CØ€Jr   c                ó<   € V ^8„  d   QhR\         R\        R\         /# rÄ   rs   )r$   s   "r   r&   r&   ë   s"   € ÷ ñ ¤ð Ô+;ð Äñ r   c                 ó”   € R pR F?  pVRV RVP                    R2,          pV  F  pVRV RV R2,          pK  	  VR,          pKA  	  V# )Ú r³   rB   z(void){
r¶   r´   z}

r·   ©r   )rÅ   r‘   rž   r¾   rQ   s   &&   r   Úmake_kernel_load_defrÌ   ë   sd   € Ø
€CÛ"ˆØ��t�f˜A˜d×3Ñ3Ð4°JÐ?Õ?ˆÛˆDØ�R˜�v˜Q˜t˜f EÐ*Õ*ŠCñ àˆw�Šñ	 #ð
 €Jr   c                ó0   € V ^8„  d   QhR\         R\        /# r�   r’   )r$   s   "r   r&   r&   õ   s   € ÷ ñ Ô"2ð ´sñ r   c                 ó&   € R V P                    R2pV# )úint z_get_num_algos(void);rË   r�   s   & r   Úmake_get_num_algos_declrÐ   õ   s   € Ø�×&Ñ&Ð'Ð'<Ð
=€CØ€Jr   c                ó0   € V ^8„  d   QhR\         R\        /# r�   r’   )r$   s   "r   r&   r&   ú   s   € ÷ ñ Ô!1ð ´cñ r   c                 ó€   € R V P                    R2pVRV P                    RV P                    R2,          pVR,          pV# )rÏ   z_get_num_algos(void){
z  return (int)(sizeof(z_kernels) / sizeof(z_kernels[0]));
r›   rË   r�   s   & r   Úmake_get_num_algos_defrÓ   ú   sP   € Ø�×&Ñ&Ð'Ð'?Ð
@€CØÐ# D×$9Ñ$9Ð#:Ð:MÈd×NcÑNcÐMdÐdtÐuÕu€CØˆ5…L€CØ€Jr   a0  
Triton ahead-of-time linker:

This program takes in header files generated by compile.py, and generates a
single entry-point responsible for dispatching the user's input to the right
kernel given the specializations that were compiled.

Example usage:
python link.py /path/to/headers/*.h -o kernel_name
Ú__main__)ÚArgumentParser)ÚdescriptionÚheadersÚ+z_Paths to header files to link. Must include linker directive annotations (autogenerated by ttc))ÚnargsÚhelpz--outz-ozOut filename)ÚtyperÚ   z--prefixrÊ   z(String to prefix kernel dispatcher names)rÛ   ÚdefaultrÚ   Úextrazlink.hz.hÚwr¢   Nz.cz#include <stdint.h>
z#include <assert.h>
)DÚcollectionsr   Úpathlibr   Útypingr   r   Údataclassesr   r   rk   r   r   r,   r   r„   rŽ   r•   rŸ   r¿   rÂ   rÇ   rÌ   rÐ   rÓ   Údescr   ÚargparserÕ   ÚparserÚadd_argumentr"   Ú
parse_argsr_   Úincludesr×   r?   Úh_pathÚ	read_textÚh_strr]   rQ   rS   r9   ÚitemsÚ
algo_declsÚ
meta_listsr‘   Úget_num_algos_declÚglobal_declÚ__file__Úparentr:   Úbackend_preludeÚoutÚwith_suffixÚopenÚfprK   ÚwriteÚdefsÚkeysrÅ   Úfunc_pointers_defÚmeta_const_defÚload_unload_defÚget_num_algos_defÚdefault_algo_kernel)rQ   r‘   s   00r   Ú<module>r      sï  ðÝ #Ý ß "å !òô	�)ô 	ð ÷	,ð 	,ó ð	,÷g'ñ g'òTTòõõõõ%õRõõõõ
ð	€ð ˆzÕÝ'á¨Ô-€FØ
×ÑØØØnð ô ð
 ×Ñ˜ ¨D°~ÐÔFØ
×ÑØØØØ7ð	 ô ð ×ÑÓ€Dñ ‹^€FØ€HØ—,”,ˆÙ�f“ˆØ× Ñ Ó"ˆØ�‰˜Ÿ™Ô$Ø×"Ñ" 5Ö)ñ	 ð AGÇÁ×@TÑ@TÔ@VÔWÑ@V±*°$‘/ $Ö-Ñ@VÒW€JØ)/¯©×)=Ñ)=Ô)?Ô@Ñ)?™:˜4“$Ñ)?Ò@€JØ�a�=˜Õ€DÙ0°Ó6ÐÙ" 4Ó(€KÙ˜H“~×,Ñ,¨wÕ6¸×9LÑ9LÕLÈxÕW×bÑbÓd€OØ	�‰×	Ñ	˜dÓ	#×	(Ñ	(¨×	-Ô	-°ØˆØˆt�y‰y˜Ó$Õ$ˆØˆt�ˆØÐ!Õ!ˆØˆt�ˆØˆ{ÕˆØ
�‰�Œ÷ 
.ð HNÇ~Á~×G[ÑG[ÔG]Ô^ÑG]¹¸Ñ(¨Ö4ÑG]Ò^€DØ$Ÿn™n×1Ñ1Ô3Ó4Ñ3�dŠTÑ3Ñ4€EÙ*¨5°$Ó7ÐÙ6°tÓ<€NÙ*¨5°$Ó7€OÙ.¨tÓ4ÐÙ2°4Ó8ÐØ	�‰×	Ñ	˜dÓ	#×	(Ñ	(¨×	-Ô	-°ØˆØÐ&Õ&ˆØÐ&Õ&ˆØˆt�ˆØˆt�y‰y˜‹ÕˆØˆt�ˆØÐ Õ ˆØˆt�ˆØÐ Õ ˆØˆt�ˆØˆ~ÕˆØˆt�ˆØˆÕˆØˆt�ˆØÐ"Õ"ˆØ
�‰�Œ÷! 
.Ñ	-ñg ùó8 XùÛ@÷
 
.×	-Ð	-üó _ùÚ4÷ 
.×	-Ð	-ús2   Å"O6ÆO<È8APÊ-PË 
PÍ	B!P!ÐP	Ð!P2	