[OptTable] Fix typo VALUE => VALUES (NFCI) (#121523)
[llvm-project.git] / llvm / utils / vim / syntax / llvm.vim
blobfac509c355cb8a298b51972bd7d2237f95338b9a
1 " Vim syntax file
2 " Language:   llvm
3 " Maintainer: The LLVM team, http://llvm.org/
4 " Version:      $Revision$
6 if version < 600
7   syntax clear
8 elseif exists("b:current_syntax")
9   finish
10 endif
12 syn case match
14 " Types.
15 " Types also include struct, array, vector, etc. but these don't
16 " benefit as much from having dedicated highlighting rules.
17 syn keyword llvmType void half bfloat float double x86_fp80 fp128 ppc_fp128
18 syn keyword llvmType label metadata x86_mmx x86_amx
19 syn keyword llvmType type label opaque token ptr
20 syn match   llvmType /\<i\d\+\>/
22 " Instructions.
23 " The true and false tokens can be used for comparison opcodes, but it's
24 " much more common for these tokens to be used for boolean constants.
25 syn keyword llvmStatement add addrspacecast alloca and arcp ashr atomicrmw
26 syn keyword llvmStatement bitcast br catchpad catchswitch catchret call callbr
27 syn keyword llvmStatement cleanuppad cleanupret cmpxchg eq exact extractelement
28 syn keyword llvmStatement extractvalue fadd fast fcmp fdiv fence fmul fneg fpext
29 syn keyword llvmStatement fptosi fptoui fptrunc free freeze frem fsub
30 syn keyword llvmStatement getelementptr icmp inbounds indirectbr insertelement
31 syn keyword llvmStatement insertvalue inttoptr invoke landingpad load lshr
32 syn keyword llvmStatement malloc max min mul nand ne ninf nnan nsw nsz nuw oeq
33 syn keyword llvmStatement oge ogt ole olt one or ord phi ptrtoint resume ret
34 syn keyword llvmStatement sdiv select sext sge sgt shl shufflevector sitofp
35 syn keyword llvmStatement sle slt srem store sub switch trunc udiv ueq uge ugt
36 syn keyword llvmStatement uitofp ule ult umax umin une uno unreachable unwind
37 syn keyword llvmStatement urem va_arg xchg xor zext
39 " Debug records.
40 syn match llvmStatement /\v#dbg_(assign|declare|label|value)/
42 " Keywords.
43 syn keyword llvmKeyword
44       \ acq_rel
45       \ acquire
46       \ addrspace
47       \ alias
48       \ align
49       \ alignstack
50       \ allocsize
51       \ alwaysinline
52       \ appending
53       \ argmemonly
54       \ arm_aapcs_vfpcc
55       \ arm_aapcscc
56       \ arm_apcscc
57       \ asm
58       \ atomic
59       \ available_externally
60       \ blockaddress
61       \ builtin
62       \ byref
63       \ byval
64       \ c
65       \ caller
66       \ catch
67       \ cc
68       \ ccc
69       \ cleanup
70       \ cold
71       \ coldcc
72       \ comdat
73       \ common
74       \ constant
75       \ convergent
76       \ datalayout
77       \ declare
78       \ default
79       \ define
80       \ deplibs
81       \ dereferenceable
82       \ dereferenceable_or_null
83       \ distinct
84       \ dllexport
85       \ dllimport
86       \ dso_local
87       \ dso_preemptable
88       \ except
89       \ extern_weak
90       \ external
91       \ externally_initialized
92       \ fastcc
93       \ filter
94       \ from
95       \ gc
96       \ global
97       \ hhvm_ccc
98       \ hhvmcc
99       \ hidden
100       \ hot
101       \ immarg
102       \ inaccessiblemem_or_argmemonly
103       \ inaccessiblememonly
104       \ inalloca
105       \ initialexec
106       \ inlinehint
107       \ inreg
108       \ intel_ocl_bicc
109       \ inteldialect
110       \ internal
111       \ jumptable
112       \ linkonce
113       \ linkonce_odr
114       \ local_unnamed_addr
115       \ localdynamic
116       \ localexec
117       \ minsize
118       \ module
119       \ monotonic
120       \ msp430_intrcc
121       \ mustprogress
122       \ musttail
123       \ naked
124       \ nest
125       \ noalias
126       \ nobuiltin
127       \ nocallback
128       \ nocapture
129       \ nocf_check
130       \ no_cfi
131       \ noduplicate
132       \ nofree
133       \ noimplicitfloat
134       \ noinline
135       \ nomerge
136       \ nonlazybind
137       \ nonnull
138       \ noprofile
139       \ norecurse
140       \ noredzone
141       \ noreturn
142       \ nosync
143       \ noundef
144       \ nounwind
145       \ nosanitize_bounds
146       \ nosanitize_coverage
147       \ null_pointer_is_valid
148       \ optdebug
149       \ optforfuzzing
150       \ optnone
151       \ optsize
152       \ personality
153       \ preallocated
154       \ private
155       \ protected
156       \ ptrauth
157       \ ptx_device
158       \ ptx_kernel
159       \ readnone
160       \ readonly
161       \ release
162       \ returned
163       \ returns_twice
164       \ safestack
165       \ sanitize_address
166       \ sanitize_hwaddress
167       \ sanitize_memory
168       \ sanitize_memtag
169       \ sanitize_thread
170       \ section
171       \ seq_cst
172       \ shadowcallstack
173       \ sideeffect
174       \ signext
175       \ source_filename
176       \ speculatable
177       \ speculative_load_hardening
178       \ spir_func
179       \ spir_kernel
180       \ splat
181       \ sret
182       \ ssp
183       \ sspreq
184       \ sspstrong
185       \ strictfp
186       \ swiftcc
187       \ swifterror
188       \ swifttailcc
189       \ swiftself
190       \ syncscope
191       \ tail
192       \ tailcc
193       \ target
194       \ thread_local
195       \ to
196       \ triple
197       \ unnamed_addr
198       \ unordered
199       \ uselistorder
200       \ uselistorder_bb
201       \ uwtable
202       \ volatile
203       \ weak
204       \ weak_odr
205       \ willreturn
206       \ win64cc
207       \ within
208       \ writeonly
209       \ x86_64_sysvcc
210       \ x86_fastcallcc
211       \ x86_stdcallcc
212       \ x86_thiscallcc
213       \ zeroext
215 " Obsolete keywords.
216 syn keyword llvmError  getresult begin end
218 " Misc syntax.
219 syn match   llvmNoName /[%@!]\d\+\>/
220 syn match   llvmNumber /-\?\<\d\+\>/
221 syn match   llvmFloat  /-\?\<\d\+\.\d*\(e[+-]\d\+\)\?\>/
222 syn match   llvmFloat  /\<0x[KLMHR]\?\x\+\>/
223 syn keyword llvmBoolean true false
224 syn keyword llvmConstant zeroinitializer undef null none poison vscale
225 syn match   llvmComment /;.*$/
226 syn region  llvmString start=/"/ skip=/\\"/ end=/"/
227 syn match   llvmLabel /[-a-zA-Z$._][-a-zA-Z$._0-9]*:/
228 syn match   llvmIdentifier /[%@][-a-zA-Z$._][-a-zA-Z$._0-9]*/
230 " Named metadata and specialized metadata keywords.
231 syn match   llvmIdentifier /![-a-zA-Z$._][-a-zA-Z$._0-9]*\ze\s*$/
232 syn match   llvmIdentifier /![-a-zA-Z$._][-a-zA-Z$._0-9]*\ze\s*[=!]/
233 syn match   llvmType /!\zs\a\+\ze\s*(/
234 syn match   llvmConstant /\<DW_TAG_[a-z_]\+\>/
235 syn match   llvmConstant /\<DW_ATE_[a-zA-Z_]\+\>/
236 syn match   llvmConstant /\<DW_OP_[a-zA-Z0-9_]\+\>/
237 syn match   llvmConstant /\<DW_LANG_[a-zA-Z0-9_]\+\>/
238 syn match   llvmConstant /\<DW_VIRTUALITY_[a-z_]\+\>/
239 syn match   llvmConstant /\<DIFlag[A-Za-z]\+\>/
241 " Syntax-highlight lit test commands and bug numbers.
242 syn match  llvmSpecialComment /;\s*PR\d*\s*$/
243 syn match  llvmSpecialComment /;\s*REQUIRES:.*$/
244 syn match  llvmSpecialComment /;\s*RUN:.*$/
245 syn match  llvmSpecialComment /;\s*ALLOW_RETRIES:.*$/
246 syn match  llvmSpecialComment /;\s*CHECK:.*$/
247 syn match  llvmSpecialComment /;\s*CHECK-EMPTY:\s*$/
248 syn match  llvmSpecialComment /\v;\s*CHECK-(NEXT|NOT|DAG|SAME|LABEL|COUNT-\d+):.*$/
249 syn match  llvmSpecialComment /;\s*XFAIL:.*$/
251 if version >= 508 || !exists("did_c_syn_inits")
252   if version < 508
253     let did_c_syn_inits = 1
254     command -nargs=+ HiLink hi link <args>
255   else
256     command -nargs=+ HiLink hi def link <args>
257   endif
259   HiLink llvmType Type
260   HiLink llvmStatement Statement
261   HiLink llvmNumber Number
262   HiLink llvmComment Comment
263   HiLink llvmString String
264   HiLink llvmLabel Label
265   HiLink llvmKeyword Keyword
266   HiLink llvmBoolean Boolean
267   HiLink llvmFloat Float
268   HiLink llvmNoName Identifier
269   HiLink llvmConstant Constant
270   HiLink llvmSpecialComment SpecialComment
271   HiLink llvmError Error
272   HiLink llvmIdentifier Identifier
274   delcommand HiLink
275 endif
277 let b:current_syntax = "llvm"