a
    ñ»jÙ¤  ã                   @   sp  d Z ddlZddlmZmZmZmZmZmZm	Z	 ddl
mZmZ ddlmZ ddlmZmZmZmZmZmZmZmZmZmZ g d¢ZG dd	„ d	eƒZd
d„ ZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZ G dd„ deƒZ!G dd„ deƒZ"G dd„ deƒZ#G dd„ deƒZ$G dd„ deƒZ%G dd„ deƒZ&G d d!„ d!eƒZ'G d"d#„ d#eƒZ(G d$d%„ d%eƒZ)dS )&zÌ
    pygments.lexers.asm
    ~~~~~~~~~~~~~~~~~~~

    Lexers for assembly languages.

    :copyright: Copyright 2006-present by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
é    N)Ú
RegexLexerÚincludeÚbygroupsÚusingÚwordsÚDelegatingLexerÚdefault)ÚCppLexerÚCLexer)ÚDLexer)
ÚTextÚNameÚNumberÚStringÚCommentÚPunctuationÚOtherÚKeywordÚOperatorÚ
Whitespace)ÚGasLexerÚObjdumpLexerÚDObjdumpLexerÚCppObjdumpLexerÚCObjdumpLexerÚ
HsailLexerÚ	LlvmLexerÚLlvmMirBodyLexerÚLlvmMirLexerÚ	NasmLexerÚNasmObjdumpLexerÚ	TasmLexerÚ	Ca65LexerÚDasm16Lexerc                   @   sÐ  e Zd ZdZdZddgZddgZdgZdZd	Z	d
Z
dZde d e d ZdZde d Zedƒed ejfde ejdfdejfeejdfdefgeejfe
efde ejfeejfeejfdedfdejdfdejfdejdfedƒedƒgde d  eejee eje ƒfde d! e d  eejee eje eje ƒfeejfeejfeejfd"e ejfd#ej!fdedfdejdfdejfdejdfedƒedƒgd$efd%efdejfd&ejfgd'e fgd(œZ"d)d*„ Z#d+S ),r   z'
    For Gas (AT&T) assembly code.
    ÚGASÚgasÚasmú*.sz*.Sz
text/x-gasú%https://www.gnu.org/software/binutilsÚ ú"(\\"|[^"])*"z[\w$.@-]ú(?:[a-zA-Z$_]ú*|\.ú+)z(?:0[xX][a-fA-F0-9]+|#?-?\d+)ú%ú\bÚ
whitespaceú:ú\.údirective-argszlock|rep(n?z)?|data\d+úinstruction-argsú[\r\n]+ú@ú#popz([;#]|//).*?\nz/[*].*?[*]/z/[*].*?\n[\w\W]*?[*]/Úpunctuationz([a-z0-9]+)( )(<)(z)(>)z)([-+])(ú$z
$'(.|\\')'ú\nú\s+z/[*][\w\W]*?[*]/z[-*,.()\[\]!:{}]+)Úrootr3   r4   r0   r8   c                 C   s,   t  d| t j¡rdS t  d| t j¡r(dS d S )Nz^\.(text|data|section)Tz^\.\w+gš™™™™™¹?)ÚreÚsearchÚM©Útext© rB   ú9E:\soccer\ml_env\Lib\site-packages\pygments/lexers/asm.pyÚanalyse_texth   s    zGasLexer.analyse_textN)$Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚaliasesÚ	filenamesÚ	mimetypesÚurlÚversion_addedÚstringÚcharÚ
identifierÚnumberÚregisterr   r   ÚLabelÚ	AttributeÚFunctionr   ÚConstantr   r   ÚIntegerÚVariabler   r   ÚSingleÚ	Multiliner   ÚHexr   ÚCharÚtokensrD   rB   rB   rB   rC   r      s|   
ú	

ô
ÿÿÿÿ

èüÿÉ<r   c                 C   sp  d}ddt tjtttƒfdt ttjtƒfd| d t tjtttj	ttjtƒfd| d t tjtttj	tƒfd| d	 | | d
 t ttjttjtt
| ƒƒfd| d t ttjtt
| ƒƒfd| d	 | | d t ttjttjttƒfd| d	 | | d t ttjttjƒfdtfd| d | d t ttjttjttjttjƒfd| d t ttjttjttjƒfdtfgiS )z;
    Common objdump lexer tokens to wrap an ASM lexer.
    z[0-9A-Za-z]r<   z(.*?)(:)( +file format )(.*?)$z"(Disassembly of section )(.*?)(:)$ú(z++)( )(<)(.*?)([-+])(0[xX][A-Za-z0-9]+)(>:)$z+)( )(<)(.*?)(>:)$z( *)(z+:)(\t)((?:z )+)( *	)([a-zA-Z].*?)$z+:)( *\t)([a-zA-Z].*?)$z )+)( *)(.*?)$z )+)$z	\t\.\.\.$z	(\t\t\t)(z +:)( )([^\t]+)(\t)(.*?)([-+])(0xz+)$z+:)( )([^\t]+)(\t)(.*?)$z[^\n]+\n)r   r   rT   r   r   r   r   r\   r   rV   r   ÚPropertyrW   r   )Z	asm_lexerZhex_rerB   rB   rC   Ú_objdump_lexer_tokenso   s`    ÿÿ
