[InstCombine] Signed saturation patterns
[llvm-core.git] / utils / vim / syntax / llvm.vim
blob487a37b4b86bac05ff466ae380cbaa556eed0584
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       \ tailcc
86       \ filter
87       \ from
88       \ gc
89       \ global
90       \ hhvmcc
91       \ hhvm_ccc
92       \ hidden
93       \ immarg
94       \ initialexec
95       \ inlinehint
96       \ inreg
97       \ inteldialect
98       \ intel_ocl_bicc
99       \ internal
100       \ linkonce
101       \ linkonce_odr
102       \ localdynamic
103       \ localexec
104       \ local_unnamed_addr
105       \ minsize
106       \ module
107       \ monotonic
108       \ msp430_intrcc
109       \ musttail
110       \ naked
111       \ nest
112       \ noalias
113       \ nobuiltin
114       \ nocapture
115       \ noimplicitfloat
116       \ noinline
117       \ nonlazybind
118       \ nonnull
119       \ norecurse
120       \ noredzone
121       \ noreturn
122       \ nounwind
123       \ optnone
124       \ optsize
125       \ personality
126       \ private
127       \ protected
128       \ ptx_device
129       \ ptx_kernel
130       \ readnone
131       \ readonly
132       \ release
133       \ returned
134       \ returns_twice
135       \ sanitize_address
136       \ sanitize_memory
137       \ sanitize_thread
138       \ section
139       \ seq_cst
140       \ sideeffect
141       \ signext
142       \ syncscope
143       \ source_filename
144       \ speculatable
145       \ spir_func
146       \ spir_kernel
147       \ sret
148       \ ssp
149       \ sspreq
150       \ sspstrong
151       \ strictfp
152       \ swiftcc
153       \ swiftself
154       \ tail
155       \ target
156       \ thread_local
157       \ to
158       \ triple
159       \ unnamed_addr
160       \ unordered
161       \ uselistorder
162       \ uselistorder_bb
163       \ uwtable
164       \ volatile
165       \ weak
166       \ weak_odr
167       \ within
168       \ writeonly
169       \ x86_64_sysvcc
170       \ win64cc
171       \ x86_fastcallcc
172       \ x86_stdcallcc
173       \ x86_thiscallcc
174       \ zeroext
176 " Obsolete keywords.
177 syn keyword llvmError  getresult begin end
179 " Misc syntax.
180 syn match   llvmNoName /[%@!]\d\+\>/
181 syn match   llvmNumber /-\?\<\d\+\>/
182 syn match   llvmFloat  /-\?\<\d\+\.\d*\(e[+-]\d\+\)\?\>/
183 syn match   llvmFloat  /\<0x\x\+\>/
184 syn keyword llvmBoolean true false
185 syn keyword llvmConstant zeroinitializer undef null none
186 syn match   llvmComment /;.*$/
187 syn region  llvmString start=/"/ skip=/\\"/ end=/"/
188 syn match   llvmLabel /[-a-zA-Z$._][-a-zA-Z$._0-9]*:/
189 syn match   llvmIdentifier /[%@][-a-zA-Z$._][-a-zA-Z$._0-9]*/
191 " Named metadata and specialized metadata keywords.
192 syn match   llvmIdentifier /![-a-zA-Z$._][-a-zA-Z$._0-9]*\ze\s*$/
193 syn match   llvmIdentifier /![-a-zA-Z$._][-a-zA-Z$._0-9]*\ze\s*[=!]/
194 syn match   llvmType /!\zs\a\+\ze\s*(/
195 syn match   llvmConstant /\<DW_TAG_[a-z_]\+\>/
196 syn match   llvmConstant /\<DW_ATE_[a-zA-Z_]\+\>/
197 syn match   llvmConstant /\<DW_OP_[a-zA-Z0-9_]\+\>/
198 syn match   llvmConstant /\<DW_LANG_[a-zA-Z0-9_]\+\>/
199 syn match   llvmConstant /\<DW_VIRTUALITY_[a-z_]\+\>/
200 syn match   llvmConstant /\<DIFlag[A-Za-z]\+\>/
202 " Syntax-highlight lit test commands and bug numbers.
203 syn match  llvmSpecialComment /;\s*PR\d*\s*$/
204 syn match  llvmSpecialComment /;\s*REQUIRES:.*$/
205 syn match  llvmSpecialComment /;\s*RUN:.*$/
206 syn match  llvmSpecialComment /;\s*CHECK:.*$/
207 syn match  llvmSpecialComment "\v;\s*CHECK-(NEXT|NOT|DAG|SAME|LABEL):.*$"
208 syn match  llvmSpecialComment /;\s*XFAIL:.*$/
210 if version >= 508 || !exists("did_c_syn_inits")
211   if version < 508
212     let did_c_syn_inits = 1
213     command -nargs=+ HiLink hi link <args>
214   else
215     command -nargs=+ HiLink hi def link <args>
216   endif
218   HiLink llvmType Type
219   HiLink llvmStatement Statement
220   HiLink llvmNumber Number
221   HiLink llvmComment Comment
222   HiLink llvmString String
223   HiLink llvmLabel Label
224   HiLink llvmKeyword Keyword
225   HiLink llvmBoolean Boolean
226   HiLink llvmFloat Float
227   HiLink llvmNoName Identifier
228   HiLink llvmConstant Constant
229   HiLink llvmSpecialComment SpecialComment
230   HiLink llvmError Error
231   HiLink llvmIdentifier Identifier
233   delcommand HiLink
234 endif
236 let b:current_syntax = "llvm"