gn build: Merge r372706
[llvm-complete.git] / utils / vim / syntax / llvm.vim
blob14987cb2348f33e01e98982a76fa0584e504f295
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 float double x86_fp80 fp128 ppc_fp128
18 syn keyword llvmType label metadata x86_mmx
19 syn keyword llvmType type label opaque token
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 fpext
29 syn keyword llvmStatement fptosi fptoui fptrunc free frem fsub fneg getelementptr
30 syn keyword llvmStatement icmp inbounds indirectbr insertelement insertvalue
31 syn keyword llvmStatement inttoptr invoke landingpad load lshr malloc max min
32 syn keyword llvmStatement mul nand ne ninf nnan nsw nsz nuw oeq oge ogt ole
33 syn keyword llvmStatement olt one or ord phi ptrtoint resume ret sdiv select
34 syn keyword llvmStatement sext sge sgt shl shufflevector sitofp sle slt srem
35 syn keyword llvmStatement store sub switch trunc udiv ueq uge ugt uitofp ule ult
36 syn keyword llvmStatement umax umin une uno unreachable unwind urem va_arg
37 syn keyword llvmStatement xchg xor zext
39 " Keywords.
40 syn keyword llvmKeyword
41       \ acq_rel
42       \ acquire
43       \ addrspace
44       \ alias
45       \ align
46       \ alignstack
47       \ alwaysinline
48       \ appending
49       \ argmemonly
50       \ arm_aapcscc
51       \ arm_aapcs_vfpcc
52       \ arm_apcscc
53       \ asm
54       \ atomic
55       \ available_externally
56       \ blockaddress
57       \ builtin
58       \ byval
59       \ c
60       \ catch
61       \ caller
62       \ cc
63       \ ccc
64       \ cleanup
65       \ coldcc
66       \ comdat
67       \ common
68       \ constant
69       \ datalayout
70       \ declare
71       \ default
72       \ define
73       \ deplibs
74       \ dereferenceable
75       \ distinct
76       \ dllexport
77       \ dllimport
78       \ dso_local
79       \ dso_preemptable
80       \ except
81       \ external
82       \ externally_initialized
83       \ extern_weak
84       \ fastcc
85       \ filter
86       \ from
87       \ gc
88       \ global
89       \ hhvmcc
90       \ hhvm_ccc
91       \ hidden
92       \ immarg
93       \ initialexec
94       \ inlinehint
95       \ inreg
96       \ inteldialect
97       \ intel_ocl_bicc
98       \ internal
99       \ linkonce
100       \ linkonce_odr
101       \ localdynamic
102       \ localexec
103       \ local_unnamed_addr
104       \ minsize
105       \ module
106       \ monotonic
107       \ msp430_intrcc
108       \ musttail
109       \ naked
110       \ nest
111       \ noalias
112       \ nobuiltin
113       \ nocapture
114       \ noimplicitfloat
115       \ noinline
116       \ nonlazybind
117       \ nonnull
118       \ norecurse
119       \ noredzone
120       \ noreturn
121       \ nounwind
122       \ optnone
123       \ optsize
124       \ personality
125       \ private
126       \ protected
127       \ ptx_device
128       \ ptx_kernel
129       \ readnone
130       \ readonly
131       \ release
132       \ returned
133       \ returns_twice
134       \ sanitize_address
135       \ sanitize_memory
136       \ sanitize_thread
137       \ section
138       \ seq_cst
139       \ sideeffect
140       \ signext
141       \ syncscope
142       \ source_filename
143       \ speculatable
144       \ spir_func
145       \ spir_kernel
146       \ sret
147       \ ssp
148       \ sspreq
149       \ sspstrong
150       \ strictfp
151       \ swiftcc
152       \ swiftself
153       \ tail
154       \ target
155       \ thread_local
156       \ to
157       \ triple
158       \ unnamed_addr
159       \ unordered
160       \ uselistorder
161       \ uselistorder_bb
162       \ uwtable
163       \ volatile
164       \ weak
165       \ weak_odr
166       \ within
167       \ writeonly
168       \ x86_64_sysvcc
169       \ win64cc
170       \ x86_fastcallcc
171       \ x86_stdcallcc
172       \ x86_thiscallcc
173       \ zeroext
175 " Obsolete keywords.
176 syn keyword llvmError  getresult begin end
178 " Misc syntax.
179 syn match   llvmNoName /[%@!]\d\+\>/
180 syn match   llvmNumber /-\?\<\d\+\>/
181 syn match   llvmFloat  /-\?\<\d\+\.\d*\(e[+-]\d\+\)\?\>/
182 syn match   llvmFloat  /\<0x\x\+\>/
183 syn keyword llvmBoolean true false
184 syn keyword llvmConstant zeroinitializer undef null none
185 syn match   llvmComment /;.*$/
186 syn region  llvmString start=/"/ skip=/\\"/ end=/"/
187 syn match   llvmLabel /[-a-zA-Z$._][-a-zA-Z$._0-9]*:/
188 syn match   llvmIdentifier /[%@][-a-zA-Z$._][-a-zA-Z$._0-9]*/
190 " Named metadata and specialized metadata keywords.
191 syn match   llvmIdentifier /![-a-zA-Z$._][-a-zA-Z$._0-9]*\ze\s*$/
192 syn match   llvmIdentifier /![-a-zA-Z$._][-a-zA-Z$._0-9]*\ze\s*[=!]/
193 syn match   llvmType /!\zs\a\+\ze\s*(/
194 syn match   llvmConstant /\<DW_TAG_[a-z_]\+\>/
195 syn match   llvmConstant /\<DW_ATE_[a-zA-Z_]\+\>/
196 syn match   llvmConstant /\<DW_OP_[a-zA-Z0-9_]\+\>/
197 syn match   llvmConstant /\<DW_LANG_[a-zA-Z0-9_]\+\>/
198 syn match   llvmConstant /\<DW_VIRTUALITY_[a-z_]\+\>/
199 syn match   llvmConstant /\<DIFlag[A-Za-z]\+\>/
201 " Syntax-highlight lit test commands and bug numbers.
202 syn match  llvmSpecialComment /;\s*PR\d*\s*$/
203 syn match  llvmSpecialComment /;\s*REQUIRES:.*$/
204 syn match  llvmSpecialComment /;\s*RUN:.*$/
205 syn match  llvmSpecialComment /;\s*CHECK:.*$/
206 syn match  llvmSpecialComment "\v;\s*CHECK-(NEXT|NOT|DAG|SAME|LABEL):.*$"
207 syn match  llvmSpecialComment /;\s*XFAIL:.*$/
209 if version >= 508 || !exists("did_c_syn_inits")
210   if version < 508
211     let did_c_syn_inits = 1
212     command -nargs=+ HiLink hi link <args>
213   else
214     command -nargs=+ HiLink hi def link <args>
215   endif
217   HiLink llvmType Type
218   HiLink llvmStatement Statement
219   HiLink llvmNumber Number
220   HiLink llvmComment Comment
221   HiLink llvmString String
222   HiLink llvmLabel Label
223   HiLink llvmKeyword Keyword
224   HiLink llvmBoolean Boolean
225   HiLink llvmFloat Float
226   HiLink llvmNoName Identifier
227   HiLink llvmConstant Constant
228   HiLink llvmSpecialComment SpecialComment
229   HiLink llvmError Error
230   HiLink llvmIdentifier Identifier
232   delcommand HiLink
233 endif
235 let b:current_syntax = "llvm"