Home | History | Annotate | Download | only in syntax
      1 " Vim syntax file
      2 " Language:   llvm
      3 " Maintainer: The LLVM team, http://llvm.org/
      4 " Version:      $Revision$
      5 
      6 if version < 600
      7   syntax clear
      8 elseif exists("b:current_syntax")
      9   finish
     10 endif
     11 
     12 syn case match
     13 
     14 " Types.
     15 " Types also include struct, array, vector, etc. but these don't
     16 " benefit as much from having dedicated highlighting rules.
     17 syn keyword llvmType void half float double x86_fp80 fp128 ppc_fp128
     18 syn keyword llvmType label metadata x86_mmx
     19 syn keyword llvmType type label opaque token
     20 syn match   llvmType /\<i\d\+\>/
     21 
     22 " 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.
     25 syn keyword llvmStatement add addrspacecast alloca and arcp ashr atomicrmw
     26 syn keyword llvmStatement bitcast br call cmpxchg eq exact extractelement
     27 syn keyword llvmStatement extractvalue fadd fast fcmp fdiv fence fmul fpext
     28 syn keyword llvmStatement fptosi fptoui fptrunc free frem fsub getelementptr
     29 syn keyword llvmStatement icmp inbounds indirectbr insertelement insertvalue
     30 syn keyword llvmStatement inttoptr invoke landingpad load lshr malloc max min
     31 syn keyword llvmStatement mul nand ne ninf nnan nsw nsz nuw oeq oge ogt ole
     32 syn keyword llvmStatement olt one or ord phi ptrtoint resume ret sdiv select
     33 syn keyword llvmStatement sext sge sgt shl shufflevector sitofp sle slt srem
     34 syn keyword llvmStatement store sub switch trunc udiv ueq uge ugt uitofp ule ult
     35 syn keyword llvmStatement umax umin une uno unreachable unwind urem va_arg
     36 syn keyword llvmStatement xchg xor zext
     37 
     38 " Keywords.
     39 syn keyword llvmKeyword
     40       \ acq_rel
     41       \ acquire
     42       \ addrspace
     43       \ alias
     44       \ align
     45       \ alignstack
     46       \ alwaysinline
     47       \ appending
     48       \ arm_aapcscc
     49       \ arm_aapcs_vfpcc
     50       \ arm_apcscc
     51       \ asm
     52       \ atomic
     53       \ available_externally
     54       \ blockaddress
     55       \ byval
     56       \ c
     57       \ catch
     58       \ cc
     59       \ ccc
     60       \ cleanup
     61       \ coldcc
     62       \ common
     63       \ constant
     64       \ datalayout
     65       \ declare
     66       \ default
     67       \ define
     68       \ deplibs
     69       \ distinct
     70       \ dllexport
     71       \ dllimport
     72       \ except
     73       \ external
     74       \ externally_initialized
     75       \ extern_weak
     76       \ fastcc
     77       \ filter
     78       \ gc
     79       \ global
     80       \ hhvmcc
     81       \ hhvm_ccc
     82       \ hidden
     83       \ initialexec
     84       \ inlinehint
     85       \ inreg
     86       \ inteldialect
     87       \ intel_ocl_bicc
     88       \ internal
     89       \ linkonce
     90       \ linkonce_odr
     91       \ localdynamic
     92       \ localexec
     93       \ local_unnamed_addr
     94       \ minsize
     95       \ module
     96       \ monotonic
     97       \ msp430_intrcc
     98       \ musttail
     99       \ naked
    100       \ nest
    101       \ noalias
    102       \ nocapture
    103       \ noimplicitfloat
    104       \ noinline
    105       \ nonlazybind
    106       \ noredzone
    107       \ noreturn
    108       \ nounwind
    109       \ optnone
    110       \ optsize
    111       \ personality
    112       \ private
    113       \ protected
    114       \ ptx_device
    115       \ ptx_kernel
    116       \ readnone
    117       \ readonly
    118       \ release
    119       \ returns_twice
    120       \ sanitize_address
    121       \ sanitize_memory
    122       \ sanitize_thread
    123       \ section
    124       \ seq_cst
    125       \ sideeffect
    126       \ signext
    127       \ singlethread
    128       \ source_filename
    129       \ spir_func
    130       \ spir_kernel
    131       \ sret
    132       \ ssp
    133       \ sspreq
    134       \ sspstrong
    135       \ swiftcc
    136       \ tail
    137       \ target
    138       \ thread_local
    139       \ to
    140       \ triple
    141       \ unnamed_addr
    142       \ unordered
    143       \ uselistorder
    144       \ uselistorder_bb
    145       \ uwtable
    146       \ volatile
    147       \ weak
    148       \ weak_odr
    149       \ x86_64_sysvcc
    150       \ x86_64_win64cc
    151       \ x86_fastcallcc
    152       \ x86_stdcallcc
    153       \ x86_thiscallcc
    154       \ zeroext
    155 
    156 " Obsolete keywords.
    157 syn keyword llvmError  getresult begin end
    158 
    159 " Misc syntax.
    160 syn match   llvmNoName /[%@!]\d\+\>/
    161 syn match   llvmNumber /-\?\<\d\+\>/
    162 syn match   llvmFloat  /-\?\<\d\+\.\d*\(e[+-]\d\+\)\?\>/
    163 syn match   llvmFloat  /\<0x\x\+\>/
    164 syn keyword llvmBoolean true false
    165 syn keyword llvmConstant zeroinitializer undef null
    166 syn match   llvmComment /;.*$/
    167 syn region  llvmString start=/"/ skip=/\\"/ end=/"/
    168 syn match   llvmLabel /[-a-zA-Z$._][-a-zA-Z$._0-9]*:/
    169 syn match   llvmIdentifier /[%@][-a-zA-Z$._][-a-zA-Z$._0-9]*/
    170 
    171 " Named metadata and specialized metadata keywords.
    172 syn match   llvmIdentifier /![-a-zA-Z$._][-a-zA-Z$._0-9]*\ze\s*$/
    173 syn match   llvmIdentifier /![-a-zA-Z$._][-a-zA-Z$._0-9]*\ze\s*[=!]/
    174 syn match   llvmType /!\zs\a\+\ze\s*(/
    175 syn match   llvmConstant /\<DW_TAG_[a-z_]\+\>/
    176 syn match   llvmConstant /\<DW_ATE_[a-zA-Z_]\+\>/
    177 syn match   llvmConstant /\<DW_OP_[a-zA-Z0-9_]\+\>/
    178 syn match   llvmConstant /\<DW_LANG_[a-zA-Z0-9_]\+\>/
    179 syn match   llvmConstant /\<DW_VIRTUALITY_[a-z_]\+\>/
    180 syn match   llvmConstant /\<DIFlag[A-Za-z]\+\>/
    181 
    182 " Syntax-highlight lit test commands and bug numbers.
    183 syn match  llvmSpecialComment /;\s*PR\d*\s*$/
    184 syn match  llvmSpecialComment /;\s*REQUIRES:.*$/
    185 syn match  llvmSpecialComment /;\s*RUN:.*$/
    186 syn match  llvmSpecialComment /;\s*XFAIL:.*$/
    187 
    188 if version >= 508 || !exists("did_c_syn_inits")
    189   if version < 508
    190     let did_c_syn_inits = 1
    191     command -nargs=+ HiLink hi link <args>
    192   else
    193     command -nargs=+ HiLink hi def link <args>
    194   endif
    195 
    196   HiLink llvmType Type
    197   HiLink llvmStatement Statement
    198   HiLink llvmNumber Number
    199   HiLink llvmComment Comment
    200   HiLink llvmString String
    201   HiLink llvmLabel Label
    202   HiLink llvmKeyword Keyword
    203   HiLink llvmBoolean Boolean
    204   HiLink llvmFloat Float
    205   HiLink llvmNoName Identifier
    206   HiLink llvmConstant Constant
    207   HiLink llvmSpecialComment SpecialComment
    208   HiLink llvmError Error
    209   HiLink llvmIdentifier Identifier
    210 
    211   delcommand HiLink
    212 endif
    213 
    214 let b:current_syntax = "llvm"
    215