blob: a51e5e623c8607808c51a7bc5b947cb42fee2f3e [file] [log] [blame]
Dan Gohmanf17a25c2007-07-18 16:29:46 +00001" Vim syntax file
2" Language: llvm
3" Maintainer: The LLVM team, http://llvm.org/
Dan Gohmanf17a25c2007-07-18 16:29:46 +00004
5if version < 600
6 syntax clear
7elseif exists("b:current_syntax")
8 finish
9endif
10
11syn case match
12
Dan Gohman9e4ccba2009-01-04 23:09:38 +000013" Types.
14" Types also include struct, array, vector, etc. but these don't
15" benefit as much from having dedicated highlighting rules.
Dan Gohmancac50b92008-01-29 12:35:50 +000016syn keyword llvmType void float double
17syn keyword llvmType x86_fp80 fp128 ppc_fp128
Dan Gohmanf17a25c2007-07-18 16:29:46 +000018syn keyword llvmType type label opaque
Dan Gohmancac50b92008-01-29 12:35:50 +000019syn match llvmType /\<i\d\+\>/
Dan Gohmanf17a25c2007-07-18 16:29:46 +000020
Dan Gohman9e4ccba2009-01-04 23:09:38 +000021" Instructions.
22" The true and false tokens can be used for comparison opcodes, but it's
23" much more common for these tokens to be used for boolean constants.
Dan Gohman7ce405e2009-06-04 22:49:04 +000024syn keyword llvmStatement add fadd sub fsub mul fmul
25syn keyword llvmStatement sdiv udiv fdiv srem urem frem
Dan Gohmanf17a25c2007-07-18 16:29:46 +000026syn keyword llvmStatement and or xor
Dan Gohmancac50b92008-01-29 12:35:50 +000027syn keyword llvmStatement icmp fcmp
28syn keyword llvmStatement eq ne ugt uge ult ule sgt sge slt sle
Dan Gohman9e4ccba2009-01-04 23:09:38 +000029syn keyword llvmStatement oeq ogt oge olt ole one ord ueq ugt uge
30syn keyword llvmStatement ult ule une uno
Dan Gohmana690e592009-07-27 21:54:51 +000031syn keyword llvmStatement nuw nsw exact inbounds
Dan Gohman9e4ccba2009-01-04 23:09:38 +000032syn keyword llvmStatement phi call select shl lshr ashr va_arg
Dan Gohmancac50b92008-01-29 12:35:50 +000033syn keyword llvmStatement trunc zext sext
34syn keyword llvmStatement fptrunc fpext fptoui fptosi uitofp sitofp
35syn keyword llvmStatement ptrtoint inttoptr bitcast
Dan Gohman41335ea2009-10-29 00:14:44 +000036syn keyword llvmStatement ret br indirectbr switch invoke unwind unreachable
Dan Gohmanf17a25c2007-07-18 16:29:46 +000037syn keyword llvmStatement malloc alloca free load store getelementptr
Dan Gohmancac50b92008-01-29 12:35:50 +000038syn keyword llvmStatement extractelement insertelement shufflevector
Dan Gohman9e4ccba2009-01-04 23:09:38 +000039syn keyword llvmStatement extractvalue insertvalue
Dan Gohmanf17a25c2007-07-18 16:29:46 +000040
Dan Gohman9e4ccba2009-01-04 23:09:38 +000041" Keywords.
42syn keyword llvmKeyword define declare global constant
Dan Gohman62cd1142009-07-17 01:06:53 +000043syn keyword llvmKeyword internal external private
Duncan Sands19d161f2009-03-07 15:45:40 +000044syn keyword llvmKeyword linkonce linkonce_odr weak weak_odr appending
Duncan Sandsb95df792009-03-11 20:14:15 +000045syn keyword llvmKeyword common extern_weak
Dan Gohman9e4ccba2009-01-04 23:09:38 +000046syn keyword llvmKeyword thread_local dllimport dllexport
Dan Gohman00757882009-01-05 17:44:11 +000047syn keyword llvmKeyword hidden protected default
Dan Gohman9e4ccba2009-01-04 23:09:38 +000048syn keyword llvmKeyword except deplibs
49syn keyword llvmKeyword volatile fastcc coldcc cc ccc
50syn keyword llvmKeyword x86_stdcallcc x86_fastcallcc
51syn keyword llvmKeyword signext zeroext inreg sret nounwind noreturn
Dan Gohman60c11232009-08-05 16:38:48 +000052syn keyword llvmKeyword nocapture byval nest readnone readonly noalias
Jakob Stoklund Olesen77180732010-02-06 01:16:28 +000053syn keyword llvmKeyword inlinehint noinline alwaysinline optsize ssp sspreq
Dan Gohmana7ce6dd2010-02-26 21:16:17 +000054syn keyword llvmKeyword noredzone noimplicitfloat naked alignstack
Dan Gohman9e4ccba2009-01-04 23:09:38 +000055syn keyword llvmKeyword module asm align tail to
Dan Gohmanf9f80b12009-01-05 03:22:02 +000056syn keyword llvmKeyword addrspace section alias sideeffect c gc
Dan Gohman9e4ccba2009-01-04 23:09:38 +000057syn keyword llvmKeyword target datalayout triple
Dan Gohman41335ea2009-10-29 00:14:44 +000058syn keyword llvmKeyword blockaddress
Dan Gohman45f45472010-02-25 18:17:58 +000059syn keyword llvmKeyword union
Dan Gohmanf17a25c2007-07-18 16:29:46 +000060
Dan Gohman9e4ccba2009-01-04 23:09:38 +000061" Obsolete keywords.
62syn keyword llvmError uninitialized implementation
Dan Gohmanf9f80b12009-01-05 03:22:02 +000063syn keyword llvmError getresult big little endian begin end
Dan Gohmanf17a25c2007-07-18 16:29:46 +000064
Dan Gohman9e4ccba2009-01-04 23:09:38 +000065" Misc syntax.
66syn match llvmIgnore /[%@]\d\+\>/
67syn match llvmNumber /-\?\<\d\+\>/
68syn match llvmFloat /-\?\<\d\+\.\d*\(e[+-]\d\+\)\?\>/
69syn match llvmFloat /\<0x\x\+\>/
70syn keyword llvmBoolean true false
71syn keyword llvmConstant zeroinitializer undef null
72syn match llvmComment /;.*$/
73syn region llvmString start=/"/ skip=/\\"/ end=/"/
Dan Gohman77e68f52010-01-09 17:22:48 +000074syn match llvmLabel /[-a-zA-Z$._][-a-zA-Z$._0-9]*:/
75syn match llvmIdentifier /[%@][-a-zA-Z$._][-a-zA-Z$._0-9]*/
Dan Gohman9e4ccba2009-01-04 23:09:38 +000076
77" Syntax-highlight dejagnu test commands.
78syn match llvmSpecialComment /;\s*RUN:.*$/
79syn match llvmSpecialComment /;\s*PR\d*\s*$/
80syn match llvmSpecialComment /;\s*END\.\s*$/
81syn match llvmSpecialComment /;\s*XFAIL:.*$/
82syn match llvmSpecialComment /;\s*XTARGET:.*$/
Dan Gohmanf17a25c2007-07-18 16:29:46 +000083
84if version >= 508 || !exists("did_c_syn_inits")
85 if version < 508
86 let did_c_syn_inits = 1
87 command -nargs=+ HiLink hi link <args>
88 else
89 command -nargs=+ HiLink hi def link <args>
90 endif
91
92 HiLink llvmType Type
93 HiLink llvmStatement Statement
94 HiLink llvmNumber Number
95 HiLink llvmComment Comment
96 HiLink llvmString String
97 HiLink llvmLabel Label
Dan Gohman9e4ccba2009-01-04 23:09:38 +000098 HiLink llvmKeyword Keyword
99 HiLink llvmBoolean Boolean
100 HiLink llvmFloat Float
101 HiLink llvmIgnore Ignore
102 HiLink llvmConstant Constant
103 HiLink llvmSpecialComment SpecialComment
104 HiLink llvmError Error
Dan Gohman77e68f52010-01-09 17:22:48 +0000105 HiLink llvmIdentifier Identifier
Dan Gohmanf17a25c2007-07-18 16:29:46 +0000106
107 delcommand HiLink
108endif
Misha Brukmanb701a472009-01-02 16:26:14 +0000109
Dan Gohmanf17a25c2007-07-18 16:29:46 +0000110let b:current_syntax = "llvm"