blob: 201d8ddddbebf11c9cef3b914f526939735b7429 [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/
4" Updated: 2003-06-02
5
6if version < 600
7 syntax clear
8elseif exists("b:current_syntax")
9 finish
10endif
11
12syn case match
13
Dan Gohman9e4ccba2009-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.
Dan Gohmancac50b92008-01-29 12:35:50 +000017syn keyword llvmType void float double
18syn keyword llvmType x86_fp80 fp128 ppc_fp128
Dan Gohmanf17a25c2007-07-18 16:29:46 +000019syn keyword llvmType type label opaque
Dan Gohmancac50b92008-01-29 12:35:50 +000020syn match llvmType /\<i\d\+\>/
Dan Gohmanf17a25c2007-07-18 16:29:46 +000021
Dan Gohman9e4ccba2009-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.
Dan Gohmancac50b92008-01-29 12:35:50 +000025syn keyword llvmStatement add sub mul 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
31syn keyword llvmStatement phi call select shl lshr ashr va_arg
Dan Gohmancac50b92008-01-29 12:35:50 +000032syn keyword llvmStatement trunc zext sext
33syn keyword llvmStatement fptrunc fpext fptoui fptosi uitofp sitofp
34syn keyword llvmStatement ptrtoint inttoptr bitcast
Dan Gohmanf17a25c2007-07-18 16:29:46 +000035syn keyword llvmStatement ret br switch invoke unwind unreachable
36syn keyword llvmStatement malloc alloca free load store getelementptr
Dan Gohmancac50b92008-01-29 12:35:50 +000037syn keyword llvmStatement extractelement insertelement shufflevector
Dan Gohman9e4ccba2009-01-04 23:09:38 +000038syn keyword llvmStatement extractvalue insertvalue
Dan Gohmanf17a25c2007-07-18 16:29:46 +000039
Dan Gohman9e4ccba2009-01-04 23:09:38 +000040" Keywords.
41syn keyword llvmKeyword define declare global constant
42syn keyword llvmKeyword internal external
Duncan Sands19d161f2009-03-07 15:45:40 +000043syn keyword llvmKeyword linkonce linkonce_odr weak weak_odr appending
Duncan Sandsb95df792009-03-11 20:14:15 +000044syn keyword llvmKeyword common extern_weak
Dan Gohman9e4ccba2009-01-04 23:09:38 +000045syn keyword llvmKeyword thread_local dllimport dllexport
Dan Gohman00757882009-01-05 17:44:11 +000046syn keyword llvmKeyword hidden protected default
Dan Gohman9e4ccba2009-01-04 23:09:38 +000047syn keyword llvmKeyword except deplibs
48syn keyword llvmKeyword volatile fastcc coldcc cc ccc
49syn keyword llvmKeyword x86_stdcallcc x86_fastcallcc
50syn keyword llvmKeyword signext zeroext inreg sret nounwind noreturn
51syn keyword llvmKeyword nocapture byval nest readnone readonly
52syn keyword llvmKeyword noinline alwaysinline optsize ssp sspreq
53syn keyword llvmKeyword module asm align tail to
Dan Gohmanf9f80b12009-01-05 03:22:02 +000054syn keyword llvmKeyword addrspace section alias sideeffect c gc
Dan Gohman9e4ccba2009-01-04 23:09:38 +000055syn keyword llvmKeyword target datalayout triple
Dan Gohmanf17a25c2007-07-18 16:29:46 +000056
Dan Gohman9e4ccba2009-01-04 23:09:38 +000057" Obsolete keywords.
58syn keyword llvmError uninitialized implementation
Dan Gohmanf9f80b12009-01-05 03:22:02 +000059syn keyword llvmError getresult big little endian begin end
Dan Gohmanf17a25c2007-07-18 16:29:46 +000060
Dan Gohman9e4ccba2009-01-04 23:09:38 +000061" Misc syntax.
62syn match llvmIgnore /[%@]\d\+\>/
63syn match llvmNumber /-\?\<\d\+\>/
64syn match llvmFloat /-\?\<\d\+\.\d*\(e[+-]\d\+\)\?\>/
65syn match llvmFloat /\<0x\x\+\>/
66syn keyword llvmBoolean true false
67syn keyword llvmConstant zeroinitializer undef null
68syn match llvmComment /;.*$/
69syn region llvmString start=/"/ skip=/\\"/ end=/"/
70syn match llvmLabel /[\-a-zA-Z\$._0-9]*:/
71
72" Syntax-highlight dejagnu test commands.
73syn match llvmSpecialComment /;\s*RUN:.*$/
74syn match llvmSpecialComment /;\s*PR\d*\s*$/
75syn match llvmSpecialComment /;\s*END\.\s*$/
76syn match llvmSpecialComment /;\s*XFAIL:.*$/
77syn match llvmSpecialComment /;\s*XTARGET:.*$/
Dan Gohmanf17a25c2007-07-18 16:29:46 +000078
79if version >= 508 || !exists("did_c_syn_inits")
80 if version < 508
81 let did_c_syn_inits = 1
82 command -nargs=+ HiLink hi link <args>
83 else
84 command -nargs=+ HiLink hi def link <args>
85 endif
86
87 HiLink llvmType Type
88 HiLink llvmStatement Statement
89 HiLink llvmNumber Number
90 HiLink llvmComment Comment
91 HiLink llvmString String
92 HiLink llvmLabel Label
Dan Gohman9e4ccba2009-01-04 23:09:38 +000093 HiLink llvmKeyword Keyword
94 HiLink llvmBoolean Boolean
95 HiLink llvmFloat Float
96 HiLink llvmIgnore Ignore
97 HiLink llvmConstant Constant
98 HiLink llvmSpecialComment SpecialComment
99 HiLink llvmError Error
Dan Gohmanf17a25c2007-07-18 16:29:46 +0000100
101 delcommand HiLink
102endif
Misha Brukmanb701a472009-01-02 16:26:14 +0000103
Dan Gohmanf17a25c2007-07-18 16:29:46 +0000104let b:current_syntax = "llvm"