mirror of
				https://github.com/vim/vim.git
				synced 2025-10-27 09:24:23 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			376 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			376 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " Vim syntax file
 | |
| " Language:	Microsoft Macro Assembler (80x86)
 | |
| " Orig Author:	Rob Brady <robb@datatone.com>
 | |
| " Maintainer:	Wu Yongwei <wuyongwei@gmail.com>
 | |
| " Last Change:	$Date: 2013/11/13 11:49:24 $
 | |
| " $Revision: 1.48 $
 | |
| 
 | |
| " Quit when a syntax file was already loaded
 | |
| if exists("b:current_syntax")
 | |
|   finish
 | |
| endif
 | |
| 
 | |
| let s:cpo_save = &cpo
 | |
| set cpo&vim
 | |
| 
 | |
| syn case ignore
 | |
| 
 | |
| 
 | |
| syn match masmIdentifier	"[@a-z_$?][@a-z0-9_$?]*"
 | |
| syn match masmLabel		"^\s*[@a-z_$?][@a-z0-9_$?]*:"he=e-1
 | |
| 
 | |
| syn match masmDecimal		"[-+]\?\d\+[dt]\?"
 | |
| syn match masmBinary		"[-+]\?[0-1]\+[by]"  "put this before hex or 0bfh dies!
 | |
| syn match masmOctal		"[-+]\?[0-7]\+[oq]"
 | |
| syn match masmHexadecimal	"[-+]\?[0-9]\x*h"
 | |
| syn match masmFloatRaw		"[-+]\?[0-9]\x*r"
 | |
| syn match masmFloat		"[-+]\?\d\+\.\(\d*\(E[-+]\?\d\+\)\?\)\?"
 | |
| 
 | |
| syn match masmComment		";.*" contains=@Spell
 | |
| syn region masmComment		start=+COMMENT\s*\z(\S\)+ end=+\z1.*+ contains=@Spell
 | |
| syn region masmString		start=+'+ end=+'+ oneline contains=@Spell
 | |
| syn region masmString		start=+"+ end=+"+ oneline contains=@Spell
 | |
| 
 | |
| syn region masmTitleArea	start=+\<TITLE\s+lc=5 start=+\<SUBTITLE\s+lc=8 start=+\<SUBTTL\s+lc=6 end=+$+ end=+;+me=e-1 contains=masmTitle
 | |
| syn region masmTextArea		start=+\<NAME\s+lc=4 start=+\<INCLUDE\s+lc=7 start=+\<INCLUDELIB\s+lc=10 end=+$+ end=+;+me=e-1 contains=masmText
 | |
| syn match masmTitle		"[^\t ;]\([^;]*[^\t ;]\)\?" contained contains=@Spell
 | |
| syn match masmText		"[^\t ;]\([^;]*[^\t ;]\)\?" contained
 | |
| 
 | |
| syn region masmOptionOpt	start=+\<OPTION\s+lc=6 end=+$+ end=+;+me=e-1 contains=masmOption
 | |
| syn region masmContextOpt	start=+\<PUSHCONTEXT\s+lc=11 start=+\<POPCONTEXT\s+lc=10 end=+$+ end=+;+me=e-1 contains=masmOption
 | |
| syn region masmModelOpt		start=+\.MODEL\s+lc=6 end=+$+ end=+;+me=e-1 contains=masmOption,masmType
 | |
| syn region masmSegmentOpt	start=+\<SEGMENT\s+lc=7 end=+$+ end=+;+me=e-1 contains=masmOption,masmString
 | |
| syn region masmProcOpt		start=+\<PROC\s+lc=4 end=+$+ end=+;+me=e-1 contains=masmOption,masmType,masmRegister,masmIdentifier
 | |
| syn region masmAssumeOpt	start=+\<ASSUME\s+lc=6 end=+$+ end=+;+me=e-1 contains=masmOption,masmOperator,masmType,masmRegister,masmIdentifier
 | |
