summaryrefslogtreecommitdiffstats
path: root/syntax/llvm.vim
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2019-03-11 09:20:12 +0100
committerAdam Stankiewicz <sheerun@sher.pl>2019-03-11 09:20:36 +0100
commit420a65e9b0ab88095cd88c49167ab441a4dd1f3e (patch)
treee06444dd62853d76c3efdeb05b8a44e2bf98dc37 /syntax/llvm.vim
parent2254b83675e3356f42cc011133da67c26512022f (diff)
downloadvim-polyglot-3.7.0.tar.gz
vim-polyglot-3.7.0.zip
Add llvm support, closes #376v3.7.0
Diffstat (limited to 'syntax/llvm.vim')
-rw-r--r--syntax/llvm.vim237
1 files changed, 237 insertions, 0 deletions
diff --git a/syntax/llvm.vim b/syntax/llvm.vim
new file mode 100644
index 00000000..87202ede
--- /dev/null
+++ b/syntax/llvm.vim
@@ -0,0 +1,237 @@
+if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'llvm') != -1
+ finish
+endif
+
+" Vim syntax file
+" Language: llvm
+" Maintainer: The LLVM team, http://llvm.org/
+" Version: $Revision$
+
+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 half float double x86_fp80 fp128 ppc_fp128
+syn keyword llvmType label metadata x86_mmx
+syn keyword llvmType type label opaque token
+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 addrspacecast alloca and arcp ashr atomicrmw
+syn keyword llvmStatement bitcast br catchpad catchswitch catchret call
+syn keyword llvmStatement cleanuppad cleanupret cmpxchg eq exact extractelement
+syn keyword llvmStatement extractvalue fadd fast fcmp fdiv fence fmul fpext
+syn keyword llvmStatement fptosi fptoui fptrunc free frem fsub getelementptr
+syn keyword llvmStatement icmp inbounds indirectbr insertelement insertvalue
+syn keyword llvmStatement inttoptr invoke landingpad load lshr malloc max min
+syn keyword llvmStatement mul nand ne ninf nnan nsw nsz nuw oeq oge ogt ole
+syn keyword llvmStatement olt one or ord phi ptrtoint resume ret sdiv select
+syn keyword llvmStatement sext sge sgt shl shufflevector sitofp sle slt srem
+syn keyword llvmStatement store sub switch trunc udiv ueq uge ugt uitofp ule ult
+syn keyword llvmStatement umax umin une uno unreachable unwind urem va_arg
+syn keyword llvmStatement xchg xor zext
+
+" Keywords.
+syn keyword llvmKeyword
+ \ acq_rel
+ \ acquire
+ \ addrspace
+ \ alias
+ \ align
+ \ alignstack
+ \ alwaysinline
+ \ appending
+ \ argmemonly
+ \ arm_aapcscc
+ \ arm_aapcs_vfpcc
+ \ arm_apcscc
+ \ asm
+ \ atomic
+ \ available_externally
+ \ blockaddress
+ \ builtin
+ \ byval
+ \ c
+ \ catch
+ \ caller
+ \ cc
+ \ ccc
+ \ cleanup
+ \ coldcc
+ \ comdat
+ \ common
+ \ constant
+ \ datalayout
+ \ declare
+ \ default
+ \ define
+ \ deplibs
+ \ dereferenceable
+ \ distinct
+ \ dllexport
+ \ dllimport
+ \ dso_local
+ \ dso_preemptable
+ \ except
+ \ external
+ \ externally_initialized
+ \ extern_weak
+ \ fastcc
+ \ filter
+ \ from
+ \ gc
+ \ global
+ \ hhvmcc
+ \ hhvm_ccc
+ \ hidden
+ \ initialexec
+ \ inlinehint
+ \ inreg
+ \ inteldialect
+ \ intel_ocl_bicc
+ \ internal
+ \ linkonce
+ \ linkonce_odr
+ \ localdynamic
+ \ localexec
+ \ local_unnamed_addr
+ \ minsize
+ \ module
+ \ monotonic
+ \ msp430_intrcc
+ \ musttail
+ \ naked
+ \ nest
+ \ noalias
+ \ nobuiltin
+ \ nocapture
+ \ noimplicitfloat
+ \ noinline
+ \ nonlazybind
+ \ nonnull
+ \ norecurse
+ \ noredzone
+ \ noreturn
+ \ nounwind
+ \ optnone
+ \ optsize
+ \ personality
+ \ private
+ \ protected
+ \ ptx_device
+ \ ptx_kernel
+ \ readnone
+ \ readonly
+ \ release
+ \ returned
+ \ returns_twice
+ \ sanitize_address
+ \ sanitize_memory
+ \ sanitize_thread
+ \ section
+ \ seq_cst
+ \ sideeffect
+ \ signext
+ \ syncscope
+ \ source_filename
+ \ speculatable
+ \ spir_func
+ \ spir_kernel
+ \ sret
+ \ ssp
+ \ sspreq
+ \ sspstrong
+ \ strictfp
+ \ swiftcc
+ \ tail
+ \ target
+ \ thread_local
+ \ to
+ \ triple
+ \ unnamed_addr
+ \ unordered
+ \ uselistorder
+ \ uselistorder_bb
+ \ uwtable
+ \ volatile
+ \ weak
+ \ weak_odr
+ \ within
+ \ writeonly
+ \ x86_64_sysvcc
+ \ win64cc
+ \ x86_fastcallcc
+ \ x86_stdcallcc
+ \ x86_thiscallcc
+ \ zeroext
+
+" 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 none
+syn match llvmComment /;.*$/
+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]*/
+
+" Named metadata and specialized metadata keywords.
+syn match llvmIdentifier /![-a-zA-Z$._][-a-zA-Z$._0-9]*\ze\s*$/
+syn match llvmIdentifier /![-a-zA-Z$._][-a-zA-Z$._0-9]*\ze\s*[=!]/
+syn match llvmType /!\zs\a\+\ze\s*(/
+syn match llvmConstant /\<DW_TAG_[a-z_]\+\>/
+syn match llvmConstant /\<DW_ATE_[a-zA-Z_]\+\>/
+syn match llvmConstant /\<DW_OP_[a-zA-Z0-9_]\+\>/
+syn match llvmConstant /\<DW_LANG_[a-zA-Z0-9_]\+\>/
+syn match llvmConstant /\<DW_VIRTUALITY_[a-z_]\+\>/
+syn match llvmConstant /\<DIFlag[A-Za-z]\+\>/
+
+" Syntax-highlight lit test commands and bug numbers.
+syn match llvmSpecialComment /;\s*PR\d*\s*$/
+syn match llvmSpecialComment /;\s*REQUIRES:.*$/
+syn match llvmSpecialComment /;\s*RUN:.*$/
+syn match llvmSpecialComment /;\s*CHECK:.*$/
+syn match llvmSpecialComment "\v;\s*CHECK-(NEXT|NOT|DAG|SAME|LABEL):.*$"
+syn match llvmSpecialComment /;\s*XFAIL:.*$/
+
+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"