blob: b878da471c50081898f0240cdc82a1bb7e26b50f [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/
Misha Brukmand8acf7c2003-06-03 00:56:09 +00004" Updated: 2003-06-02
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 Gohmand63d9fe2008-01-29 12:35:50 +000014syn keyword llvmType void float double
15syn keyword llvmType x86_fp80 fp128 ppc_fp128
Nick Hildenbrandt37e690a2002-10-07 22:54:48 +000016syn keyword llvmType type label opaque
Dan Gohmand63d9fe2008-01-29 12:35:50 +000017syn match llvmType /\<i\d\+\>/
Nick Hildenbrandt37e690a2002-10-07 22:54:48 +000018
Dan Gohmand63d9fe2008-01-29 12:35:50 +000019syn keyword llvmStatement add sub mul sdiv udiv fdiv srem urem frem
Nick Hildenbrandt37e690a2002-10-07 22:54:48 +000020syn keyword llvmStatement and or xor
Dan Gohmand63d9fe2008-01-29 12:35:50 +000021syn keyword llvmStatement icmp fcmp
22syn keyword llvmStatement eq ne ugt uge ult ule sgt sge slt sle
23syn keyword llvmStatement false oeq ogt oge olt ole one ord ueq ugt uge
24syn keyword llvmStatement ult ule une uno true
Nick Hildenbrandt37e690a2002-10-07 22:54:48 +000025
Dan Gohmand63d9fe2008-01-29 12:35:50 +000026syn keyword llvmStatement phi tail call to select shl lshr ashr va_arg
27syn keyword llvmStatement trunc zext sext
28syn keyword llvmStatement fptrunc fpext fptoui fptosi uitofp sitofp
29syn keyword llvmStatement ptrtoint inttoptr bitcast
Chris Lattner5a02a3e2004-10-16 18:24:35 +000030syn keyword llvmStatement ret br switch invoke unwind unreachable
Nick Hildenbrandt37e690a2002-10-07 22:54:48 +000031syn keyword llvmStatement malloc alloca free load store getelementptr
32
Dan Gohmand63d9fe2008-01-29 12:35:50 +000033syn keyword llvmStatement true false zeroinitializer
34syn keyword llvmStatement define declare global constant const
Chris Lattner1d647ae2003-04-16 20:25:57 +000035syn keyword llvmStatement internal uninitialized external implementation
Chris Lattner9865db12003-10-10 04:56:26 +000036syn keyword llvmStatement linkonce weak appending
Dan Gohmand63d9fe2008-01-29 12:35:50 +000037syn keyword llvmStatement undef null to except target datalayout triple deplibs
Chris Lattnere4df5e42005-05-13 20:40:52 +000038syn keyword llvmStatement big little volatile fastcc coldcc cc
Dan Gohmand63d9fe2008-01-29 12:35:50 +000039syn keyword llvmStatement extractelement insertelement shufflevector
40syn keyword llvmStatement module asm align
Nick Hildenbrandt37e690a2002-10-07 22:54:48 +000041
42"syn match llvmFunction /%[a-zA-Z\$._\-][a-zA-Z\$._\-0-9]*/
Misha Brukmand8acf7c2003-06-03 00:56:09 +000043syn match llvmNumber /\<\d\+\>/
44syn match llvmNumber /\<\d\+\.\d*\>/
Nick Hildenbrandt37e690a2002-10-07 22:54:48 +000045
Misha Brukmand8acf7c2003-06-03 00:56:09 +000046syn match llvmComment /;.*$/
Nick Hildenbrandt37e690a2002-10-07 22:54:48 +000047syn region llvmString start=/"/ skip=/\\"/ end=/"/
Misha Brukmand8acf7c2003-06-03 00:56:09 +000048syn match llvmLabel /[\-a-zA-Z\$._0-9]*:/
Nick Hildenbrandt37e690a2002-10-07 22:54:48 +000049
50
51if version >= 508 || !exists("did_c_syn_inits")
52 if version < 508
53 let did_c_syn_inits = 1
54 command -nargs=+ HiLink hi link <args>
55 else
56 command -nargs=+ HiLink hi def link <args>
57 endif
58
59 HiLink llvmType Type
60 HiLink llvmStatement Statement
61 HiLink llvmNumber Number
62 HiLink llvmComment Comment
63 HiLink llvmString String
64 HiLink llvmLabel Label
65
66 delcommand HiLink
67endif
68
69let b:current_syntax = "llvm"