| syn region masmExpression	start=+\.IF\s+lc=3 start=+\.WHILE\s+lc=6 start=+\.UNTIL\s+lc=6 start=+\<IF\s+lc=2 start=+\<IF2\s+lc=3 start=+\<ELSEIF\s+lc=6 start=+\<ELSEIF2\s+lc=7 start=+\<REPEAT\s+lc=6 start=+\<WHILE\s+lc=5 end=+$+ end=+;+me=e-1 contains=masmType,masmOperator,masmRegister,masmIdentifier,masmDecimal,masmBinary,masmHexadecimal,masmFloatRaw,masmString
 | |
| 
 | |
| syn keyword masmOption		TINY SMALL COMPACT MEDIUM LARGE HUGE contained
 | |
| syn keyword masmOption		NEARSTACK FARSTACK contained
 | |
| syn keyword masmOption		PUBLIC PRIVATE STACK COMMON MEMORY AT contained
 | |
| syn keyword masmOption		BYTE WORD DWORD PARA PAGE contained
 | |
| syn keyword masmOption		USE16 USE32 FLAT contained
 | |
| syn keyword masmOption		INFO READ WRITE EXECUTE SHARED contained
 | |
| syn keyword masmOption		NOPAGE NOCACHE DISCARD contained
 | |
| syn keyword masmOption		READONLY USES FRAME contained
 | |
| syn keyword masmOption		CASEMAP DOTNAME NODOTNAME EMULATOR contained
 | |
| syn keyword masmOption		NOEMULATOR EPILOGUE EXPR16 EXPR32 contained
 | |
| syn keyword masmOption		LANGUAGE LJMP NOLJMP M510 NOM510 contained
 | |
| syn keyword masmOption		NOKEYWORD NOSIGNEXTEND OFFSET contained
 | |
| syn keyword masmOption		OLDMACROS NOOLDMACROS OLDSTRUCTS contained
 | |
| syn keyword masmOption		NOOLDSTRUCTS PROC PROLOGUE READONLY contained
 | |
| syn keyword masmOption		NOREADONLY SCOPED NOSCOPED SEGMENT contained
 | |
| syn keyword masmOption		SETIF2 contained
 | |
| syn keyword masmOption		ABS ALL ASSUMES CPU ERROR EXPORT contained
 | |
| syn keyword masmOption		FORCEFRAME LISTING LOADDS NONE contained
 | |
| syn keyword masmOption		NONUNIQUE NOTHING OS_DOS RADIX REQ contained
 | |
| syn keyword masmType		STDCALL SYSCALL C BASIC FORTRAN PASCAL
 | |
| syn keyword masmType		PTR NEAR FAR NEAR16 FAR16 NEAR32 FAR32
 | |
| syn keyword masmType		REAL4 REAL8 REAL10 BYTE SBYTE TBYTE
 | |
| syn keyword masmType		WORD DWORD QWORD FWORD SWORD SDWORD
 | |
| syn keyword masmOperator	AND NOT OR SHL SHR XOR MOD DUP
 | |
| syn keyword masmOperator	EQ GE GT LE LT NE
 | |
| syn keyword masmOperator	LROFFSET SEG LENGTH LENGTHOF SIZE SIZEOF
 | |
| syn keyword masmOperator	CODEPTR DATAPTR FAR NEAR SHORT THIS TYPE
 | |
| syn keyword masmOperator	HIGH HIGHWORD LOW LOWWORD OPATTR MASK WIDTH
 | |
| syn match   masmOperator	"OFFSET\(\sFLAT:\)\?"
 | |
| syn match   masmOperator	".TYPE\>"
 | |
| syn match   masmOperator	"CARRY?"
 | |
| syn match   masmOperator	"OVERFLOW?"
 | |
| syn match   masmOperator	"PARITY?"
 | |
| syn match   masmOperator	"SIGN?"
 | |
| syn match   masmOperator	"ZERO?"
 | |
| syn keyword masmDirective	ALIAS ASSUME CATSTR COMM DB DD DF DOSSEG DQ DT
 | |