ÿÿ
ÿÿÿÿ

ÿÿÿÿ
ÿÿ
ÿÿÖÿra   c                   @   s6   e Zd ZdZdZdgZdgZdgZdZdZ	e
eƒZdS )r   z,
    For the output of ``objdump -dr``.
    Úobjdumpz	*.objdumpztext/x-objdumpr(   r)   N)rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   ra   r   r^   rB   rB   rB   rC   r   ¤   s   r   c                       s>   e Zd ZdZdZdgZdgZdgZdZdZ	‡ fdd„Z
‡  ZS )	r   z@
    For the output of ``objdump -Sr`` on compiled D files.
    z	d-objdumpz*.d-objdumpztext/x-d-objdumpr(   r)   c                    s   t ƒ jttfi |¤Ž d S ©N)ÚsuperÚ__init__r   r   ©ÚselfÚoptions©Ú	__class__rB   rC   re   ½   s    zDObjdumpLexer.__init__©rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   re   Ú__classcell__rB   rB   ri   rC   r   ²   s   r   c                       sB   e Zd ZdZdZg d¢Zg d¢ZdgZdZdZ	‡ fdd	„Z
‡  ZS )
r   zB
    For the output of ``objdump -Sr`` on compiled C++ files.
    úcpp-objdump)rm   zc++-objdumbzcxx-objdump)z*.cpp-objdumpz*.c++-objdumpz*.cxx-objdumpztext/x-cpp-objdumpr(   r)   c                    s   t ƒ jttfi |¤Ž d S rc   )rd   re   r	   r   rf   ri   rB   rC   re   Ì   s    zCppObjdumpLexer.__init__rk   rB   rB   ri   rC   r   Á   s   r   c                       s>   e Zd ZdZdZdgZdgZdgZdZdZ	‡ fdd„Z
‡  ZS )	r   z@
    For the output of ``objdump -Sr`` on compiled C files.
    z	c-objdumpz*.c-objdumpztext/x-c-objdumpr(   r)   c                    s   t ƒ jttfi |¤Ž d S rc   )rd   re   r
   r   rf   ri   rB   rC   re   Ü   s    zCObjdumpLexer.__init__rk   rB   rB   ri   rC   r   Ð   s   r   c                   @   sd  e Zd ZdZdZddgZdgZdgZdZdZ	d	Z
d
ZdZde d ZdZdZdZdZdZdZdZdZedƒedƒe
efde d ejfeejjfedƒde ejjfde ejfeejfdejfeejfeejfdej fde!fgd e"fgd!e#j$fd"e#j%fgd#e e&j'fd$e&fe(d%d&d'�e&fee&fee&fd(e d) e d* e&fd+e&fd,e&fe(d-ƒe&fd.e&fg
d/œZ)d0S )1r   z"
    For HSAIL assembly code.
    ÚHSAILÚhsailÚhsaz*.hsailztext/x-hsailzVhttps://en.wikipedia.org/wiki/Heterogeneous_System_Architecture#HSA_Intermediate_Layerz2.2ú"[^"]*?"z[a-zA-Z_][\w.]*ú[0-9]+z(\$(c|s|d|q)z)\bz(align\(\d+\))z(width\((\d+|all)\))z(alloc\(agent\))z ((_ftz)?(_up|_down|_zero|_near))zò_(u8x4|s8x4|u16x2|s16x2|u8x8|s8x8|u16x4|s16x4|u32x2|s32x2|u8x16|s8x16|u16x8|s16x8|u32x4|s32x4|u64x2|s64x2|f16x2|f16x4|f16x8|f32x2|f32x4|f64x2|u8|s8|u16|s16|u32|s32|u64|s64|b128|b8|b16|b32|b64|b1|f16|f32|f64|roimg|woimg|rwimg|samp|sig32|sig64)z ((\d+\.)|(\d*\.\d+))[eE][+-]?\d+zL0[xX](([0-9a-fA-F]+\.[0-9a-fA-F]*)|([0-9a-fA-F]*\.[0-9a-fA-F]+))[pP][+-]?\d+z>0(?:[hH][0-9a-fA-F]{4}|[fF][0-9a-fA-F]{8}|[dD][0-9a-fA-F]{16})r0   Úcommentsr6   z:?Úkeywordú&r.   z0[xX][a-fA-F0-9]+ú\d+z[=<>{}\[\]()*.,:;!]|x\br;   z	/\*.*?\*/z//.*?\nZkernargz+\$(full|base|small|large|default|zero|near))ÚmoduleÚ	extensionZpragmaÚprogZindirectÚ	signatureÚdeclZkernelÚfunctionZenablebreakexceptionsZenabledetectexceptionsZmaxdynamicgroupsizeZmaxflatgridsizeZmaxflatworkgroupsizeZrequireddimZrequiredgridsizeZrequiredworkgroupsizeZrequirenopartialworkgroupsr/   ©Úsuffixz_(ú|ú)Ú_kernargz(nop|imagefence)\b)äZcleardetectexceptÚclockZcuidZ	debugtrapÚdimZgetdetectexceptZgroupbaseptrZkernargbaseptrZlaneidZmaxcuidZ	maxwaveidZpacketidZsetdetectexceptZwaveidZworkitemflatabsidZworkitemflatidZnullptrÚabsZbitrevZcurrentworkgroupsizeZcurrentworkitemflatidZfractZncosÚnegZnexp2Znlog2ZnrcpZnrsqrtZnsinZnsqrtZ
