K ii5 $ddlZddlZddlmZmZddlmZmZmZGddZ dee fdZ de fdZ Gd d eZ Gd d e ZGd dZdgZde de de de ddf dZedk(rej&Zej+ddddej+dddej+dddej+ddd d!ej-Zeej0ej2ej4ej6yy)"N)ABCabstractmethod)DictListOptionalc eZdZUeed<eed<eed<eeed<eeed<dededed eed eed d f d Zed efdZed efdZ ed efdZ ed eefdZ ed eefdZ y )Symbol_name_op_name _ret_type _arg_names _arg_typesnameop_nameret_type arg_names arg_typesreturnNcn||_||_||_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)selfrrrrrs _/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/triton/tools/build_extern.py__init__zSymbol.__init__s/   !y/y/c|jSNr rs rrz Symbol.name$ zzrc|jSr)r rs rrzSymbol.op_name( }}rc|jSr)r rs rrzSymbol.ret_type, ~~rc|jSr)r rs rrzSymbol.arg_names0 rc|jSr)rrs rrzSymbol.arg_types4r%r) __name__ __module__ __qualname__str__annotations__rrpropertyrrrrrrrr r s JMNS S *** * 9 * 9 * *,c#4949rr rcL|dk(ry|dk(ry|dk(ry|dk(ry|d k(ry |d k(ry y) Ni32int32u32uint32i64int64u64uint64floatfp32doublefp64r-type_strs r convert_typer=9sI5 U  U  U  W  X rc|dk(ry|dk(ry|S)Nr0r2r4r6r-r;s r to_unsignedr?Ks7 W rc eZdZUeed<eed<eeefed<eed<eed< ddededed ed d f d Ze d efd Z e d efdZ e d eeeffdZ e d efdZ eddZed efdZddZy ) ExternLibraryr _path_symbols_format _groupingrpathformatgroupingrNcJ||_||_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 rBrCrDrE)rrrFrGrHs rrzExternLibrary.__init__[s'    !rc|jSrrrs rrzExternLibrary.namenrrc|jSrrBrs rrFzExternLibrary.pathrrrc|jSr)rCrs rsymbolszExternLibrary.symbolsvr!rc|jSr)rErs rrHzExternLibrary.groupingzr#rcyrr-)r input_files r parse_symbolszExternLibrary.parse_symbols~ rcyrr-rs r _output_stubszExternLibrary._output_stubsrSrc|j}|t|dk(r td|d|jd}t |d5}|j ||j |jrmtjdddd |gtj jtjd |gtj jdddy#1swYyxYw) Nrzfile_str is empty/z.pywautopep8z-az-rz-istdoutisort) rUlen Exceptionr openwritecloserD subprocessPopenPIPE communicate)r output_dirfile_str output_filefs rgenerate_stub_filez ExternLibrary.generate_stub_files%%'  s8}1/0 0# Adjj\5 +s # _q GGH  GGI||  *dD$ !LU_UdUdeqqs  ';!7 P\\^  _ _ _s BC..C7)TTrN)r'r(r)r*r+rr boolrr,rrFrNrHrrRrUrjr-rrrArATs  J J3; MO  """ "  "  "&ccc6k*$   s   _rrActeZdZUeeeefed<dfd Ze de efdZ ddZ ddZ defdZxZS) Libdevice_symbol_groupsrcBt|d|i|_d|_y)z_ Constructor for Libdevice. :param path: path of the libdevice library libdeviceTN)superrrois_pure)rrF __class__s rrzLibdevice.__init__s# d+  rc|jd}|d}|d}|j}|ddk(ryt|d}|y|jd}|djdd}|jdd}d|vry|djd } g} g} t| D]U\} } t| jd}|yd t | z}| j || j |W|d k(rt | d | d <n=|jd r,t |}t| D]\} }t || | <t|||| | S)N@rinternal(__nv_ieee,argsadu) splitr=replace enumerater*appendr? startswithr )lineentriesret_strfunc_strret_strsr func_strs func_namerarg_strsrriarg_strarg_typearg_names r_extract_symbolzLibdevice._extract_symbols**S/!*1:==? A;* $ ,  NN3' aL((b1 ##GR0 W Q<%%c*  #H- 'JAw#GMMOA$67Hs1v~H   X &   X &  ' e ' " 6IbM    $#8,H(3 5 8*84 !  5i(IyIIrc6i}|jjD]}|j}|||<iddddddddd dd d d d d dddddddddddddddddddidd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d2d4d5d6d5d7d8d9d8d:d;dd?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOddPddQdRdSdTdUdVdWdXdYdZd[d\id]d^d_d`dadbdcdddedfdgdhdidjdkdldmdldndodpdodqdrdsdtdudvdwdxdydzd{d|id}d~ddddddddddddddddddddddddddddddddiddddddddddddddddddddddddddddddddddidddddddddddddddddddd“dd“ddœddœddȓddʓdd̓ddΓiddГddғddԓdd֓ddؓddړddܓddޓddޓddddddddddddddddidddddddddddddddddddddddddddddddddd d d d }|jjD][}|j}||vr ||}||_||jvr|j|j |L|g|j|<]y( Nllabsabsacosfacosacoshfacoshdadd_rdadd_rdfadd_rddadd_rnadd_rnfadd_rndadd_ruadd_rufadd_rudadd_rzadd_rzfadd_rzasinfasinasinhfasinhatanfatanatan2fatan2atanhfatanhbrevllbrevcbrtfcbrtceilfceilclzllclz copysignfcopysigncosfcoscoshfcoshcospifcospicyl_bessel_i0f cyl_bessel_i0cyl_bessel_i1f cyl_bessel_i1fdiv_rddiv_rdddiv_rdfdiv_rndiv_rnddiv_rnfdiv_rudiv_ruddiv_rufdiv_rzdiv_rzddiv_rzerfferferfcferfcerfcinvferfcinverfcxferfcxerfinvferfinvexpfexpexp10fexp10exp2fexp2expm1fexpm1fabsffabs fast_fdividef fast_divideffdimffdimffsllffsfloorffloorfmaffmafmaf_rdfma_rdfmaf_rnfma_rnfmaf_rufma_rufmaf_rzfma_rzfmodffmoduhaddhaddhypotfhypotilogbfilogbisinffisinfisinfdisnanfisnanisnandj0fj0j1fj1jnfjnldexpfldexplgammaflgammallrintfllrintllroundfllroundlogfloglog10flog10log1pflog1plog2flog2logbflogbumaxmaxllmaxullmaxfmaxffmaxuminminllminullminfminffmindmul_rdmul_rdfmul_rddmul_rnmul_rnfmul_rndmul_rumul_rufmul_rudmul_rzmul_rzfmul_rzumul24mul24umulhimulhimul64hiumul64hi nearbyintf nearbyint nextafterf nextafternorm3dfnorm3dnorm4dfnorm4dnormcdffnormcdf normcdfinvf normcdfinvpopcllpopcpowifpowpowipowfrcbrtfrcbrtfrcp_rdrcp_rddrcp_rdfrcp_rnrcp_rndrcp_rnfrcp_rurcp_rudrcp_rufrcp_rzrcp_rzdrcp_rz remainderf remainderurhaddrhaddrhypotfrhypotrintfrintrnorm3dfrnorm3drnorm4dfrnorm4droundfroundrsqrtfrsqrt frsqrt_rnrsqrt_rnusadrscalbnfscalbnsignbitfsignbitsignbitdsinfsinsinhfsinhsinpifsinpisqrtfsqrtfsqrt_rdsqrt_rddsqrt_rdfsqrt_rnsqrt_rndsqrt_rnfsqrt_rusqrt_rudsqrt_rufsqrt_rzsqrt_rzdsqrt_rzfsub_rdsub_rddsub_rdfsub_rnsub_rndsub_rnfsub_rusub_rudsub_rufsub_rzsub_rzdsub_rztanftantanhftanhtgammaftgammatruncftruncy0fy0y1yn)y1fynf)rCvaluesrr ror)r symbol_setsymbolrrenamings r_group_symbolszLibdevice._group_symbolss mm**, )FnnG"(Jw  )  U #V -5w @I8 U^`h js   +4h @I8 U^`h js  v (0 ;B6 LTU\ _gho  f  &v  07  AH  Q\]g  jpqv  V  &w  1A/  Tdet  x  "+H  7@  LUV^  ajks   x "+H 7@ LRSX [bci lv    +4X @Fu OWX_ bijp  g  ' 06u ?N~ `ghn qx  W '-e 6? KTU] `ijr  x ")& 3:6 DLW W_`g jr  w )1' x JTU^ aghm px  w )0 :A& KQRW Zabg jr  E $*5 39% BI% RZ[` cjkp E! %h! 1:8! FOPX! [dem! " x# ""+H# "7@# "LUV^# "aijq# $ g% $ )'% $4>w% $IUVa% $dp ' &#H' &/8' &DNy' &[hiu' ( f) (&u) (/5e) (>DU) (MUV]) (`ijr) * x+ *"+H+ *7@+ *LUV^+ *ajks+ , x- ,"+H- ,7CK- ,RZ[b- ,enow- . V/ .(/ .5? / .LTU\/ ._gho/ 0 1 0&,U1 05>x1 0JTU^1 0aklu1 2 E3 2#F3 2-5g3 2@G3 2Q[\e3 2hr 5 4"95 4/9)5 4FPQZ5 4]ghq5 6  7 6$.y7 6;DX7 6PYZb7 6enow7 8 x9 8"+H9 87@9 8LUV^9 8ajks9 : E; :#F; :-6x; :BJ7; :UZ[_; :im = Bmm**, 8FnnG(""7+")$---##G,33F;06x##G, 8rc&t|jdkDrytjdd|gj j }|D]/}|j |}|||j|j<1|jy)Nrgrepdefine) r]rNrb check_outputdecode splitlinesrrCrr)rrQoutputrrs rrRzLibdevice.parse_symbolss t|| q ((&(J)GHOOQ\\^ 0D))$/F~)/DMM&++ &  0 rc2d}d}d}|jjD]}|dz }d|djd}|djD] }||dz } |dz }d |jd }|djD] }||dz } |d z }d }|D]L} |dz }| j D] } |d | dz } d | j d} |d| jzdz| zdzz }N|dz }||z }|d|jz }|dz }|||zdzz }||z|z} | S)Nzfrom . import core rzz @core.extern zdef rryz, 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)  ) rorrrr rrrrs) r import_str header_strrrN func_name_strr return_strarg_type_symbol_dict_strrrrrgs rrUzLibdevice._output_stubss ,  **113 :G ( (H"71:#5#5"6a8M#AJ00 1H:R0  1 0 0M>tzzlJabJ#AJ00 . "o-  . ' !J'* $! `(C/( & 0 0MH,,xj0LL,M)&//):"=(Hv{{,BV,Kh,VY_,__(  ` % + $ 2 2J Jt||n5 5J 2 2J  2T9 9H3 :4 *X5rrk)r'r(r)rr*rr r+r staticmethodrrrrRrU __classcell__)rts@rrnrnsWd6l*++'J&!1'J'JR08d &s&rrncfeZdZUeed<eed<d dZdeddfdZedefdZedefd Z y) LLVMDisassemblerrB_ll_filerNc ||_d|_y)zf Invoke llvm-dis to disassemble the given file. :param path: path to llvm-dis z/tmp/extern_lib.llN)rBr)rrFs rrzLLVMDisassembler.__init__5s  , rlib_pathctj|j|d|jgtjj y)Nz-orZ)rbrcrBll_filerdre)rrs rdisasmzLLVMDisassembler.disasm=s0$**hdllCJOO\hhjrc|jSr)rrs rrzLLVMDisassembler.ll_file@r!rc|jSrrLrs rrFzLLVMDisassembler.pathDrrrk) r'r(r)r*r+rrr,rrFr-rrrr1s] JM-ksktkcrrrq llvm_dis_pathrlib_namerfc|dk(r t|}ntd|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 rqzUnknown extern library: N)rnr^rrrRrrj)rrrrf extern_libllvm_disassemblers rbuildrLse;x( 28*=>>(7X&.667!!*-r__main__z --llvm-diszPath to llvm-diszllvm-dis)desthelpdefaultz --lib-pathzPath to the extern library)rrz --lib-namezName of the extern libraryz--outputzOutput file pathz/tmp/)argparserbabcrrtypingrrrr r*r=r?rArnr extern_libsrr'ArgumentParserparser add_argument parse_argsargsrrrrfr-rrrsJ#''//dhsm$S=_C=_@Z Zz0m .... .  .2 z $X $ $ &F  ?AS]gh  :