| syn keyword masmDirective	DW ECHO ELSE ELSEIF ELSEIF1 ELSEIF2 ELSEIFB
 | |
| syn keyword masmDirective	ELSEIFDEF ELSEIFDIF ELSEIFDIFI ELSEIFE
 | |
| syn keyword masmDirective	ELSEIFIDN ELSEIFIDNI ELSEIFNB ELSEIFNDEF END
 | |
| syn keyword masmDirective	ENDIF ENDM ENDP ENDS EQU EVEN EXITM EXTERN
 | |
| syn keyword masmDirective	EXTERNDEF EXTRN FOR FORC GOTO GROUP IF IF1 IF2
 | |
| syn keyword masmDirective	IFB IFDEF IFDIF IFDIFI IFE IFIDN IFIDNI IFNB
 | |
| syn keyword masmDirective	IFNDEF INCLUDE INCLUDELIB INSTR INVOKE IRP
 | |
| syn keyword masmDirective	IRPC LABEL LOCAL MACRO NAME OPTION ORG PAGE
 | |
| syn keyword masmDirective	POPCONTEXT PROC PROTO PUBLIC PURGE PUSHCONTEXT
 | |
| syn keyword masmDirective	RECORD REPEAT REPT SEGMENT SIZESTR STRUC
 | |
| syn keyword masmDirective	STRUCT SUBSTR SUBTITLE SUBTTL TEXTEQU TITLE
 | |
| syn keyword masmDirective	TYPEDEF UNION WHILE
 | |
| syn match   masmDirective	"\.8086\>"
 | |
| syn match   masmDirective	"\.8087\>"
 | |
| syn match   masmDirective	"\.NO87\>"
 | |
| syn match   masmDirective	"\.186\>"
 | |
| syn match   masmDirective	"\.286\>"
 | |
| syn match   masmDirective	"\.286C\>"
 | |
| syn match   masmDirective	"\.286P\>"
 | |
| syn match   masmDirective	"\.287\>"
 | |
| syn match   masmDirective	"\.386\>"
 | |
| syn match   masmDirective	"\.386C\>"
 | |
| syn match   masmDirective	"\.386P\>"
 | |
| syn match   masmDirective	"\.387\>"
 | |
| syn match   masmDirective	"\.486\>"
 | |
| syn match   masmDirective	"\.486P\>"
 | |
| syn match   masmDirective	"\.586\>"
 | |
| syn match   masmDirective	"\.586P\>"
 | |
| syn match   masmDirective	"\.686\>"
 | |
| syn match   masmDirective	"\.686P\>"
 | |
| syn match   masmDirective	"\.K3D\>"
 | |
| syn match   masmDirective	"\.MMX\>"
 | |
| syn match   masmDirective	"\.XMM\>"
 | |
| syn match   masmDirective	"\.ALPHA\>"
 | |
| syn match   masmDirective	"\.DOSSEG\>"
 | |
| syn match   masmDirective	"\.SEQ\>"
 | |
| syn match   masmDirective	"\.CODE\>"
 | |
| syn match   masmDirective	"\.CONST\>"
 | |
| syn match   masmDirective	"\.DATA\>"
 | |
| syn match   masmDirective	"\.DATA?"
 | |
| syn match   masmDirective	"\.EXIT\>"
 | |
| syn match   masmDirective	"\.FARDATA\>"
 | |
| syn match   masmDirective	"\.FARDATA?"
 | |
| syn match   masmDirective	"\.MODEL\>"
 | |
| syn match   masmDirective	"\.STACK\>"
 | |
| syn match   masmDirective	"\.STARTUP\>"
 | |
| syn match   masmDirective	"\.IF\>"
 | |
| syn match   masmDirective	"\.ELSE\>"
 | |
| syn match   masmDirective	"\.ELSEIF\>"
 | |
| syn match   masmDirective	"\.ENDIF\>"
 | |
| syn match   masmDirective	"\.REPEAT\>"
 | |
| syn match   masmDirective	"\.UNTIL\>"
 | |