gridgroupsZgridsizeÚnotÚsqrtZworkgroupidZworkgroupsizeZworkitemabsidZ
workitemidÚceilÚfloorZrintÚtruncÚaddZbitmaskZborrowZcarryÚcopysignÚdivÚremÚsubÚshlZshrÚandÚorÚxorZunpackhiZunpackloÚmaxÚminÚfmaZmadZ
bitextractZ	bitselectÚshuffleZcmovZbitalignZ	bytealignZlerpZnfmaÚmulZmulhiZmul24hiZmul24Zmad24Zmad24hiZ	bitinsertÚcombineÚexpandZldaZmovÚpackÚunpackZpackcvtZ	unpackcvtZsadZsementpZftosZstofÚcmpÚldÚstÚ_eqZ_neZ_ltZ_leZ_gtZ_geZ_equZ_neuZ_ltuZ_leuZ_gtuZ_geuZ_numZ_nanZ_seqZ_sneZ_sltZ_sleZ_sgtZ_sgeZ_snumZ_snanZ_sequZ_sneuZ_sltuZ_sleuZ_sgtuZ_sgeuÚatomicZ_ldZ_stZ_casÚ_addZ_andZ_exchÚ_maxÚ_minZ_orÚ_subZ_wrapdecZ_wrapincZ_xorÚretÚcvtZ	_readonlyr�   Z_globalÚbrZcbrZsbrZ_scacqZ_screlZ_scarZ_rlxZ_waveZ_wgZ_agentZ_systemZldimageZstimageZ_v2Z_v3Z_v4Z_1dZ_2dZ_3dZ_1daZ_2daZ_1dbZ_2ddepthZ	_2dadepthÚ_widthÚ_heightZ_depthZ_arrayZ_channelorderZ_channeltypeZquerysamplerZ_coordÚ_filterZ_addressingZbarrierZwavebarrierZinitfbarZjoinfbarZwaitfbarZ
arrivefbarZ	leavefbarZreleasefbarZldfZactivelaneidZactivelanecountZactivelanemaskZactivelanepermuteÚcallZscallZicallÚallocaZpacketcompletionsigZaddqueuewriteindexZcasqueuewriteindexZldqueuereadindexZstqueuereadindexÚreadonlyÚglobalÚprivateÚgroupZspillÚargZ_upiZ_downiZ_zeroiZ_neariZ_upi_satZ
_downi_satZ
_zeroi_satZ
_neari_satZ_supiZ_sdowniZ_szeroiZ_sneariZ	_supi_satZ_sdowni_satZ_szeroi_satZ_sneari_satZ_ppZ_psZ_spÚ_ssZ_sÚ_pZ_pp_satZ_ps_satZ_sp_satZ_ss_satZ_s_satZ_p_satú	i[1-9]\d*)r<   r0   rs   rt   N)*rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rQ   Zregister_numberrS   Z	alignQualZ	widthQualZ	allocQualZroundingModZdatatypeModÚfloatZhexfloatZ	ieeefloatr   r   r   rT   rY   Ú	AnonymousÚGlobalr   r\   ÚFloatrX   r   r   r   r[   rZ   r   ÚTyper   r^   rB   rB   rB   rC   r   à   sr   
ëÿþúú	%Û(Äár   c                   @   s$  e Zd ZdZdZdZdgZdgZdgZdZ	dZ
d	e
 d
 Zde d Zedƒed ejfedƒde ejfde ejjfdejjfdejjfdejjfde ejfdejjfde
 efdefdefdefgdefdefdedfgdefd ed!fd"efged#d$d%�efed&ƒejfd'ejfgd(œZd)S )*r   z!
    For LLVM assembly code.
    ÚLLVMz"https://llvm.org/docs/LangRef.htmlÚllvmz*.llztext/x-llvmr)   rq   z([-a-zA-Z$._][\w\-$.]*|r€   r_   z|(\d+))r0   z\s*:rt   r.   r6   z%\d+z@\d+z#\d+ú!z!\d+zc?z0[xX][KLMHR]?[a-fA-F0-9]+z,-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?z[=<>{}\[\]()*.,!]|x\br;   ú;.*?\nz/\*ú	c-commentz[^*]+z\*/r7   z\*(‰  Zaarch64_sve_vector_pcsZaarch64_vector_pcsÚacq_relÚacquirer‹   Z	addrspaceZaddrspacecastZafnÚaliasZaliaseeÚalignZ	alignLog2Z
alignstackr­   Z	allocsizeZallOnesZalwaysinlineZalwaysInlineZ	amdgpu_csZ	amdgpu_esZ
amdgpu_gfxZ	amdgpu_gsZ	amdgpu_hsZamdgpu_kernelZ	amdgpu_lsZ	amdgpu_psZ	amdgpu_vsr‘   ÚanyZanyregccZ	appendingZarcpZ
argmemonlyÚargsZarm_aapcs_vfpccZarm_aapcsccZ
arm_apcsccZashrr&   r¡   Z	atomicrmwÚ
attributesZavailable_externallyZ
avr_intrccZavr_signalccÚbitZbitcastZbitMaskZblockaddressZ
blockcountr¨   ZbranchFunnelÚbuiltinZbyArgÚbyrefÚbyteZ	byteArrayZbyvalÚcr¬   ZcallbrZcalleeZcallerZcallsZcanAutoHideZcatchZcatchpadZcatchretZcatchswitchÚccÚcccZcfguard_checkccÚcleanupZ
cleanuppadZ
cleanupretZcmpxchgZcoldZcoldccZcomdatÚcommonZconstantZcontractZ
convergentÚcriticalZcxx_fast_tlsccZ
datalayoutZdeclarer   ZdefineZdeplibsZdereferenceableZdereferenceable_or_nullZdistinctZ	dllexportZ	dllimportZ	dso_localZdso_local_equivalentZdso_preemptableZdsoLocalÚeqÚexactZ
exactmatchZextern_weakZexternalZexternally_initializedZextractelementZextractvalueZfaddÚfalseÚfastZfastccZfcmpZfdivZfenceÚfilterÚflagsZfmulZfnegZfpextZfptosiZfptouiZfptruncÚfreezeZfremÚfromZfsubZ	funcFlagsr|   ÚgcZgetelementptrZghcccr¯   ZguidÚgvÚhashZhhvm_cccZhhvmccZhiddenZhotZhotnessZicmpZifuncZinaccessiblemem_or_argmemonlyZinaccessiblememonlyZinallocaZinboundsZindirZ
indirectbrÚinfoZinitialexecÚinlineZ
inlineBitsZ
inlinehintZinrangeZinregZinsertelementZinsertvalueZinstsZintel_ocl_biccZinteldialectZinternalZinttoptrZinvokeZ	jumptableÚkindZ
landingpadZlargestÚlinkageZlinkonceZlinkonce_odrÚliveÚloadZlocal_unnamed_addrZlocaldynamicZ	localexecZlshrr”   Úmetadatar•   Zminsizerw   Ú	monotonicZmsp430_intrccr˜   ZmustprogressZmusttailZnakedrI   ZnandÚneÚnestZninfZnnanZnoaliasZ	nobuiltinZ
nocallbackZ	nocaptureZ
nocf_checkZnoduplicateZnoduplicatesZnofreeZnoimplicitfloatZnoinlineZnoInlineZnomergeÚnoneZnonlazybindZnonnullZ	noprofileZ	norecurseZ	noRecurseZ	noredzoneZnoreturnZnosyncZnotailZnotEligibleToImportZnoundefZnounwindZnswZnszÚnullZnull_pointer_is_validZnuwÚoeqÚoffsetÚogeÚogtÚoleÚoltÚoneÚopaqueZoptforfuzzingZoptnoneZoptsizer’   ÚordÚparamÚparamsÚ	partitionÚpathZpersonalityÚphiZpoisonZpreallocatedÚprefixZpreserve_allccZpreserve_mostccr°   ZprologueZ	protectedZptrtointZ
ptx_deviceZ
ptx_kernelZreadnoneZreadNoner®   ZreadOnlyZreassocÚrefsZrelbfÚreleaseZresByArgÚresumer¦   ZreturnDoesNotAliasZreturnedZreturns_twiceZ	safestackZsamesizeZsanitize_addressZsanitize_hwaddressZsanitize_memoryZsanitize_memtagZsanitize_threadZsdivÚsectionÚselectÚseq_cstZsextÚsgeÚsgtZshadowcallstackr�   ZshufflevectorZ
sideeffectZsignextÚsingleZ
singleImplZsingleImplNameZsitofpZsizeM1ZsizeM1BitWidthÚsleÚsltZsource_filenameZspeculatableZspeculative_load_hardeningZ	spir_funcZspir_kernelZsplatZsremZsretÚsspZsspreqZ	sspstrongÚstoreZstrictfpr�   Z	summariesÚsummaryZswiftccZ
swifterrorZ	swiftselfÚswitchZ	syncscopeÚtailZtailccÚtargetZthread_localÚtoÚtokenZtripleÚtruerŠ   ÚtypeZtypeCheckedLoadConstVCallsZtypeCheckedLoadVCallsZtypeidZtypeidCompatibleVTableZ
typeIdInfoZtypeTestAssumeConstVCallsZtypeTestAssumeVCallsZtypeTestResZ	typeTestsZudivZueqÚugeÚugtZuitofpÚuleÚultZumaxZuminZundefZuneZuniformRetValZuniqueRetValÚunknownZunnamed_addrZunoÚ	unorderedZunreachableZunsatZunwindZuremZuselistorderZuselistorder_bbZuwtableZva_argZvarFlagsÚvariableZvcall_visibilityZvFuncIdZvirtFuncZvirtualConstPropÚvoidZvolatileZvscaleZvTableFuncsZweakZweak_odrZwebkit_jsccZwin64ccZwithinZwpdResZwpdResolutionsZ	writeonlyÚxZx86_64_sysvccZx86_fastcallccZ
x86_intrccÚx86_mmxZx86_regcallccZx86_stdcallccZx86_thiscallccZx86_vectorcallccZxchgr“   ZzeroextZzeroinitializerZzextZimmargZ
willreturnr/   r}   )r  ZhalfZbfloatr¶   ÚdoubleZfp128Zx86_fp80Z	ppc_fp128Úlabelrâ   r  Zx86_amxr	  Úptrrµ   )r<   r0   r¿   rt   N)rE   rF   rG   rH   rI   rM   rJ   rK   rL   rN   rO   rQ   Zblock_labelr   r   rT   rY   r¸   r·   r   r   r   r   r   r   r   rº   r^   rB   rB   rB   rC   r   g  sX   




