|
|
@@ -0,0 +1,111 @@
|
|
|
+" Vim syntax file
|
|
|
+" Language: llvm
|
|
|
+" Filenames: *.ll
|
|
|
+" Maintainer: The LLVM team, http://llvm.org/
|
|
|
+" Version: $Revision: 137806 $
|
|
|
+
|
|
|
+if version < 600
|
|
|
+ syntax clear
|
|
|
+elseif exists("b:current_syntax")
|
|
|
+ finish
|
|
|
+endif
|
|
|
+
|
|
|
+syn case match
|
|
|
+
|
|
|
+" Types.
|
|
|
+" Types also include struct, array, vector, etc. but these don't
|
|
|
+" benefit as much from having dedicated highlighting rules.
|
|
|
+syn keyword llvmType void float double
|
|
|
+syn keyword llvmType x86_fp80 fp128 ppc_fp128
|
|
|
+syn keyword llvmType type label opaque
|
|
|
+syn match llvmType /\<i\d\+\>/
|
|
|
+
|
|
|
+" Instructions.
|
|
|
+" The true and false tokens can be used for comparison opcodes, but it's
|
|
|
+" much more common for these tokens to be used for boolean constants.
|
|
|
+syn keyword llvmStatement add fadd sub fsub mul fmul
|
|
|
+syn keyword llvmStatement sdiv udiv fdiv srem urem frem
|
|
|
+syn keyword llvmStatement and or xor
|
|
|
+syn keyword llvmStatement icmp fcmp
|
|
|
+syn keyword llvmStatement eq ne ugt uge ult ule sgt sge slt sle
|
|
|
+syn keyword llvmStatement oeq ogt oge olt ole one ord ueq ugt uge
|
|
|
+syn keyword llvmStatement ult ule une uno
|
|
|
+syn keyword llvmStatement nuw nsw exact inbounds
|
|
|
+syn keyword llvmStatement phi call select shl lshr ashr va_arg
|
|
|
+syn keyword llvmStatement trunc zext sext
|
|
|
+syn keyword llvmStatement fptrunc fpext fptoui fptosi uitofp sitofp
|
|
|
+syn keyword llvmStatement ptrtoint inttoptr bitcast
|
|
|
+syn keyword llvmStatement ret br indirectbr switch invoke unwind unreachable
|
|
|
+syn keyword llvmStatement malloc alloca free load store getelementptr
|
|
|
+syn keyword llvmStatement extractelement insertelement shufflevector
|
|
|
+syn keyword llvmStatement extractvalue insertvalue
|
|
|
+
|
|
|
+" Keywords.
|
|
|
+syn keyword llvmKeyword define declare global constant
|
|
|
+syn keyword llvmKeyword internal external private
|
|
|
+syn keyword llvmKeyword linkonce linkonce_odr weak weak_odr appending
|
|
|
+syn keyword llvmKeyword common extern_weak
|
|
|
+syn keyword llvmKeyword thread_local dllimport dllexport
|
|
|
+syn keyword llvmKeyword hidden protected default
|
|
|
+syn keyword llvmKeyword except deplibs
|
|
|
+syn keyword llvmKeyword volatile fastcc coldcc cc ccc
|
|
|
+syn keyword llvmKeyword x86_stdcallcc x86_fastcallcc
|
|
|
+syn keyword llvmKeyword ptx_kernel ptx_device
|
|
|
+syn keyword llvmKeyword signext zeroext inreg sret nounwind noreturn
|
|
|
+syn keyword llvmKeyword nocapture byval nest readnone readonly noalias uwtable
|
|
|
+syn keyword llvmKeyword inlinehint noinline alwaysinline optsize ssp sspreq
|
|
|
+syn keyword llvmKeyword noredzone noimplicitfloat naked alignstack
|
|
|
+syn keyword llvmKeyword module asm align tail to
|
|
|
+syn keyword llvmKeyword addrspace section alias sideeffect c gc
|
|
|
+syn keyword llvmKeyword target datalayout triple
|
|
|
+syn keyword llvmKeyword blockaddress
|
|
|
+
|
|
|
+" Obsolete keywords.
|
|
|
+syn keyword llvmError getresult begin end
|
|
|
+
|
|
|
+" Misc syntax.
|
|
|
+syn match llvmNoName /[%@]\d\+\>/
|
|
|
+syn match llvmNumber /-\?\<\d\+\>/
|
|
|
+syn match llvmFloat /-\?\<\d\+\.\d*\(e[+-]\d\+\)\?\>/
|
|
|
+syn match llvmFloat /\<0x\x\+\>/
|
|
|
+syn keyword llvmBoolean true false
|
|
|
+syn keyword llvmConstant zeroinitializer undef null
|
|
|
+syn match llvmComment /;.*$/ contains=@Spell
|
|
|
+syn region llvmString start=/"/ skip=/\\"/ end=/"/
|
|
|
+syn match llvmLabel /[-a-zA-Z$._][-a-zA-Z$._0-9]*:/
|
|
|
+syn match llvmIdentifier /[%@][-a-zA-Z$._][-a-zA-Z$._0-9]*/
|
|
|
+
|
|
|
+" Syntax-highlight dejagnu test commands.
|
|
|
+syn match llvmSpecialComment /;\s*RUN:.*$/
|
|
|
+syn match llvmSpecialComment /;\s*PR\d*\s*$/
|
|
|
+syn match llvmSpecialComment /;\s*END\.\s*$/
|
|
|
+syn match llvmSpecialComment /;\s*XFAIL:.*$/
|
|
|
+syn match llvmSpecialComment /;\s*XTARGET:.*$/
|
|
|
+
|
|
|
+if version >= 508 || !exists("did_c_syn_inits")
|
|
|
+ if version < 508
|
|
|
+ let did_c_syn_inits = 1
|
|
|
+ command -nargs=+ HiLink hi link <args>
|
|
|
+ else
|
|
|
+ command -nargs=+ HiLink hi def link <args>
|
|
|
+ endif
|
|
|
+
|
|
|
+ HiLink llvmType Type
|
|
|
+ HiLink llvmStatement Statement
|
|
|
+ HiLink llvmNumber Number
|
|
|
+ HiLink llvmComment Comment
|
|
|
+ HiLink llvmString String
|
|
|
+ HiLink llvmLabel Label
|
|
|
+ HiLink llvmKeyword Keyword
|
|
|
+ HiLink llvmBoolean Boolean
|
|
|
+ HiLink llvmFloat Float
|
|
|
+ HiLink llvmNoName Identifier
|
|
|
+ HiLink llvmConstant Constant
|
|
|
+ HiLink llvmSpecialComment SpecialComment
|
|
|
+ HiLink llvmError Error
|
|
|
+ HiLink llvmIdentifier Identifier
|
|
|
+
|
|
|
+ delcommand HiLink
|
|
|
+endif
|
|
|
+
|
|
|
+let b:current_syntax = "llvm"
|