blob: cea86eee5b3862e070c1732901a64fd2d57ec3d8 [file] [log] [blame]
Nick Hildenbrandt75f79b92002-10-07 22:54:48 +00001" Vim syntax file
Misha Brukman5981d782003-06-03 00:56:09 +00002" Language: llvm
Reid Spencer9dce2b32006-03-14 05:54:52 +00003" Maintainer: The LLVM team, http://llvm.org/
Dan Gohman7b14fc22010-02-26 21:38:04 +00004" Version: $Revision$
Nick Hildenbrandt75f79b92002-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 Gohman5d8ab652009-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 Kramerf39eab92012-12-02 16:40:38 +000017syn keyword llvmType void half float double x86_fp80 fp128 ppc_fp128
18syn keyword llvmType label metadata x86_mmx
Nick Hildenbrandt75f79b92002-10-07 22:54:48 +000019syn keyword llvmType type label opaque
Dan Gohman0e9dfb02008-01-29 12:35:50 +000020syn match llvmType /\<i\d\+\>/
Nick Hildenbrandt75f79b92002-10-07 22:54:48 +000021
Dan Gohman5d8ab652009-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.
Benjamin Kramerf39eab92012-12-02 16:40:38 +000025syn keyword llvmStatement add alloca and arcp ashr atomicrmw bitcast br call
26syn keyword llvmStatement cmpxchg eq exact extractelement extractvalue fadd fast
27syn keyword llvmStatement fcmp fdiv fence fmul fpext fptosi fptoui fptrunc free
28syn keyword llvmStatement frem fsub getelementptr icmp inbounds indirectbr
29syn keyword llvmStatement insertelement insertvalue inttoptr invoke landingpad
30syn keyword llvmStatement load lshr malloc max min mul nand ne ninf nnan nsw nsz
31syn keyword llvmStatement nuw oeq oge ogt ole olt one or ord phi ptrtoint resume
32syn keyword llvmStatement ret sdiv select sext sge sgt shl shufflevector sitofp
33syn keyword llvmStatement sle slt srem store sub switch trunc udiv ueq uge ugt
34syn keyword llvmStatement uitofp ule ult umax umin une uno unreachable unwind
35syn keyword llvmStatement urem va_arg xchg xor zext
Nick Hildenbrandt75f79b92002-10-07 22:54:48 +000036
Dan Gohman5d8ab652009-01-04 23:09:38 +000037" Keywords.
Benjamin Kramerf39eab92012-12-02 16:40:38 +000038syn keyword llvmKeyword acq_rel acquire address_safety addrspace alias align
39syn keyword llvmKeyword alignstack alwaysinline appending arm_aapcs_vfpcc
40syn keyword llvmKeyword arm_aapcscc arm_apcscc asm atomic available_externally
41syn keyword llvmKeyword blockaddress byval c catch cc ccc cleanup coldcc common
42syn keyword llvmKeyword constant datalayout declare default define deplibs
43syn keyword llvmKeyword dllexport dllimport except extern_weak external fastcc
44syn keyword llvmKeyword filter gc global hidden initialexec inlinehint inreg
45syn keyword llvmKeyword intel_ocl_bicc inteldialect internal linker_private
46syn keyword llvmKeyword linker_private_weak linker_private_weak_def_auto
47syn keyword llvmKeyword linkonce linkonce_odr linkonce_odr_auto_hide
48syn keyword llvmKeyword localdynamic localexec minsize module monotonic
49syn keyword llvmKeyword msp430_intrcc naked nest noalias nocapture
50syn keyword llvmKeyword noimplicitfloat noinline nonlazybind noredzone noreturn
51syn keyword llvmKeyword nounwind optsize personality private protected
52syn keyword llvmKeyword ptx_device ptx_kernel readnone readonly release
53syn keyword llvmKeyword returns_twice section seq_cst sideeffect signext
Bill Wendling114baee2013-01-23 06:41:41 +000054syn keyword llvmKeyword singlethread spir_func spir_kernel sret ssp sspreq
55syn keyword llvmKeyword sspstrong tail target thread_local to triple
56syn keyword llvmKeyword unnamed_addr unordered uwtable volatile weak weak_odr
57syn keyword llvmKeyword x86_fastcallcc x86_stdcallcc x86_thiscallcc zeroext
Nick Hildenbrandt75f79b92002-10-07 22:54:48 +000058
Dan Gohman5d8ab652009-01-04 23:09:38 +000059" Obsolete keywords.
Dan Gohman245ae512010-08-28 20:14:05 +000060syn keyword llvmError getresult begin end
Nick Hildenbrandt75f79b92002-10-07 22:54:48 +000061
Dan Gohman5d8ab652009-01-04 23:09:38 +000062" Misc syntax.
Owen Anderson2a5892f2010-07-29 17:57:57 +000063syn match llvmNoName /[%@]\d\+\>/
Dan Gohman5d8ab652009-01-04 23:09:38 +000064syn match llvmNumber /-\?\<\d\+\>/
65syn match llvmFloat /-\?\<\d\+\.\d*\(e[+-]\d\+\)\?\>/
66syn match llvmFloat /\<0x\x\+\>/
67syn keyword llvmBoolean true false
68syn keyword llvmConstant zeroinitializer undef null
69syn match llvmComment /;.*$/
70syn region llvmString start=/"/ skip=/\\"/ end=/"/
Dan Gohman7a523dd2010-01-09 17:22:48 +000071syn match llvmLabel /[-a-zA-Z$._][-a-zA-Z$._0-9]*:/
72syn match llvmIdentifier /[%@][-a-zA-Z$._][-a-zA-Z$._0-9]*/
Dan Gohman5d8ab652009-01-04 23:09:38 +000073
74" Syntax-highlight dejagnu test commands.
75syn match llvmSpecialComment /;\s*RUN:.*$/
76syn match llvmSpecialComment /;\s*PR\d*\s*$/
77syn match llvmSpecialComment /;\s*END\.\s*$/
78syn match llvmSpecialComment /;\s*XFAIL:.*$/
Nick Hildenbrandt75f79b92002-10-07 22:54:48 +000079
80if version >= 508 || !exists("did_c_syn_inits")
81 if version < 508
82 let did_c_syn_inits = 1
83 command -nargs=+ HiLink hi link <args>
84 else
85 command -nargs=+ HiLink hi def link <args>
86 endif
87
88 HiLink llvmType Type
89 HiLink llvmStatement Statement
90 HiLink llvmNumber Number
91 HiLink llvmComment Comment
92 HiLink llvmString String
93 HiLink llvmLabel Label
Dan Gohman5d8ab652009-01-04 23:09:38 +000094 HiLink llvmKeyword Keyword
95 HiLink llvmBoolean Boolean
96 HiLink llvmFloat Float
Owen Anderson2a5892f2010-07-29 17:57:57 +000097 HiLink llvmNoName Identifier
Dan Gohman5d8ab652009-01-04 23:09:38 +000098 HiLink llvmConstant Constant
99 HiLink llvmSpecialComment SpecialComment
100 HiLink llvmError Error
Dan Gohman7a523dd2010-01-09 17:22:48 +0000101 HiLink llvmIdentifier Identifier
Nick Hildenbrandt75f79b92002-10-07 22:54:48 +0000102
103 delcommand HiLink
104endif
Misha Brukmanadf4e4d2009-01-02 16:26:14 +0000105
Nick Hildenbrandt75f79b92002-10-07 22:54:48 +0000106let b:current_syntax = "llvm"