| Nick Hildenbrandt | 37e690a | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 1 | " Vim syntax file | 
| Misha Brukman | d8acf7c | 2003-06-03 00:56:09 +0000 | [diff] [blame] | 2 | " Language:   llvm | 
| Reid Spencer | c67a060 | 2006-03-14 05:54:52 +0000 | [diff] [blame] | 3 | " Maintainer: The LLVM team, http://llvm.org/ | 
| Dan Gohman | 1b9dd24 | 2010-02-26 21:38:04 +0000 | [diff] [blame] | 4 | " Version:      $Revision$ | 
| Nick Hildenbrandt | 37e690a | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 5 |  | 
|  | 6 | if version < 600 | 
|  | 7 | syntax clear | 
|  | 8 | elseif exists("b:current_syntax") | 
|  | 9 | finish | 
|  | 10 | endif | 
|  | 11 |  | 
|  | 12 | syn case match | 
|  | 13 |  | 
| Dan Gohman | 29ad9bf | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 14 | " Types. | 
|  | 15 | " Types also include struct, array, vector, etc. but these don't | 
|  | 16 | " benefit as much from having dedicated highlighting rules. | 
| Benjamin Kramer | 65e7c66 | 2012-12-02 16:40:38 +0000 | [diff] [blame] | 17 | syn keyword llvmType void half float double x86_fp80 fp128 ppc_fp128 | 
|  | 18 | syn keyword llvmType label metadata x86_mmx | 
| Nick Hildenbrandt | 37e690a | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 19 | syn keyword llvmType type label opaque | 
| Dan Gohman | d63d9fe | 2008-01-29 12:35:50 +0000 | [diff] [blame] | 20 | syn match   llvmType /\<i\d\+\>/ | 
| Nick Hildenbrandt | 37e690a | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 21 |  | 
| Dan Gohman | 29ad9bf | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 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. | 
| Matt Arsenault | b03bd4d | 2013-11-15 01:34:59 +0000 | [diff] [blame] | 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 | 
| Nick Hildenbrandt | 37e690a | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 37 |  | 
| Dan Gohman | 29ad9bf | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 38 | " Keywords. | 
| Kostya Serebryany | cf880b9 | 2013-02-26 06:58:09 +0000 | [diff] [blame] | 39 | syn keyword llvmKeyword acq_rel acquire sanitize_address addrspace alias align | 
| Benjamin Kramer | 65e7c66 | 2012-12-02 16:40:38 +0000 | [diff] [blame] | 40 | syn keyword llvmKeyword alignstack alwaysinline appending arm_aapcs_vfpcc | 
|  | 41 | syn keyword llvmKeyword arm_aapcscc arm_apcscc asm atomic available_externally | 
|  | 42 | syn keyword llvmKeyword blockaddress byval c catch cc ccc cleanup coldcc common | 
|  | 43 | syn keyword llvmKeyword constant datalayout declare default define deplibs | 
| Duncan P. N. Exon Smith | 090a19b | 2015-01-08 22:38:29 +0000 | [diff] [blame] | 44 | syn keyword llvmKeyword distinct dllexport dllimport except extern_weak external | 
| Saleem Abdulrasool | 9fa3dd4 | 2014-12-12 21:52:44 +0000 | [diff] [blame] | 45 | syn keyword llvmKeyword externally_initialized fastcc filter gc global hidden | 
|  | 46 | syn keyword llvmKeyword initialexec inlinehint inreg intel_ocl_bicc inteldialect | 
|  | 47 | syn keyword llvmKeyword internal linkonce linkonce_odr localdynamic localexec | 
|  | 48 | syn keyword llvmKeyword minsize module monotonic msp430_intrcc naked nest | 
|  | 49 | syn keyword llvmKeyword noalias nocapture noimplicitfloat noinline nonlazybind | 
|  | 50 | syn keyword llvmKeyword noredzone noreturn nounwind optnone optsize personality | 
|  | 51 | syn keyword llvmKeyword private protected ptx_device ptx_kernel readnone | 
|  | 52 | syn keyword llvmKeyword readonly release returns_twice sanitize_thread | 
|  | 53 | syn keyword llvmKeyword sanitize_memory section seq_cst sideeffect signext | 
|  | 54 | syn keyword llvmKeyword singlethread spir_func spir_kernel sret ssp sspreq | 
|  | 55 | syn keyword llvmKeyword sspstrong tail target thread_local to triple | 
|  | 56 | syn keyword llvmKeyword unnamed_addr unordered uwtable volatile weak weak_odr | 
|  | 57 | syn keyword llvmKeyword x86_fastcallcc x86_stdcallcc x86_thiscallcc | 
|  | 58 | syn keyword llvmKeyword x86_64_sysvcc x86_64_win64cc zeroext uselistorder | 
|  | 59 | syn keyword llvmKeyword uselistorder_bb | 
| Nick Hildenbrandt | 37e690a | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 60 |  | 
| Dan Gohman | 29ad9bf | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 61 | " Obsolete keywords. | 
| Dan Gohman | d13b1a3 | 2010-08-28 20:14:05 +0000 | [diff] [blame] | 62 | syn keyword llvmError  getresult begin end | 
| Nick Hildenbrandt | 37e690a | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 63 |  | 
| Dan Gohman | 29ad9bf | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 64 | " Misc syntax. | 
| Duncan P. N. Exon Smith | 6a48483 | 2015-01-13 21:10:44 +0000 | [diff] [blame] | 65 | syn match   llvmNoName /[%@!]\d\+\>/ | 
| Dan Gohman | 29ad9bf | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 66 | syn match   llvmNumber /-\?\<\d\+\>/ | 
|  | 67 | syn match   llvmFloat  /-\?\<\d\+\.\d*\(e[+-]\d\+\)\?\>/ | 
|  | 68 | syn match   llvmFloat  /\<0x\x\+\>/ | 
|  | 69 | syn keyword llvmBoolean true false | 
|  | 70 | syn keyword llvmConstant zeroinitializer undef null | 
|  | 71 | syn match   llvmComment /;.*$/ | 
|  | 72 | syn region  llvmString start=/"/ skip=/\\"/ end=/"/ | 
| Dan Gohman | 62f05b2 | 2010-01-09 17:22:48 +0000 | [diff] [blame] | 73 | syn match   llvmLabel /[-a-zA-Z$._][-a-zA-Z$._0-9]*:/ | 
|  | 74 | syn match   llvmIdentifier /[%@][-a-zA-Z$._][-a-zA-Z$._0-9]*/ | 
| Dan Gohman | 29ad9bf | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 75 |  | 
| Duncan P. N. Exon Smith | 6a48483 | 2015-01-13 21:10:44 +0000 | [diff] [blame] | 76 | " Named metadata and specialized metadata keywords. | 
|  | 77 | syn match   llvmIdentifier /![-a-zA-Z$._][-a-zA-Z$._0-9]*\ze\s*$/ | 
|  | 78 | syn match   llvmIdentifier /![-a-zA-Z$._][-a-zA-Z$._0-9]*\ze\s*[=!]/ | 
|  | 79 | syn match   llvmType /!\zs\a\+\ze\s*(/ | 
| Duncan P. N. Exon Smith | 9748607 | 2015-02-03 21:56:01 +0000 | [diff] [blame] | 80 | syn match   llvmConstant /\<DW_TAG_[a-z_]\+\>/ | 
| Duncan P. N. Exon Smith | cd6636c | 2015-02-13 01:17:35 +0000 | [diff] [blame] | 81 | syn match   llvmConstant /\<DW_ATE_[a-zA-Z_]\+\>/ | 
| Duncan P. N. Exon Smith | 0c5c012 | 2015-02-13 01:42:09 +0000 | [diff] [blame] | 82 | syn match   llvmConstant /\<DW_OP_[a-zA-Z0-9_]\+\>/ | 
| Duncan P. N. Exon Smith | aece2dc | 2015-02-13 01:21:25 +0000 | [diff] [blame] | 83 | syn match   llvmConstant /\<DW_LANG_[a-zA-Z0-9_]\+\>/ | 
| Duncan P. N. Exon Smith | 890533e | 2015-02-13 01:28:16 +0000 | [diff] [blame] | 84 | syn match   llvmConstant /\<DW_VIRTUALITY_[a-z_]\+\>/ | 
| Duncan P. N. Exon Smith | 70ab3d2 | 2015-02-21 01:02:18 +0000 | [diff] [blame] | 85 | syn match   llvmConstant /\<DIFlag[A-Za-z]\+\>/ | 
| Duncan P. N. Exon Smith | 6a48483 | 2015-01-13 21:10:44 +0000 | [diff] [blame] | 86 |  | 
| Dan Gohman | 29ad9bf | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 87 | " Syntax-highlight dejagnu test commands. | 
|  | 88 | syn match  llvmSpecialComment /;\s*RUN:.*$/ | 
|  | 89 | syn match  llvmSpecialComment /;\s*PR\d*\s*$/ | 
|  | 90 | syn match  llvmSpecialComment /;\s*END\.\s*$/ | 
|  | 91 | syn match  llvmSpecialComment /;\s*XFAIL:.*$/ | 
| Nick Hildenbrandt | 37e690a | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 92 |  | 
|  | 93 | if version >= 508 || !exists("did_c_syn_inits") | 
|  | 94 | if version < 508 | 
|  | 95 | let did_c_syn_inits = 1 | 
|  | 96 | command -nargs=+ HiLink hi link <args> | 
|  | 97 | else | 
|  | 98 | command -nargs=+ HiLink hi def link <args> | 
|  | 99 | endif | 
|  | 100 |  | 
|  | 101 | HiLink llvmType Type | 
|  | 102 | HiLink llvmStatement Statement | 
|  | 103 | HiLink llvmNumber Number | 
|  | 104 | HiLink llvmComment Comment | 
|  | 105 | HiLink llvmString String | 
|  | 106 | HiLink llvmLabel Label | 
| Dan Gohman | 29ad9bf | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 107 | HiLink llvmKeyword Keyword | 
|  | 108 | HiLink llvmBoolean Boolean | 
|  | 109 | HiLink llvmFloat Float | 
| Owen Anderson | b2c657c | 2010-07-29 17:57:57 +0000 | [diff] [blame] | 110 | HiLink llvmNoName Identifier | 
| Dan Gohman | 29ad9bf | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 111 | HiLink llvmConstant Constant | 
|  | 112 | HiLink llvmSpecialComment SpecialComment | 
|  | 113 | HiLink llvmError Error | 
| Dan Gohman | 62f05b2 | 2010-01-09 17:22:48 +0000 | [diff] [blame] | 114 | HiLink llvmIdentifier Identifier | 
| Nick Hildenbrandt | 37e690a | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 115 |  | 
|  | 116 | delcommand HiLink | 
|  | 117 | endif | 
| Misha Brukman | ac7b456 | 2009-01-02 16:26:14 +0000 | [diff] [blame] | 118 |  | 
| Nick Hildenbrandt | 37e690a | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 119 | let b:current_syntax = "llvm" |