| syn match   masmDirective	"\.UNTILCXZ\>"
 | |
| syn match   masmDirective	"\.WHILE\>"
 | |
| syn match   masmDirective	"\.ENDW\>"
 | |
| syn match   masmDirective	"\.BREAK\>"
 | |
| syn match   masmDirective	"\.CONTINUE\>"
 | |
| syn match   masmDirective	"\.ERR\>"
 | |
| syn match   masmDirective	"\.ERR1\>"
 | |
| syn match   masmDirective	"\.ERR2\>"
 | |
| syn match   masmDirective	"\.ERRB\>"
 | |
| syn match   masmDirective	"\.ERRDEF\>"
 | |
| syn match   masmDirective	"\.ERRDIF\>"
 | |
| syn match   masmDirective	"\.ERRDIFI\>"
 | |
| syn match   masmDirective	"\.ERRE\>"
 | |
| syn match   masmDirective	"\.ERRIDN\>"
 | |
| syn match   masmDirective	"\.ERRIDNI\>"
 | |
| syn match   masmDirective	"\.ERRNB\>"
 | |
| syn match   masmDirective	"\.ERRNDEF\>"
 | |
| syn match   masmDirective	"\.ERRNZ\>"
 | |
| syn match   masmDirective	"\.LALL\>"
 | |
| syn match   masmDirective	"\.SALL\>"
 | |
| syn match   masmDirective	"\.XALL\>"
 | |
| syn match   masmDirective	"\.LFCOND\>"
 | |
| syn match   masmDirective	"\.SFCOND\>"
 | |
| syn match   masmDirective	"\.TFCOND\>"
 | |
| syn match   masmDirective	"\.CREF\>"
 | |
| syn match   masmDirective	"\.NOCREF\>"
 | |
| syn match   masmDirective	"\.XCREF\>"
 | |
| syn match   masmDirective	"\.LIST\>"
 | |
| syn match   masmDirective	"\.NOLIST\>"
 | |
| syn match   masmDirective	"\.XLIST\>"
 | |
| syn match   masmDirective	"\.LISTALL\>"
 | |
| syn match   masmDirective	"\.LISTIF\>"
 | |
| syn match   masmDirective	"\.NOLISTIF\>"
 | |
| syn match   masmDirective	"\.LISTMACRO\>"
 | |
| syn match   masmDirective	"\.NOLISTMACRO\>"
 | |
| syn match   masmDirective	"\.LISTMACROALL\>"
 | |
| syn match   masmDirective	"\.FPO\>"
 | |
| syn match   masmDirective	"\.RADIX\>"
 | |
| syn match   masmDirective	"\.SAFESEH\>"
 | |
| syn match   masmDirective	"%OUT\>"
 | |
| syn match   masmDirective	"ALIGN\>"
 | |
| syn match   masmOption		"ALIGN([0-9]\+)"
 | |
| 
 | |
| syn keyword masmRegister	AX BX CX DX SI DI BP SP
 | |
| syn keyword masmRegister	CS DS SS ES FS GS
 | |
| syn keyword masmRegister	AH BH CH DH AL BL CL DL
 | |
| syn keyword masmRegister	EAX EBX ECX EDX ESI EDI EBP ESP
 | |
| syn keyword masmRegister	CR0 CR2 CR3 CR4
 | |
| syn keyword masmRegister	DR0 DR1 DR2 DR3 DR6 DR7
 | |
| syn keyword masmRegister	TR3 TR4 TR5 TR6 TR7
 | |
| syn match   masmRegister	"ST([0-7])"
 | |
| 
 | |
| " x86-64 registers
 | |
| syn keyword masmRegister	RAX RBX RCX RDX RSI RDI RBP RSP
 | |
| syn keyword masmRegister	R8 R9 R10 R11 R12 R13 R14 R15
 | |
| syn keyword masmRegister	R8D R9D R10D R11D R12D R13D R14D R15D
 | |
| syn keyword masmRegister	R8W R9W R10W R11W R12W R13W R14W R15W
 | |
