|
2 | 2 | " Language: Microsoft Macro Assembler (80x86) |
3 | 3 | " Orig Author: Rob Brady <[email protected]> |
4 | 4 | " 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 |
6 | 6 |
|
7 | 7 | " Quit when a syntax file was already loaded |
8 | 8 | if exists("b:current_syntax") |
@@ -194,8 +194,8 @@ syn keyword masmRegister R8W R9W R10W R11W R12W R13W R14W R15W |
194 | 194 | syn keyword masmRegister R8B R9B R10B R11B R12B R13B R14B R15B |
195 | 195 |
|
196 | 196 | " 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]\>" |
199 | 199 |
|
200 | 200 | " Instruction prefixes |
201 | 201 | syn keyword masmOpcode LOCK REP REPE REPNE REPNZ REPZ |
@@ -338,11 +338,192 @@ syn keyword masmOpcode VINSERTF128 VEXTRACTF128 VMASKMOVPS VMASKMOVPD |
338 | 338 | syn keyword masmOpcode VPERMILPS VPERMILPD VPERM2F128 |
339 | 339 | syn keyword masmOpcode VZEROALL VZEROUPPER |
340 | 340 |
|
| 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 | + |
341 | 518 | " Other opcodes in Pentium and later processors |
342 | 519 | syn keyword masmOpcode CMPXCHG8B CPUID UD2 |
343 | 520 | syn keyword masmOpcode RSM RDMSR WRMSR RDPMC RDTSC SYSENTER SYSEXIT |
344 | 521 | syn match masmOpcode "CMOV\(P[EO]\|\(N\?\([ABGL]E\?\|[CEOPSZ]\)\)\)\>" |
345 | 522 |
|
| 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 |
346 | 527 |
|
347 | 528 | " The default highlighting |
348 | 529 | hi def link masmLabel PreProc |
|
0 commit comments