ìýüU«U«Xý Þr   c                   @   s  e Zd ZdZdZdZdgZg Zg ZdZ	e
ddd�efd	ejfd
ejfdejfdefdefdejdfedƒdejjfe
dddd�ejfe
dddd�ejfdejfdefdejfdejfe
dƒefdeejeƒdfdejd fed!ƒd"eeeƒd#fd$efd%efd&efged!ƒd'ed(fged)ƒd'ed(fgd*eeeƒd+fd,eeeƒd-fd'ed(fgd.eeejjƒfd/eeejƒfd,eeeƒd-fd'ed(fgd0eeejƒfd1eeejƒfded(fd'ed(fgd2efd3efe
d4ƒefd5efd6efd7efed!ƒedƒd8efd9efded(fgd:ejfgd;ejfgd<ejjfgd=œ
Zd>S )?r   z9
    For LLVM MIR examples without the YAML wrapper.
    zLLVM-MIR Bodyú%https://llvm.org/docs/MIRLangRef.htmlzllvm-mir-bodyú2.6)ÚliveinsÚ
successorsr1   r}   z4bb\.[0-9]+(\.[a-zA-Z0-9_.-]+)?( \(address-taken\))?:z5bb\.[0-9]+ \(%[a-zA-Z0-9_.-]+\)( \(address-taken\))?:z%bb\.[0-9]+(\.\w+)?z%stack\.[0-9]+(\.\w+\.addr)?z%subreg\.\w+z%[a-zA-Z0-9_]+ *Úvregr¯   zintrinsic\(\@[a-zA-Z0-9_.]+\))
rÑ   rä   rþ   rý   r  r   r  r  r  r  z	intpred\(z\))rö   r~   )
rè   rî   rë   rê   rí   rì   r  r  r  r  zfloatpred\(z\$\w+ú=a  (G_ANYEXT|G_[SZ]EXT|G_SEXT_INREG|G_TRUNC|G_IMPLICIT_DEF|G_PHI|G_FRAME_INDEX|G_GLOBAL_VALUE|G_INTTOPTR|G_PTRTOINT|G_BITCAST|G_CONSTANT|G_FCONSTANT|G_VASTART|G_VAARG|G_CTLZ|G_CTLZ_ZERO_UNDEF|G_CTTZ|G_CTTZ_ZERO_UNDEF|G_CTPOP|G_BSWAP|G_BITREVERSE|G_ADDRSPACE_CAST|G_BLOCK_ADDR|G_JUMP_TABLE|G_DYN_STACKALLOC|G_ADD|G_SUB|G_MUL|G_[SU]DIV|G_[SU]REM|G_AND|G_OR|G_XOR|G_SHL|G_[LA]SHR|G_[IF]CMP|G_SELECT|G_GEP|G_PTR_MASK|G_SMIN|G_SMAX|G_UMIN|G_UMAX|G_[US]ADDO|G_[US]ADDE|G_[US]SUBO|G_[US]SUBE|G_[US]MULO|G_[US]MULH|G_FNEG|G_FPEXT|G_FPTRUNC|G_FPTO[US]I|G_[US]ITOFP|G_FABS|G_FCOPYSIGN|G_FCANONICALIZE|G_FMINNUM|G_FMAXNUM|G_FMINNUM_IEEE|G_FMAXNUM_IEEE|G_FMINIMUM|G_FMAXIMUM|G_FADD|G_FSUB|G_FMUL|G_FMA|G_FMAD|G_FDIV|G_FREM|G_FPOW|G_FEXP|G_FEXP2|G_FLOG|G_FLOG2|G_FLOG10|G_FCEIL|G_FCOS|G_FSIN|G_FSQRT|G_FFLOOR|G_FRINT|G_FNEARBYINT|G_INTRINSIC_TRUNC|G_INTRINSIC_ROUND|G_LOAD|G_[ZS]EXTLOAD|G_INDEXED_LOAD|G_INDEXED_[ZS]EXTLOAD|G_STORE|G_INDEXED_STORE|G_ATOMIC_CMPXCHG_WITH_SUCCESS|G_ATOMIC_CMPXCHG|G_ATOMICRMW_(XCHG|ADD|SUB|AND|NAND|OR|XOR|MAX|MIN|UMAX|UMIN|FADD|FSUB)|G_FENCE|G_EXTRACT|G_UNMERGE_VALUES|G_INSERT|G_MERGE_VALUES|G_BUILD_VECTOR|G_BUILD_VECTOR_TRUNC|G_CONCAT_VECTORS|G_INTRINSIC|G_INTRINSIC_W_SIDE_EFFECTS|G_BR|G_BRCOND|G_BRINDIRECT|G_BRJT|G_INSERT_VECTOR_ELT|G_EXTRACT_VECTOR_ELT|G_SHUFFLE_VECTOR)\bz6(COPY|PHI|INSERT_SUBREG|EXTRACT_SUBREG|REG_SEQUENCE)\b)ZkilledZimplicitz(i[0-9]+)( +)Úconstantintz(half|float|double) +ÚconstantfloatÚintegerz(::)( *)Úmmoú;.*z[a-zA-Z0-9_]+z	[(), \n]+z(?=.)r7   r¶   z( *)(:(?!:)))r7   Úvreg_bank_or_classz( *)(\()Ú	vreg_typez( *)(_)z( *)([a-zA-Z0-9_]+)z( *)([sp][0-9]+)z( *)(<[0-9]+ *x *[sp][0-9]+>)z\(z +)rá   r  ÚonZintorØ   rÃ   rã   rÁ   rø   rÀ   rü   z%ir\.[a-zA-Z0-9_.-]+z%ir-block\.[a-zA-Z0-9_.-]+z[-+]ú,z\), \(z-?[0-9]+z-?[0-9]+\.[0-9]+(e[+-][0-9]+)?z\@[a-zA-Z0-9_.]+)
r<   r  r   r  r$  r%  r"  r!  r¶   r¯   N) rE   rF   rG   rH   rI   rM   rJ   rK   rL   rN   r   r   r   rT   rY   r   r¸   ÚBuiltinr   rZ   r   r   rº   r   r   r   ÚMagicr   r   rX   r¹   r^   rB   rB   rB   rC   r   þ  s¢   

