xref: /netbsd-src/external/apache2/llvm/dist/llvm/utils/vscode/llvm/syntaxes/ll.tmLanguage.yaml (revision 82d56013d7b633d116a93943de88e08335357a7c)
1# https://macromates.com/manual/en/language_grammars
2# https://macromates.com/manual/en/regular_expressions
3# https://www.sublimetext.com/docs/3/scope_naming.html
4
5# Coloring
6# https://code.visualstudio.com/docs/getstarted/themes
7# https://code.visualstudio.com/api/extension-guides/color-theme#syntax-colors
8# https://code.visualstudio.com/api/language-extensions/syntax-highlight-guide
9# https://code.visualstudio.com/docs/cpp/colorization-cpp
10
11$schema: https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json
12name: LLVM IR
13scopeName: source.llvm
14patterns:
15  - match: "\\bvoid\\b|\
16            \\bhalf\\b|\
17            \\bbfloat\\b|\
18            \\bfloat\\b|\
19            \\bdouble\\b|\
20            \\bx86_fp80\\b|\
21            \\bfp128\\b|\
22            \\bppc_fp128\\b|\
23            \\blabel\\b|\
24            \\bmetadata\\b|\
25            \\bx86_mmx\\b|\
26            \\bx86_amx\\b|\
27            \\btype\\b|\
28            \\blabel\\b|\
29            \\bopaque\\b|\
30            \\btoken\\b|\
31            \\bi\\d+\\**"
32    name: storage.type.llvm
33  - match: "!([a-zA-Z]+)\\s*\\("
34    captures:
35      1:
36        name: storage.type.llvm
37  - match: "\\badd\\b|\
38            \\baddrspacecast\\b|\
39            \\balloca\\b|\
40            \\band\\b|\
41            \\barcp\\b|\
42            \\bashr\\b|\
43            \\batomicrmw\\b|\
44            \\bbitcast\\b|\
45            \\bbr\\b|\
46            \\bcatchpad\\b|\
47            \\bcatchswitch\\b|\
48            \\bcatchret\\b|\
49            \\bcall\\b|\
50            \\bcallbr\\b|\
51            \\bcleanuppad\\b|\
52            \\bcleanupret\\b|\
53            \\bcmpxchg\\b|\
54            \\beq\\b|\
55            \\bexact\\b|\
56            \\bextractelement\\b|\
57            \\bextractvalue\\b|\
58            \\bfadd\\b|\
59            \\bfast\\b|\
60            \\bfcmp\\b|\
61            \\bfdiv\\b|\
62            \\bfence\\b|\
63            \\bfmul\\b|\
64            \\bfpext\\b|\
65            \\bfptosi\\b|\
66            \\bfptoui\\b|\
67            \\bfptrunc\\b|\
68            \\bfree\\b|\
69            \\bfrem\\b|\
70            \\bfsub\\b|\
71            \\bfneg\\b|\
72            \\bgetelementptr\\b|\
73            \\bicmp\\b|\
74            \\binbounds\\b|\
75            \\bindirectbr\\b|\
76            \\binsertelement\\b|\
77            \\binsertvalue\\b|\
78            \\binttoptr\\b|\
79            \\binvoke\\b|\
80            \\blandingpad\\b|\
81            \\bload\\b|\
82            \\blshr\\b|\
83            \\bmalloc\\b|\
84            \\bmax\\b|\
85            \\bmin\\b|\
86            \\bmul\\b|\
87            \\bnand\\b|\
88            \\bne\\b|\
89            \\bninf\\b|\
90            \\bnnan\\b|\
91            \\bnsw\\b|\
92            \\bnsz\\b|\
93            \\bnuw\\b|\
94            \\boeq\\b|\
95            \\boge\\b|\
96            \\bogt\\b|\
97            \\bole\\b|\
98            \\bolt\\b|\
99            \\bone\\b|\
100            \\bor\\b|\
101            \\bord\\b|\
102            \\bphi\\b|\
103            \\bptrtoint\\b|\
104            \\bresume\\b|\
105            \\bret\\b|\
106            \\bsdiv\\b|\
107            \\bselect\\b|\
108            \\bsext\\b|\
109            \\bsge\\b|\
110            \\bsgt\\b|\
111            \\bshl\\b|\
112            \\bshufflevector\\b|\
113            \\bsitofp\\b|\
114            \\bsle\\b|\
115            \\bslt\\b|\
116            \\bsrem\\b|\
117            \\bstore\\b|\
118            \\bsub\\b|\
119            \\bswitch\\b|\
120            \\btrunc\\b|\
121            \\budiv\\b|\
122            \\bueq\\b|\
123            \\buge\\b|\
124            \\bugt\\b|\
125            \\buitofp\\b|\
126            \\bule\\b|\
127            \\bult\\b|\
128            \\bumax\\b|\
129            \\bumin\\b|\
130            \\bune\\b|\
131            \\buno\\b|\
132            \\bunreachable\\b|\
133            \\bunwind\\b|\
134            \\burem\\b|\
135            \\bva_arg\\b|\
136            \\bxchg\\b|\
137            \\bxor\\b|\
138            \\bzext\\b"
139    name: keyword.instruction.llvm
140  - match: "\\bacq_rel\\b|\
141            \\bacquire\\b|\
142            \\baddrspace\\b|\
143            \\balias\\b|\
144            \\balign\\b|\
145            \\balignstack\\b|\
146            \\ballocsize\\b|\
147            \\balwaysinline\\b|\
148            \\bappending\\b|\
149            \\bargmemonly\\b|\
150            \\barm_aapcs_vfpcc\\b|\
151            \\barm_aapcscc\\b|\
152            \\barm_apcscc\\b|\
153            \\basm\\b|\
154            \\batomic\\b|\
155            \\bavailable_externally\\b|\
156            \\bblockaddress\\b|\
157            \\bbuiltin\\b|\
158            \\bbyref\\b|\
159            \\bbyval\\b|\
160            \\bc\\b|\
161            \\bcaller\\b|\
162            \\bcatch\\b|\
163            \\bcc\\b|\
164            \\bccc\\b|\
165            \\bcleanup\\b|\
166            \\bcold\\b|\
167            \\bcoldcc\\b|\
168            \\bcomdat\\b|\
169            \\bcommon\\b|\
170            \\bconstant\\b|\
171            \\bconvergent\\b|\
172            \\bdatalayout\\b|\
173            \\bdeclare\\b|\
174            \\bdefault\\b|\
175            \\bdefine\\b|\
176            \\bdeplibs\\b|\
177            \\bdereferenceable\\b|\
178            \\bdereferenceable_or_null\\b|\
179            \\bdistinct\\b|\
180            \\bdllexport\\b|\
181            \\bdllimport\\b|\
182            \\bdso_local\\b|\
183            \\bdso_preemptable\\b|\
184            \\bexcept\\b|\
185            \\bextern_weak\\b|\
186            \\bexternal\\b|\
187            \\bexternally_initialized\\b|\
188            \\bfastcc\\b|\
189            \\bfilter\\b|\
190            \\bfrom\\b|\
191            \\bgc\\b|\
192            \\bglobal\\b|\
193            \\bhhvm_ccc\\b|\
194            \\bhhvmcc\\b|\
195            \\bhidden\\b|\
196            \\bhot\\b|\
197            \\bimmarg\\b|\
198            \\binaccessiblemem_or_argmemonly\\b|\
199            \\binaccessiblememonly\\b|\
200            \\binalloc\\b|\
201            \\binitialexec\\b|\
202            \\binlinehint\\b|\
203            \\binreg\\b|\
204            \\bintel_ocl_bicc\\b|\
205            \\binteldialect\\b|\
206            \\binternal\\b|\
207            \\bjumptable\\b|\
208            \\blinkonce\\b|\
209            \\blinkonce_odr\\b|\
210            \\blocal_unnamed_addr\\b|\
211            \\blocaldynamic\\b|\
212            \\blocalexec\\b|\
213            \\bminsize\\b|\
214            \\bmodule\\b|\
215            \\bmonotonic\\b|\
216            \\bmsp430_intrcc\\b|\
217            \\bmustprogress\\b|\
218            \\bmusttail\\b|\
219            \\bnaked\\b|\
220            \\bnest\\b|\
221            \\bnoalias\\b|\
222            \\bnobuiltin\\b|\
223            \\bnocallback\\b|\
224            \\bnocapture\\b|\
225            \\bnocf_check\\b|\
226            \\bnoduplicate\\b|\
227            \\bnofree\\b|\
228            \\bnoimplicitfloat\\b|\
229            \\bnoinline\\b|\
230            \\bnomerge\\b|\
231            \\bnonlazybind\\b|\
232            \\bnonnull\\b|\
233            \\bnoprofile\\b|\
234            \\bnorecurse\\b|\
235            \\bnoredzone\\b|\
236            \\bnoreturn\\b|\
237            \\bnosync\\b|\
238            \\bnoundef\\b|\
239            \\bnounwind\\b|\
240            \\bnull_pointer_is_valid\\b|\
241            \\boptforfuzzing\\b|\
242            \\boptnone\\b|\
243            \\boptsize\\b|\
244            \\bpersonality\\b|\
245            \\bpreallocated\\b|\
246            \\bprivate\\b|\
247            \\bprotected\\b|\
248            \\bptx_device\\b|\
249            \\bptx_kernel\\b|\
250            \\breadnone\\b|\
251            \\breadonly\\b|\
252            \\brelease\\b|\
253            \\breturned\\b|\
254            \\breturns_twice\\b|\
255            \\bsafestack\\b|\
256            \\bsanitize_address\\b|\
257            \\bsanitize_hwaddress\\b|\
258            \\bsanitize_memory\\b|\
259            \\bsanitize_memtag\\b|\
260            \\bsanitize_thread\\b|\
261            \\bsection\\b|\
262            \\bseq_cst\\b|\
263            \\bshadowcallstack\\b|\
264            \\bsideeffect\\b|\
265            \\bsignext\\b|\
266            \\bsource_filename\\b|\
267            \\bspeculatable\\b|\
268            \\bspeculative_load_hardening\\b|\
269            \\bspir_func\\b|\
270            \\bspir_kernel\\b|\
271            \\bsret\\b|\
272            \\bssp\\b|\
273            \\bsspreq\\b|\
274            \\bsspstrong\\b|\
275            \\bstrictfp\\b|\
276            \\bswiftcc\\b|\
277            \\bswifterror\\b|\
278            \\bswiftself\\b|\
279            \\bsyncscope\\b|\
280            \\btail\\b|\
281            \\btailcc\\b|\
282            \\btarget\\b|\
283            \\bthread_local\\b|\
284            \\bto\\b|\
285            \\btriple\\b|\
286            \\bunnamed_addr\\b|\
287            \\bunordered\\b|\
288            \\buselistorder\\b|\
289            \\buselistorder_bb\\b|\
290            \\buwtable\\b|\
291            \\bvolatile\\b|\
292            \\bweak\\b|\
293            \\bweak_odr\\b|\
294            \\bwillreturn\\b|\
295            \\bwin64cc\\b|\
296            \\bwithin\\b|\
297            \\bwriteonly\\b|\
298            \\bx86_64_sysvcc\\b|\
299            \\bx86_fastcallcc\\b|\
300            \\bx86_stdcallcc\\b|\
301            \\bx86_thiscallcc\\b|\
302            \\bzeroext\\b"
303    name: storage.modifier.llvm
304  - match: "@[-a-zA-Z$._][-a-zA-Z$._0-9]*"
305    name: entity.name.function.llvm
306  - match: "[%@!]\\d+\\b"
307    name: variable.llvm
308  - match: "%[-a-zA-Z$._][-a-zA-Z$._0-9]*"
309    name: variable.llvm
310  - match: "(![-a-zA-Z$._][-a-zA-Z$._0-9]*)\\s*$"
311    captures:
312      1:
313        name: variable.llvm
314  - match: "(![-a-zA-Z$._][-a-zA-Z$._0-9]*)\\s*[=!]"
315    captures:
316      1:
317        name: variable.llvm
318  - begin: "\""
319    end: "\""
320    patterns:
321      - name: "constant.character.escape.untitled"
322        match: "\\."
323    name: string.quoted.double.llvm
324  - match: "[-a-zA-Z$._][-a-zA-Z$._0-9]*:"
325    name: entity.name.label.llvm
326  - match: "-?\\b\\d+\\.\\d*(e[+-]\\d+)?\\b"
327    name: constant.numeric.float
328  - match: "\\b0x\\x+\\b"
329    name: constant.numeric.float
330  - match: "-?\\b\\d+\\b"
331    name: constant.numeric.integer
332  - match: "\\btrue\\b|\
333            \\bfalse\\b|\
334            \\bnull\\b|\
335            \\bzeroinitializer\\b|\
336            \\bundef\\b|\
337            \\bnull\\b|\
338            \\bnone\\b"
339    name: constant.language
340  - match: "\\bDW_TAG_[a-z_]+\\b|\
341            \\bDW_ATE_[a-zA-Z_]+\\b|\
342            \\bDW_OP_[a-zA-Z0-9_]+\\b|\
343            \\bDW_LANG_[a-zA-Z0-9_]+\\b|\
344            \\bDW_VIRTUALITY_[a-z_]+\\b|\
345            \\bDIFlag[A-Za-z]+\\b"
346    name: constant.other
347  - match: ";\\s*PR\\d*\\s*$"
348    name: string.regexp
349  - match: ";\\s*REQUIRES:.*$"
350    name: string.regexp
351  - match: ";\\s*RUN:.*$"
352    name: string.regexp
353  - match: ";\\s*ALLOW_RETRIES:.*$"
354    name: string.regexp
355  - match: ";\\s*CHECK:.*$"
356    name: string.regexp
357  - match: ";\\s*CHECK-(NEXT|NOT|DAG|SAME|LABEL):.*$"
358    name: string.regexp
359  - match: ";\\s*XFAIL:.*$"
360    name: string.regexp
361  - match: ;.*$
362    name: comment.line.llvm
363