K iddlZddlZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z ddl mZmZmZmZmZmZmZmZmZddlmZmZddlmZmZddlmZmZmZm Z!dd l"m#Z#m$Z$m%Z%dd l&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,dd l-m.Z.m/Z/m0Z0d d l1m2Z2m3Z3m4Z4dZ5dZ6dede7fdZ8dede7fdZ9dede7fdZ:dede7fdZ;dede7fdZdZ?dee$fdZ@deejdee%fdZBe7eCeDdhZEdZFd ZGGd!d"ZHGd#d$ejZJGd%d&ZKe d'(Gd)d*ZLGd+d,ejZMd.d-ZNy)/N) dataclass) ModuleType) AnyCallableDictOptionalTupleTypeUnionIterableList)knobslanguage)irgluon_ir) constexpr str_to_tytensortuple)_unwrap_if_constexpr base_value base_type)get_jit_fn_file_line get_full_name JITCallableBoundConstexprFunctionConstexprFunction JITFunction) find_paths_ifget_iterable_pathset_iterable_path)CompilationErrorCompileTimeAssertionFailureUnsupportedLanguageConstructcZd}tj||std|d|||S)Nz^[a-zA-Z_][a-zA-Z0-9_]*$zinvalid z identifier: )rematchr$)nametypepatterns d/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/triton/compiler/code_generator.pycheck_identifier_legalityr.s4)G 88GT "$}TFCTJJ Kc dj|Dcgc]}|jc}}djt|Dcgc]}|dt||c}}|j dd}|j dd}|j ddj dd}|d |d |}|||jz }|Scc}wcc}w) N_c._d_'_sq_[]__)joinmanglesortedreprreplace) r*arg_tys constantscaller_contexttymangled_arg_namesimangled_constantsrets r- mangle_fnrG s!@""))+!@AviGX!Y!QCqil);(<"=!YZ)11#u=)11#v>)11#s;CCCM F"&'r*;)< =C! ~$$&& J"A!Ys CCoreturnc"t|tSN) isinstancerrHs r-_is_triton_valuerN.s a $$r/c"t|tSrK)rLrrMs r-_is_triton_tensorrP2s a  r/cl|duxs/t|ttjjt fSrK)rLrrcoredtyperrMs r- _is_constexprrT6s) 9 T 1y(--2E2E{&STTr/ct|xr5|jjxr|jjdk7SNr#)rPr+is_blocknumelrMs r-_is_non_scalar_tensorrY:s/ Q  MQVV__%6%L166<<1;LMr/c.t|ttfSrK)rLlistrrMs r- _is_list_liker\>s a$ ''r/c |jrbt|D]S\}}t|rt|st |j |d|j d|j|d|yy)Nz Function z= is marked noinline, but was called with non-scalar argument :)noinline enumeraterTrYr&src__name__ arg_names)nodefnargsidxargs r-_check_fn_argsriBs {{!$ HC %*?*D2FFD },ijljvjvwzj{i||}B~CD r/cbt|txrt|txr t |dS)N_fields)rLr+ issubclassrhasattr)vals r-_is_namedtupleroLs' c4 WZU%; WY@WWr/ctt|r |j}nDt|tj r|jj }nJdt||Dcgc] }|| }}|Dcgc]}| t|n|}}|Dcgc]}|j}}t j |t j||Scc}wcc}wcc}w)NzUnsupported type ) ror+rkrLrrfieldsr tuple_type)valuererqvvalstypess r-_apply_to_tuple_valuesrwPsd5k" E8>> *""7)$u+77u !aBqE !D !6: ;AIIaL1 , ;D ;! "QVV "E " >>$ 3 3E6 B CC " ; "s*C?CC$valuesc:g}|D]}|j||SrK) _flatten_ir)rxhandlesrts r-flatten_values_to_irr|^s'G  g Nr/r{rvc#pKd}|D]}|j||\}}||t|k(sJywNr) _unflatten_irlen)r{rvcursorrBrss r-unflatten_ir_valuesresI F((&9 v  S\ !! !s46cjg}|j||jj|d\}}|Sr~)rzr+r)rnr{cloner1s r-_clone_triton_valuerps2GOOGxx%%gq1HE1 Lr/c|jDcic]\}}|t|r t|n| c}}Scc}}wrK)itemsrNr)scoper*rns r- _clone_scoperws;^c^i^i^k lQZQUWZD.>s.C%c* L ll ls#;ceZdZdZdZdZy)enter_sub_regionc||_yrK) generator)selfrs r-__init__zenter_sub_region.__init__}s "r/ct|jj|_t|jj|_i|j_|jj j|_|jj j|_ |j|jfSrK) rrlscopeliveins local_defs prev_defsbuilderget_insertion_block insert_blockget_insertion_point insert_point)rs r- __enter__zenter_sub_region.__enter__s#DNN$9$9: %dnn&?&?@$&! NN22FFH NN22FFH||T....r/c|jjj|j|j|j_|j |j_yrK)rrrestore_insertion_pointrrrrr)rrfkwargss r-__exit__zenter_sub_region.__exit__s@ 66t7H7HI $ $(NN!r/N)rb __module__ __qualname__rrrr/r-rr{s#/3r/rceZdZdZdefdZdefdZdefdZdejdefdZ dejdefdZ dejdefd Zdejdefd Zdej"defd Zdej&defd Zdej*defd Zdej.defdZdej2defdZdej6defdZy)ContainsReturnCheckerc||_yrK)gscope)rrs r-rzContainsReturnChecker.__init__s  r/rIc,tfd|DS)Nc3@K|]}j|ywrKvisit).0srs r- z5ContainsReturnChecker._visit_stmts..s/Q4::a=/)any)rbodys` r- _visit_stmtsz"ContainsReturnChecker._visit_stmtss/$///r/cyNFr)rres r-_visit_functionz%ContainsReturnChecker._visit_functionsr/c4d}tj|D]}\}}t|tr8|D]2}t|tjs|xs|j |}4Nt|tjsi|xs|j |}|Sr)ast iter_fieldsrLr[ASTr)rrdrFr1rsitems r- generic_visitz#ContainsReturnChecker.generic_visits- /HAu%&!6D!$0!5TZZ%56E377+.TZZ.  / r/rdcZt|jtjrm|jj|j vrJ|j |jj}t ||j}|j|Sy|j|jSr) rLrsrNameidrgetattrattrrr)rrdrsres r-visit_Attributez%ContainsReturnChecker.visit_Attributesw djj#(( +zz}} + DJJMM2UDII.++B//zz$**%%r/ct|jtjury|j|j vr*|j |j}|j |Syr)r+ctxrStorerrr)rrdres r- visit_Namez ContainsReturnChecker.visit_NamesO >SYY & 77dkk !TWW%B''+ +r/cyNTrrrds r- visit_Returnz"ContainsReturnChecker.visit_Returnr/cyrrrs r- visit_Assignz"ContainsReturnChecker.visit_Assignr/cyrrrs r-visit_AugAssignz%ContainsReturnChecker.visit_AugAssignrr/c8|j|jSrKrrrs r- visit_Modulez"ContainsReturnChecker.visit_Module  ++r/c8|j|jSrKrrs r-visit_FunctionDefz'ContainsReturnChecker.visit_FunctionDefrr/c|j|j}|jr|xs|j|j}|SrK)rrorelse)rrdrFs r-visit_IfzContainsReturnChecker.visit_Ifs= * ;;7**4;;7C r/cr|j|jxs|j|jSrK)rrrrs r- visit_IfExpz!ContainsReturnChecker.visit_IfExps'zz$))$? 4;;(??r/c8|j|jSrK)rfuncrs r- visit_Callz ContainsReturnChecker.visit_Callszz$))$$r/N)rbrrrboolrrrr AttributerrrReturnrAssignr AugAssignrModuler FunctionDefrIfrIfExprCallrrr/r-rrs0D0T T  &CMM &d &sxxD CMMd ,,,,coo,$, SVV  @ @d@%sxx%D%r/rceZdZdZdej deedeejfdZ dej deejfdZ dej fdZ dZ y ) ASTFunctionc<||_||_||_||_yrK) ret_types arg_typesr@attrs)rrrr@rs r-rzASTFunction.__init__s""" r/rrvrIcBg}|D]}||j|||SrK)_flatten_ir_types)rrrvir_typesrBs r-flatten_ir_typeszASTFunction.flatten_ir_typess5 4Bz  ( 3 4r/c:|j||jSrK)rr)rrs r-return_types_irzASTFunction.return_types_irs$$Wdnn==r/cfd}ttj|}|Dcgc]}tj|}}j ||}j |}|j ||Scc}w)Nc,|jvxr|duSrKr@pathr1rs r-z'ASTFunction.serialize..T^^!;!M r/)r[r rr!rrget_function_ty)rris_val val_pathsrr arg_types_ir ret_types_irs` r- serializezASTFunction.serializeszNt~~v>? IRS&t~~t<S S,,Wi@ ++G4 &&|\BBTsA>cpfdj}fd}ttj|}d}t|j Dcgc]}|j |}}|D]s}t j|} jj|g} | D]\} } |j|| | | j||\} }t||| uj}|jD]%\}} t||tj| '|Scc}w)Nct|tttjfr*tj|Dcgc] }| c}|Stj dScc}wrK)rLr[rrrrr)rBx make_templates r-rz.ASTFunction.deserialize..make_templatesR"tUH,?,?@A~~&DA}Q'7&DbII%%d+ +'EsA&c,|jvxr|duSrKrrs r-rz)ASTFunction.deserialize.. rr/r)rr[r range get_num_argsrfr!rget set_arg_attrrr"r@rrr)rrerurrrrDr{rrB attr_specs attr_nameattr_valrnr@rs` @r- deserializezASTFunction.deserializes" , T^^,Mt~~v>? ',R__->'?@!2771:@@ /D"4>>48Bb1J'1 =# 8 8< =**7F;KC dD# . /NN "* CID# dD(*<*rzz>d277m>CCr/rT)frozenc"eZdZUeed<eed<y)BoundJITMethod__self____func__N)rbrrr__annotations__rrr/r-rr!sr/rcxeZdZUdddddddddedeedeefdZee e e e e eefDcic]}|j|c}}Zeeefed <ej'd ej*j,fd ej.fd ej0ffd ZdZdZej:dZdZdede e!e"fddfdZ#dZ$dZ%dZ&dZ'dZ(dZ)de*jVfdZ,dZ-defdZ.d Z/d!Z0d"Z1d#Z2d$Z3d%Z4d&Z5d'Z6d(Z7d)Z8d*Z9d+Z:d,Z;e*jxd-e*jzd.e*j|d/e*j~d0e*jd1e*jd2e*jd3e*jd4e*jd5e*jd6e*jd7e*jd8i ZHeeIe*jefed9<d:ZKd;ZLd<ZMd=ZNd>ZOd?ZPd@ZQdAZRe*jdBe*jdCe*jdDe*jdEe*jdFe*jdGiZYeeIe*jefedH<dIZ[e*jdJe*jdKe*jdLe*jdMiZ`eeIe*jefedN<dOZbdPZcdQZddRZedSZfdTZgdUZhdVZidWZjdXZkdeleeffdYZmdefdZZndpd[efd\Zod]Zpd^Zqd_Zrd`Zsde*jfdaZue*jdbe*jdciZxeeIe*jefedd<deZzdfZ{dgZ|dhZ}fdiZ~djZde*jddfdkZdlZdmdnlmZej*j eej*j eeej eej eee ee eeeiZeeee*jgeffedo<xZScc}}w)q CodeGeneratorNFr)module is_kernelfunction_typesr_rA file_name begin_linejit_fnrrc ||_| |_| r8ddlm}t j ||_||j |_n7ddlm }tj ||_||j |_d|_ ||_ |dz |_ |j j||d||j _||j _|in||j _| |j j%n| |_| in| |_||_i|_|j/D]\}}t1|t2r*|j5|j6||j,|<@t9|dd}||vr't9|||j6|j,|<x||j,|<i|_||_| r#||j?ddzd}tA|d}||_!| |_"d|_#| |_$||_%g|_&d|_'i|_(|jS|_*d|_+d |_,y) Nr) GluonSemantic)TritonSemanticr#rr3functionF)-contextis_gluon,triton.experimental.gluon.language._semanticrrGluonOpBuilderrsemantictriton.language.semanticrrname_loc_as_prefixrrset_locoptions codegen_fns module_map create_modulerfunction_ret_types prototyperrrLrrrbrrrrfindr. function_namercur_noder_rA scf_stackret_typer_define_name_lookupdereference_namerevisiting_arg_default_value)rrr,rr.rr'r(r)r rrrr_rArrrrkrt module_names r-rzCodeGenerator.__init__)s     R#227;DL)$,,7DM ?::g.DL*4<<8DM"&"$q. Y A6& $/  (2(:"  6"N" LLN #DAq!Z(!+ A!> A!!\26Kj(!(K)@!**!M A!" A #  )-*=*=c*BQ*F*GHM5mZPM*"   , .06:6N6N6P+0'r/builtin_namespaceprintminmaxcDt|jj||SrK)r&rra)rrdmessages r- _unsupportedzCodeGenerator._unsupportedrs+DKKOOT7KKr/crt}|jj||}||uryt|ryy)NFT)objectrrrT)rr* absent_markerrns r-_is_constexpr_globalz"CodeGenerator._is_constexpr_globalus6 kkoodM2 -   r/c|dtffd dtffd tdtdtffd }|S)Nr*c<jj||SrK)rr)r*absentrs r- local_lookupz7CodeGenerator._define_name_lookup..local_lookups;;??40 0r/cbjj||}t||u|jvt |t ut |tt|ddt|ddt|ddjdt|ddjdt |tjt|j|jtj j"g r|St%t'j(d|d j+d d ) N__triton_builtin__F__triton_aggregate__rrztriton.languagez"triton.experimental.gluon.languagez. Cannot access global variable a from within @jit'ed function. Triton kernels can only access global variables that are instanstiated as constexpr (`x = triton.language.constexpr(42)`). Note that this is different from annotating a variable as constexpr (`x: triton.language.constexpr = 42`), which is not supported. Alternatively, set the envvar TRITON_ALLOW_NON_CONSTEXPR_GLOBALS=1, but we do not promise to support this forever.  )rrrr7r+rrLrr startswithrrSrorAr4r compilationallow_non_constexpr_globals NameErrortextwrapdedentr>)r*rDrnrs r- global_lookupz8CodeGenerator._define_name_lookup..global_lookups++//$/C6MD222I+sK0C!5u=C!7?Cr2==>OPCr2==>bcsHNN3"3'--d333%%AA!$ %//3f51!45 6=WT35GI Ir/rIc}jjfD]}|||}||us|cSt|d)Nz is not defined)r7rrN)r*rDlookup_functionrsr@rQrErs r- name_lookupz6CodeGenerator._define_name_lookup..name_lookupsW"F#/@V@V@Z@Z#Z !'f5& L !tfO45 5r/)strr?r)rrTr@rQrEs` @@@r-r2z!CodeGenerator._define_name_lookupsG 1s 1 I IB  6c 6c 6 6r/c#0K||_dd|_ywrK)r%)rprefixs r-_name_loc_prefixzCodeGenerator._name_loc_prefixs"( "&sct|tjtjfr:|j |j j ||jyt|rTg}|j||D];}|j |j j ||j=yyrK) rLrrsblock_argumentr&rcreate_name_locget_locrNrz)rrnr*r{handles r-_maybe_set_loc_to_namez$CodeGenerator._maybe_set_loc_to_names cBHHb&7&78 9 KK 44T3;;=I J c "G OOG $! Ut||;;D&..BRST U#r/r*rsrIc@||j|<||j|<y)z This function: called by visit_Assign() & visit_FunctionDef() to store left value (lvalue) 1. record local defined name (FIXME: should consider control flow) 2. store tensor in self.lvalue N)rr)rr*rss r- set_valuezCodeGenerator.set_values " D %r/cr|jj}|jj}||fSrK)rr\r)rlocips r-_get_insertion_point_and_locz*CodeGenerator._get_insertion_point_and_locs1ll""$ \\ - - /3wr/cp|jj||jj|yrK)rrr&)rrcrbs r-_set_insertion_point_and_locz*CodeGenerator._set_insertion_point_and_locs& ,,R0 S!r/c|jj}|jj||jj ||j |j |jj|jg}g}g}|jD]\}}t|r~|j|} |j|| |t|g} t| g} | | k7sQ|j ||j |j|j| ||j vrJd|d|j#|_ i|_|||fS)NLoop carried variable z is not a triton value)r create_blockset_insertion_point_to_startr0appendvisit_compound_statementrpoperaserrNr_verify_loop_carried_variabler|r+extendrcopy) rrdrblockinit_tys init_handlesnamesr*live_valloop_val live_handles loop_handless r- _find_carrieszCodeGenerator._find_carriessF ))+ 11%8 d# %%dii0   %mmo jND();;t,2248L3XJ? 3XJ? </LL&OOHMM2 '' 54??2i6LTFRh4ii2 jlln lH,,r/ct|s|g}|D]/}|j|t|tjs/yyrK)r\rrLrr)rstmtsstmts r-rlz&CodeGenerator.visit_compound_statements?U#GE D JJt $ +  r/cDtjj||yrKr NodeVisitorrrs r-rzCodeGenerator.visit_Module  %%dD1r/c|j|j}|Jtj|jDcgc]}|j|c}}|Scc}wrK)rrrrelts)rrdreltrs r- visit_ListzCodeGenerator.visit_List sNjj"{{~~$))D3tzz#DE EsArdct|jdk7r td|jd}|j|j}t |t s tdg}|D]R}|j|jj||j|j|jTt |S)Nr#z'nested comprehensions are not supportedrz'only tuple comprehensions are supported) r generators ValueErrorriterrLtl_tupleNotImplementedErrorr`targetrrkr)rrdcomprresultsrs r-visit_ListCompzCodeGenerator.visit_ListComps t 1 $FG Gq!zz$))$$)%&OP P 1D NN4;;>>4 0 NN4::dhh/ 0 1  r/c&j|j}g}fd|}|tj}nCt |tj j sJ|j||j}jj|j|_ n*j|k7rtdjd|jj}jj|y)Nct|tjr t|St|tjt t frjj|S|SrK) rLrrrwrintfloatr# to_tensor)rsdecayrs r-rz)CodeGenerator.visit_Return..decay'sO%0-eU;;EH$6$6U#CD}}..u55Lr/zInconsistent return types:  and )rrsrvoidrLrRrrzr+rrFr1 TypeErrorriset_insertion_point_to_end)rrd ret_valuer{ret_typost_ret_blockrs` @r-rzCodeGenerator.visit_Return#sJJtzz*  )$  ]]Fi)A)AB BB  ! !' *^^F ! == "DM ]]f $9$--fXVW W224 //?r/c|j|j}t|tjj sJ|j SrK)rrsrLrrRrrx)rrdrfs r- visit_StarredzCodeGenerator.visit_StarredAs8zz$**%$ 3 3444{{r/c@ |j|j\}}|jr|j|dt |jj dddD]\}}|jj| dz }|j }|j}tj|tj} |tj| g|} ntj| ||} |jrJd|_ |j| d|_ |jrd nd } |jj!|j"} |j"j%|j&|j(| | |j*|_|j&j-|j|jj/} |jj1|j}|j20|j2j5|j|j"t7||D])\}}|j9|||j;||+|j"j=}|j"j?| |jA|jB|j"j=jErJ|jF|jFtHjJk(r2tHjJ|_#|j"jMgn tO|jFtHjPr&|jFjR|j_*n|jFg|j_*|jjW|jj!|j"|j"jM|jjY|j"Dcgc]}|j"j[|c}|jj]|r|j"j_|yy#d|_ wxYwcc}w) Nz,nested function definition is not supported.r#)rrtargetsrs)rrs annotationTFpublicprivate)0rrfrer=r`defaultsrrhrrrr AnnAssignr4rr,rrget_or_insert_functionrr.r_ push_backadd_entry_blockr rAinitialize_calleezipr^r`rrjrlrhas_terminatorr1rrrFrLrrrvr reset_typer create_poisonfinalizer)rrdrc kwarg_namesrD default_valuearg_noderr* st_target init_node visibilityfn_tyentry arg_valuesarg_name arg_value insert_ptrBs r-rzCodeGenerator.visit_FunctionDefFsf!%DII!6 ; 77##D*XY Y )$))*<*+>(,0MM?( GG  t~~77 E F LL  t~~GeGefjfrfrGstdll88<t u   LL 3 3I > E38/>us:&R-"R Rcg}|jD]}||j|gz }|j|j}||fSrK)rfrkwarg)rrdrcrhrs r-visit_argumentszCodeGenerator.visit_arguments~sL 99 +C $**S/* *I +jj, +%%r/cZtjj|||jSrK)rrrrhrs r- visit_argzCodeGenerator.visit_args %%dD1xxr/cb|j|j}|j|j}|j|j}|tk(rE||j vrt |dt |}||j |<|j |S|j|S)Nz4 is already defined. constexpr cannot be reassigned.)rrrrsrrrr)rrdrrrss r-visit_AnnAssignzCodeGenerator.visit_AnnAssignsZZ0 DKK( 4::&  "$ F8,D"EFFe$E"'DKK ;;v& &  &&r/ct|jtjsJt|tjr|j ||St|tj r=t|jD]$\}}|j||j|&yt|tjr tdt|tjsJ|j|j||y)Nz/Attribute assignment is not supported in triton)rLrrr Subscriptvisit_Subscript_Storer r`r assignTargetrxrrrr`r)rrrsrDs r-rzCodeGenerator.assignTargets&**cii000 fcmm ,--fe< < fcii (&v{{3 ; 6!!&%,,q/: ;  fcmm ,%&WX X&#((+++ tzz&)51r/cfdt|tjr |jgn |j}t |dk(sJ|d}t|tj rFj|j5j|j}dddn!j|j}j|y#1swYxYw)Nct|tjr t|Stjtjf}t |}|2t |s't||sjj|}|SrK) rLrrrwrSrrNr#r)rsnative_nontensor_types_sanitize_valuers r-rz3CodeGenerator.visit_Assign.._sanitize_valuesm%0-e_EE&.nnhnn%E "(/E $U+u&<= //6Lr/r#r) rLrrrrrrrXrrrsr)rrdrrrxrs` @r-rzCodeGenerator.visit_Assigns $.dCMM#B4;;- 7|q    fchh '&&vyy1 A(DJJ)?@ A A%TZZ %;SYY &77N$$TWW--r/cDtjj||yrKrrs r- visit_StorezCodeGenerator.visit_Storerr/cDtjj||yrKrrs r- visit_LoadzCodeGenerator.visit_Loadrr/c|jDcgc]}|j|}}tj|Scc}wrK)rrrr)rrdrrfs r- visit_TuplezCodeGenerator.visit_Tuples5'+yy1! 1 11~~d##2s>cnt|rt||||jSt|r5tjdd|}t||||jSt |t tjfst |t r t |}t|||S)N _semanticz__(.*)__z__r\1__) rPrr#r(subrLrrr)r method_namerrreverse_method_names r-_apply_binary_methodz"CodeGenerator._apply_binary_methods S !,73 ,SDMMJ J S !"$&&j+"N 473 34SDMMR R# 8>>:; 3PY@ZC.C(wsK(--r/c^|j|j}|j|j}|jj t |j }|5|j|dj|j j|j|||S)Nz8AST binary operator '{}' is not (currently) implemented.) rleftright_method_name_for_bin_oprr+rr=formatrbr)rrdrrrs r- visit_BinOpzCodeGenerator.visit_BinOpsjj#jj$2266tDGG}E  ##D$^$e$efjfmfmfvfv$wy y((c3??r/__add____sub____mul__ __truediv__ __floordiv____mod____pow__ __lshift__ __rshift____and____or____xor__rc R|jj||j|j|jj }|j j }|jj }i}|j }|jr|jj||j |_i|_|j|j|j j }|jj }|jj }g} |jD]\} } t| st|| g} t|| g} | | k(r6| j| || || <|| || <|df|dffD]S\}}t|| t| k(}|r|| j| jk(r?Jd| d| d|d|| t|j|jzD]i} | | vr|| }|j}|| }|j}t|t|k(}|r||k(sJd| d|d |d | j| k||||| fS) Nthenelsezinitial value for `z ` is of type z , but the z block redefines it as zMismatched type for z between then block (z) and else block ())rrjrlrrrrqrrrrNr|rkr+r<keys)rrdr then_block else_block then_defs then_vals else_defs else_valsrur*rs then_handles else_handlesdefs block_name type_equalthen_valthen_tyelse_valelse_tys r-visit_then_else_blocksz$CodeGenerator.visit_then_else_blockss 11*= %%dii0\\557 OO((* KK$$&  LLN ;; LL 5 5j A!,,.DK DO  ) )$++ 6,,.I99;J ((*I"==? OKD%#E*/40ABL/40ABL|+ LL 'oIdO'oIdO&/%89f:M$N O j!$t*-e< !d4joo&CO)$}UGD)l*A$t*OOC O O(9>>+inn.>>? Du} HmmG HmmGh4>9J'W"4 .&tf,A'K##*)1. .4 LL  )ZUBBr/c@t|5}|\}}|jj}|jj}|jj||jj |j |||j ||||\}}}|jj} |jj||jrJ|tfd|D} |jj| | |jj||jrJ|tfd|D} |jj| | t| t| k(sJt| | D];\} } | j}|| jk(sJ| j|= ddd|jj tt Dcgc]}| j!|}}Dcgc]}|j"}}t%||}t||D]\}}|j'||y#1swYxYwcc}wcc}w)Nc3(K|] }| ywrKrrr*rs r-rz3CodeGenerator.visit_if_top_level..@/RD $/Rc3(K|] }| ywrKrrr*rs r-rz3CodeGenerator.visit_if_top_level..Er r )rrrircreate_cond_branchr]rrr| create_branchrrget_type add_argumentrjrrhr+rr`)rcondrdsrrip_blockrrru endif_blockrrthen_helse_hrBrD res_handlesr*rv new_values new_valuerrs @@r-visit_if_top_levelz CodeGenerator.visit_if_top_level0sI d # -r " GX224J224J LL 3 3H = LL + +DKKZ P++D':zR @Iy*j%,,335K LL 3 3J ?!002 Czl C2//RE/RRL LL & &{L A LL 3 3J ?!002 Czl C2//RE/RRL LL & &{L A|$L(99 99"%lL"A -__&V__....((, -/ -: 11+>38\9J3KLa{q)L L278$4%%88(e< "5*5 ,OD) NN4 + ,E - ->M8sGJ !J?J Jct|5}|\}}|j\}}|jj}|jr|jjnd} |j |||| \}} } t fd| D} t| | D]\} } |j| | |j|||jj| Dcgc]}|jc}|jd}|j|j|jj|jt!| dkDr|jj#| |js|j%} n| j|j%|jj|j%t!| dkDrUt fd| D}t| |D]\} } |j| | |jj#|dddt't! Dcgc]}j)|}} D cgc]} | j*}} t-||}t| |D]\} }|j/| |ycc}w#1swYxYwcc}wcc} w)Nc3(K|] }| ywrKrr s r-rz-CodeGenerator.visit_if_scf..`r r Trc3(K|] }| ywrKrrs r-rz-CodeGenerator.visit_if_scf..os3VIdO3Vr )rrdrrirrr|rr^rf create_if_oprr]merge_block_beforeget_then_blockrrcreate_yield_opget_else_blockr get_resultr+rr`)rrrdrrr1rclast_locrrrurr*rnhif_oprrDrrvrrrrs @@r- visit_if_scfzCodeGenerator.visit_if_scfWs d # ;rJGQ<<>LB224J8< 224J++D':zR @Iy*j%0/RE/RRL  5 7 c++C6 7  - -b( ;LL--\.Rqzz|.RTXT_T_aefE  ) )%*>*>*@ A LL 3 3E4H4H4J K5zA~ ,,\:;;"113 --e.B.B.DE LL 3 3E4H4H4J K5zA~33VPU3VV !$UL!9;ID#//T:; ,,\:5 ;85:#l:K4LMqu''*M M278$4%%88(e< "5*5 ,OD) NN4 + ,'/S ; ;8N8s+CK(K ?E K)K#K(KK c |j|j}t|r+t|r|j |d|j j ratjdtj|jztjj||j|}|jtj |j}t#|j$j|r1|j&r|j |d|j)||y|j+||yt-|}t |t.vrO|j |dj1dj3dt.Dt |j4|r |j6n |j8}|j;|y) Nz=Boolean value of Tensor with more than one value is ambiguousziIf conditional called with multidimensional Tensor instead of scalar; please use "if (%s).item()" instead)r _generatorrzMCannot have `return` statements inside `while` or `for` statements in triton.O`if` conditionals can only accept values of type {{{}}}, not objects of type {}, c34K|]}|jywrKrbrr1s r-rz)CodeGenerator.visit_If..!G!**!G)rtestrPrYr=r+rWwarningswarnrunparserrR_unsplatr#toint1rrr0rr*r_condition_typesrr:rbrrrl)rrdr active_blocks r-rzCodeGenerator.visit_Ifzszz$))$ T "$T*''.mnnyy!!# Bkk$)),-. }}--ddmmX\-]778==DMM7BD$T[[177=>>++moo''d3!!$-'-DDz!11''krr !G6F!GGT ++-.. )-499$++L  ) ), 7r/c 8|j|j}t|rE|jtj |j }t|5|j\}}|jj}|jj||j j|j|j}|jj}|jj}|jj||j j|j|j}|jj}|j!|||j"|j"k(s!Jd|j"d|j"|j"} | tj$k7r| j'|jgng} |jj)| |j*d} |j-| j/| rO|jj1| j/|jj3|j*g|jj1| j/|j-| j5| rO|jj1| j5|jj3|j*g| r/tj6j9| j;d| ndcdddSt=|}t#|t>vrO|jA|djCdjEdt>Dt#|jF|r|j|jS|j|jS#1swYyxYw) NrzATernary expression with dynamic condition has inconsistent types rTrr-r.c34K|]}|jywrKr0r1s r-rz,CodeGenerator.visit_IfExp..r2r3)$rr4rPr9rr:r#rrdrrirjrrrrrfr+rto_irr!r]r"r#rr$r%rRrr&rr;r=rr:rb) rrdrrcr'rrrrr1 ret_type_irr)s r-rzCodeGenerator.visit_IfExpszz$))$ T "778==DMM7BD!$'! d#@@B H!\\668  99*E==224::dii3HI!\\==? !\\668  99*E ==224::dkk3JK!\\==? 11"h?}} 5|WX`XeXeWffkltlylykz{|5#==@HHMM@Yx~~dll;<_a  11+t{{DQ--e.B.B.DELL;;E.s>"tzz"~>rrzCCannot have `return` statements inside `with` statements in triton )rr context_exprrrr async_taskrfrrlrdictkeywordsr#rkrr optional_varsr`rrr=reversedr)rrdr withitemClassrhrfcm_listrcallrekwscmresvar_names` r- visit_WithzCodeGenerator.visit_Withs tzz?a jjm00G JJw||4M 3 333:<<@C 3@@"D@4<<@=11$))<=JJ D$$DDII&B/3yy9DJJsO9D9> >>CT:T]]:c:B NN2   GTZZ0 .HB,,.C!!-::d&8&89x-  . ! - 3 3D 9##D*op p %%dii07# *B KKdD ) *+A= :s/IIIIcyrKrrs r- visit_PasszCodeGenerator.visit_Passs r/ct|jdk(rt|jdk(s|j|d|j |j }|j |jd}t |}t |}t|jdtjur t||uSt|jdtjur t||uS|jjt|jd}|8|j|dj|jdj|j!|||S)Nr#z1simultaneous multiple comparison is not supportedrz :##D,@AQAQ@RRs*tu u W %'77B'$--@ @ t'77B') ) tY W--##,RD0YZ^_fZgZpZpYqrt t tsB00C8 ,C8__neg____pos__re __invert__rgc `t|s Jd|dt|s Jd|dt|t|us"Jd|dt|dt|t|r?|j|jk(s%Jd|d|jd|jd yy) Nzcannot reassign constexpr z in the looprhz changed type, was z but is now zLoop-carried variable z has initial type z but is re-assigned to z: in loop! Please make sure that the type stays consistent.)rNr+rP)rr*rwrvs r-roz+CodeGenerator._verify_loop_carried_variables)Z-Gv\+ZZ))Z-Gv\+ZZ)H~h/ l$TF*=d8n=M\Z^_gZhYi j l/$X.(--8==2P @$TF*.O0UtT1B0UzNot implemented)*rrdrzrrfrcreate_while_opcreate_block_with_parent get_beforerjrrrhrrrrr^rr4rLr condition disable_licmset_attrget_disable_loop_licm_attrrcreate_condition_opr] get_afterr0rkrlrrmr|r$r&rrrr)rrdrrrrcr'rurt init_fe_tysr(rswhile_op before_blockrD block_argscondition_argsr*rnr after_block body_handles body_args yield_handlesresult_handles result_valsnew_defr}s` r- visit_WhilezCodeGenerator.visit_While%s{ d #* 8r$& !G\<<>LB/3/A/A$/P ,E<.:; ;H;  - -b( ;||33HlKH<<@@ATATAVX`aL LL 5 5l C7e>e>gh~~ LL 3 3L A LL , ,T[[* E,,??@R@R@TV^_K LL 5 5k B8=c,>O8PQ1KOOA.QLQ+L+FI  2 7 c$' D!(+%++C6 7 NN ! !$ '  ) )$)) 4 NN   00Uu0UUM LL ( ( 7U* 8Z;@L@Q:RSQ(--a0SS).+F   4 7MD' 'DKK $+DOOD !  ' ' 6 7 KK 6D ++ +5 6]< Q&R?* 8* 8ZTs>3O7O(B O7"O-:E%O7O27CO7&P(O77Pct|jtjsJ|j |j }|j |j }t|r |j||j||giS||SrK) rLrrrrrsslicerN call_Method __getitem__)rrdrslicess r-visit_Subscript_Loadz"CodeGenerator.visit_Subscript_Load^so$((CHH---jj$DJJ' C ##D#//3"M M6{r/ctd)Nz&__setitem__ is not supported in triton)r)rrdrss r-rz#CodeGenerator.visit_Subscript_Storefs!"JKKr/c$|j|SrK)rrs r-visit_SubscriptzCodeGenerator.visit_Subscriptis((..r/c^|jDcgc]}|j|c}Scc}wrK)dimsr)rrddims r-visit_ExtSlicezCodeGenerator.visit_ExtSlicels"+/995C 3555s*c j|jj}|jjDcgc]}j|}}t fd|jj D}|t jk(r||i|}t|jj|jj|jj}|D]z}t|j|jj <j#|j$|j&D]"} t(j*j-| $|yd} d} d} d} d}d}|t juru||i|}|j}|j}|j}|j.} |j0} |j2} |j4} |j6}|j8}n|turt;|dkDr|dn#jt)j<d}t;|dkDr|dn'j|jjd}t;|dkDr|dn#jt)j<d}n t?dd}tA|r+|jdkrt|j }d}||}}jBjE|}jBjE|}jBjE|}|jFjIr4|jFjIr|jFjIs3tKd|jFd |jFd |jFd jBjM|jF|jF}jBjM||jF}|jOjP}|jRt jTjFjVjXk(}|jZ}|jZ}|jZ}jPj]|||}jPj]|||}jPj]|||}jPj_|}ja|jj t jTjc||te5}|\}}jg\}}ji||\}}}jk||jPjm||||} to| +| jqd jPjs| to| +| jqd jPjs| | r*| jqd jPju| r*| jqdjPju|r*| jqdjPju|r*| jqdjPjwjxj{|| j}d}!jPj|!tt;|Dcgc]}|!j|dz}"}t|"|}#t||#D])\}$}%j|%|$ja|$|%+j#|j$jxjtfd|D}&t;|&dkDrjPj|&|!j}'|'jdk(sJdjPj|!| j}|r8jPj||}jPj||}j|jj jZj|ja|jj t jTjc||j||jj dddtt;Dcgc]} j|}(}t|(})t|)D])\}$}%ja|$|%j|%|$+|j&D]} Jdycc}wcc}w#1swYxYwcc}w)Nc3@K|]}j|ywrKrrkeywordrs r-rz*CodeGenerator.visit_For..rsQ74::g.QrFr#rrzAOnly `range` and `static_range` iterators are currently supportedTz0For loop bounds and step must all be ints, are (r.rz tt.num_stagesztt.loop_unroll_factorztt.disallow_acc_multi_bufferz tt.flattenztt.warp_specializerqc3<K|]}j|ywrKrsrts r-rz*CodeGenerator.visit_For..rurvz7We use SCF, so the loop body should only have one blockz)Don't know what to do with else after for)NrrrrfrGrHr static_rangerstartrsendsteprrrrrlrrrrr num_stagesloop_unroll_factordisallow_acc_multi_bufferflattenwarp_specializer{rNum RuntimeErrorrTr#rrSis_intrinteger_promote_implr?rint_signednessrR SIGNEDNESSSIGNEDr]create_int_castrr`rrrdrzrf create_for_oprr|get_int32_attr get_unit_attrr}r0rkget_bodyrjrhrrr^rmr|r$ get_parentsizeget_induction_var create_sub create_addreplace_all_uses_withr&)*rrd IteratorClassrh iter_args iter_kwargsiteratorrrDr}rrrrrr{lbubr negative_stepiv_type iv_ir_type iv_is_signedivrrrrcr'rurtrsfor_op for_op_body block_handlesrr*rnr for_op_regionr result_valuess*` r- visit_ForzCodeGenerator.visit_Foros 499>>2 04 ?TZZ_? ?Qdii>P>PQQ H11 1$i?;?H !5!5x||7I7I8==K^K^_L! >.7l DKKNN+--dii8 KK>DOO11$=> >  !$)! HNN *$i?;?HBB==D!,,J!)!A#59Q<4::cggaj;QDbc c  4::>djj[)D MB ]] $ $R ( ]] $ $R (}}&&t,xx (9ARARATNrxxjXZ[][c[cZddfgkgqgqfrrstu u--44RXXrxxH--44WdjjI]]4<<0 --1D1D1O1O1V1VV YY YY{{ \\ ) )"j, G \\ ) )"j, G||++D*lK \\ ' ' 3 t{{~~x}}';';B'HI d #0 LB,0,>,>tW,M )E<  - -b( ;\\//BlKF#J/;1L1LZ1XY#$67C 79T9TUg9hi( > @Z@Z@\] dll.H.H.JK 4dll6P6P6RS 6 8_8_8ab NN ! !$ ' //!,K LL 5 5k B=B3|CT=UV[__QU3VMV,]HEJ  3 * c++C6tS) *  ) )$)) 4 NN   00Uu0UUM=!A% ,,];'224M %%'1, g.g g, LL 5 5k B))+B\\,,R4\\,,R4 KK  ' . . D DR H NN4;;>>8==+?+?G+L M  ' 'DKKNN ;a0 c,>O8PQ1&++A.QQ+NHE UM2 3ID# NN4 %  ' 'T 2 3KK 6D EE E5 6{@zW30 <0 |j<j@|j<jB||jD} |jG|jI|jZ}||j8| <n|j8| }|j(j]| }t_| } |j<ja|| }|t jbk(ryte|jgDcgc]}|ji|}}tktm||gScc}wcc} wcc} wcc}wcc}w#tJ$rL}tLjNjPrtS|jTjV|jXd|d}~wwxYwcc}w)Nct|SrKrTr1rs r-rz0CodeGenerator.call_JitFunction.. s M!4Dr/ct| SrKrrs r-rz0CodeGenerator.call_JitFunction.. sq9I5Ir/) rrr.rr_rrr'r(r)rAr )7inspect getcallargsrercr`rLrrSrrrrrRrr r!rArGrr+r has_functionrrrGrrget_capture_scoper+r_rr'r(r)r rparse ExceptionrrLfront_end_debuggingr$rrar/r1 get_functionr|rMrrget_num_resultsr&nextr)rrerfrrAr*rDrhargs_cstr args_pathargs_valfn_namerrrr,recallee_ret_typesymbolcall_opr{s r-call_JitFunctionzCodeGenerator.call_JitFunctionsC""255:4:6:')||4tT 44o 7FAs#sD+NO"--11#6Q 7!'DEDLMDD+D$77MM!$(IJ >GHd%dD1HH'>4+>+>M"-H/MS/MxYgh{{''0$8$< !Iz ,/;*SFJCQYQ^Q^QdQdEe;g ''loltltuI $B 8TVDI%dllIr?S?S?U^b^i^irt4;DLcLc/1{{i\f.2ll.B.BPTP\P\PhPh151H1HYg/3}} >I  T +(00O/>D # #G ,"55g>O))'2'1,,##FH5 hmm +278O8O8Q2RSQ7%%a(SS'/1BCDD[5 NH0N  T$$88&t{{ tLRSS  TTs= M6MM!M& AM+,M0'O0 O9AOOcxt|ttfr(|jd|j|j }t|t r t||||j|||St|drt|js/tjj|st|trt}t|tr t!j"|j$}nt!j"|}d|j&vr|j(|d<d|j&vr||d< ||i||}t|t*rtj*|}|S||j<j?vrtAtB|}||i|}d} t|tDj*tj*fr tG|| S| |S#t,$rK}t.j0j2rt5|j6j8|t;||d}~wwxYw)Nrrrr,c2t|r|St|SrK)rNr)rs r-wrap_constexprz3CodeGenerator.call_Function..wrap_constexpr\s"Q< r/)$rLrrinsertrrrrirrmrNrrR is_builtinrrGr signature__call__ parametersr#rrrrLrr$rrarUr7rxmaprbuiltinsrw) rrdrerfrN extra_kwargssigrFrrs r- call_FunctionzCodeGenerator.call_Function4s b>+AB C KK2;; 'B b+ & 4T *((T37 7 B #(8(E(--JbJbceJfjt%k'6L"/0'' 4''+cnn,,0MM [)s~~--1 \* M$6,6#6c5)"..-C  ''..0 0+T2D$# cHNNHNN; <)#~> >c""- M$$88't{{c!fE1L Ms?0G%% H9.AH44H9cnt|tr|jd||j||||Sr~)rLrrr)rrdrefn_selfrfrNs r-rzCodeGenerator.call_Methodes1 b+ & KK7 #!!$D#66r/ctj|j}t|ts&j j |}| ||St|dd}|rt|ddrtdtj|jzg}t|tr|j|tjj|dj|t!fd|j"D}|j$Dcgc]}j|}}t't(j*j-d|D}j/||||Scc}w)N_must_use_resultF _is_unusedz#The result of %s is not being used.rJc3@K|]}j|ywrKrrs r-rz+CodeGenerator.visit_Call..xsD74::g&Drc3FK|]}t|tr|n|gywrK)rLr[)rrs r-rz+CodeGenerator.visit_Call..zs#1bXYz!T7J!QRPS2S1bs!)rrrrLr statically_implemented_functionsrrrr7rUrkr$rrar:rGrHrfr[ itertoolschain from_iterabler) rrdrestatic_implementationmur error_messagerNrhrfs ` r-rzCodeGenerator.visit_Calljs/ !$**TYY"7 8"n-$($I$I$M$Mb$Q !$0,T488b,e4 74u5BS[[QUQZQZE[[\M#s#$$S)"4;;??D#((=:QR RDdmmDD+/995C 355IOO111b]a1bbc!!$D#666sE5c,t|jSrK)rrsrs r-visit_ConstantzCodeGenerator.visit_Constant~s$$r/c |jjt|j}|5|j |dj |jj g}|jD]}|j|}t|s't|}|dur |dk(r|cS|dus<|dk(sB|cS|jjrYt|dd}|||jz }tjdt |j"|t%j&||j)|t+|d k(r|j)t+|d k\rS|j-}|j-} |j/|| |} |j)| t+|d k\rSt+|d k(sJ|d S) Nz9AST boolean operator '{}' is not (currently) implemented.F logical_andT logical_orlinenozeLogical operators 'and' and 'or' are deprecated for non-scalar tensors; please use '&' or '|' instead)categoryfilenamersourcerrr#)_method_name_for_bool_oprr+rr=rrbrxrrPrrWrrr5 warn_explicit UserWarningrrr7rkrrmr) rrdrnontrivial_valuessubnodersbvrrrrPs r- visit_BoolOpzCodeGenerator.visit_BoolOps3377TWW F  ##QXXY]Y`Y`YiYijl l{{ 0GJJw'E$U+%[%Kk]&B L$J[L%@ L::&&($T8T:F)$//1**!,!%%"{{40 "((/9 0<  !Q &  $ $U +#$)#'')C#'')C++KcBC  $ $S ) #$) $%*** ##r/r rrcv|j|j}t|r+|jdk(r|jj |dSt |tr|jdvr |j}t||j}t|rt |tr t||S|S)NT)r#r)rsr+) rrsrPrr#permuterLrrrNrr)rrdrrs r-rzCodeGenerator.visit_Attributesjj$ S !dii3&6==((f5 5 c9 %$));L*L))CsDII& C Zk%B!#t, , r/cfd|j_tjj ||yr)rsrrrrrs r- visit_ExprzCodeGenerator.visit_Exprs" $  %%dD1r/cyrKrrs r-visit_NoneTypezCodeGenerator.visit_NoneTyperr/c pt|j}t|D]\}}t|tj rt |j||<:t|tjr|j}|j|j}t|s'|j|dt t|z|dkrdndt|zdzj|j||<t!djt|dj#|S)Nz^Cannot evaluate f-string containing non-constexpr conversion values, found conversion of type rz{}z{!}z:encountered unexpected node of type {} in a JoinedStr noder)r[rxr`rLrConstantrUrsFormattedValue conversionrrTr=r+chrrAssertionErrorr:)rrdrxrDrsconversion_code evaluateds r-visit_JoinedStrzCodeGenerator.visit_JoinedStrs dkk"!&) wHAu%. ,q E3#5#56"'"2"2 JJu{{3 $Y/++xd9o./00&5q%8TdSEY>Y\_>_gghqhwhwxq $%a%h%himnsit%uvv wwwvr/c "|ytj5tjdttjdt|j }|j j}||_t|drt|dr|j j|j|j|jz|j}|j@|j j|j j!|j|n|j j||j j} t"|I|}|r"||_|j j||cdddS#t&$rt($rU}t*j,j.rt'|j0j2|j t5|dd}~wwxYw#1swYyxYw)Nignorer col_offset)r5catch_warnings simplefilterDeprecationWarningPendingDeprecationWarningr/rr\rm create_locrrrr-r%r&r[superrr$rrrLrrrar=)rrd last_noder'here_locrFr __class__s r-rzCodeGenerator.visits <   $ $ &   ! !(,> ?  ! !(,E F I||++-H DMtX&74+F<<224>>4??UYU`U`C`bfbqbqr**6LL(()E)EdF]F]_g)hiLL((2<<//1 ZgmD) )  $$X.=  "$  Z$$88't{{ tAwOUYY  Z'  s1EHF,%HH-AG==HHHcj|j|djt|j)Nzunsupported AST node type: {})r=rr+rbrs r-rzCodeGenerator.generic_visits,&E&L<RVZM`M`&abbr/ct|j}d|cxkrdkr"n tdt|jr tdt |j |jd}t |ts td|sQ|dk(rd}n |j |jd}t|jj|t |y#t$r}dt|zdz}Yd}~Jd}~wwxYw) Nrrz=`static_assert` requires one or two positional arguments onlyzqAssertion condition could not be determined at compile-time. Make sure that it depends only on `constexpr` valuesr#rz')rrfrHrrrrLrrrr=r%rra)rrd arg_countpassedr<rs r-execute_static_assertz#CodeGenerator.execute_static_asserts N I""[\ \(+4=='9[\ \%djj1&>?&$'%D A~X"jj16G.dkkootEYZaEbc c !XG$q'QTWWGXsC$$ D-DDc4dtjffd }|S)Nrdcfd|jDDcic]\}}|t|}}}|jDcgc]}tj|}}t |i|Scc}}wcc}w)Nc3@K|]}j|ywrKrrs r-rz=CodeGenerator.static_executor..ret..s#UGDJJw$7#Ur)rHrrfrr)rrdr*rsrNrhrf python_fns` r-rFz*CodeGenerator.static_executor..rets$Vt}}#UD%*511CFJYYOc(C9ODOY445 5 Ps A6!A<)rr)r@rFs` r-static_executorzCodeGenerator.static_executors 6CHH 6 r/r)rrrK)rbrrrrrrUrrr[rrrrLrrmr7rrupdaterrR device_printminimummaximumr=rAr2 contextlibcontextmanagerrXr^r rrr`rdrfrzrlrrrListComprrrrrrrrrrrrrrrrAddSubMultDivFloorDivModPowLShiftRShiftBitAndBitOrBitXorrr operatorrrr*rrrRrTr]EqNotEqLtLtEGtGtErZcmpopriUSubUAddNotInvertrgunaryoprororrrrrrrrr rrrrrrr BoolOprAndOrrbooloprrr r*rrrr<rAexperimental.gluonttgl static_assert static_printr8rr?r __classcell__)rr1r6s00@r-rr's/3efjQUbc=0+=0U]^bUc=0AI#=0BtUE3 GWM)  A )tCH~ (--,,-   !   ! L 1f'' U&c&% I0E*F&4&"#-P 2 !3<< ! @<S 6?p&' 2*.. 22$ .@   )  n   L L I 8 I >T$s||"4c"9: 7Cr$,N!,F8>3/j*> @$ #))Xsvvx(TWTZTZ\dfifmfmow<d4 ?C#78 t )SXXy#''9cjjR^?tD$5s$:;@-76rL/6A6F2 &0U38_0OCO /E;/Eb/#b7 7(%2$2$h>AWWmUXU[U[]i.?sc!fkr/SpecializationProxyr@rT) rr.rrrrr'r(r)rr z error encountered during parsing)rrcrr@rrr`rindexrrrr collectionsrlfilterrrr=r rrrrverify_with_diagnosticsr8r)rerarr'r(r)rr const_iterkcvcrDksrtrgcexprr,rrrlleavesr@rproxyrs r- ast_to_ttirrz/sR\\**Icmm))+,J *l +FB 3 3 56- 7Bll  $ >beqjE*l3FB"1e, # -B 3==#))DI04Iz& )3== 9F?EF!ad#S]]1%55FIF I IJ,{K.H I)U^ _Egy9M9M9O_a_f_fgl_m%'49Ycmt*5*U[fhfqfqfsuIOOBHHJ   FFN  ) ) +{{} &M=>> MGs'HrK)OrrrFrqrr(r5rOr dataclassesrrvrtypingrrrrr r r r r rrr _C.libtritonrrrrrrr language.corerrr runtime.jitrrrrrr_utilsr r!r"errorsr$r%r&r.rGrrNrPrTrYr\rirorwr|rsrrr+r;rrrrrrrrrzrr/r-rs   !TTT'FFGGCCHHaa %%%!!!USUTUNSNTN(S(T(X D*!5"bhh"Y"#tDz*m33*T%COOT%n77t $ ECOOEP(r/