ÿÿÿþèÿ

¹Kþþû	ú
ûþò

„r   c                   @   s  e Zd ZdZdZdZdgZdgZdZde	fde
d	fd
e
dfdefgde
dfdeeeƒƒfgde	fde
dfde
dfeddd�e
dfeddd�e
dfeddd�e
fde
dfdefdefg	defedƒgdejfedƒgdefedƒgde
d fd!eeeƒƒfd"eeeƒƒfgd#œZd$S )%r   aS  
    Lexer for the overall LLVM MIR document format.

    MIR is a human readable serialization format that's used to represent LLVM's
    machine specific intermediate representation. It allows LLVM's developers to
    see the state of the compilation process at various points, as well as test
    individual pieces of the compiler.
    zLLVM-MIRr  zllvm-mirz*.mirr  ú#.*z--- \|$Úllvm_irz---Úllvm_mirz[^-#]+|.z(\.\.\.|(?=---))r7   z([\s\S]+?)(?=(\.\.\.|---))zname:rI   )Ú	alignmentr1   r}   rR   )Z	legalizedZregBankSelectedZtracksRegLivenessÚselectedZexposesReturnsTwiceÚboolean)Z	registersÚstackZ
fixedStackr  Z	frameInfoZmachineFunctionInfoz	body: *\|Úllvm_mir_bodyz.+r:   z[^\n]+z *(true|false)z *[0-9]+z#pop:2z([\s\S]+?)(?=\.\.\.|---)z(?!\.\.\.|---)([\s\S]+))r<   r+  r,  rI   r/  rR   r1  N)rE   rF   rG   rH   rI   rM   rJ   rK   rN   r   r   r   r   r   r   r   r   r   r   r(  r   r   r^   rB   rB   rB   rC   r   ‰  sd   øüÿÿþþþþìþþþøÍr   c                   @   s˜  e Zd ZdZdZdgZg d¢ZdgZdZdZ	dZ
d	Zd
ZdZdZdZed e ZdZdZdZdZdZdZejejB Zdejdfedƒed ejfde› d�e ej!e"e#j$ƒdfee#dfee#j$dfeej%dfde"fgee&fee'j(fee'j)fee'j*fee'j+fee'j,fedƒeej-feej.fde"dfedƒgdejfd ej/dfd!ejdfgd!e"fd"e"fd#ej/fd$ej/fgd%e0fd&e1fd'e#j!fee1j2fee#j3fgd(œZ4d)d*„ Z5d+S ),r   z)
    For Nasm (Intel) assembly code.
    ÚNASMÚnasm)ú*.asmú*.ASMz*.nasmztext/x-nasmzhttps://nasm.usr)   g      ð?z[a-z$._?][\w$.?#@~]*ú,(?:0x[0-9a-f]+|$0[0-9a-f]*|[0-9]+[0-9a-f]*h)ú[0-7]+qú[01]+brr   ú\.e?ú/"(\\"|[^"\n])*"|'(\\'|[^'\n])*'|`(\\`|[^`\n])*`ú(?:res|d)[bwdqt]|timeszŸ(r[0-9][0-5]?[bwd]?|[a-d][lh]|[er]?[a-d]x|[er]?[sb]p|[er]?[sd]i|[c-gs]s|st[0-7]|mm[0-7]|cr[0-4]|dr[0-367]|tr[3-7]|k[0-7]|[xyz]mm(?:[12][0-9]?|3[01]?|[04-9]))\bzseg|wrt|strict|rel|absúbyte|[dq]?wordz’(?:BITS|USE16|USE32|SECTION|SEGMENT|ABSOLUTE|EXTERN|GLOBAL|ORG|ALIGN|STRUC|ENDSTRUC|COMMON|CPU|GROUP|UPPERCASE|IMPORT|EXPORT|LIBRARY|MODULE)(?=\s)ú^\s*%Úpreprocr0   r1   r_   z)(\s+)(equ)r4   r5   r8   r7   ú[^;\n]+r¾   r:   ú[ \t]+r#  r*  z[,{}():\[\]]+z[&|^<>+*/%~-]+ú[$]+©r<   r4   r>  r0   r8   c                 C   s   t  d| t j¡rdS d S )NÚPROCF)r=   ÚmatchÚ