| syn keyword masmRegister	R8B R9B R10B R11B R12B R13B R14B R15B
 | |
| 
 | |
| " SSE/AVX registers
 | |
| syn match   masmRegister	"\(X\|Y\)MM[0-9]\>"
 | |
| syn match   masmRegister	"\(X\|Y\)MM1[0-5]\>"
 | |
| 
 | |
| " Instruction prefixes
 | |
| syn keyword masmOpcode		LOCK REP REPE REPNE REPNZ REPZ
 | |
| 
 | |
| " 8086/8088 opcodes
 | |
| syn keyword masmOpcode		AAA AAD AAM AAS ADC ADD AND CALL CBW CLC CLD
 | |
| syn keyword masmOpcode		CLI CMC CMP CMPS CMPSB CMPSW CWD DAA DAS DEC
 | |
| syn keyword masmOpcode		DIV ESC HLT IDIV IMUL IN INC INT INTO IRET
 | |
| syn keyword masmOpcode		JCXZ JMP LAHF LDS LEA LES LODS LODSB LODSW
 | |
| syn keyword masmOpcode		LOOP LOOPE LOOPEW LOOPNE LOOPNEW LOOPNZ
 | |
| syn keyword masmOpcode		LOOPNZW LOOPW LOOPZ LOOPZW MOV MOVS MOVSB
 | |
| syn keyword masmOpcode		MOVSW MUL NEG NOP NOT OR OUT POP POPF PUSH
 | |
| syn keyword masmOpcode		PUSHF RCL RCR RET RETF RETN ROL ROR SAHF SAL
 | |
| syn keyword masmOpcode		SAR SBB SCAS SCASB SCASW SHL SHR STC STD STI
 | |
| syn keyword masmOpcode		STOS STOSB STOSW SUB TEST WAIT XCHG XLAT XLATB
 | |
| syn keyword masmOpcode		XOR
 | |
| syn match   masmOpcode	      "J\(P[EO]\|\(N\?\([ABGL]E\?\|[CEOPSZ]\)\)\)\>"
 | |
| 
 | |
| " 80186 opcodes
 | |
| syn keyword masmOpcode		BOUND ENTER INS INSB INSW LEAVE OUTS OUTSB
 | |
| syn keyword masmOpcode		OUTSW POPA PUSHA PUSHW
 | |
| 
 | |
| " 80286 opcodes
 | |
| syn keyword masmOpcode		ARPL LAR LSL SGDT SIDT SLDT SMSW STR VERR VERW
 | |
| 
 | |
| " 80286/80386 privileged opcodes
 | |
| syn keyword masmOpcode		CLTS LGDT LIDT LLDT LMSW LTR
 | |
| 
 | |
| " 80386 opcodes
 | |
| syn keyword masmOpcode		BSF BSR BT BTC BTR BTS CDQ CMPSD CWDE INSD
 | |
| syn keyword masmOpcode		IRETD IRETDF IRETF JECXZ LFS LGS LODSD LOOPD
 | |
| syn keyword masmOpcode		LOOPED LOOPNED LOOPNZD LOOPZD LSS MOVSD MOVSX
 | |
| syn keyword masmOpcode		MOVZX OUTSD POPAD POPFD PUSHAD PUSHD PUSHFD
 | |
| syn keyword masmOpcode		SCASD SHLD SHRD STOSD
 | |
| syn match   masmOpcode	    "SET\(P[EO]\|\(N\?\([ABGL]E\?\|[CEOPSZ]\)\)\)\>"
 | |
| 
 | |
| " 80486 opcodes
 | |
| syn keyword masmOpcode		BSWAP CMPXCHG INVD INVLPG WBINVD XADD
 | |
| 
 | |
| " Floating-point opcodes as of 487
 | |
| syn keyword masmOpFloat		F2XM1 FABS FADD FADDP FBLD FBSTP FCHS FCLEX
 | |
| syn keyword masmOpFloat		FNCLEX FCOM FCOMP FCOMPP FCOS FDECSTP FDISI
 | |
