blob: 28ab2e3d7aaa8a17a9c15eb09e587987bb8331e0 [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.
Dan Gohman0e9dfb02008-01-29 12:35:50 +000017syn keyword llvmType void float double
18syn keyword llvmType x86_fp80 fp128 ppc_fp128
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.
Dan Gohmanae3a0be2009-06-04 22:49:04 +000025syn keyword llvmStatement add fadd sub fsub mul fmul
26syn keyword llvmStatement sdiv udiv fdiv srem urem frem
Nick Hildenbrandt75f79b92002-10-07 22:54:48 +000027syn keyword llvmStatement and or xor
Dan Gohman0e9dfb02008-01-29 12:35:50 +000028syn keyword llvmStatement icmp fcmp
29syn keyword llvmStatement eq ne ugt uge ult ule sgt sge slt sle
Dan Gohman5d8ab652009-01-04 23:09:38 +000030syn keyword llvmStatement oeq ogt oge olt ole one ord ueq ugt uge
31syn keyword llvmStatement ult ule une uno
Dan Gohmand5c94702009-07-27 21:54:51 +000032syn keyword llvmStatement nuw nsw exact inbounds
Dan Gohman5d8ab652009-01-04 23:09:38 +000033syn keyword llvmStatement phi call select shl lshr ashr va_arg
Dan Gohman0e9dfb02008-01-29 12:35:50 +000034syn keyword llvmStatement trunc zext sext
35syn keyword llvmStatement fptrunc fpext fptoui fptosi uitofp sitofp
36syn keyword llvmStatement ptrtoint inttoptr bitcast
Dan Gohman6b3bd7b2009-10-29 00:14:44 +000037syn keyword llvmStatement ret br indirectbr switch invoke unwind unreachable
Nick Hildenbrandt75f79b92002-10-07 22:54:48 +000038syn keyword llvmStatement malloc alloca free load store getelementptr
Dan Gohman0e9dfb02008-01-29 12:35:50 +000039syn keyword llvmStatement extractelement insertelement shufflevector
Dan Gohman5d8ab652009-01-04 23:09:38 +000040syn keyword llvmStatement extractvalue insertvalue
Nick Hildenbrandt75f79b92002-10-07 22:54:48 +000041
Dan Gohman5d8ab652009-01-04 23:09:38 +000042" Keywords.
43syn keyword llvmKeyword define declare global constant
Dan Gohman21de0242009-07-17 01:06:53 +000044syn keyword llvmKeyword internal external private
Duncan Sands667d4b82009-03-07 15:45:40 +000045syn keyword llvmKeyword linkonce linkonce_odr weak weak_odr appending
Duncan Sands4dc2b392009-03-11 20:14:15 +000046syn keyword llvmKeyword common extern_weak
Dan Gohman5d8ab652009-01-04 23:09:38 +000047syn keyword llvmKeyword thread_local dllimport dllexport
Dan Gohman1ed79422009-01-05 17:44:11 +000048syn keyword llvmKeyword hidden protected default
Dan Gohman5d8ab652009-01-04 23:09:38 +000049syn keyword llvmKeyword except deplibs
50syn keyword llvmKeyword volatile fastcc coldcc cc ccc
51syn keyword llvmKeyword x86_stdcallcc x86_fastcallcc
52syn keyword llvmKeyword signext zeroext inreg sret nounwind noreturn
Dan Gohmanb8281ca2009-08-05 16:38:48 +000053syn keyword llvmKeyword nocapture byval nest readnone readonly noalias
Jakob Stoklund Olesen570a4a52010-02-06 01:16:28 +000054syn keyword llvmKeyword inlinehint noinline alwaysinline optsize ssp sspreq
Dan Gohman79073e32010-02-26 21:16:17 +000055syn keyword llvmKeyword noredzone noimplicitfloat naked alignstack
Dan Gohman5d8ab652009-01-04 23:09:38 +000056syn keyword llvmKeyword module asm align tail to
Dan Gohman6a9e75e2009-01-05 03:22:02 +000057syn keyword llvmKeyword addrspace section alias sideeffect c gc
Dan Gohman5d8ab652009-01-04 23:09:38 +000058syn keyword llvmKeyword target datalayout triple
Dan Gohman6b3bd7b2009-10-29 00:14:44 +000059syn keyword llvmKeyword blockaddress
Nick Hildenbrandt75f79b92002-10-07 22:54:48 +000060
Dan Gohman5d8ab652009-01-04 23:09:38 +000061" Obsolete keywords.
Dan Gohman245ae512010-08-28 20:14:05 +000062syn keyword llvmError getresult begin end
Nick Hildenbrandt75f79b92002-10-07 22:54:48 +000063
Dan Gohman5d8ab652009-01-04 23:09:38 +000064" Misc syntax.
Owen Anderson2a5892f2010-07-29 17:57:57 +000065syn match llvmNoName /[%@]\d\+\>/
Dan Gohman5d8ab652009-01-04 23:09:38 +000066syn match llvmNumber /-\?\<\d\+\>/
67syn match llvmFloat /-\?\<\d\+\.\d*\(e[+-]\d\+\)\?\>/
68syn match llvmFloat /\<0x\x\+\>/
69syn keyword llvmBoolean true false
70syn keyword llvmConstant zeroinitializer undef null
71syn match llvmComment /;.*$/
72syn region llvmString start=/"/ skip=/\\"/ end=/"/
Dan Gohman7a523dd2010-01-09 17:22:48 +000073syn match llvmLabel /[-a-zA-Z$._][-a-zA-Z$._0-9]*:/
74syn match llvmIdentifier /[%@][-a-zA-Z$._][-a-zA-Z$._0-9]*/
Dan Gohman5d8ab652009-01-04 23:09:38 +000075
76" Syntax-highlight dejagnu test commands.
77syn match llvmSpecialComment /;\s*RUN:.*$/
78syn match llvmSpecialComment /;\s*PR\d*\s*$/
79syn match llvmSpecialComment /;\s*END\.\s*$/
80syn match llvmSpecialComment /;\s*XFAIL:.*$/
81syn match llvmSpecialComment /;\s*XTARGET:.*$/
Nick Hildenbrandt75f79b92002-10-07 22:54:48 +000082
83if version >= 508 || !exists("did_c_syn_inits")
84 if version < 508
85 let did_c_syn_inits = 1
86 command -nargs=+ HiLink hi link <args>
87 else
88 command -nargs=+ HiLink hi def link <args>
89 endif
90
91 HiLink llvmType Type
92 HiLink llvmStatement Statement
93 HiLink llvmNumber Number
94 HiLink llvmComment Comment
95 HiLink llvmString String
96 HiLink llvmLabel Label
Dan Gohman5d8ab652009-01-04 23:09:38 +000097 HiLink llvmKeyword Keyword
98 HiLink llvmBoolean Boolean
99 HiLink llvmFloat Float
Owen Anderson2a5892f2010-07-29 17:57:57 +0000100 HiLink llvmNoName Identifier
Dan Gohman5d8ab652009-01-04 23:09:38 +0000101 HiLink llvmConstant Constant
102 HiLink llvmSpecialComment SpecialComment
103 HiLink llvmError Error
Dan Gohman7a523dd2010-01-09 17:22:48 +0000104 HiLink llvmIdentifier Identifier
Nick Hildenbrandt75f79b92002-10-07 22:54:48 +0000105
106 delcommand HiLink
107endif
Misha Brukmanadf4e4d2009-01-02 16:26:14 +0000108
Nick Hildenbrandt75f79b92002-10-07 22:54:48 +0000109let b:current_syntax = "llvm"