IGNORECASEr@   rB   rB   rC   rD   *  s    zNasmLexer.analyse_textN)6rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   ÚpriorityrQ   ÚhexnÚoctnÚbinnÚdecnÚfloatnrO   ÚdeclkwrS   Úwordopr  Ú
directivesr=   rE  Ú	MULTILINErÖ   r   ÚPreprocr   r   rT   r   rW   r   r   ÚDeclarationrV   r   r   r\   ÚOctÚBinr¹   rX   r(  rY   rZ   r   r   ÚWordrº   r^   rD   rB   rB   rB   rC   r   Ø  s|   

þ

öõ

ýüûÛ.r   c                   @   s6   e Zd ZdZdZdgZdgZdgZdZdZ	e
eƒZdS )r    z4
    For the output of ``objdump -d -M intel``.
    zobjdump-nasmz*.objdump-intelztext/x-nasm-objdumpr(   z2.0N)rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   ra   r   r^   rB   rB   rB   rC   r    0  s   r    c                   @   s´  e Zd ZdZdZdgZg d¢ZdgZdZdZ	dZ
d	Zd
ZdZdZed e ZdZdZdZdZdZdZdZejejB Zdejdfedƒe
d ejfee dfde
› de› d�e!ej"e#e j$ƒdfee j$dfe
ej%dfde#fgee&fee'j(fee'j)fee'j*fee'j+fee'j,fedƒeej-fe
ej.fde!e/e#ej0e#ƒfde#d fedƒgd!ejfd"ej0d fd#ejd fgd$e#fd%e!e/e#ƒfd&e#fd'ej0fgd(e1fd)e2fd*e j"fee2j3fee j4fgd+œZ5d,d-„ Z6d.S )/r!   z3
    For Tasm (Turbo Assembler) assembly code.
    ÚTASMÚtasm)r4  r5  z*.tasmztext/x-tasmz-https://en.wikipedia.org/wiki/Turbo_Assemblerr)   z[@a-z$._?][\w$.?#@~]*r6  r7  r8  rr   r9  r:  r;  zs(r[0-9][0-5]?[bwd]|[a-d][lh]|[er]?[a-d]x|[er]?[sb]p|[er]?[sd]i|[c-gs]s|st[0-7]|mm[0-7]|cr[0-4]|dr[0-367]|tr[3-7])\bzseg|wrt|strictr<  zÛBITS|USE16|USE32|SECTION|SEGMENT|ABSOLUTE|EXTERN|GLOBAL|ORG|ALIGN|STRUC|ENDSTRUC|ENDS|COMMON|CPU|GROUP|UPPERCASE|INCLUDE|EXPORT|LIBRARY|MODULE|PROC|ENDP|USES|ARG|DATASEG|UDATASEG|END|IDEAL|P386|MODEL|ASSUME|CODESEG|SIZEzdb|dd|dw|T[A-Z][a-z]+r=  r>  r0   r1   r4   r_   z)(\s+)(r€   r5   r8   z(\\)(\s*)(;.*)([\r\n])r7   r?  r¾   r:   z[\n\r]z(\\)([\n\r])r@  r#  z[,():\[\]]+z[&|^<>+*=/%~-]+rA  rB  c                 C   s   t  d| t j¡rdS d S )NrC  T)r=   rD  ÚIr@   rB   rB   rC   rD   �  s    zTasmLexer.analyse_textN)7rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rQ   rG  rH  rI  rJ  rK  rO   rL  rS   rM  r  rN  Údatatyper=   rE  rO  rÖ   r   rP  r   r   rT   r   r   rW   r   rQ  rV   r   r   r\   rR  rS  r¹   rX   r(  rY   r   rZ   r   r   rT  rº   r^   rD   rB   rB   rB   rC   r!   >  s‚   
