Skip to content

Commit e7833e7

Browse files
authored
runtime(masm): add support for AVX-2 and AVX-512 (#13061)
Signed-off-by: Christian Brabandt <[email protected]>
1 parent 0ce2c59 commit e7833e7

1 file changed

Lines changed: 184 additions & 3 deletions

File tree

runtime/syntax/masm.vim

Lines changed: 184 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
" Language: Microsoft Macro Assembler (80x86)
33
" Orig Author: Rob Brady <[email protected]>
44
" Maintainer: Wu Yongwei <[email protected]>
5-
" Last Change: 2022-04-24 20:07:04 +0800
5+
" Last Change: 2023-09-09 20:48:26 +0800
66

77
" Quit when a syntax file was already loaded
88
if exists("b:current_syntax")
@@ -194,8 +194,8 @@ syn keyword masmRegister R8W R9W R10W R11W R12W R13W R14W R15W
194194
syn keyword masmRegister R8B R9B R10B R11B R12B R13B R14B R15B
195195

196196
" SSE/AVX registers
197-
syn match masmRegister "\(X\|Y\)MM[0-9]\>"
198-
syn match masmRegister "\(X\|Y\)MM1[0-5]\>"
197+
syn match masmRegister "\(X\|Y\|Z\)MM[12]\?[0-9]\>"
198+
syn match masmRegister "\(X\|Y\|Z\)MM3[01]\>"
199199

200200
" Instruction prefixes
201201
syn keyword masmOpcode LOCK REP REPE REPNE REPNZ REPZ
@@ -338,11 +338,192 @@ syn keyword masmOpcode VINSERTF128 VEXTRACTF128 VMASKMOVPS VMASKMOVPD
338338
syn keyword masmOpcode VPERMILPS VPERMILPD VPERM2F128
339339
syn keyword masmOpcode VZEROALL VZEROUPPER
340340

341+
" AVX-2 (Haswell and later)
342+
syn keyword masmOpcode VPBROADCASTB VPBROADCASTW VPBROADCASTD
343+
syn keyword masmOpcode VPBROADCASTQ VBROADCASTI128
344+
syn keyword masmOpcode VINSERTI128 VEXTRACTI128
345+
syn keyword masmOpcode VGATHERDPD VGATHERQPD VGATHERDPS VGATHERQPS
346+
syn keyword masmOpcode VPGATHERDD VPGATHERDQ VPGATHERQD VPGATHERQQ
347+
syn keyword masmOpcode VPMASKMOVD VPMASKMOVQ
348+
syn keyword masmOpcode PERMPS VPERMD VPERMPD VPERMQ VPERM2I128
349+
syn keyword masmOpcode VPBLENDD VPSLLVD VPSLLVQ VPSRLVD VPSRLVQ
350+
syn keyword masmOpcode VPSRAVD
351+
352+
" AVX-512 (Knights Landing/Skylake-X and later)
353+
syn keyword masmOpcode KAND KANDN KMOV KUNPCK KNOT KOR KORTEST
354+
syn keyword masmOpcode KSHIFTL KSHIFTR KXNOR KXOR KADD KTEST
355+
syn keyword masmOpcode VBLENDMPD VBLENDMPS
356+
syn keyword masmOpcode VPBLENDMD VPBLENDMQ VPBLENDMB VPBLENDMW
357+
syn keyword masmOpcode VPCMPD VPCMPUD VPCMPQ VPCMPUQ
358+
syn keyword masmOpcode VPCMPB VPCMPUB VPCMPW VPCMPUW
359+
syn keyword masmOpcode VPTESTMD VPTESTMQ VPTESTNMD VPTESTNMQ
360+
syn keyword masmOpcode VPTESTMB VPTESTMW VPTESTNMB VPTESTNMW
361+
syn keyword masmOpcode VCOMPRESSPD VCOMPRESSPS VPCOMPRESSD VPCOMPRESSQ
362+
syn keyword masmOpcode VEXPANDPD VEXPANDPS VPEXPANDD VPEXPANDQ
363+
syn keyword masmOpcode VPERMB VPERMW VPERMT2B VPERMT2W VPERMI2PD
364+
syn keyword masmOpcode VPERMI2PS VPERMI2D VPERMI2Q VPERMI2B VPERMI2W
365+
syn keyword masmOpcode VPERMT2PS VPERMT2PD VPERMT2D VPERMT2Q
366+
syn keyword masmOpcode VSHUFF32x4 VSHUFF64x2 VSHUFI32x4 VSHUFI64x2
367+
syn keyword masmOpcode VPMULTISHIFTQB VPTERNLOGD VPTERNLOGQ
368+
syn keyword masmOpcode VPMOVQD VPMOVSQD VPMOVUSQD VPMOVQW VPMOVSQW
369+
syn keyword masmOpcode VPMOVUSQW VPMOVQB VPMOVSQB VPMOVUSQB VPMOVDW
370+
syn keyword masmOpcode VPMOVSDW VPMOVUSDW VPMOVDB VPMOVSDB VPMOVUSDB
371+
syn keyword masmOpcode VPMOVWB VPMOVSWB VPMOVUSWB
372+
syn keyword masmOpcode VCVTPS2UDQ VCVTPD2UDQ VCVTTPS2UDQ VCVTTPD2UDQ
373+
syn keyword masmOpcode VCVTSS2USI VCVTSD2USI VCVTTSS2USI VCVTTSD2USI
374+
syn keyword masmOpcode VCVTPS2QQ VCVTPD2QQ VCVTPS2UQQ VCVTPD2UQQ
375+
syn keyword masmOpcode VCVTTPS2QQ VCVTTPD2QQ VCVTTPS2UQQ VCVTTPD2UQQ
376+
syn keyword masmOpcode VCVTUDQ2PS VCVTUDQ2PD VCVTUSI2PS VCVTUSI2PD
377+
syn keyword masmOpcode VCVTUSI2SD VCVTUSI2SS VCVTUQQ2PS VCVTUQQ2PD
378+
syn keyword masmOpcode VCVTQQ2PD VCVTQQ2PS VGETEXPPD
379+
syn keyword masmOpcode VGETEXPPS VGETEXPSD VGETEXPSS
380+
syn keyword masmOpcode VGETMANTPD VGETMANTPS VGETMANTSD VGETMANTSS
381+
syn keyword masmOpcode VFIXUPIMMPD VFIXUPIMMPS VFIXUPIMMSD VFIXUPIMMSS
382+
syn keyword masmOpcode VRCP14PD VRCP14PS VRCP14SD VRCP14SS
383+
syn keyword masmOpcode VRNDSCALEPS VRNDSCALEPD VRNDSCALESS VRNDSCALESD
384+
syn keyword masmOpcode VRSQRT14PD VRSQRT14PS VRSQRT14SD VRSQRT14SS
385+
syn keyword masmOpcode VSCALEFPS VSCALEFPD VSCALEFSS VSCALEFSD
386+
syn keyword masmOpcode VBROADCASTI32X2 VBROADCASTI32X4 VBROADCASTI32X8
387+
syn keyword masmOpcode VBROADCASTI64X2 VBROADCASTI64X4
388+
syn keyword masmOpcode VALIGND VALIGNQ VDBPSADBW VPABSQ VPMAXSQ
389+
syn keyword masmOpcode VPMAXUQ VPMINSQ VPMINUQ VPROLD VPROLVD VPROLQ
390+
syn keyword masmOpcode VPROLVQ VPRORD VPRORVD VPRORQ VPRORVQ
391+
syn keyword masmOpcode VPSCATTERDD VPSCATTERDQ VPSCATTERQD VPSCATTERQQ
392+
syn keyword masmOpcode VSCATTERDPS VSCATTERDPD VSCATTERQPS VSCATTERQPD
393+
syn keyword masmOpcode VPCONFLICTD VPCONFLICTQ VPLZCNTD VPLZCNTQ
394+
syn keyword masmOpcode VPBROADCASTMB2Q VPBROADCASTMW2D
395+
syn keyword masmOpcode VEXP2PD VEXP2PS
396+
syn keyword masmOpcode VRCP28PD VRCP28PS VRCP28SD VRCP28SS
397+
syn keyword masmOpcode VRSQRT28PD VRSQRT28PS VRSQRT28SD VRSQRT28SS
398+
syn keyword masmOpcode VGATHERPF0DPS VGATHERPF0QPS VGATHERPF0DPD
399+
syn keyword masmOpcode VGATHERPF0QPD VGATHERPF1DPS VGATHERPF1QPS
400+
syn keyword masmOpcode VGATHERPF1DPD VGATHERPF1QPD VSCATTERPF0DPS
401+
syn keyword masmOpcode VSCATTERPF0QPS VSCATTERPF0DPD VSCATTERPF0QPD
402+
syn keyword masmOpcode VSCATTERPF1DPS VSCATTERPF1QPS VSCATTERPF1DPD
403+
syn keyword masmOpcode VSCATTERPF1QPD
404+
syn keyword masmOpcode V4FMADDPS V4FMADDSS V4FNMADDPS V4FNMADDSS
405+
syn keyword masmOpcode VP4DPWSSD VP4DPWSSDS
406+
syn keyword masmOpcode VFPCLASSPS VFPCLASSPD VFPCLASSSS VFPCLASSSD
407+
syn keyword masmOpcode VRANGEPS VRANGEPD VRANGESS VRANGESD
408+
syn keyword masmOpcode VREDUCEPS VREDUCEPD VREDUCESS VREDUCESD
409+
syn keyword masmOpcode VPMOVM2D VPMOVM2Q VPMOVM2B VPMOVM2W VPMOVD2M
410+
syn keyword masmOpcode VPMOVQ2M VPMOVB2M VPMOVW2M VPMULLQ
411+
syn keyword masmOpcode VPCOMPRESSB VPCOMPRESSW VPEXPANDB VPEXPANDW
412+
syn keyword masmOpcode VPSHLD VPSHLDV VPSHRD VPSHRDV
413+
syn keyword masmOpcode VPDPBUSD VPDPBUSDS VPDPWSSD VPDPWSSDS
414+
syn keyword masmOpcode VPMADD52LUQ VPMADD52HUQ
415+
syn keyword masmOpcode VPOPCNTD VPOPCNTQ VPOPCNTB VPOPCNTW
416+
syn keyword masmOpcode VPSHUFBITQMB VP2INTERSECTD VP2INTERSECTQ
417+
syn keyword masmOpcode VGF2P8AFFINEINVQB VGF2P8AFFINEQB
418+
syn keyword masmOpcode VGF2P8MULB VPCLMULQDQ
419+
syn keyword masmOpcode VAESDEC VAESDECLAST VAESENC VAESENCLAST
420+
syn keyword masmOpcode VCVTNE2PS2BF16 VCVTNEPS2BF16 VDPBF16PS
421+
syn keyword masmOpcode VADDPH VADDSH VSUBPH VSUBSH VMULPH VMULSH
422+
syn keyword masmOpcode VDIVPH VDIVSH VSQRTPH VSQRTSH
423+
syn keyword masmOpcode VFMADD132PH VFMADD213PH VFMADD231PH
424+
syn keyword masmOpcode VFMADD132SH VFMADD213SH VFMADD231SH
425+
syn keyword masmOpcode VFNMADD132PH VFNMADD213PH VFNMADD231PH
426+
syn keyword masmOpcode VFNMADD132SH VFNMADD213SH VFNMADD231SH
427+
syn keyword masmOpcode VFMSUB132PH VFMSUB213PH VFMSUB231PH
428+
syn keyword masmOpcode VFMSUB132SH VFMSUB213SH VFMSUB231SH
429+
syn keyword masmOpcode VFNMSUB132PH VFNMSUB213PH VFNMSUB231PH
430+
syn keyword masmOpcode VFNMSUB132SH VFNMSUB213SH VFNMSUB231SH
431+
syn keyword masmOpcode VFMADDSUB132PH VFMADDSUB213PH VFMADDSUB231PH
432+
syn keyword masmOpcode VFMSUBADD132PH VFMSUBADD213PH VFMSUBADD231PH
433+
syn keyword masmOpcode VREDUCEPH VREDUCESH VRNDSCALEPH VRNDSCALESH
434+
syn keyword masmOpcode VSCALEFPH VSCALEFSH VFMULCPH VFMULCSH VFCMULCPH
435+
syn keyword masmOpcode VFCMULCSH VFMADDCPH VFMADDCSH VFCMADDCPH
436+
syn keyword masmOpcode VFCMADDCSH VRCPPH VRCPSH VRSQRTPH VRSQRTSH
437+
syn keyword masmOpcode VCMPPH VCMPSH VCOMISH VUCOMISH VMAXPH VMAXSH
438+
syn keyword masmOpcode VMINPH VMINSH VFPCLASSPH VFPCLASSSH
439+
syn keyword masmOpcode VCVTW2PH VCVTUW2PH VCVTDQ2PH VCVTUDQ2PH
440+
syn keyword masmOpcode VCVTQQ2PH VCVTUQQ2PH VCVTPS2PHX VCVTPD2PH
441+
syn keyword masmOpcode VCVTSI2SH VCVTUSI2SH VCVTSS2SH VCVTSD2SH
442+
syn keyword masmOpcode VCVTPH2W VCVTTPH2W VCVTPH2UW VCVTTPH2UW
443+
syn keyword masmOpcode VCVTPH2DQ VCVTTPH2DQ VCVTPH2UDQ VCVTTPH2UDQ
444+
syn keyword masmOpcode VCVTPH2QQ VCVTTPH2QQ VCVTPH2UQQ VCVTTPH2UQQ
445+
syn keyword masmOpcode VCVTPH2PSX VCVTPH2PD VCVTSH2SI VCVTTSH2SI
446+
syn keyword masmOpcode VCVTSH2USI VCVTTSH2USI VCVTSH2SS VCVTSH2SD
447+
syn keyword masmOpcode VGETEXPPH VGETEXPSH VGETMANTPH VGETMANTSH
448+
syn keyword masmOpcode VMOVSH VMOVW VADDPD VADDPS VADDSD VADDSS
449+
syn keyword masmOpcode VANDPD VANDPS VANDNPD VANDNPS
450+
syn keyword masmOpcode VCMPPD VCMPPS VCMPSD VCMPSS
451+
syn keyword masmOpcode VCOMISD VCOMISS VDIVPD VDIVPS VDIVSD VDIVSS
452+
syn keyword masmOpcode VCVTDQ2PD VCVTDQ2PS VCVTPD2DQ VCVTPD2PS
453+
syn keyword masmOpcode VCVTPH2PS VCVTPS2PH VCVTPS2DQ VCVTPS2PD
454+
syn keyword masmOpcode VCVTSD2SI VCVTSD2SS VCVTSI2SD VCVTSI2SS
455+
syn keyword masmOpcode VCVTSS2SD VCVTSS2SI VCVTTPD2DQ VCVTTPS2DQ
456+
syn keyword masmOpcode VCVTTSD2SI VCVTTSS2SI VMAXPD VMAXPS
457+
syn keyword masmOpcode VMAXSD VMAXSS VMINPD VMINPS VMINSD VMINSS
458+
syn keyword masmOpcode VMOVAPD VMOVAPS VMOVD VMOVQ VMOVDDUP
459+
syn keyword masmOpcode VMOVHLPS VMOVHPD VMOVHPS VMOVLHPS VMOVLPD
460+
syn keyword masmOpcode VMOVLPS VMOVNTDQA VMOVNTDQ VMOVNTPD VMOVNTPS
461+
syn keyword masmOpcode VMOVSD VMOVSHDUP VMOVSLDUP VMOVSS VMOVUPD
462+
syn keyword masmOpcode VMOVUPS VMOVDQA32 VMOVDQA64 VMOVDQU8
463+
syn keyword masmOpcode VMOVDQU16 VMOVDQU32 VMOVDQU64 VMULPD VMULPS
464+
syn keyword masmOpcode VMULSD VMULSS VORPD VORPS VSQRTPD VSQRTPS
465+
syn keyword masmOpcode VSQRTSD VSQRTSS VSUBPD VSUBPS VSUBSD VSUBSS
466+
syn keyword masmOpcode VUCOMISD VUCOMISS VUNPCKHPD VUNPCKHPS VUNPCKLPD
467+
syn keyword masmOpcode VUNPCKLPS VXORPD VXORPS VEXTRACTPS VINSERTPS
468+
syn keyword masmOpcode VPEXTRB VPEXTRW VPEXTRD VPEXTRQ VPINSRB VPINSRW
469+
syn keyword masmOpcode VPINSRD VPINSRQ VPACKSSWB VPACKSSDW VPACKUSDW
470+
syn keyword masmOpcode VPACKUSWB VPADDB VPADDW VPADDD VPADDQ VPADDSB
471+
syn keyword masmOpcode VPADDSW VPADDUSB VPADDUSW VPANDD VPANDQ VPANDND
472+
syn keyword masmOpcode VPANDNQ VPAVGB VPAVGW VPCMPEQB VPCMPEQW
473+
syn keyword masmOpcode VPCMPEQD VPCMPEQQ VPCMPGTB VPCMPGTW VPCMPGTD
474+
syn keyword masmOpcode VPCMPGTQ VPMAXSB VPMAXSW VPMAXSD VPMAXSQ
475+
syn keyword masmOpcode VPMAXUB VPMAXUW VPMAXUD VPMAXUQ VPMINSB VPMINSW
476+
syn keyword masmOpcode VPMINSD VPMINSQ VPMINUB VPMINUW VPMINUD VPMINUQ
477+
syn keyword masmOpcode VPMOVSXBW VPMOVSXBD VPMOVSXBQ VPMOVSXWD
478+
syn keyword masmOpcode VPMOVSXWQ VPMOVSXDQ VPMOVZXBW VPMOVZXBD
479+
syn keyword masmOpcode VPMOVZXBQ VPMOVZXWD VPMOVZXWQ VPMOVZXDQ VPMULDQ
480+
syn keyword masmOpcode VPMULUDQ VPMULHRSW VPMULHUW VPMULHW VPMULLD
481+
syn keyword masmOpcode VPMULLQ VPMULLW VPORD VPORQ VPSUBB VPSUBW
482+
syn keyword masmOpcode VPSUBD VPSUBQ VPSUBSB VPSUBSW VPSUBUSB VPSUBUSW
483+
syn keyword masmOpcode VPUNPCKHBW VPUNPCKHWD VPUNPCKHDQ VPUNPCKHQDQ
484+
syn keyword masmOpcode VPUNPCKLBW VPUNPCKLWD VPUNPCKLDQ VPUNPCKLQDQ
485+
syn keyword masmOpcode VPXORD VPXORQ VPSADBW VPSHUFB VPSHUFHW VPSHUFLW
486+
syn keyword masmOpcode VPSHUFD VPSLLDQ VPSLLW VPSLLD VPSLLQ VPSRAW
487+
syn keyword masmOpcode VPSRAD VPSRAQ VPSRLDQ VPSRLW VPSRLD VPSRLQ
488+
syn keyword masmOpcode VPSLLVW VPSRLVW VPSHUFPD VPSHUFPS VEXTRACTF32X4
489+
syn keyword masmOpcode VEXTRACTF64X2 VEXTRACTF32X8 VEXTRACTF64X4
490+
syn keyword masmOpcode VEXTRACTI32X4 VEXTRACTI64X2 VEXTRACTI32X8
491+
syn keyword masmOpcode VEXTRACTI64X4 VINSERTF32x4 VINSERTF64X2
492+
syn keyword masmOpcode VINSERTF32X8 VINSERTF64x4 VINSERTI32X4
493+
syn keyword masmOpcode VINSERTI64X2 VINSERTI32X8 VINSERTI64X4
494+
syn keyword masmOpcode VPABSB VPABSW VPABSD VPABSQ VPALIGNR
495+
syn keyword masmOpcode VPMADDUBSW VPMADDWD
496+
syn keyword masmOpcode VFMADD132PD VFMADD213PD VFMADD231PD
497+
syn keyword masmOpcode VFMADD132PS VFMADD213PS VFMADD231PS
498+
syn keyword masmOpcode VFMADD132SD VFMADD213SD VFMADD231SD
499+
syn keyword masmOpcode VFMADD132SS VFMADD213SS VFMADD231SS
500+
syn keyword masmOpcode VFMADDSUB132PD VFMADDSUB213PD VFMADDSUB231PD
501+
syn keyword masmOpcode VFMADDSUB132PS VFMADDSUB213PS VFMADDSUB231PS
502+
syn keyword masmOpcode VFMSUBADD132PD VFMSUBADD213PD VFMSUBADD231PD
503+
syn keyword masmOpcode VFMSUBADD132PS VFMSUBADD213PS VFMSUBADD231PS
504+
syn keyword masmOpcode VFMSUB132PD VFMSUB213PD VFMSUB231PD
505+
syn keyword masmOpcode VFMSUB132PS VFMSUB213PS VFMSUB231PS
506+
syn keyword masmOpcode VFMSUB132SD VFMSUB213SD VFMSUB231SD
507+
syn keyword masmOpcode VFMSUB132SS VFMSUB213SS VFMSUB231SS
508+
syn keyword masmOpcode VFNMADD132PD VFNMADD213PD VFNMADD231PD
509+
syn keyword masmOpcode VFNMADD132PS VFNMADD213PS VFNMADD231PS
510+
syn keyword masmOpcode VFNMADD132SD VFNMADD213SD VFNMADD231SD
511+
syn keyword masmOpcode VFNMADD132SS VFNMADD213SS VFNMADD231SS
512+
syn keyword masmOpcode VFNMSUB132PD VFNMSUB213PD VFNMSUB231PD
513+
syn keyword masmOpcode VFNMSUB132PS VFNMSUB213PS VFNMSUB231PS
514+
syn keyword masmOpcode VFNMSUB132SD VFNMSUB213SD VFNMSUB231SD
515+
syn keyword masmOpcode VFNMSUB132SS VFNMSUB213SS VFNMSUB231SS
516+
syn keyword masmOpcode VPSRAVW VPSRAVQ
517+
341518
" Other opcodes in Pentium and later processors
342519
syn keyword masmOpcode CMPXCHG8B CPUID UD2
343520
syn keyword masmOpcode RSM RDMSR WRMSR RDPMC RDTSC SYSENTER SYSEXIT
344521
syn match masmOpcode "CMOV\(P[EO]\|\(N\?\([ABGL]E\?\|[CEOPSZ]\)\)\)\>"
345522

523+
" Not really used by MASM, but useful for viewing GCC-generated assembly code
524+
" in Intel syntax
525+
syn match masmHexadecimal "[-+]\?0[Xx]\x*"
526+
syn keyword masmOpcode MOVABS
346527

347528
" The default highlighting
348529
hi def link masmLabel PreProc

0 commit comments

Comments
 (0)