| syn keyword masmOpFloat		FNDISI FDIV FDIVP FDIVR FDIVRP FENI FNENI
 | |
| syn keyword masmOpFloat		FFREE FIADD FICOM FICOMP FIDIV FIDIVR FILD
 | |
| syn keyword masmOpFloat		FIMUL FINCSTP FINIT FNINIT FIST FISTP FISUB
 | |
| syn keyword masmOpFloat		FISUBR FLD FLDCW FLDENV FLDLG2 FLDLN2 FLDL2E
 | |
| syn keyword masmOpFloat		FLDL2T FLDPI FLDZ FLD1 FMUL FMULP FNOP FPATAN
 | |
| syn keyword masmOpFloat		FPREM FPREM1 FPTAN FRNDINT FRSTOR FSAVE FNSAVE
 | |
| syn keyword masmOpFloat		FSCALE FSETPM FSIN FSINCOS FSQRT FST FSTCW
 | |
| syn keyword masmOpFloat		FNSTCW FSTENV FNSTENV FSTP FSTSW FNSTSW FSUB
 | |
| syn keyword masmOpFloat		FSUBP FSUBR FSUBRP FTST FUCOM FUCOMP FUCOMPP
 | |
| syn keyword masmOpFloat		FWAIT FXAM FXCH FXTRACT FYL2X FYL2XP1
 | |
| 
 | |
| " Floating-point opcodes in Pentium and later processors
 | |
| syn keyword masmOpFloat		FCMOVE FCMOVNE FCMOVB FCMOVBE FCMOVNB FCMOVNBE
 | |
| syn keyword masmOpFloat		FCMOVU FCMOVNU FCOMI FUCOMI FCOMIP FUCOMIP
 | |
| syn keyword masmOpFloat		FXSAVE FXRSTOR
 | |
| 
 | |
| " MMX opcodes (Pentium w/ MMX, Pentium II, and later)
 | |
| syn keyword masmOpcode		MOVD MOVQ PACKSSWB PACKSSDW PACKUSWB
 | |
| syn keyword masmOpcode		PUNPCKHBW PUNPCKHWD PUNPCKHDQ
 | |
| syn keyword masmOpcode		PUNPCKLBW PUNPCKLWD PUNPCKLDQ
 | |
| syn keyword masmOpcode		PADDB PADDW PADDD PADDSB PADDSW PADDUSB PADDUSW
 | |
| syn keyword masmOpcode		PSUBB PSUBW PSUBD PSUBSB PSUBSW PSUBUSB PSUBUSW
 | |
| syn keyword masmOpcode		PMULHW PMULLW PMADDWD
 | |
| syn keyword masmOpcode		PCMPEQB PCMPEQW PCMPEQD PCMPGTB PCMPGTW PCMPGTD
 | |
| syn keyword masmOpcode		PAND PANDN POR PXOR
 | |
| syn keyword masmOpcode		PSLLW PSLLD PSLLQ PSRLW PSRLD PSRLQ PSRAW PSRAD
 | |
| syn keyword masmOpcode		EMMS
 | |
| 
 | |
| " SSE opcodes (Pentium III and later)
 | |
| syn keyword masmOpcode		MOVAPS MOVUPS MOVHPS MOVHLPS MOVLPS MOVLHPS
 | |
| syn keyword masmOpcode		MOVMSKPS MOVSS
 | |
| syn keyword masmOpcode		ADDPS ADDSS SUBPS SUBSS MULPS MULSS DIVPS DIVSS
 | |
| syn keyword masmOpcode		RCPPS RCPSS SQRTPS SQRTSS RSQRTPS RSQRTSS
 | |
| syn keyword masmOpcode		MAXPS MAXSS MINPS MINSS
 | |
| syn keyword masmOpcode		CMPPS CMPSS COMISS UCOMISS
 | |
| syn keyword masmOpcode		ANDPS ANDNPS ORPS XORPS
 | |
