175f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandt" Vim syntax file
25981d788f22930083e1f1172b7ba9b75cbe68e5cMisha Brukman" Language:   llvm
39dce2b33807f47d794b0482313ae3fe0d275c833Reid Spencer" Maintainer: The LLVM team, http://llvm.org/
47b14fc211c349bb16dd19c71e150e4309c2778d6Dan Gohman" Version:      $Revision$
575f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandt
675f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandtif version < 600
775f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandt  syntax clear
875f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandtelseif exists("b:current_syntax")
975f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandt  finish
1075f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandtendif
1175f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandt
1275f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandtsyn case match
1375f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandt
145d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohman" Types.
155d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohman" Types also include struct, array, vector, etc. but these don't
165d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohman" benefit as much from having dedicated highlighting rules.
170e9dfb0900fefc10d006b6b804597800e267a86bDan Gohmansyn keyword llvmType void float double
180e9dfb0900fefc10d006b6b804597800e267a86bDan Gohmansyn keyword llvmType x86_fp80 fp128 ppc_fp128
1975f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandtsyn keyword llvmType type label opaque
200e9dfb0900fefc10d006b6b804597800e267a86bDan Gohmansyn match   llvmType /\<i\d\+\>/
2175f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandt
225d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohman" Instructions.
235d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohman" The true and false tokens can be used for comparison opcodes, but it's
245d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohman" much more common for these tokens to be used for boolean constants.
25ae3a0be92e33bc716722aa600983fc1535acb122Dan Gohmansyn keyword llvmStatement add fadd sub fsub mul fmul
26ae3a0be92e33bc716722aa600983fc1535acb122Dan Gohmansyn keyword llvmStatement sdiv udiv fdiv srem urem frem
2775f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandtsyn keyword llvmStatement and or xor
280e9dfb0900fefc10d006b6b804597800e267a86bDan Gohmansyn keyword llvmStatement icmp fcmp
290e9dfb0900fefc10d006b6b804597800e267a86bDan Gohmansyn keyword llvmStatement eq ne ugt uge ult ule sgt sge slt sle
305d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohmansyn keyword llvmStatement oeq ogt oge olt ole one ord ueq ugt uge
315d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohmansyn keyword llvmStatement ult ule une uno
32d5c947022d7bb0b2bf330998e9c4eff941e0f899Dan Gohmansyn keyword llvmStatement nuw nsw exact inbounds
335d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohmansyn keyword llvmStatement phi call select shl lshr ashr va_arg
340e9dfb0900fefc10d006b6b804597800e267a86bDan Gohmansyn keyword llvmStatement trunc zext sext
350e9dfb0900fefc10d006b6b804597800e267a86bDan Gohmansyn keyword llvmStatement fptrunc fpext fptoui fptosi uitofp sitofp
360e9dfb0900fefc10d006b6b804597800e267a86bDan Gohmansyn keyword llvmStatement ptrtoint inttoptr bitcast
376b3bd7bbde5f5be727351dfe1ecf1a0ba1e12a00Dan Gohmansyn keyword llvmStatement ret br indirectbr switch invoke unwind unreachable
3875f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandtsyn keyword llvmStatement malloc alloca free load store getelementptr
390e9dfb0900fefc10d006b6b804597800e267a86bDan Gohmansyn keyword llvmStatement extractelement insertelement shufflevector
405d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohmansyn keyword llvmStatement extractvalue insertvalue
415d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohman
425d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohman" Keywords.
435d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohmansyn keyword llvmKeyword define declare global constant
4421de024b909a3f2c8b120dd65bc14efba68f919fDan Gohmansyn keyword llvmKeyword internal external private
45667d4b8de6dea70195ff12ef39a4deebffa2f5c7Duncan Sandssyn keyword llvmKeyword linkonce linkonce_odr weak weak_odr appending
464dc2b39bf89d7c87868008ef8a0f807e0419aca6Duncan Sandssyn keyword llvmKeyword common extern_weak
475d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohmansyn keyword llvmKeyword thread_local dllimport dllexport
481ed7942e4f374b8a5ef575b4f25fc097b3f97f0eDan Gohmansyn keyword llvmKeyword hidden protected default
495d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohmansyn keyword llvmKeyword except deplibs
505d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohmansyn keyword llvmKeyword volatile fastcc coldcc cc ccc
515d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohmansyn keyword llvmKeyword x86_stdcallcc x86_fastcallcc
52f9930da2ef72350c6c805af09e754e4e6e13d47bChe-Liang Chiousyn keyword llvmKeyword ptx_kernel ptx_device
535d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohmansyn keyword llvmKeyword signext zeroext inreg sret nounwind noreturn
5423e9ef994ee390060e0630e8b4db85abe4e671fdBruno Cardoso Lopessyn keyword llvmKeyword nocapture byval nest readnone readonly noalias uwtable
55570a4a5d9ca31f276a67502d1e0533d59d331feaJakob Stoklund Olesensyn keyword llvmKeyword inlinehint noinline alwaysinline optsize ssp sspreq
5679073e3ea05beb4f647cc82567723ed0246e1119Dan Gohmansyn keyword llvmKeyword noredzone noimplicitfloat naked alignstack
575d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohmansyn keyword llvmKeyword module asm align tail to
586a9e75ec137a1da570ff486f2d255d9f915d2bd3Dan Gohmansyn keyword llvmKeyword addrspace section alias sideeffect c gc
595d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohmansyn keyword llvmKeyword target datalayout triple
606b3bd7bbde5f5be727351dfe1ecf1a0ba1e12a00Dan Gohmansyn keyword llvmKeyword blockaddress
6175f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandt
625d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohman" Obsolete keywords.
63245ae51dce549380182e269d11e56f118e3ce0c2Dan Gohmansyn keyword llvmError  getresult begin end
6475f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandt
655d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohman" Misc syntax.
662a5892fe664161cdbb84bc3640812f21b5ff62d2Owen Andersonsyn match   llvmNoName /[%@]\d\+\>/
675d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohmansyn match   llvmNumber /-\?\<\d\+\>/
685d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohmansyn match   llvmFloat  /-\?\<\d\+\.\d*\(e[+-]\d\+\)\?\>/
695d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohmansyn match   llvmFloat  /\<0x\x\+\>/
705d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohmansyn keyword llvmBoolean true false
715d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohmansyn keyword llvmConstant zeroinitializer undef null
725d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohmansyn match   llvmComment /;.*$/
735d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohmansyn region  llvmString start=/"/ skip=/\\"/ end=/"/
747a523dde57cc4364ec314b34c3b429a99935b275Dan Gohmansyn match   llvmLabel /[-a-zA-Z$._][-a-zA-Z$._0-9]*:/
757a523dde57cc4364ec314b34c3b429a99935b275Dan Gohmansyn match   llvmIdentifier /[%@][-a-zA-Z$._][-a-zA-Z$._0-9]*/
7675f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandt
775d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohman" Syntax-highlight dejagnu test commands.
785d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohmansyn match  llvmSpecialComment /;\s*RUN:.*$/
795d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohmansyn match  llvmSpecialComment /;\s*PR\d*\s*$/
805d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohmansyn match  llvmSpecialComment /;\s*END\.\s*$/
815d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohmansyn match  llvmSpecialComment /;\s*XFAIL:.*$/
825d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohmansyn match  llvmSpecialComment /;\s*XTARGET:.*$/
8375f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandt
8475f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandtif version >= 508 || !exists("did_c_syn_inits")
8575f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandt  if version < 508
8675f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandt    let did_c_syn_inits = 1
8775f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandt    command -nargs=+ HiLink hi link <args>
8875f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandt  else
8975f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandt    command -nargs=+ HiLink hi def link <args>
9075f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandt  endif
9175f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandt
9275f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandt  HiLink llvmType Type
9375f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandt  HiLink llvmStatement Statement
9475f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandt  HiLink llvmNumber Number
9575f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandt  HiLink llvmComment Comment
9675f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandt  HiLink llvmString String
9775f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandt  HiLink llvmLabel Label
985d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohman  HiLink llvmKeyword Keyword
995d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohman  HiLink llvmBoolean Boolean
1005d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohman  HiLink llvmFloat Float
1012a5892fe664161cdbb84bc3640812f21b5ff62d2Owen Anderson  HiLink llvmNoName Identifier
1025d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohman  HiLink llvmConstant Constant
1035d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohman  HiLink llvmSpecialComment SpecialComment
1045d8ab65ea44c29747a6f31d9442ff3f4f25d8129Dan Gohman  HiLink llvmError Error
1057a523dde57cc4364ec314b34c3b429a99935b275Dan Gohman  HiLink llvmIdentifier Identifier
10675f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandt
10775f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandt  delcommand HiLink
10875f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandtendif
109adf4e4d06ac5bbb7e7b30ae481995e58133bc5f2Misha Brukman
11075f79b9b0ec0ec9807ce4b4b0a802c20c91e896bNick Hildenbrandtlet b:current_syntax = "llvm"
111