blob: 3a2b8285350cbdd5727bbc466476a714d22c0af7 [file] [log] [blame]
Nick Hildenbrandt37e690a2002-10-07 22:54:48 +00001" Vim syntax file
Misha Brukmand8acf7c2003-06-03 00:56:09 +00002" Language: llvm
Reid Spencerc67a0602006-03-14 05:54:52 +00003" Maintainer: The LLVM team, http://llvm.org/
Dan Gohman1b9dd242010-02-26 21:38:04 +00004" Version: $Revision$
Nick Hildenbrandt37e690a2002-10-07 22:54:48 +00005
6if version < 600
7 syntax clear
8elseif exists("b:current_syntax")
9 finish
10endif
11
12syn case match
13
Dan Gohman29ad9bf2009-01-04 23:09:38 +000014" Types.
15" Types also include struct, array, vector, etc. but these don't
16" benefit as much from having dedicated highlighting rules.
Benjamin Kramer65e7c662012-12-02 16:40:38 +000017syn keyword llvmType void half float double x86_fp80 fp128 ppc_fp128
18syn keyword llvmType label metadata x86_mmx
Manuel Jacob5ced9092015-12-28 19:51:04 +000019syn keyword llvmType type label opaque token
Dan Gohmand63d9fe2008-01-29 12:35:50 +000020syn match llvmType /\<i\d\+\>/
Nick Hildenbrandt37e690a2002-10-07 22:54:48 +000021
Dan Gohman29ad9bf2009-01-04 23:09:38 +000022" 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.
Matt Arsenaultb03bd4d2013-11-15 01:34:59 +000025syn keyword llvmStatement add addrspacecast alloca and arcp ashr atomicrmw
David Majnemer982ab5d2016-08-09 18:34:19 +000026syn keyword llvmStatement bitcast br catchpad catchswitch catchret call
27syn keyword llvmStatement cleanuppad cleanupret cmpxchg eq exact extractelement
Matt Arsenaultb03bd4d2013-11-15 01:34:59 +000028syn keyword llvmStatement extractvalue fadd fast fcmp fdiv fence fmul fpext
29syn keyword llvmStatement fptosi fptoui fptrunc free frem fsub getelementptr
30syn keyword llvmStatement icmp inbounds indirectbr insertelement insertvalue
31syn keyword llvmStatement inttoptr invoke landingpad load lshr malloc max min
32syn keyword llvmStatement mul nand ne ninf nnan nsw nsz nuw oeq oge ogt ole
33syn keyword llvmStatement olt one or ord phi ptrtoint resume ret sdiv select
34syn keyword llvmStatement sext sge sgt shl shufflevector sitofp sle slt srem
35syn keyword llvmStatement store sub switch trunc udiv ueq uge ugt uitofp ule ult
36syn keyword llvmStatement umax umin une uno unreachable unwind urem va_arg
37syn keyword llvmStatement xchg xor zext
Nick Hildenbrandt37e690a2002-10-07 22:54:48 +000038
Dan Gohman29ad9bf2009-01-04 23:09:38 +000039" Keywords.
Saleem Abdulrasoolb21e7832016-07-13 03:47:58 +000040syn keyword llvmKeyword
41 \ acq_rel
42 \ acquire
43 \ addrspace
44 \ alias
45 \ align
46 \ alignstack
47 \ alwaysinline
48 \ appending
David Majnemer31241812016-08-11 21:14:05 +000049 \ argmemonly
Saleem Abdulrasoolb21e7832016-07-13 03:47:58 +000050 \ arm_aapcscc
51 \ arm_aapcs_vfpcc
52 \ arm_apcscc
53 \ asm
54 \ atomic
55 \ available_externally
56 \ blockaddress
57 \ byval
58 \ c
59 \ catch
David Majnemer982ab5d2016-08-09 18:34:19 +000060 \ caller
Saleem Abdulrasoolb21e7832016-07-13 03:47:58 +000061 \ cc
62 \ ccc
63 \ cleanup
64 \ coldcc
Saleem Abdulrasool8ef21702016-10-14 19:48:31 +000065 \ comdat
Saleem Abdulrasoolb21e7832016-07-13 03:47:58 +000066 \ common
67 \ constant
68 \ datalayout
69 \ declare
70 \ default
71 \ define
72 \ deplibs
David Majnemer982ab5d2016-08-09 18:34:19 +000073 \ dereferenceable
Saleem Abdulrasoolb21e7832016-07-13 03:47:58 +000074 \ distinct
75 \ dllexport
76 \ dllimport
77 \ except
78 \ external
79 \ externally_initialized
80 \ extern_weak
81 \ fastcc
82 \ filter
David Majnemer982ab5d2016-08-09 18:34:19 +000083 \ from
Saleem Abdulrasoolb21e7832016-07-13 03:47:58 +000084 \ gc
85 \ global
86 \ hhvmcc
87 \ hhvm_ccc
88 \ hidden
89 \ initialexec
90 \ inlinehint
91 \ inreg
92 \ inteldialect
93 \ intel_ocl_bicc
94 \ internal
95 \ linkonce
96 \ linkonce_odr
97 \ localdynamic
98 \ localexec
99 \ local_unnamed_addr
100 \ minsize
101 \ module
102 \ monotonic
103 \ msp430_intrcc
104 \ musttail
105 \ naked
106 \ nest
107 \ noalias
108 \ nocapture
109 \ noimplicitfloat
110 \ noinline
111 \ nonlazybind
Saleem Abdulrasoolf1b1bfa2016-10-14 19:48:34 +0000112 \ norecurse
Saleem Abdulrasoolb21e7832016-07-13 03:47:58 +0000113 \ noredzone
114 \ noreturn
115 \ nounwind
116 \ optnone
117 \ optsize
118 \ personality
119 \ private
120 \ protected
121 \ ptx_device
122 \ ptx_kernel
123 \ readnone
124 \ readonly
125 \ release
126 \ returns_twice
127 \ sanitize_address
128 \ sanitize_memory
129 \ sanitize_thread
130 \ section
131 \ seq_cst
132 \ sideeffect
133 \ signext
134 \ singlethread
135 \ source_filename
136 \ spir_func
137 \ spir_kernel
138 \ sret
139 \ ssp
140 \ sspreq
141 \ sspstrong
142 \ swiftcc
143 \ tail
144 \ target
145 \ thread_local
146 \ to
147 \ triple
148 \ unnamed_addr
149 \ unordered
150 \ uselistorder
151 \ uselistorder_bb
152 \ uwtable
153 \ volatile
154 \ weak
155 \ weak_odr
David Majnemer982ab5d2016-08-09 18:34:19 +0000156 \ within
David Majnemer31241812016-08-11 21:14:05 +0000157 \ writeonly
Saleem Abdulrasoolb21e7832016-07-13 03:47:58 +0000158 \ x86_64_sysvcc
159 \ x86_64_win64cc
160 \ x86_fastcallcc
161 \ x86_stdcallcc
162 \ x86_thiscallcc
163 \ zeroext
Nick Hildenbrandt37e690a2002-10-07 22:54:48 +0000164
Dan Gohman29ad9bf2009-01-04 23:09:38 +0000165" Obsolete keywords.
Dan Gohmand13b1a32010-08-28 20:14:05 +0000166syn keyword llvmError getresult begin end
Nick Hildenbrandt37e690a2002-10-07 22:54:48 +0000167
Dan Gohman29ad9bf2009-01-04 23:09:38 +0000168" Misc syntax.
Duncan P. N. Exon Smith6a484832015-01-13 21:10:44 +0000169syn match llvmNoName /[%@!]\d\+\>/
Dan Gohman29ad9bf2009-01-04 23:09:38 +0000170syn match llvmNumber /-\?\<\d\+\>/
171syn match llvmFloat /-\?\<\d\+\.\d*\(e[+-]\d\+\)\?\>/
172syn match llvmFloat /\<0x\x\+\>/
173syn keyword llvmBoolean true false
David Majnemer982ab5d2016-08-09 18:34:19 +0000174syn keyword llvmConstant zeroinitializer undef null none
Dan Gohman29ad9bf2009-01-04 23:09:38 +0000175syn match llvmComment /;.*$/
176syn region llvmString start=/"/ skip=/\\"/ end=/"/
Dan Gohman62f05b22010-01-09 17:22:48 +0000177syn match llvmLabel /[-a-zA-Z$._][-a-zA-Z$._0-9]*:/
178syn match llvmIdentifier /[%@][-a-zA-Z$._][-a-zA-Z$._0-9]*/
Dan Gohman29ad9bf2009-01-04 23:09:38 +0000179
Duncan P. N. Exon Smith6a484832015-01-13 21:10:44 +0000180" Named metadata and specialized metadata keywords.
181syn match llvmIdentifier /![-a-zA-Z$._][-a-zA-Z$._0-9]*\ze\s*$/
182syn match llvmIdentifier /![-a-zA-Z$._][-a-zA-Z$._0-9]*\ze\s*[=!]/
183syn match llvmType /!\zs\a\+\ze\s*(/
Duncan P. N. Exon Smith97486072015-02-03 21:56:01 +0000184syn match llvmConstant /\<DW_TAG_[a-z_]\+\>/
Duncan P. N. Exon Smithcd6636c2015-02-13 01:17:35 +0000185syn match llvmConstant /\<DW_ATE_[a-zA-Z_]\+\>/
Duncan P. N. Exon Smith0c5c0122015-02-13 01:42:09 +0000186syn match llvmConstant /\<DW_OP_[a-zA-Z0-9_]\+\>/
Duncan P. N. Exon Smithaece2dc2015-02-13 01:21:25 +0000187syn match llvmConstant /\<DW_LANG_[a-zA-Z0-9_]\+\>/
Duncan P. N. Exon Smith890533e2015-02-13 01:28:16 +0000188syn match llvmConstant /\<DW_VIRTUALITY_[a-z_]\+\>/
Duncan P. N. Exon Smith70ab3d22015-02-21 01:02:18 +0000189syn match llvmConstant /\<DIFlag[A-Za-z]\+\>/
Duncan P. N. Exon Smith6a484832015-01-13 21:10:44 +0000190
Chandler Carruth60ec79e2015-07-15 01:48:40 +0000191" Syntax-highlight lit test commands and bug numbers.
Dan Gohman29ad9bf2009-01-04 23:09:38 +0000192syn match llvmSpecialComment /;\s*PR\d*\s*$/
Chandler Carruth60ec79e2015-07-15 01:48:40 +0000193syn match llvmSpecialComment /;\s*REQUIRES:.*$/
194syn match llvmSpecialComment /;\s*RUN:.*$/
Saleem Abdulrasoola25f90d2016-11-03 15:56:06 +0000195syn match llvmSpecialComment /;\s*CHECK:.*$/
Dan Gohman29ad9bf2009-01-04 23:09:38 +0000196syn match llvmSpecialComment /;\s*XFAIL:.*$/
Nick Hildenbrandt37e690a2002-10-07 22:54:48 +0000197
198if version >= 508 || !exists("did_c_syn_inits")
199 if version < 508
200 let did_c_syn_inits = 1
201 command -nargs=+ HiLink hi link <args>
202 else
203 command -nargs=+ HiLink hi def link <args>
204 endif
205
206 HiLink llvmType Type
207 HiLink llvmStatement Statement
208 HiLink llvmNumber Number
209 HiLink llvmComment Comment
210 HiLink llvmString String
211 HiLink llvmLabel Label
Dan Gohman29ad9bf2009-01-04 23:09:38 +0000212 HiLink llvmKeyword Keyword
213 HiLink llvmBoolean Boolean
214 HiLink llvmFloat Float
Owen Andersonb2c657c2010-07-29 17:57:57 +0000215 HiLink llvmNoName Identifier
Dan Gohman29ad9bf2009-01-04 23:09:38 +0000216 HiLink llvmConstant Constant
217 HiLink llvmSpecialComment SpecialComment
218 HiLink llvmError Error
Dan Gohman62f05b22010-01-09 17:22:48 +0000219 HiLink llvmIdentifier Identifier
Nick Hildenbrandt37e690a2002-10-07 22:54:48 +0000220
221 delcommand HiLink
222endif
Misha Brukmanac7b4562009-01-02 16:26:14 +0000223
Nick Hildenbrandt37e690a2002-10-07 22:54:48 +0000224let b:current_syntax = "llvm"