Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / utils / vim / syntax / llvm.vim
blobd86e3d1ddbc27ff501b3e79758e07a7a4b788a69
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 " Keywords.
40 syn keyword llvmKeyword
41       \ acq_rel
42       \ acquire
43       \ addrspace
44       \ alias
45       \ align
46       \ alignstack
47       \ allocsize
48       \ alwaysinline
49       \ appending
50       \ argmemonly
51       \ arm_aapcs_vfpcc
52       \ arm_aapcscc
53       \ arm_apcscc
54       \ asm
55       \ atomic
56       \ available_externally
57       \ blockaddress
58       \ builtin
59       \ byref
60       \ byval
61       \ c
62       \ caller
63       \ catch
64       \ cc
65       \ ccc
66       \ cleanup
67       \ cold
68       \ coldcc
69       \ comdat
70       \ common
71       \ constant
72       \ convergent
73       \ datalayout
74       \ declare
75       \ default
76       \ define
77       \ deplibs
78       \ dereferenceable
79       \ dereferenceable_or_null
80       \ distinct
81       \ dllexport
82       \ dllimport
83       \ dso_local
84       \ dso_preemptable
85       \ except
86       \ extern_weak
87       \ external
88       \ externally_initialized
89       \ fastcc
90       \ filter
91       \ from
92       \ gc
93       \ global
94       \ hhvm_ccc
95       \ hhvmcc
96       \ hidden
97       \ hot
98       \ immarg
99       \ inaccessiblemem_or_argmemonly
100       \ inaccessiblememonly
101       \ inalloca
102       \ initialexec
103       \ inlinehint
104       \ inreg
105       \ intel_ocl_bicc
106       \ inteldialect
107       \ internal
108       \ jumptable
109       \ linkonce
110       \ linkonce_odr
111       \ local_unnamed_addr
112       \ localdynamic
113       \ localexec
114       \ minsize
115       \ module
116       \ monotonic
117       \ msp430_intrcc
118       \ mustprogress
119       \ musttail
120       \ naked
121       \ nest
122       \ noalias
123       \ nobuiltin
124       \ nocallback
125       \ nocapture
126       \ nocf_check
127       \ no_cfi
128       \ noduplicate
129       \ nofree
130       \ noimplicitfloat
131       \ noinline
132       \ nomerge
133       \ nonlazybind
134       \ nonnull
135       \ noprofile
136       \ norecurse
137       \ noredzone
138       \ noreturn
139       \ nosync
140       \ noundef
141       \ nounwind
142       \ nosanitize_bounds
143       \ nosanitize_coverage
144       \ null_pointer_is_valid
145       \ optdebug
146       \ optforfuzzing
147       \ optnone
148       \ optsize
149       \ personality
150       \ preallocated
151       \ private
152       \ protected
153       \ ptx_device
154       \ ptx_kernel
155       \ readnone
156       \ readonly
157       \ release
158       \ returned
159       \ returns_twice
160       \ safestack
161       \ sanitize_address
162       \ sanitize_hwaddress
163       \ sanitize_memory
164       \ sanitize_memtag
165       \ sanitize_thread
166       \ section
167       \ seq_cst
168       \ shadowcallstack
169       \ sideeffect
170       \ signext
171       \ source_filename
172       \ speculatable
173       \ speculative_load_hardening
174       \ spir_func
175       \ spir_kernel
176       \ sret
177       \ ssp
178       \ sspreq
179       \ sspstrong
180       \ strictfp
181       \ swiftcc
182       \ swifterror
183       \ swifttailcc
184       \ swiftself
185       \ syncscope
186       \ tail
187       \ tailcc
188       \ target
189       \ thread_local
190       \ to
191       \ triple
192       \ unnamed_addr
193       \ unordered
194       \ uselistorder
195       \ uselistorder_bb
196       \ uwtable
197       \ volatile
198       \ weak
199       \ weak_odr
200       \ willreturn
201       \ win64cc
202       \ within
203       \ writeonly
204       \ x86_64_sysvcc
205       \ x86_fastcallcc
206       \ x86_stdcallcc
207       \ x86_thiscallcc
208       \ zeroext
210 " Obsolete keywords.
211 syn keyword llvmError  getresult begin end
213 " Misc syntax.
214 syn match   llvmNoName /[%@!]\d\+\>/
215 syn match   llvmNumber /-\?\<\d\+\>/
216 syn match   llvmFloat  /-\?\<\d\+\.\d*\(e[+-]\d\+\)\?\>/
217 syn match   llvmFloat  /\<0x\x\+\>/
218 syn keyword llvmBoolean true false
219 syn keyword llvmConstant zeroinitializer undef null none poison vscale
220 syn match   llvmComment /;.*$/
221 syn region  llvmString start=/"/ skip=/\\"/ end=/"/
222 syn match   llvmLabel /[-a-zA-Z$._][-a-zA-Z$._0-9]*:/
223 syn match   llvmIdentifier /[%@][-a-zA-Z$._][-a-zA-Z$._0-9]*/
225 " Named metadata and specialized metadata keywords.
226 syn match   llvmIdentifier /![-a-zA-Z$._][-a-zA-Z$._0-9]*\ze\s*$/
227 syn match   llvmIdentifier /![-a-zA-Z$._][-a-zA-Z$._0-9]*\ze\s*[=!]/
228 syn match   llvmType /!\zs\a\+\ze\s*(/
229 syn match   llvmConstant /\<DW_TAG_[a-z_]\+\>/
230 syn match   llvmConstant /\<DW_ATE_[a-zA-Z_]\+\>/
231 syn match   llvmConstant /\<DW_OP_[a-zA-Z0-9_]\+\>/
232 syn match   llvmConstant /\<DW_LANG_[a-zA-Z0-9_]\+\>/
233 syn match   llvmConstant /\<DW_VIRTUALITY_[a-z_]\+\>/
234 syn match   llvmConstant /\<DIFlag[A-Za-z]\+\>/
236 " Syntax-highlight lit test commands and bug numbers.
237 syn match  llvmSpecialComment /;\s*PR\d*\s*$/
238 syn match  llvmSpecialComment /;\s*REQUIRES:.*$/
239 syn match  llvmSpecialComment /;\s*RUN:.*$/
240 syn match  llvmSpecialComment /;\s*ALLOW_RETRIES:.*$/
241 syn match  llvmSpecialComment /;\s*CHECK:.*$/
242 syn match  llvmSpecialComment /;\s*CHECK-EMPTY:\s*$/
243 syn match  llvmSpecialComment /\v;\s*CHECK-(NEXT|NOT|DAG|SAME|LABEL|COUNT-\d+):.*$/
244 syn match  llvmSpecialComment /;\s*XFAIL:.*$/
246 if version >= 508 || !exists("did_c_syn_inits")
247   if version < 508
248     let did_c_syn_inits = 1
249     command -nargs=+ HiLink hi link <args>
250   else
251     command -nargs=+ HiLink hi def link <args>
252   endif
254   HiLink llvmType Type
255   HiLink llvmStatement Statement
256   HiLink llvmNumber Number
257   HiLink llvmComment Comment
258   HiLink llvmString String
259   HiLink llvmLabel Label
260   HiLink llvmKeyword Keyword
261   HiLink llvmBoolean Boolean
262   HiLink llvmFloat Float
263   HiLink llvmNoName Identifier
264   HiLink llvmConstant Constant
265   HiLink llvmSpecialComment SpecialComment
266   HiLink llvmError Error
267   HiLink llvmIdentifier Identifier
269   delcommand HiLink
270 endif
272 let b:current_syntax = "llvm"