| syn keyword masmOpcode		SHUFPS UNPCKHPS UNPCKLPS
 | |
| syn keyword masmOpcode		CVTPI2PS CVTSI2SS CVTPS2PI CVTTPS2PI
 | |
| syn keyword masmOpcode		CVTSS2SI CVTTSS2SI
 | |
| syn keyword masmOpcode		LDMXCSR STMXCSR
 | |
| syn keyword masmOpcode		PAVGB PAVGW PEXTRW PINSRW PMAXUB PMAXSW
 | |
| syn keyword masmOpcode		PMINUB PMINSW PMOVMSKB PMULHUW PSADBW PSHUFW
 | |
| syn keyword masmOpcode		MASKMOVQ MOVNTQ MOVNTPS SFENCE
 | |
| syn keyword masmOpcode		PREFETCHT0 PREFETCHT1 PREFETCHT2 PREFETCHNTA
 | |
| 
 | |
| " SSE2 opcodes (Pentium 4 and later)
 | |
| syn keyword masmOpcode		MOVAPD MOVUPD MOVHPD MOVLPD MOVMSKPD MOVSD
 | |
| syn keyword masmOpcode		ADDPD ADDSD SUBPD SUBSD MULPD MULSD DIVPD DIVSD
 | |
| syn keyword masmOpcode		SQRTPD SQRTSD MAXPD MAXSD MINPD MINSD
 | |
| syn keyword masmOpcode		ANDPD ANDNPD ORPD XORPD
 | |
| syn keyword masmOpcode		CMPPD CMPSD COMISD UCOMISD
 | |
| syn keyword masmOpcode		SHUFPD UNPCKHPD UNPCKLPD
 | |
| syn keyword masmOpcode		CVTPD2PI CVTTPD2PI CVTPI2PD CVTPD2DQ
 | |
| syn keyword masmOpcode		CVTTPD2DQ CVTDQ2PD CVTPS2PD CVTPD2PS
 | |
| syn keyword masmOpcode		CVTSS2SD CVTSD2SS CVTSD2SI CVTTSD2SI CVTSI2SD
 | |
| syn keyword masmOpcode		CVTDQ2PS CVTPS2DQ CVTTPS2DQ
 | |
| syn keyword masmOpcode		MOVDQA MOVDQU MOVQ2DQ MOVDQ2Q PMULUDQ
 | |
| syn keyword masmOpcode		PADDQ PSUBQ PSHUFLW PSHUFHW PSHUFD
 | |
| syn keyword masmOpcode		PSLLDQ PSRLDQ PUNPCKHQDQ PUNPCKLQDQ
 | |
| syn keyword masmOpcode		CLFLUSH LFENCE MFENCE PAUSE MASKMOVDQU
 | |
| syn keyword masmOpcode		MOVNTPD MOVNTDQ MOVNTI
 | |
| 
 | |
| " SSE3 opcodes (Pentium 4 w/ Hyper-Threading and later)
 | |
| syn keyword masmOpcode		FISTTP LDDQU ADDSUBPS ADDSUBPD
 | |
| syn keyword masmOpcode		HADDPS HSUBPS HADDPD HSUBPD
 | |
| syn keyword masmOpcode		MOVSHDUP MOVSLDUP MOVDDUP MONITOR MWAIT
 | |
| 
 | |
| " SSSE3 opcodes (Core and later)
 | |
| syn keyword masmOpcode		PSIGNB PSIGNW PSIGND PABSB PABSW PABSD
 | |
| syn keyword masmOpcode		PALIGNR PSHUFB PMULHRSW PMADDUBSW
 | |
| syn keyword masmOpcode		PHSUBW PHSUBD PHSUBSW PHADDW PHADDD PHADDSW
 | |
| 
 | |
| " SSE 4.1 opcodes (Penryn and later)
 | |
| syn keyword masmOpcode		MPSADBW PHMINPOSUW PMULDQ PMULLD DPPS DPPD
 | |
| syn keyword masmOpcode		BLENDPS BLENDPD BLENDVPS BLENDVPD
 | |
