PluginProbe
Code Block Pro – Beautiful Syntax Highlighting / 1.27.4
Code Block Pro – Beautiful Syntax Highlighting v1.27.4
1.27.1 1.27.2 1.27.3 1.27.4 1.27.5 1.27.6 1.27.7 1.28.0 1.3.0 1.4.0 1.5.0 1.5.1 1.5.2 1.6.0 1.7.0 1.8.0 1.9.0 1.9.1 1.9.2 1.9.3 trunk 1.1.0 1.10.0 1.11.0 1.11.1 All 63 releases
code-block-pro / build / shiki / languages / asm.tmLanguage.json

asm.tmLanguage.json in Code Block Pro – Beautiful Syntax Highlighting 1.27.4, at build/shiki/languages/asm.tmLanguage.json

1,736 lines 56.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 {
2 "fileTypes": ["asm", "nasm", "yasm", "inc", "s"],
3 "name": "asm",
4 "patterns": [
5 {
6 "include": "#registers"
7 },
8 {
9 "include": "#mnemonics"
10 },
11 {
12 "include": "#constants"
13 },
14 {
15 "include": "#entities"
16 },
17 {
18 "include": "#support"
19 },
20 {
21 "include": "#comments"
22 },
23 {
24 "include": "#preprocessor"
25 },
26 {
27 "include": "#strings"
28 }
29 ],
30 "repository": {
31 "comments": {
32 "patterns": [
33 {
34 "match": "(;|(^|\\s)#\\s).*$",
35 "name": "comment.line"
36 },
37 {
38 "begin": "/\\*",
39 "end": "\\*/",
40 "name": "comment.block"
41 },
42 {
43 "begin": "^\\s*[\\#%]\\s*if\\s+0\\b",
44 "end": "^\\s*[\\#%]\\s*endif\\b",
45 "name": "comment.preprocessor"
46 }
47 ]
48 },
49 "constants": {
50 "patterns": [
51 {
52 "match": "(?i)\\b0[by](?:[01][01_]*)\\.(?:(?:[01][01_]*)?(?:p[+-]?(?:[0-9][0-9_]*))?\\b)?",
53 "name": "constant.numeric.binary.floating-point.asm.x86_64"
54 },
55 {
56 "match": "(?i)\\b0[by](?:[01][01_]*)(?:p[+-]?(?:[0-9][0-9_]*))\\b",
57 "name": "constant.numeric.binary.floating-point.asm.x86_64"
58 },
59 {
60 "match": "(?i)\\b0[oq](?:[0-7][0-7_]*)\\.(?:(?:[0-7][0-7_]*)?(?:p[+-]?(?:[0-9][0-9_]*))?\\b)?",
61 "name": "constant.numeric.octal.floating-point.asm.x86_64"
62 },
63 {
64 "match": "(?i)\\b0[oq](?:[0-7][0-7_]*)(?:p[+-]?(?:[0-9][0-9_]*))\\b",
65 "name": "constant.numeric.octal.floating-point.asm.x86_64"
66 },
67 {
68 "match": "(?i)\\b(?:0[dt])?(?:[0-9][0-9_]*)\\.(?:(?:[0-9][0-9_]*)?(?:e[+-]?(?:[0-9][0-9_]*))?\\b)?",
69 "name": "constant.numeric.decimal.floating-point.asm.x86_64"
70 },
71 {
72 "match": "(?i)\\b(?:[0-9][0-9_]*)(?:e[+-]?(?:[0-9][0-9_]*))\\b",
73 "name": "constant.numeric.decimal.floating-point.asm.x86_64"
74 },
75 {
76 "match": "(?i)\\b(?:[0-9][0-9_]*)p(?:[0-9][0-9_]*)?\\b",
77 "name": "constant.numeric.decimal.packed-bcd.asm.x86_64"
78 },
79 {
80 "match": "(?i)\\b0[xh](?:[[:xdigit:]][[:xdigit:]_]*)\\.(?:(?:[[:xdigit:]][[:xdigit:]_]*)?(?:p[+-]?(?:[0-9][0-9_]*))?\\b)?",
81 "name": "constant.numeric.hex.floating-point.asm.x86_64"
82 },
83 {
84 "match": "(?i)\\b0[xh](?:[[:xdigit:]][[:xdigit:]_]*)(?:p[+-]?(?:[0-9][0-9_]*))\\b",
85 "name": "constant.numeric.hex.floating-point.asm.x86_64"
86 },
87 {
88 "match": "(?i)\\$[0-9]\\_?(?:[[:xdigit:]][[:xdigit:]_]*)?\\.(?:(?:[[:xdigit:]][[:xdigit:]_]*)?(?:p[+-]?(?:[0-9][0-9_]*))?\\b)?",
89 "name": "constant.numeric.hex.floating-point.asm.x86_64"
90 },
91 {
92 "match": "(?i)\\$[0-9]\\_?(?:[[:xdigit:]][[:xdigit:]_]*)(?:p[+-]?(?:[0-9][0-9_]*))\\b",
93 "name": "constant.numeric.hex.floating-point.asm.x86_64"
94 },
95 {
96 "match": "(?i)\\b(?:(?:0[by](?:[01][01_]*))|(?:(?:[01][01_]*)[by]))\\b",
97 "name": "constant.numeric.binary.asm.x86_64"
98 },
99 {
100 "match": "(?i)\\b(?:(?:0[oq](?:[0-7][0-7_]*))|(?:(?:[0-7][0-7_]*)[oq]))\\b",
101 "name": "constant.numeric.octal.asm.x86_64"
102 },
103 {
104 "match": "(?i)\\b(?:(?:0[dt](?:[0-9][0-9_]*))|(?:(?:[0-9][0-9_]*)[dt]?))\\b",
105 "name": "constant.numeric.decimal.asm.x86_64"
106 },
107 {
108 "match": "(?i)(?:\\$[0-9]\\_?(?:[[:xdigit:]][[:xdigit:]_]*)?)\\b",
109 "name": "constant.numeric.hex.asm.x86_64"
110 },
111 {
112 "match": "(?i)\\b(?:(?:0[xh](?:[[:xdigit:]][[:xdigit:]_]*))|(?:(?:[[:xdigit:]][[:xdigit:]_]*)[hxHX]))\\b",
113 "name": "constant.numeric.hex.asm.x86_64"
114 }
115 ]
116 },
117 "entities": {
118 "patterns": [
119 {
120 "match": "((section|segment)\\s+)?\\.((ro)?data|bss|text)",
121 "name": "entity.name.section"
122 },
123 {
124 "match": "^\\.?(globa?l|extern|required)\\b",
125 "name": "entity.directive"
126 },
127 {
128 "match": "(\\$\\w+)\\b",
129 "name": "text.variable"
130 },
131 {
132 "captures": {
133 "1": {
134 "name": "punctuation.separator.asm.x86_64 storage.modifier.asm.x86_64"
135 },
136 "2": {
137 "name": "entity.name.function.special.asm.x86_64"
138 },
139 "3": {
140 "name": "punctuation.separator.asm.x86_64"
141 }
142 },
143 "match": "(\\.\\.@)((?:[[:alpha:]_?](?:[[:alnum:]_$#@~.?]*)))(?:(\\:)?|\\b)",
144 "name": "entity.name.function.asm.x86_64"
145 },
146 {
147 "captures": {
148 "1": {
149 "name": "punctuation.separator.asm.x86_64 storage.modifier.asm.x86_64"
150 },
151 "2": {
152 "name": "entity.name.function.asm.x86_64"
153 },
154 "3": {
155 "name": "punctuation.separator.asm.x86_64"
156 }
157 },
158 "match": "(?:(\\.)?|\\b)((?:[[:alpha:]_?](?:[[:alnum:]_$#@~.?]*)))(?:(\\:))",
159 "name": "entity.name.function.asm.x86_64"
160 },
161 {
162 "captures": {
163 "1": {
164 "name": "punctuation.separator.asm.x86_64 storage.modifier.asm.x86_64"
165 },
166 "2": {
167 "name": "entity.name.function.asm.x86_64"
168 },
169 "3": {
170 "name": "punctuation.separator.asm.x86_64"
171 }
172 },
173 "match": "(\\.)([0-9]+(?:[[:alnum:]_$#@~.?]*))(?:(\\:)?|\\b)",
174 "name": "entity.name.function.asm.x86_64"
175 },
176 {
177 "captures": {
178 "1": {
179 "name": "punctuation.separator.asm.x86_64 storage.modifier.asm.x86_64"
180 },
181 "2": {
182 "name": "invalid.illegal.entity.name.function.asm.x86_64"
183 },
184 "3": {
185 "name": "punctuation.separator.asm.x86_64"
186 }
187 },
188 "match": "(?:(\\.)?|\\b)([0-9$@~](?:[[:alnum:]_$#@~.?]*))(?:(\\:))",
189 "name": "invalid.illegal.entity.name.function.asm.x86_64"
190 }
191 ]
192 },
193 "mnemonics": {
194 "patterns": [
195 {
196 "include": "#mnemonics-general-purpose"
197 },
198 {
199 "include": "#mnemonics-fpu"
200 },
201 {
202 "include": "#mnemonics-mmx"
203 },
204 {
205 "include": "#mnemonics-sse"
206 },
207 {
208 "include": "#mnemonics-sse2"
209 },
210 {
211 "include": "#mnemonics-sse3"
212 },
213 {
214 "include": "#mnemonics-sse4"
215 },
216 {
217 "include": "#mnemonics-aesni"
218 },
219 {
220 "include": "#mnemonics-avx"
221 },
222 {
223 "include": "#mnemonics-avx2"
224 },
225 {
226 "include": "#mnemonics-tsx"
227 },
228 {
229 "include": "#mnemonics-sha"
230 },
231 {
232 "include": "#mnemonics-avx512"
233 },
234 {
235 "include": "#mnemonics-system"
236 },
237 {
238 "include": "#mnemonics-64bit"
239 },
240 {
241 "include": "#mnemonics-vmx"
242 },
243 {
244 "include": "#mnemonics-smx"
245 },
246 {
247 "include": "#mnemonics-mpx"
248 },
249 {
250 "include": "#mnemonics-sgx"
251 },
252 {
253 "include": "#mnemonics-cet"
254 },
255 {
256 "include": "#mnemonics-amx"
257 },
258 {
259 "include": "#mnemonics-uirq"
260 },
261 {
262 "include": "#mnemonics-esi"
263 },
264 {
265 "include": "#mnemonics-intel-manual-listing"
266 },
267 {
268 "include": "#mnemonics-intel-isa-xeon-phi"
269 },
270 {
271 "include": "#mnemonics-intel-isa-keylocker"
272 },
273 {
274 "include": "#mnemonics-supplemental-amd"
275 },
276 {
277 "include": "#mnemonics-supplemental-cyrix"
278 },
279 {
280 "include": "#mnemonics-supplemental-via"
281 },
282 {
283 "include": "#mnemonics-undocumented"
284 },
285 {
286 "include": "#mnemonics-future-intel"
287 },
288 {
289 "include": "#mnemonics-pseudo-ops"
290 }
291 ]
292 },
293 "mnemonics-64bit": {
294 "patterns": [
295 {
296 "match": "(?i)\\b(cdqe|cqo|(cmp|lod|mov|sto)sq|cmpxchg16b|mov(ntq|sxd)|scasq|swapgs|sys(call|ret))\\b",
297 "name": "keyword.operator.word.mnemonic.64-bit-mode"
298 }
299 ]
300 },
301 "mnemonics-aesni": {
302 "patterns": [
303 {
304 "match": "(?i)\\b(aes((dec|enc)(last)?|imc|keygenassist)|pclmulqdq)\\b",
305 "name": "keyword.operator.word.mnemonic.aesni"
306 }
307 ]
308 },
309 "mnemonics-amx": {
310 "patterns": [
311 {
312 "match": "(?i)\\b((ld|st)tilecfg|tdpb(f16ps|[su]{2}d)|tile(loadd(t1)?|release|stored|zero))\\b",
313 "name": "keyword.operator.word.mnemonic.amx"
314 }
315 ]
316 },
317 "mnemonics-avx": {
318 "patterns": [
319 {
320 "match": "(?i)\\b(v((test|permil|maskmov)p[ds]|zero(all|upper)|(perm2|insert|extract|broadcast)f128|broadcasts[ds]))\\b",
321 "name": "keyword.operator.word.mnemonic.avx"
322 },
323 {
324 "match": "(?i)\\b(vaes((dec|enc)(last)?|imc|keygenassist)|vpclmulqdq)\\b",
325 "name": "keyword.operator.word.mnemonic.avx.promoted.aes"
326 },
327 {
328 "match": "(?i)\\b(v((cmp[ps]|u?comis)[ds]|pcmp([ei]str[im]|(eq|gt)[bdqw])))\\b",
329 "name": "keyword.operator.word.mnemonic.avx.promoted.comparison"
330 },
331 {
332 "match": "(?i)\\b(v(cvt(dq2pd|dq2ps|pd2ps|ps2pd|sd2ss|si2sd|si2ss|ss2sd|t?(pd2dq|ps2dq|sd2si|ss2si))))\\b",
333 "name": "keyword.operator.word.mnemonic.avx.promoted.conversion"
334 },
335 {
336 "match": "(?i)\\b(vh((add|sub)p[ds])|vph((add|sub)([dw]|sw)|minposuw))\\b",
337 "name": "keyword.operator.word.mnemonic.avx.promoted.horizontal-packed-arithmetic"
338 },
339 {
340 "match": "(?i)\\b(v((andn?|x?or)p[ds]))\\b",
341 "name": "keyword.operator.word.mnemonic.avx.promoted.logical"
342 },
343 {
344 "match": "(?i)\\b(v(mov(([ahl]|msk|nt|u)p[ds]|(hl|lh)ps|s([ds]|[hl]dup)|q)))\\b",
345 "name": "keyword.operator.word.mnemonic.avx.promoted.mov"
346 },
347 {
348 "match": "(?i)\\b(v((add|div|mul|sub|max|min|round|sqrt)[ps][ds]|(addsub|dp)p[ds]|(rcp|rsqrt)[ps]s))\\b",
349 "name": "keyword.operator.word.mnemonic.avx.promoted.packed-arithmetic"
350 },
351 {
352 "match": "(?i)\\b(v(pack[su]s(dw|wb)|punpck[hl](bw|dq|wd|qdq)|unpck[hl]p[ds]))\\b",
353 "name": "keyword.operator.word.mnemonic.avx.promoted.packed-conversion"
354 },
355 {
356 "match": "(?i)\\b(vp(shuf([bd]|[hl]w))|vshufp[ds])\\b",
357 "name": "keyword.operator.word.mnemonic.avx.promoted.packed-shuffle"
358 },
359 {
360 "match": "(?i)\\b(vp((abs|sign|(max|min)[su])[bdw]|(add|sub)([bdqw]|u?s[bw])|avg[bw]|extr[bdqw]|madd(wd|ubsw)|mul(hu?w|hrsw|l[dw]|u?dq)|sadbw))\\b",
361 "name": "keyword.operator.word.mnemonic.avx.promoted.supplemental.arithmetic"
362 },
363 {
364 "match": "(?i)\\b(vp(andn?|x?or))\\b",
365 "name": "keyword.operator.word.mnemonic.avx.promoted.supplemental.logical"
366 },
367 {
368 "match": "(?i)\\b(vpblend(vb|w))\\b",
369 "name": "keyword.operator.word.mnemonic.avx.promoted.supplemental.blending"
370 },
371 {
372 "match": "(?i)\\b(vpmov(mskb|[sz]x(b[dqw]|w[dq]|dq)))\\b",
373 "name": "keyword.operator.word.mnemonic.avx.promoted.supplemental.mov"
374 },
375 {
376 "match": "(?i)\\b(vp(insr[bdqw]|sll(dq|[dqw])|srl(dq)))\\b",
377 "name": "keyword.operator.word.mnemonic.avx.promoted.simd-integer"
378 },
379 {
380 "match": "(?i)\\b(vp(sra[dwq]|srl[dqw]))\\b",
381 "name": "keyword.operator.word.mnemonic.avx.promoted.shift-and-rotate"
382 },
383 {
384 "match": "(?i)\\b(vblendv?p[ds])\\b",
385 "name": "keyword.operator.word.mnemonic.avx.promoted.packed-blending"
386 },
387 {
388 "match": "(?i)\\b(vp(test|alignr))\\b",
389 "name": "keyword.operator.word.mnemonic.avx.promoted.packed-other"
390 },
391 {
392 "match": "(?i)\\b(vmov(d(dup|qa|qu)?))\\b",
393 "name": "keyword.operator.word.mnemonic.avx.promoted.simd-integer.mov"
394 },
395 {
396 "match": "(?i)\\b(v((extract|insert)ps|lddqu|(ld|st)mxcsr|mpsadbw))\\b",
397 "name": "keyword.operator.word.mnemonic.avx.promoted.other"
398 },
399 {
400 "match": "(?i)\\b(v(maskmovdqu|movntdqa?))\\b",
401 "name": "keyword.operator.word.mnemonic.avx.promoted.cacheability-control"
402 },
403 {
404 "match": "(?i)\\b(vcvt(ph2ps|ps2ph))\\b",
405 "name": "keyword.operator.word.mnemonic.16-bit-floating-point-conversion"
406 },
407 {
408 "match": "(?i)\\b(vfn?m((add|sub)(132|213|231)[ps][ds])|vfm((addsub|subadd)(132|213|231)p[ds]))\\b",
409 "name": "keyword.operator.word.mnemonic.fma"
410 }
411 ]
412 },
413 "mnemonics-avx2": {
414 "patterns": [
415 {
416 "match": "(?i)\\b(v((broadcast|extract|insert|perm2)i128|pmaskmov[dq]|perm([dsq]|p[sd])))\\b",
417 "name": "keyword.operator.word.mnemonic.avx2.promoted.simd"
418 },
419 {
420 "match": "(?i)\\b(vpbroadcast[bdqw])\\b",
421 "name": "keyword.operator.word.mnemonic.avx2.promoted.packed"
422 },
423 {
424 "match": "(?i)\\b(vp(blendd|s[lr]lv[dq]|sravd))\\b",
425 "name": "keyword.operator.word.mnemonic.avx2.blend"
426 },
427 {
428 "match": "(?i)\\b(vp?gather[dq][dq]|vgather([dq]|dq)p[ds])\\b",
429 "name": "keyword.operator.word.mnemonic.avx2.gather"
430 }
431 ]
432 },
433 "mnemonics-avx512": {
434 "patterns": [
435 {
436 "include": "#mnemonics-avx512f"
437 },
438 {
439 "include": "#mnemonics-avx512dq"
440 },
441 {
442 "include": "#mnemonics-avx512bw"
443 },
444 {
445 "include": "#mnemonics-avx512-opmask"
446 },
447 {
448 "include": "#mnemonics-avx512er"
449 },
450 {
451 "include": "#mnemonics-avx512pf"
452 },
453 {
454 "include": "#mnemonics-avx512fp16"
455 }
456 ]
457 },
458 "mnemonics-avx512-opmask": {
459 "patterns": [
460 {
461 "match": "(?i)\\bk(add|andn?|mov|not|or(test)?|shift[lr]|test|xn?or)[bdqw]\\b",
462 "name": "keyword.operator.word.mnemonic.avx512.opmask"
463 },
464 {
465 "match": "(?i)\\bkunpck(bw|wd|dq)\\b",
466 "name": "keyword.operator.word.mnemonic.avx512.opmask.unpack"
467 }
468 ]
469 },
470 "mnemonics-avx512bw": {
471 "patterns": [
472 {
473 "match": "(?i)\\bv(dbpsadbw|movdqu(8|16))\\b",
474 "name": "keyword.operator.word.mnemonic.avx512.bw.dbpsad"
475 },
476 {
477 "match": "(?i)\\bvp(blendm|cmpu?|movm2)[bw]\\b",
478 "name": "keyword.operator.word.mnemonic.avx512.bw.pblend"
479 },
480 {
481 "match": "(?i)\\bvperm(w|i2[bw])\\b",
482 "name": "keyword.operator.word.mnemonic.avx512.bw.perpmi2"
483 },
484 {
485 "match": "(?i)\\bvp(mov([bw]2m|u?swb))\\b",
486 "name": "keyword.operator.word.mnemonic.avx512.bw.pmov"
487 },
488 {
489 "match": "(?i)\\bvp(s(ll|ra|rl)vw|testn?m[bw])\\b",
490 "name": "keyword.operator.word.mnemonic.avx512.bw.psll"
491 },
492 {
493 "match": "(?i)\\bvp(broadcastm(b2q|w2d)|(conflict|lzcnt)[dq])\\b",
494 "name": "keyword.operator.word.mnemonic.avx512.bw.broadcast"
495 }
496 ]
497 },
498 "mnemonics-avx512dq": {
499 "patterns": [
500 {
501 "match": "(?i)\\bvcvt(t?p[ds]2u?qq|uqq2p[ds])\\b",
502 "name": "keyword.operator.word.mnemonic.avx512.dq.cvt"
503 },
504 {
505 "match": "(?i)\\bv((extract|insert)[fi]64x2|(fpclass|range|reduce)[ps][ds])\\b",
506 "name": "keyword.operator.word.mnemonic.avx512.dq.extract"
507 },
508 {
509 "match": "(?i)\\bvp(mov(m2[dq]|b2d|q2m)|mullq)\\b",
510 "name": "keyword.operator.word.mnemonic.avx512.dq.pmov"
511 }
512 ]
513 },
514 "mnemonics-avx512er": {
515 "patterns": [
516 {
517 "match": "(?i)\\bv(exp2|rcp28|rsqrt28)[ps][ds]\\b",
518 "name": "keyword.operator.word.mnemonic.avx512.er"
519 }
520 ]
521 },
522 "mnemonics-avx512f": {
523 "patterns": [
524 {
525 "match": "(?i)\\bv(align[dq]|(blendm|compress)p[ds])\\b",
526 "name": "keyword.operator.word.mnemonic.avx512.f.align"
527 },
528 {
529 "match": "(?i)\\bv(cvtt?[ps][ds]2u(dq|si))\\b",
530 "name": "keyword.operator.word.mnemonic.avx512.f.cvtt"
531 },
532 {
533 "match": "(?i)\\bv(cvt((q|ud)q2p|usi2s)[ds])\\b",
534 "name": "keyword.operator.word.mnemonic.avx512.f.cvt"
535 },
536 {
537 "match": "(?i)\\bv(expandp[ds]|extract[fi](32|64)x4|fixupimm[ps][ds])\\b",
538 "name": "keyword.operator.word.mnemonic.avx512.f.expand"
539 },
540 {
541 "match": "(?i)\\bv(get(exp|mant)[ps][ds]|insertf(32|64)x4|movdq[au](32|64))\\b",
542 "name": "keyword.operator.word.mnemonic.avx512.f.getexp"
543 },
544 {
545 "match": "(?i)\\bvp(blendm[dq]|cmpu?[dq]|compress[dq])\\b",
546 "name": "keyword.operator.word.mnemonic.avx512.f.pblend"
547 },
548 {
549 "match": "(?i)\\bvp(erm[it]2(d|q|p[ds])|expand[dq]|(max|min)[su]q|movu?s(q[bdw]|d[bw]))\\b",
550 "name": "keyword.operator.word.mnemonic.avx512.f.permi"
551 },
552 {
553 "match": "(?i)\\bvp(rolv?|rorr?|scatter[dq]|testn?m|terlog)[dq]\\b",
554 "name": "keyword.operator.word.mnemonic.avx512.f.prol"
555 },
556 {
557 "match": "(?i)\\bvpsravq\\b",
558 "name": "keyword.operator.word.mnemonic.avx512.f.sravq"
559 },
560 {
561 "match": "(?i)\\bv(rcp14|(rnd)?scale|rsqrt14)[ps][ds]\\b",
562 "name": "keyword.operator.word.mnemonic.avx512.f.rcp"
563 },
564 {
565 "match": "(?i)\\bv(scatter[dq]{2}|shuf[fi](32|64)x[24])\\b",
566 "name": "keyword.operator.word.mnemonic.avx512.f.scatter"
567 }
568 ]
569 },
570 "mnemonics-avx512fp16": {
571 "patterns": [
572 {
573 "match": "(?i)\\bv((add|cmp|div|fc?(madd|mul)c|fpclass|get(exp|mant)|mul|rcp|reduce|(rnd)?scale|r?sqrt|sub)[ps]h|u?comish)\\b",
574 "name": "keyword.operator.word.mnemonic.avx512.fp16.add"
575 },
576 {
577 "match": "(?i)\\bvcvt(u?([dq]q|w)|pd)2ph\\b",
578 "name": "keyword.operator.word.mnemonic.avx512.fp16.cvtx2ph"
579 },
580 {
581 "match": "(?i)\\bvcvtph2(u?([dq]q|w)|pd)\\b",
582 "name": "keyword.operator.word.mnemonic.avx512.fp16.cvtph2x"
583 },
584 {
585 "match": "(?i)\\bvcvt(ph2psx|ps2phx)\\b",
586 "name": "keyword.operator.word.mnemonic.avx512.fp16.cvtx"
587 },
588 {
589 "match": "(?i)\\bvcvt(s[dsi]|usi)2sh\\b",
590 "name": "keyword.operator.word.mnemonic.avx512.fp16.cvtx2sh"
591 },
592 {
593 "match": "(?i)\\bvcvtsh2(s[dsi]|usi)\\b",
594 "name": "keyword.operator.word.mnemonic.avx512.fp16.cvtsh2x"
595 },
596 {
597 "match": "(?i)\\bvcvtt(ph2(u?(dq|qq|w))|sh2u?si)\\b",
598 "name": "keyword.operator.word.mnemonic.avx512.fp16.cvttph2x"
599 },
600 {
601 "match": "(?i)\\bvfn?m((add|sub)(132|213|231))[ps]h\\b",
602 "name": "keyword.operator.word.mnemonic.avx512.fp16.fmadd"
603 },
604 {
605 "match": "(?i)\\bvfm(addsub|subadd)(132|213|231)ph\\b",
606 "name": "keyword.operator.word.mnemonic.avx512.fp16.fmaddsub"
607 },
608 {
609 "match": "(?i)\\bv((min|max)ph|mov(sh|w))\\b",
610 "name": "keyword.operator.word.mnemonic.avx512.fp16.max"
611 }
612 ]
613 },
614 "mnemonics-avx512pf": {
615 "patterns": [
616 {
617 "match": "(?i)\\bv(gather|scatter)pf[01][dq]p[ds]\\b",
618 "name": "keyword.operator.word.mnemonic.avx512.pf"
619 }
620 ]
621 },
622 "mnemonics-cet": {
623 "patterns": [
624 {
625 "match": "(?i)\\b((inc|save(prev)?|rstor|rd)ssp|wru?ss|(set|clr)ssbsy|endbr(32|64))\\b",
626 "name": "keyword.operator.word.mnemonic.cet"
627 },
628 {
629 "match": "(?i)\\bendbranch\\b",
630 "name": "keyword.operator.word.mnemonic.cet.misc"
631 }
632 ]
633 },
634 "mnemonics-esi": {
635 "patterns": [
636 {
637 "match": "(?i)\\benqcmds?\\b",
638 "name": "keyword.operator.word.mnemonic.esi"
639 }
640 ]
641 },
642 "mnemonics-fpu": {
643 "patterns": [
644 {
645 "match": "(?i)\\b(fcmov(n?([beu]|be)))\\b",
646 "name": "keyword.operator.word.mnemonic.fpu.data-transfer.mov"
647 },
648 {
649 "match": "(?i)\\b(f(i?(ld|stp?)|b(ld|stp)|xch))\\b",
650 "name": "keyword.operator.word.mnemonic.fpu.data-transfer.other"
651 },
652 {
653 "match": "(?i)\\b(f((add|div|mul|sub)p?|i(add|div|mul|sub)|(div|sub)rp?|i(div|sub)r))\\b",
654 "name": "keyword.operator.word.mnemonic.fpu.basic-arithmetic.basic"
655 },
656 {
657 "match": "(?i)\\b(f(prem1?|abs|chs|rndint|scale|sqrt|xtract))\\b",
658 "name": "keyword.operator.word.mnemonic.fpu.basic-arithmetic.other"
659 },
660 {
661 "match": "(?i)\\b(f(u?com[ip]?p?|icomp?|tst|xam))\\b",
662 "name": "keyword.operator.word.mnemonic.fpu.comparison"
663 },
664 {
665 "match": "(?i)\\b(f(sin|cos|sincos|pa?tan|2xm1|yl2x(p1)?))\\b",
666 "name": "keyword.operator.word.mnemonic.fpu.transcendental"
667 },
668 {
669 "match": "(?i)\\b(fld(1|z|pi|l2[et]|l[ng]2))\\b",
670 "name": "keyword.operator.word.mnemonic.fpu.load-constants"
671 },
672 {
673 "match": "(?i)\\b(f((inc|dec)stp|free|n?(init|clex|st[cs]w|stenv|save)|ld(cw|env)|rstor|nop)|f?wait)\\b",
674 "name": "keyword.operator.word.mnemonic.fpu.control-management"
675 },
676 {
677 "match": "(?i)\\b(fx(save|rstor)(64)?)\\b",
678 "name": "keyword.operator.word.mnemonic.fpu.state-management"
679 }
680 ]
681 },
682 "mnemonics-future-intel": {
683 "patterns": [
684 {
685 "include": "#mnemonics-future-intel-apx"
686 }
687 ]
688 },
689 "mnemonics-future-intel-apx": {
690 "patterns": [
691 {
692 "match": "(?i)\\b(c(cmp|test)(n?[bl]e?|[ft]|n?[osz]))\\b",
693 "name": "keyword.operator.word.mnemonic.apx.ccmp_test"
694 },
695 {
696 "match": "(?i)\\b(cfcmovn?([bl]e?|[opsz]))\\b",
697 "name": "keyword.operator.word.mnemonic.apx.cfcmov"
698 },
699 {
700 "match": "(?i)\\b(cmpn?([bl]e?|[opsz])xadd)\\b",
701 "name": "keyword.operator.word.mnemonic.apx.cmpxadd"
702 },
703 {
704 "match": "(?i)\\b(jmpabs|(push|pop)2p?)\\b",
705 "name": "keyword.operator.word.mnemonic.apx.other"
706 }
707 ]
708 },
709 "mnemonics-general-purpose": {
710 "patterns": [
711 {
712 "match": "(?i)\\b(?:mov(?:[sz]x)?|cmov(?:n?[abceglopsz]|n?[abgl]e|p[eo]))\\b",
713 "name": "keyword.operator.word.mnemonic.general-purpose.data-transfer.mov"
714 },
715 {
716 "match": "(?i)\\b(xchg|bswap|xadd|cmpxchg(8b)?)\\b",
717 "name": "keyword.operator.word.mnemonic.general-purpose.data-transfer.xchg"
718 },
719 {
720 "match": "(?i)\\b((push|pop)(ad?)?|cwde?|cdq|cbw)\\b",
721 "name": "keyword.operator.word.mnemonic.general-purpose.data-transfer.other"
722 },
723 {
724 "match": "(?i)\\b(adcx?|adox|add|sub|sbb|i?mul|i?div|inc|dec|neg|cmp)\\b",
725 "name": "keyword.operator.word.mnemonic.general-purpose.binary-arithmetic"
726 },
727 {
728 "match": "(?i)\\b(daa|das|aaa|aas|aam|aad)\\b",
729 "name": "keyword.operator.word.mnemonic.general-purpose.decimal-arithmetic"
730 },
731 {
732 "match": "(?i)\\b(and|x?or|not)\\b",
733 "name": "keyword.operator.word.mnemonic.general-purpose.logical"
734 },
735 {
736 "match": "(?i)\\b(s[ah][rl]|sh[rl]d|r[co][rl])\\b",
737 "name": "keyword.operator.word.mnemonic.general-purpose.rotate"
738 },
739 {
740 "match": "(?i)\\b(set(n?[abceglopsz]|n?[abgl]e|p[eo]))\\b",
741 "name": "keyword.operator.word.mnemonic.general-purpose.bit-and-byte.set"
742 },
743 {
744 "match": "(?i)\\b(bt[crs]?|bs[fr]|test|crc32|popcnt)\\b",
745 "name": "keyword.operator.word.mnemonic.general-purpose.bit-and-byte.other"
746 },
747 {
748 "match": "(?i)\\b(jmp|jn?[abceglopsz]|jn?[abgl]e|jp[eo]|j[er]?cxz)\\b",
749 "name": "keyword.operator.word.mnemonic.general-purpose.control-transfer.jmp"
750 },
751 {
752 "match": "(?i)\\b(loop(n?[ez])?|call|ret|iret[dq]?|into?|bound|enter|leave)\\b",
753 "name": "keyword.operator.word.mnemonic.general-purpose.control-transfer.other"
754 },
755 {
756 "match": "(?i)\\b((mov|cmp|sca|lod|sto)(s[bdw]?)|rep(n?[ez])?)\\b",
757 "name": "keyword.operator.word.mnemonic.general-purpose.strings"
758 },
759 {
760 "match": "(?i)\\b((in|out)(s[bdw]?)?)\\b",
761 "name": "keyword.operator.word.mnemonic.general-purpose.io"
762 },
763 {
764 "match": "(?i)\\b((st|cl)[cdi]|cmc|[ls]ahf|(push|pop)f[dq]?)\\b",
765 "name": "keyword.operator.word.mnemonic.general-purpose.flag-control"
766 },
767 {
768 "match": "(?i)\\b(l[defgs]s)\\b",
769 "name": "keyword.operator.word.mnemonic.general-purpose.segment-registers"
770 },
771 {
772 "match": "(?i)\\b(lea|nop|ud2?|xlatb?|cpuid|movbe)\\b",
773 "name": "keyword.operator.word.mnemonic.general-purpose.misc"
774 },
775 {
776 "match": "(?i)\\b(cl(flush(opt)?|demote|wb)|pcommit)\\b",
777 "name": "keyword.operator.word.mnemonic.general-purpose.cache-control"
778 },
779 {
780 "match": "(?i)\\b(rdrand|rdseed)\\b",
781 "name": "keyword.operator.word.mnemonic.general-purpose.rng"
782 },
783 {
784 "match": "(?i)\\b(andn|bextr|bls(i|r|msk)|bzhi|pdep|pext|[lt]zcnt|(mul|ror|sar|shl|shr)x)\\b",
785 "name": "keyword.operator.word.mnemonic.general-purpose.bmi"
786 }
787 ]
788 },
789 "mnemonics-intel-isa-keylocker": {
790 "patterns": [
791 {
792 "match": "(?i)\\b(aes(enc|dec)(wide)?(128|256)kl|encodekey(128|256)|loadiwkey)\\b",
793 "name": "keyword.operator.word.mnemonic.keylocker"
794 }
795 ]
796 },
797 "mnemonics-intel-isa-xeon-phi": {
798 "patterns": [
799 {
800 "match": "(?i)\\bv(4fn?(madd)[ps]s|p4dpwssds?)\\b",
801 "name": "keyword.operator.word.mnemonic.xeon-phi"
802 }
803 ]
804 },
805 "mnemonics-intel-manual-listing": {
806 "patterns": [
807 {
808 "match": "(?i)\\bcvtt?pd1pi\\b",
809 "name": "keyword.operator.word.mnemonic.other.c"
810 },
811 {
812 "match": "(?i)\\bv?gf2p8(affine(inv)?q|mul)b\\b",
813 "name": "keyword.operator.word.mnemonic.other.g"
814 },
815 {
816 "match": "(?i)\\bhreset\\b",
817 "name": "keyword.operator.word.mnemonic.other.h"
818 },
819 {
820 "match": "(?i)\\bincssp[dq]\\b",
821 "name": "keyword.operator.word.mnemonic.other.i"
822 },
823 {
824 "match": "(?i)\\bmovdir(i|64b)\\b",
825 "name": "keyword.operator.word.mnemonic.other.m"
826 },
827 {
828 "match": "(?i)\\bp((abs|(max|min)[su]?|mull|sra)q|config|twrite)\\b",
829 "name": "keyword.operator.word.mnemonic.other.p"
830 },
831 {
832 "match": "(?i)\\brd(pid|ssp[dq])\\b",
833 "name": "keyword.operator.word.mnemonic.other.r"
834 },
835 {
836 "match": "(?i)\\bserialize\\b",
837 "name": "keyword.operator.word.mnemonic.other.s"
838 },
839 {
840 "match": "(?i)\\btpause\\b",
841 "name": "keyword.operator.word.mnemonic.other.t"
842 },
843 {
844 "match": "(?i)\\bu(monitor|mwait)\\b",
845 "name": "keyword.operator.word.mnemonic.other.u"
846 },
847 {
848 "match": "(?i)\\bvbroadcast[fi](32x[248]|64x[24])\\b",
849 "name": "keyword.operator.word.mnemonic.other.vb"
850 },
851 {
852 "match": "(?i)\\bv(compressw|cvtne2?ps2bf16)\\b",
853 "name": "keyword.operator.word.mnemonic.other.vc"
854 },
855 {
856 "match": "(?i)\\bvdpbf16ps\\b",
857 "name": "keyword.operator.word.mnemonic.other.vd"
858 },
859 {
860 "match": "(?i)\\bvextract[fi]32x8\\b",
861 "name": "keyword.operator.word.mnemonic.other.ve"
862 },
863 {
864 "match": "(?i)\\bv(insert([fi]32x8|i(32|64)x4))\\b",
865 "name": "keyword.operator.word.mnemonic.other.vi"
866 },
867 {
868 "match": "(?i)\\bv(maskmov|(max|min)sh)\\b",
869 "name": "keyword.operator.word.mnemonic.other.vm"
870 },
871 {
872 "match": "(?i)\\bvp((2intersect|andn?)[dq]|absq)\\b",
873 "name": "keyword.operator.word.mnemonic.other.vpa"
874 },
875 {
876 "match": "(?i)\\bvpbroadcasti32x4\\b",
877 "name": "keyword.operator.word.mnemonic.other.vpb"
878 },
879 {
880 "match": "(?i)\\bvpcompress[bw]\\b",
881 "name": "keyword.operator.word.mnemonic.other.vpc"
882 },
883 {
884 "match": "(?i)\\bvp(dp(bu|ws)sds?)\\b",
885 "name": "keyword.operator.word.mnemonic.other.vpd"
886 },
887 {
888 "match": "(?i)\\b(vperm(b|t2[bw])|vp(expand[bw]|extrtd))\\b",
889 "name": "keyword.operator.word.mnemonic.other.vpe"
890 },
891 {
892 "match": "(?i)\\bvp(madd52[hl]uq|mov(d(2m|[bw])|q[bdw]|wb)|mpov[bdqw]2m|multishiftqb)\\b",
893 "name": "keyword.operator.word.mnemonic.other.vpm"
894 },
895 {
896 "match": "(?i)\\b(vpopcnt[bdqw]|vpor[dq])\\b",
897 "name": "keyword.operator.word.mnemonic.other.vpo"
898 },
899 {
900 "match": "(?i)\\bvprorv[dq]\\b",
901 "name": "keyword.operator.word.mnemonic.other.vpr"
902 },
903 {
904 "match": "(?i)\\bvp(sh[lr]dv?[dqw]|shufbitqmb|shufps)\\b",
905 "name": "keyword.operator.word.mnemonic.other.vps"
906 },
907 {
908 "match": "(?i)\\bvpternlog[dq]\\b",
909 "name": "keyword.operator.word.mnemonic.other.vpt"
910 },
911 {
912 "match": "(?i)\\bvpxor[dq]\\b",
913 "name": "keyword.operator.word.mnemonic.other.vpx"
914 },
915 {
916 "match": "(?i)\\bv(scalef[ps][dhs]|scatter[dq]p[ds])\\b",
917 "name": "keyword.operator.word.mnemonic.other.vs"
918 },
919 {
920 "match": "(?i)\\b(wbnoinvd|wru?ss[dq])\\b",
921 "name": "keyword.operator.word.mnemonic.other.w"
922 }
923 ]
924 },
925 "mnemonics-invalid": {
926 "patterns": [
927 {
928 "include": "#mnemonics-invalid-amd-sse5"
929 }
930 ]
931 },
932 "mnemonics-invalid-amd-sse5": {
933 "patterns": [
934 {
935 "match": "(?i)\\b(com[ps][ds]|pcomu?[bdqw])\\b",
936 "name": "invalid.keyword.operator.word.mnemonic.sse5.comparison"
937 },
938 {
939 "match": "(?i)\\b(cvtp(h2ps|s2ph)|frcz[ps][ds])\\b",
940 "name": "invalid.keyword.operator.word.mnemonic.sse5.conversion"
941 },
942 {
943 "match": "(?i)\\b(fn?m((add|sub)[ps][ds])|ph(addu?(b[dqw]|w[dq]|dq)|sub(bw|dq|wd))|pma(css?(d(d|q[hl])|w[dw])|dcss?wd))\\b",
944 "name": "invalid.keyword.operator.word.mnemonic.sse5.packed-arithmetic"
945 },
946 {
947 "match": "(?i)\\b(pcmov|permp[ds]|pperm|prot[bdqw]|psh[al][bdqw])\\b",
948 "name": "invalid.keyword.operator.word.mnemonic.sse5.simd-integer"
949 }
950 ]
951 },
952 "mnemonics-mmx": {
953 "patterns": [
954 {
955 "match": "(?i)\\b(mov[dq])\\b",
956 "name": "keyword.operator.word.mnemonic.mmx.data-transfer"
957 },
958 {
959 "match": "(?i)\\b(pack(ssdw|[su]swb)|punpck[hl](bw|dq|wd))\\b",
960 "name": "keyword.operator.word.mnemonic.mmx.conversion"
961 },
962 {
963 "match": "(?i)\\b(p(((add|sub)(d|(u?s)?[bw]))|maddwd|mul[lh]w))\\b",
964 "name": "keyword.operator.word.mnemonic.mmx.packed-arithmetic"
965 },
966 {
967 "match": "(?i)\\b(pcmp((eq|gt)[bdw]))\\b",
968 "name": "keyword.operator.word.mnemonic.mmx.comparison"
969 },
970 {
971 "match": "(?i)\\b(pandn?|px?or)\\b",
972 "name": "keyword.operator.word.mnemonic.mmx.logical"
973 },
974 {
975 "match": "(?i)\\b(ps([rl]l[dwq]|raw|rad))\\b",
976 "name": "keyword.operator.word.mnemonic.mmx.shift-and-rotate"
977 },
978 {
979 "match": "(?i)\\b(emms)\\b",
980 "name": "keyword.operator.word.mnemonic.mmx.state-management"
981 }
982 ]
983 },
984 "mnemonics-mpx": {
985 "patterns": [
986 {
987 "match": "(?i)\\b(bnd(mk|c[lnu]|mov|ldx|stx))\\b",
988 "name": "keyword.operator.word.mnemonic.mpx"
989 }
990 ]
991 },
992 "mnemonics-pseudo-ops": {
993 "patterns": [
994 {
995 "match": "(?i)\\b(cmp(n?(eq|lt|le)|(un)?ord)[ps][ds])\\b",
996 "name": "keyword.operator.word.pseudo-mnemonic.sse2.compare"
997 },
998 {
999 "match": "(?i)\\b(v?pclmul([hl]q[hl]q|[hl]qh)dq)\\b",
1000 "name": "keyword.operator.word.pseudo-mnemonic.avx.promoted.aes"
1001 },
1002 {
1003 "match": "(?i)\\b(vcmp(eq(_(os|uq|us))?|neq(_(oq|os|us))?|[gl][et](_oq)?|n[gl][et](_uq)?|(un)?ord(_s)?|false(_os)?|true(_us)?)[ps][ds])\\b",
1004 "name": "keyword.operator.word.pseudo-mnemonic.avx.promoted.comparison"
1005 },
1006 {
1007 "match": "(?i)\\bvp(cmpn?(eq|le|lt))\\b",
1008 "name": "keyword.operator.word.pseudo-mnemonic.avx512.compare"
1009 },
1010 {
1011 "match": "(?i)\\b(vpcom(n?eq|[gl][et]|false|true)(b|uw))\\b",
1012 "name": "keyword.operator.word.pseudo-mnemonic.supplemental.amd.xop.simd"
1013 }
1014 ]
1015 },
1016 "mnemonics-sgx": {
1017 "patterns": [
1018 {
1019 "match": "(?i)\\bencl[su]\\b",
1020 "name": "keyword.operator.word.mnemonic.sgx"
1021 },
1022 {
1023 "match": "(?i)\\be(add|block|create|dbg(rd|wr)|extend|init|ld[bu]|pa|remove|track|wb)\\b",
1024 "name": "support.constant.sgx1.supervisor"
1025 },
1026 {
1027 "match": "(?i)\\be(add|block|create|dbg(rd|wr)|extend|init|ld[bu]|pa|remove|track|wb)\\b",
1028 "name": "support.constant.sgx1.supervisor"
1029 },
1030 {
1031 "match": "(?i)\\be(enter|exit|getkey|report|resume)\\b",
1032 "name": "support.constant.sgx1.user"
1033 },
1034 {
1035 "match": "(?i)\\be(aug|mod(pr|t))\\b",
1036 "name": "support.constant.sgx2.supervisor"
1037 },
1038 {
1039 "match": "(?i)\\be(accept(copy)?|modpe)\\b",
1040 "name": "support.constant.sgx2.user"
1041 }
1042 ]
1043 },
1044 "mnemonics-sha": {
1045 "patterns": [
1046 {
1047 "match": "(?i)\\b(sha(1rnds4|256rnds2|1nexte|(1|256)msg[12]))\\b",
1048 "name": "keyword.operator.word.mnemonic.sha"
1049 }
1050 ]
1051 },
1052 "mnemonics-smx": {
1053 "patterns": [
1054 {
1055 "match": "(?i)\\b(getsec)\\b",
1056 "name": "keyword.operator.word.mnemonic.smx.getsec"
1057 },
1058 {
1059 "match": "(?i)\\b(capabilities|enteraccs|exitac|senter|sexit|parameters|smctrl|wakeup)\\b",
1060 "name": "support.constant.smx"
1061 }
1062 ]
1063 },
1064 "mnemonics-sse": {
1065 "patterns": [
1066 {
1067 "match": "(?i)\\b(mov(([ahlu]|hl|lh|msk)ps|ss))\\b",
1068 "name": "keyword.operator.word.mnemonic.sse.data-transfer"
1069 },
1070 {
1071 "match": "(?i)\\b((add|div|max|min|mul|rcp|r?sqrt|sub)[ps]s)\\b",
1072 "name": "keyword.operator.word.mnemonic.sse.packed-arithmetic"
1073 },
1074 {
1075 "match": "(?i)\\b(cmp[ps]s|u?comiss)\\b",
1076 "name": "keyword.operator.word.mnemonic.sse.comparison"
1077 },
1078 {
1079 "match": "(?i)\\b((andn?|x?or)ps)\\b",
1080 "name": "keyword.operator.word.mnemonic.sse.logical"
1081 },
1082 {
1083 "match": "(?i)\\b((shuf|unpck[hl])ps)\\b",
1084 "name": "keyword.operator.word.mnemonic.sse.shuffle-and-unpack"
1085 },
1086 {
1087 "match": "(?i)\\b(cvt(pi2ps|si2ss|ps2pi|tps2pi|ss2si|tss2si))\\b",
1088 "name": "keyword.operator.word.mnemonic.sse.conversion"
1089 },
1090 {
1091 "match": "(?i)\\b((ld|st)mxcsr)\\b",
1092 "name": "keyword.operator.word.mnemonic.sse.state-management"
1093 },
1094 {
1095 "match": "(?i)\\b(p(avg[bw]|extrw|insrw|(max|min)(sw|ub)|sadbw|shufw|mulhuw|movmskb))\\b",
1096 "name": "keyword.operator.word.mnemonic.sse.simd-integer"
1097 },
1098 {
1099 "match": "(?i)\\b(maskmovq|movntps|sfence)\\b",
1100 "name": "keyword.operator.word.mnemonic.sse.cacheability-control"
1101 },
1102 {
1103 "match": "(?i)\\b(prefetch(nta|t[0-2]|w(t1)?))\\b",
1104 "name": "keyword.operator.word.mnemonic.sse.prefetch"
1105 }
1106 ]
1107 },
1108 "mnemonics-sse2": {
1109 "patterns": [
1110 {
1111 "match": "(?i)\\b(mov([auhl]|msk)pd)\\b",
1112 "name": "keyword.operator.word.mnemonic.sse2.data-transfer"
1113 },
1114 {
1115 "match": "(?i)\\b((add|div|max|min|mul|sub|sqrt)[ps]d)\\b",
1116 "name": "keyword.operator.word.mnemonic.sse2.packed-arithmetic"
1117 },
1118 {
1119 "match": "(?i)\\b((andn?|x?or)pd)\\b",
1120 "name": "keyword.operator.word.mnemonic.sse2.logical"
1121 },
1122 {
1123 "match": "(?i)\\b((cmpp|u?comis)d)\\b",
1124 "name": "keyword.operator.word.mnemonic.sse2.compare"
1125 },
1126 {
1127 "match": "(?i)\\b((shuf|unpck[hl])pd)\\b",
1128 "name": "keyword.operator.word.mnemonic.sse2.shuffle-and-unpack"
1129 },
1130 {
1131 "match": "(?i)\\b(cvt(dq2pd|pi2pd|ps2pd|pd2ps|si2sd|sd2ss|ss2sd|t?(pd2dq|pd2pi|sd2si)))\\b",
1132 "name": "keyword.operator.word.mnemonic.sse2.conversion"
1133 },
1134 {
1135 "match": "(?i)\\b(cvt(dq2ps|ps2dq|tps2dq))\\b",
1136 "name": "keyword.operator.word.mnemonic.sse2.packed-floating-point"
1137 },
1138 {
1139 "match": "(?i)\\b(mov(dq[au]|q2dq|dq2q))\\b",
1140 "name": "keyword.operator.word.mnemonic.sse2.simd-integer.mov"
1141 },
1142 {
1143 "match": "(?i)\\b(p((add|sub|(s[lr]l|mulu|unpck[hl]q)d)q|shuf(d|[hl]w)))\\b",
1144 "name": "keyword.operator.word.mnemonic.sse2.simd-integer.other"
1145 },
1146 {
1147 "match": "(?i)\\b([lm]fence|pause|maskmovdqu|movnt(dq|i|pd))\\b",
1148 "name": "keyword.operator.word.mnemonic.sse2.cacheability-control"
1149 }
1150 ]
1151 },
1152 "mnemonics-sse3": {
1153 "patterns": [
1154 {
1155 "match": "(?i)\\b(fisttp|lddqu|(addsub|h(add|sub))p[sd]|mov(sh|sl|d)dup|monitor|mwait)\\b",
1156 "name": "keyword.operator.word.mnemonic.sse3"
1157 },
1158 {
1159 "match": "(?i)\\b(ph(add|sub)(s?w|d))\\b",
1160 "name": "keyword.operator.word.mnemonic.sse3.supplimental.horizontal-packed-arithmetic"
1161 },
1162 {
1163 "match": "(?i)\\b(p((abs|sign)[bdw]|maddubsw|mulhrsw|shufb|alignr))\\b",
1164 "name": "keyword.operator.word.mnemonic.sse3.supplimental.other"
1165 }
1166 ]
1167 },
1168 "mnemonics-sse4": {
1169 "patterns": [
1170 {
1171 "match": "(?i)\\b(pmul(ld|dq)|dpp[ds])\\b",
1172 "name": "keyword.operator.word.mnemonic.sse4.1.arithmetic"
1173 },
1174 {
1175 "match": "(?i)\\b(movntdqa)\\b",
1176 "name": "keyword.operator.word.mnemonic.sse4.1.load-hint"
1177 },
1178 {
1179 "match": "(?i)\\b(blendv?p[ds]|pblend(vb|w))\\b",
1180 "name": "keyword.operator.word.mnemonic.sse4.1.packed-blending"
1181 },
1182 {
1183 "match": "(?i)\\b(p(min|max)(u[dw]|s[bd]))\\b",
1184 "name": "keyword.operator.word.mnemonic.sse4.1.packed-integer"
1185 },
1186 {
1187 "match": "(?i)\\b(round[ps][sd])\\b",
1188 "name": "keyword.operator.word.mnemonic.sse4.1.packed-floating-point"
1189 },
1190 {
1191 "match": "(?i)\\b((extract|insert)ps|p((ins|ext)(r[bdq])))\\b",
1192 "name": "keyword.operator.word.mnemonic.sse4.1.insertion-and-extraction"
1193 },
1194 {
1195 "match": "(?i)\\b(pmov([sz]x(b[dqw]|dq|wd|wq)))\\b",
1196 "name": "keyword.operator.word.mnemonic.sse4.1.conversion"
1197 },
1198 {
1199 "match": "(?i)\\b(mpsadbw|phminposuw|ptest|pcmpeqq|packusdw)\\b",
1200 "name": "keyword.operator.word.mnemonic.sse4.1.other"
1201 },
1202 {
1203 "match": "(?i)\\b(pcmp([ei]str[im]|gtq))\\b",
1204 "name": "keyword.operator.word.mnemonic.sse4.2"
1205 }
1206 ]
1207 },
1208 "mnemonics-supplemental-amd": {
1209 "patterns": [
1210 {
1211 "match": "(?i)\\b(bl([cs](fill|ic?|msk)|cs)|t1mskc|tzmsk)\\b",
1212 "name": "keyword.operator.word.mnemonic.supplemental.amd.general-purpose"
1213 },
1214 {
1215 "match": "(?i)\\b(clgi|int3|invlpga|iretw|skinit|stgi|vm(load|mcall|run|save)|monitorx|mwaitx)\\b",
1216 "name": "keyword.operator.word.mnemonic.supplemental.amd.system"
1217 },
1218 {
1219 "match": "(?i)\\b([ls]lwpcb|lwp(ins|val))\\b",
1220 "name": "keyword.operator.word.mnemonic.supplemental.amd.profiling"
1221 },
1222 {
1223 "match": "(?i)\\b(movnts[ds])\\b",
1224 "name": "keyword.operator.word.mnemonic.supplemental.amd.memory-management"
1225 },
1226 {
1227 "match": "(?i)\\b(prefetch|clzero)\\b",
1228 "name": "keyword.operator.word.mnemonic.supplemental.amd.cache-management"
1229 },
1230 {
1231 "match": "(?i)\\b((extr|insert)q)\\b",
1232 "name": "keyword.operator.word.mnemonic.supplemental.amd.sse4.a"
1233 },
1234 {
1235 "match": "(?i)\\b(vfn?m((add|sub)[ps][ds])|vfm((addsub|subadd)p[ds]))\\b",
1236 "name": "keyword.operator.word.mnemonic.supplemental.amd.fma4"
1237 },
1238 {
1239 "match": "(?i)\\b(vp(cmov|(comu?|rot|sh[al])[bdqw]|mac(s?s(d(d|q[hl])|w[dw]))|madcss?wd|perm))\\b",
1240 "name": "keyword.operator.word.mnemonic.supplemental.amd.xop.simd"
1241 },
1242 {
1243 "match": "(?i)\\b(vph(addu?(b[dqw]|w[dq]|dq)|sub(bw|dq|wd)))\\b",
1244 "name": "keyword.operator.word.mnemonic.supplemental.amd.xop.simd-horizontal"
1245 },
1246 {
1247 "match": "(?i)\\b(vfrcz[ps][ds]|vpermil2p[ds])\\b",
1248 "name": "keyword.operator.word.mnemonic.supplemental.amd.xop.other"
1249 },
1250 {
1251 "match": "(?i)\\b(femms)\\b",
1252 "name": "keyword.operator.word.mnemonic.supplemental.amd.3dnow"
1253 },
1254 {
1255 "match": "(?i)\\b(p(avgusb|(f2i|i2f)[dw]|mulhrw|swapd)|pf((p?n)?acc|add|max|min|mul|rcp(it[12])?|rsqit1|rsqrt|subr?))\\b",
1256 "name": "keyword.operator.word.mnemonic.supplemental.amd.3dnow.simd"
1257 },
1258 {
1259 "match": "(?i)\\b(pfcmp(eq|ge|gt))\\b",
1260 "name": "keyword.operator.word.mnemonic.supplemental.amd.3dnow.comparison"
1261 }
1262 ]
1263 },
1264 "mnemonics-supplemental-cyrix": {
1265 "patterns": [
1266 {
1267 "match": "(?i)\\b((sv|rs)dc|(wr|rd)shr|paddsiw)\\b",
1268 "name": "keyword.operator.word.mnemonic.supplemental.cyrix"
1269 }
1270 ]
1271 },
1272 "mnemonics-supplemental-via": {
1273 "patterns": [
1274 {
1275 "match": "(?i)\\b(montmul)\\b",
1276 "name": "keyword.operator.word.mnemonic.supplemental.via"
1277 },
1278 {
1279 "match": "(?i)\\b(x(store(rng)?|crypt(ecb|cbc|ctr|cfb|ofb)|sha(1|256)))\\b",
1280 "name": "keyword.operator.word.mnemonic.supplemental.via.padlock"
1281 }
1282 ]
1283 },
1284 "mnemonics-system": {
1285 "patterns": [
1286 {
1287 "match": "(?i)\\b((cl|st)ac|[ls]([gli]dt|tr|msw)|clts|arpl|lar|lsl|ver[rw]|inv(d|lpg|pcid)|wbinvd)\\b",
1288 "name": "keyword.operator.word.mnemonic.system"
1289 },
1290 {
1291 "match": "(?i)\\b(lock|hlt|rsm|(rd|wr)(msr|pkru|[fg]sbase)|rd(pmc|tscp?)|sys(enter|exit))\\b",
1292 "name": "keyword.operator.word.mnemonic.system"
1293 },
1294 {
1295 "match": "(?i)\\b(x((save(c|opt|s)?|rstors?)(64)?|[gs]etbv))\\b",
1296 "name": "keyword.operator.word.mnemonic.system"
1297 }
1298 ]
1299 },
1300 "mnemonics-tsx": {
1301 "patterns": [
1302 {
1303 "match": "(?i)\\b(x(abort|begin|end|test|(res|sus)ldtrk))\\b",
1304 "name": "keyword.operator.word.mnemonic.tsx"
1305 }
1306 ]
1307 },
1308 "mnemonics-uirq": {
1309 "patterns": [
1310 {
1311 "match": "(?i)\\b((cl|st|test)ui|senduipi|uiret)\\b",
1312 "name": "keyword.operator.word.mnemonic.uirq"
1313 }
1314 ]
1315 },
1316 "mnemonics-undocumented": {
1317 "patterns": [
1318 {
1319 "match": "(?i)\\b(ret[nf]|icebp|int1|int03|smi|ud1)\\b",
1320 "name": "keyword.operator.word.mnemonic.undocumented"
1321 }
1322 ]
1323 },
1324 "mnemonics-vmx": {
1325 "patterns": [
1326 {
1327 "match": "(?i)\\b(vm(ptr(ld|st)|clear|read|write|launch|resume|xo(ff|n)|call|func)|inv(ept|vpid))\\b",
1328 "name": "keyword.operator.word.mnemonic.vmx"
1329 }
1330 ]
1331 },
1332 "preprocessor": {
1333 "patterns": [
1334 {
1335 "begin": "^\\s*[#%]\\s*(error|warning)\\b",
1336 "captures": {
1337 "1": {
1338 "name": "keyword.control.import.error.c"
1339 }
1340 },
1341 "end": "$",
1342 "name": "meta.preprocessor.diagnostic.c",
1343 "patterns": [
1344 {
1345 "match": "(?>\\\\\\s*\\n)",
1346 "name": "punctuation.separator.continuation.c"
1347 }
1348 ]
1349 },
1350 {
1351 "begin": "^\\s*[#%]\\s*(include|import)\\b\\s+",
1352 "captures": {
1353 "1": {
1354 "name": "keyword.control.import.include.c"
1355 }
1356 },
1357 "end": "(?=(?://|/\\*))|$",
1358 "name": "meta.preprocessor.c.include",
1359 "patterns": [
1360 {
1361 "match": "(?>\\\\\\s*\\n)",
1362 "name": "punctuation.separator.continuation.c"
1363 },
1364 {
1365 "begin": "\"",
1366 "beginCaptures": {
1367 "0": {
1368 "name": "punctuation.definition.string.begin.c"
1369 }
1370 },
1371 "end": "\"",
1372 "endCaptures": {
1373 "0": {
1374 "name": "punctuation.definition.string.end.c"
1375 }
1376 },
1377 "name": "string.quoted.double.include.c"
1378 },
1379 {
1380 "begin": "<",
1381 "beginCaptures": {
1382 "0": {
1383 "name": "punctuation.definition.string.begin.c"
1384 }
1385 },
1386 "end": ">",
1387 "endCaptures": {
1388 "0": {
1389 "name": "punctuation.definition.string.end.c"
1390 }
1391 },
1392 "name": "string.quoted.other.lt-gt.include.c"
1393 }
1394 ]
1395 },
1396 {
1397 "begin": "^\\s*[%#]\\s*(i?x?define|defined|elif(def)?|else|i[fs]n?(?:def|macro|ctx|idni?|id|num|str|token|empty|env)?|line|(i|end|uni?)?macro|pragma|endif)\\b",
1398 "captures": {
1399 "1": {
1400 "name": "keyword.control.import.c"
1401 }
1402 },
1403 "end": "(?=(?://|/\\*))|$",
1404 "name": "meta.preprocessor.c",
1405 "patterns": [
1406 {
1407 "match": "(?>\\\\\\s*\\n)",
1408 "name": "punctuation.separator.continuation.c"
1409 },
1410 {
1411 "include": "#preprocessor-functions"
1412 }
1413 ]
1414 },
1415 {
1416 "begin": "^\\s*[#%]\\s*(assign|strlen|substr|(end|exit)?rep|push|pop|rotate|use|ifusing|ifusable|def(?:ailas|str|tok)|undef(?:alias)?)\\b",
1417 "captures": {
1418 "1": {
1419 "name": "keyword.control"
1420 }
1421 },
1422 "end": "$",
1423 "name": "meta.preprocessor.nasm",
1424 "patterns": [
1425 {
1426 "match": "(?>\\\\\\s*\\n)",
1427 "name": "punctuation.separator.continuation.c"
1428 },
1429 {
1430 "include": "#preprocessor-functions"
1431 }
1432 ]
1433 }
1434 ]
1435 },
1436 "preprocessor-functions": {
1437 "patterns": [
1438 {
1439 "begin": "((%)(?:(abs|cond|count|eval|isn?(?:def|macro|ctx|idni?|id|num|str|token|empty|env)?|num|sel|str(?:cat|len)?|substr|tok)\\s*(\\()))",
1440 "captures": {
1441 "3": {
1442 "name": "support.function.preprocessor.asm.x86_64"
1443 }
1444 },
1445 "end": "(\\))|$",
1446 "name": "meta.preprocessor.function.asm.x86_64",
1447 "patterns": [
1448 {
1449 "include": "#preprocessor-functions"
1450 }
1451 ]
1452 }
1453 ]
1454 },
1455 "registers": {
1456 "patterns": [
1457 {
1458 "match": "(?i)\\b(?:[abcd][hl]|[er]?[abcd]x|[er]?(?:di|si|bp|sp)|dil|sil|bpl|spl|r(?:8|9|1[0-5])[bdlw]?)\\b",
1459 "name": "constant.language.register.general-purpose.asm.x86_64"
1460 },
1461 {
1462 "match": "(?i)\\b(?:[cdefgs]s)\\b",
1463 "name": "constant.language.register.segment.asm.x86_64"
1464 },
1465 {
1466 "match": "(?i)\\b(?:[er]?flags)\\b",
1467 "name": "constant.language.register.flags.asm.x86_64"
1468 },
1469 {
1470 "match": "(?i)\\b(?:[er]?ip)\\b",
1471 "name": "constant.language.register.instruction-pointer.asm.x86_64"
1472 },
1473 {
1474 "match": "(?i)\\b(?:cr[02-4])\\b",
1475 "name": "constant.language.register.control.asm.x86_64"
1476 },
1477 {
1478 "match": "(?i)\\b(?:(?:mm|st|fpr)[0-7])\\b",
1479 "name": "constant.language.register.mmx.asm.x86_64"
1480 },
1481 {
1482 "match": "(?i)\\b(?:[xy]mm(?:[0-9]|1[0-5])|mxcsr)\\b",
1483 "name": "constant.language.register.sse_avx.asm.x86_64"
1484 },
1485 {
1486 "match": "(?i)\\b(?:zmm(?:[12]?[0-9]|30|31))\\b",
1487 "name": "constant.language.register.avx512.asm.x86_64"
1488 },
1489 {
1490 "match": "(?i)\\b(?:bnd(?:[0-3]|cfg[su]|status))\\b",
1491 "name": "constant.language.register.memory-protection.asm.x86_64"
1492 },
1493 {
1494 "match": "(?i)\\b(?:(?:[gil]dt)r?|tr)\\b",
1495 "name": "constant.language.register.system-table-pointer.asm.x86_64"
1496 },
1497 {
1498 "match": "(?i)\\b(?:dr[0-367])\\b",
1499 "name": "constant.language.register.debug.asm.x86_64"
1500 },
1501 {
1502 "match": "(?i)\\b(?:cr8|dr(?:[89]|1[0-5])|efer|tpr|syscfg)\\b",
1503 "name": "constant.language.register.amd.asm.x86_64"
1504 },
1505 {
1506 "match": "(?i)\\b(?:db[0-367]|t[67]|tr[3-7]|st)\\b",
1507 "name": "invalid.deprecated.constant.language.register.asm.x86_64"
1508 },
1509 {
1510 "match": "(?i)\\b[xy]mm(?:1[6-9]|2[0-9]|3[01])\\b",
1511 "name": "constant.language.register.general-purpose.alias.asm.x86_64"
1512 }
1513 ]
1514 },
1515 "strings": {
1516 "patterns": [
1517 {
1518 "begin": "\"",
1519 "beginCaptures": {
1520 "0": {
1521 "name": "punctuation.definition.string.begin.asm"
1522 }
1523 },
1524 "end": "\"",
1525 "endCaptures": {
1526 "0": {
1527 "name": "punctuation.definition.string.end.asm"
1528 }
1529 },
1530 "name": "string.quoted.double.asm",
1531 "patterns": [
1532 {
1533 "include": "#string_escaped_char"
1534 },
1535 {
1536 "include": "#string_placeholder"
1537 }
1538 ]
1539 },
1540 {
1541 "begin": "'",
1542 "beginCaptures": {
1543 "0": {
1544 "name": "punctuation.definition.string.begin.asm"
1545 }
1546 },
1547 "end": "'",
1548 "endCaptures": {
1549 "0": {
1550 "name": "punctuation.definition.string.end.asm"
1551 }
1552 },
1553 "name": "string.quoted.single.asm",
1554 "patterns": [
1555 {
1556 "include": "#string_escaped_char"
1557 },
1558 {
1559 "include": "#string_placeholder"
1560 }
1561 ]
1562 },
1563 {
1564 "begin": "`",
1565 "beginCaptures": {
1566 "0": {
1567 "name": "punctuation.definition.string.begin.asm"
1568 }
1569 },
1570 "end": "`",
1571 "endCaptures": {
1572 "0": {
1573 "name": "punctuation.definition.string.end.asm"
1574 }
1575 },
1576 "name": "string.quoted.backquote.asm",
1577 "patterns": [
1578 {
1579 "include": "#string_escaped_char"
1580 },
1581 {
1582 "include": "#string_placeholder"
1583 }
1584 ]
1585 }
1586 ]
1587 },
1588 "support": {
1589 "patterns": [
1590 {
1591 "match": "(?i)\\b(?:s?byte|(?:[doqtyz]|dq|s[dq]?)?word|(?:d|res)[bdoqtwyz]|ddq)\\b",
1592 "name": "storage.type.asm.x86_64"
1593 },
1594 {
1595 "match": "(?i)\\b(?:incbin|equ|times|dup)\\b",
1596 "name": "support.function.asm.x86_64"
1597 },
1598 {
1599 "match": "(?i)\\b(?:strict|nosplit|near|far|abs|rel)\\b",
1600 "name": "storage.modifier.asm.x86_64"
1601 },
1602 {
1603 "match": "(?i)\\b(?:[ao](?:16|32|64))\\b",
1604 "name": "storage.modifier.prefix.asm.x86_64"
1605 },
1606 {
1607 "match": "(?i)\\b(?:rep(?:n?[ez])?|lock|xacquire|xrelease|(?:no)?bnd)\\b",
1608 "name": "storage.modifier.prefix.asm.x86_64"
1609 },
1610 {
1611 "captures": {
1612 "1": {
1613 "name": "storage.modifier.prefix.vex.asm.x86_64"
1614 }
1615 },
1616 "match": "{(vex[23]?|evex|rex)}"
1617 },
1618 {
1619 "captures": {
1620 "1": {
1621 "name": "storage.modifier.opmask.asm.x86_64"
1622 }
1623 },
1624 "match": "{(k[1-7])}"
1625 },
1626 {
1627 "captures": {
1628 "1": {
1629 "name": "storage.modifier.precision.asm.x86_64"
1630 }
1631 },
1632 "match": "{(1to(?:8|16))}"
1633 },
1634 {
1635 "captures": {
1636 "1": {
1637 "name": "storage.modifier.rounding.asm.x86_64"
1638 }
1639 },
1640 "match": "{(z|(?:r[nudz]-)?sae)}"
1641 },
1642 {
1643 "match": "\\.\\.(?:start|imagebase|tlvp|got(?:pc(?:rel)?|(?:tp)?off)?|plt|sym|tlsie)\\b",
1644 "name": "support.constant.asm.x86_64"
1645 },
1646 {
1647 "match": "\\b__\\?(?:utf(?:(?:16|32)(?:[lb]e)?)|float(?:8|16|32|64|80[me]|128[lh])|bfloat16|Infinity|[QS]?NaN)\\?__\\b",
1648 "name": "support.function.asm.x86_64"
1649 },
1650 {
1651 "match": "\\b__(?:utf(?:(?:16|32)(?:[lb]e)?)|float(?:8|16|32|64|80[me]|128[lh])|bfloat16|Infinity|[QS]?NaN)__\\b",
1652 "name": "support.function.legacy.asm.x86_64"
1653 },
1654 {
1655 "match": "\\b__\\?NASM_(?:MAJOR|(?:SUB)?MINOR|SNAPSHOT|VER(?:SION_ID)?)\\?__\\b",
1656 "name": "support.function.asm.x86_64"
1657 },
1658 {
1659 "match": "\\b___\\?NASM_PATCHLEVEL\\?__\\b",
1660 "name": "support.function.asm.x86_64"
1661 },
1662 {
1663 "match": "\\b__\\?(?:FILE|LINE|BITS|OUTPUT_FORMAT|DEBUG_FORMAT)\\?__\\b",
1664 "name": "support.function.asm.x86_64"
1665 },
1666 {
1667 "match": "\\b__\\?(?:(?:UTC_)?(?:DATE|TIME)(?:_NUM)?|POSIX_TIME)\\?__\\b",
1668 "name": "support.function.asm.x86_64"
1669 },
1670 {
1671 "match": "\\b__\\?USE_(?:\\w+)\\?__\\b",
1672 "name": "support.function.asm.x86_64"
1673 },
1674 {
1675 "match": "\\b__\\?PASS\\?__\\b",
1676 "name": "invalid.deprecated.support.constant.altreg.asm.x86_64"
1677 },
1678 {
1679 "match": "\\b__\\?ALIGNMODE\\?__\\b",
1680 "name": "support.constant.smartalign.asm.x86_64"
1681 },
1682 {
1683 "match": "\\b__\\?ALIGN_(\\w+)\\?__\\b",
1684 "name": "support.function.smartalign.asm.x86_64"
1685 },
1686 {
1687 "match": "\\b__NASM_(?:MAJOR|(?:SUB)?MINOR|SNAPSHOT|VER(?:SION_ID)?)__\\b",
1688 "name": "support.function.asm.x86_64"
1689 },
1690 {
1691 "match": "\\b___NASM_PATCHLEVEL__\\b",
1692 "name": "support.function.asm.x86_64"
1693 },
1694 {
1695 "match": "\\b__(?:FILE|LINE|BITS|OUTPUT_FORMAT|DEBUG_FORMAT)__\\b",
1696 "name": "support.function.asm.x86_64"
1697 },
1698 {
1699 "match": "\\b__(?:(?:UTC_)?(?:DATE|TIME)(?:_NUM)?|POSIX_TIME)__\\b",
1700 "name": "support.function.asm.x86_64"
1701 },
1702 {
1703 "match": "\\b__USE_(?:\\w+)__\\b",
1704 "name": "support.function.asm.x86_64"
1705 },
1706 {
1707 "match": "\\b__PASS__\\b",
1708 "name": "invalid.deprecated.support.constant.altreg.asm.x86_64"
1709 },
1710 {
1711 "match": "\\b__ALIGNMODE__\\b",
1712 "name": "support.constant.smartalign.asm.x86_64"
1713 },
1714 {
1715 "match": "\\b__ALIGN_(\\w+)__\\b",
1716 "name": "support.function.smartalign.asm.x86_64"
1717 },
1718 {
1719 "match": "\\b(?:Inf|[QS]?NaN)\\b",
1720 "name": "support.constant.fp.asm.x86_64"
1721 },
1722 {
1723 "match": "\\b(?:float(?:8|16|32|64|80[me]|128[lh]))\\b",
1724 "name": "support.function.fp.asm.x86_64"
1725 },
1726 {
1727 "match": "(?i)\\bilog2(?:[ewfc]|[fc]w)?\\b",
1728 "name": "support.function.ifunc.asm.x86_64"
1729 }
1730 ]
1731 }
1732 },
1733 "scopeName": "source.asm.x86_64",
1734 "uuid": "05d6565d-991a-4e88-8e28-63bb21197f32"
1735 }
1736