þ

öÿò

ýüûØ1r!   c                   @   sš   e Zd ZdZdZdgZdgZdZdZe	j
Zddejfd	efd
ejfdefdejfdefdefdejfdejfdejfdejfdefdefgiZdd„ ZdS )r"   z%
    For ca65 assembler sources.
    zca65 assemblerÚca65r'   zhttps://cc65.github.ioz1.6r<   r#  r;   z[a-z_.@$][\w.@$]*:z·((ld|st)[axy]|(in|de)[cxy]|asl|lsr|ro[lr]|adc|sbc|cmp|cp[xy]|cl[cvdi]|se[cdi]|jmp|jsr|bne|beq|bpl|bmi|bvc|bvs|bcc|bcs|p[lh][ap]|rt[is]|brk|nop|ta[xy]|t[xy]a|txs|tsx|and|ora|eor|bit)\bz\.\w+z[-+~*/^&|!<>=]z	"[^"\n]*.z	'[^'\n]*.z\$[0-9a-f]+|[0-9a-f]+h\brv   z%[01]+z[#,.:()=\[\]]z[a-z_.@$][\w.@$]*c                 C   s   t  d|t j¡rdS d S )Nz^\s*;gÍÌÌÌÌÌì?)r=   r>   rO  )rg   rA   rB   rB   rC   rD   ·  s    zCa65Lexer.analyse_textN)rE   rF   rG   rH   rI   rJ   rK   rM   rN   r=   rE  rÖ   r   rZ   r   r   rT   r   ÚPseudor   r   r]   r   r\   rX   rS  r   r^   rD   rB   rB   rB   rC   r"   –  s4   ýðÿr"   c                   @   sr  e Zd ZdZdZdZdgZddgZdgZdZ	g d	¢Z
g d
¢ZdZde d e d ZdZdZdd e
¡ d Zde d ZdZdd„ Zedƒde ejfed ejfeejdfde ejdfdefgeejfeejfeefgeefedƒgd efd!ed"fed#ƒedƒgded"fd$ed"fedƒgd%efd&ed'fed#ƒed(ƒgd%efedƒeefed(ƒgd)efd*efd+efgd,œZd-S ).r#   z
    For DCPU-16 Assembly.
    ÚDASM16z http://0x10c.com/doc/dcpu-16.txtÚdasm16z*.dasm16z*.dasmztext/x-dasm16z2.4)$ZSETZADDZSUBZMULZMLIZDIVZDVIZMODZMDIÚANDÚBORZXORZSHRZASRZSHLZIFBZIFCZIFEZIFNZIFGZIFAZIFLZIFUZADXZSBXZSTIZSTDZJSRÚINTZIAGZIASZRFIZIAQZHWNZHWQZHWI)ÚAÚBÚCÚXÚYÚZrW  ÚJÚSPÚPCZEXÚPOPZPEEKZPUSHz[a-zA-Z0-9_$@.]r+   r,   r-   z[+-]?(?:0[xX][a-zA-Z0-9]+|\d+)z0b[01_]+z(?i)(r   r€   z'\\?ú'r*   c                 c   s8   |  d¡}| ¡ | jv rtjntj}| ¡ ||fV  d S )Nr   )r±   ÚupperÚ	REGISTERSr   rY   rT   Ústart)ÚlexerrD  ÚidentÚklassrB   rB   rC   Úguess_identifierè  s    
zDasm16Lexer.guess_identifierr0   r1   r4   r2   ú	data-argsr5   Únumericz\+z\]r7   r²   z;.*?$r'  z\[Úderefúinstruction-liner:   r;   r¾   )r<   rs  r²   rt  ru  r4   rr  r0   N) rE   rF   rG   rH   rI   rM   rJ   rK   rL   rN   ZINSTRUCTIONSrl  rP   rQ   rR   Zbinary_numberÚjoinZinstructionZsingle_charrO   rq  r   r   rT   rV   r   r   rX   r   r   r   r^   rB   rB   rB   rC   r#   ½  sn   	
ú
ýþüýüüýÐr#   )*rH   r=   Zpygments.lexerr   r   r   r   r   r   r   Zpygments.lexers.c_cppr	   r
   Zpygments.lexers.dr   Zpygments.tokenr   r   r   r   r   r   r   r   r   r   Ú__all__r   ra   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   rB   rB   rB   rC   Ú<module>   s0   
$0U5   OXX'