| syn keyword masmOpcode		PBLENDVB PBLENDW
 | |
| syn keyword masmOpcode		PMINSB PMAXSB PMINSD PMAXSD
 | |
| syn keyword masmOpcode		PMINUW PMAXUW PMINUD PMAXUD
 | |
| syn keyword masmOpcode		ROUNDPS ROUNDSS ROUNDPD ROUNDSD
 | |
| syn keyword masmOpcode		INSERTPS PINSRB PINSRD PINSRQ
 | |
| syn keyword masmOpcode		EXTRACTPS PEXTRB PEXTRD PEXTRQ
 | |
| syn keyword masmOpcode		PMOVSXBW PMOVZXBW PMOVSXBD PMOVZXBD
 | |
| syn keyword masmOpcode		PMOVSXBQ PMOVZXBQ PMOVSXWD PMOVZXWD
 | |
| syn keyword masmOpcode		PMOVSXWQ PMOVZXWQ PMOVSXDQ PMOVZXDQ
 | |
| syn keyword masmOpcode		PTEST PCMPEQQ PACKUSDW MOVNTDQA
 | |
| 
 | |
| " SSE 4.2 opcodes (Nehalem and later)
 | |
| syn keyword masmOpcode		PCMPESTRI PCMPESTRM PCMPISTRI PCMPISTRM PCMPGTQ
 | |
| syn keyword masmOpcode		CRC32 POPCNT LZCNT
 | |
| 
 | |
| " AES-NI (Westmere (2010) and later)
 | |
| syn keyword masmOpcode		AESENC AESENCLAST AESDEC AESDECLAST
 | |
| syn keyword masmOpcode		AESKEYGENASSIST AESIMC PCLMULQDQ
 | |
| 
 | |
| " AVX (Sandy Bridge (2011) and later)
 | |
| syn keyword masmOpcode		VBROADCASTSS VBROADCASTSD VBROADCASTF128
 | |
| syn keyword masmOpcode		VINSERTF128 VEXTRACTF128 VMASKMOVPS VMASKMOVPD
 | |
| syn keyword masmOpcode		VPERMILPS VPERMILPD VPERM2F128
 | |
| syn keyword masmOpcode		VZEROALL VZEROUPPER
 | |
| 
 | |
| " Other opcodes in Pentium and later processors
 | |
| syn keyword masmOpcode		CMPXCHG8B CPUID UD2
 | |
| syn keyword masmOpcode		RSM RDMSR WRMSR RDPMC RDTSC SYSENTER SYSEXIT
 | |
| syn match   masmOpcode	   "CMOV\(P[EO]\|\(N\?\([ABGL]E\?\|[CEOPSZ]\)\)\)\>"
 | |
| 
 | |
| 
 | |
| " The default highlighting
 | |
| hi def link masmLabel		PreProc
 | |
| hi def link masmComment		Comment
 | |
| hi def link masmDirective	Statement
 | |
| hi def link masmType		Type
 | |
| hi def link masmOperator	Type
 | |
| hi def link masmOption		Special
 | |
| hi def link masmRegister	Special
 | |
| hi def link masmString		String
 | |
| hi def link masmText		String
 | |
| hi def link masmTitle		Title
 | |
| hi def link masmOpcode		Statement
 | |
| hi def link masmOpFloat		Statement
 | |
| 
 | |
| hi def link masmHexadecimal	Number
 | |
| hi def link masmDecimal		Number
 | |
| hi def link masmOctal		Number
 | |
| hi def link masmBinary		Number
 | |
| hi def link masmFloatRaw	Number
 | |
| hi def link masmFloat		Number
 | |
| 
 | |
| hi def link masmIdentifier	Identifier
 | |
| 
 | |
| syntax sync minlines=50
 | |
| 
 | |
| let b:current_syntax = "masm"
 | |
| 
 | |
| let &cpo = s:cpo_save
 | |
| unlet s:cpo_save
 | |
| 
 | |
| " vim: ts=8
 |