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 |
Manuel Jacob | 5ced909 | 2015-12-28 19:51:04 +0000 | [diff] [blame] | 19 | syn keyword llvmType type label opaque token |
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 |
David Majnemer | 982ab5d | 2016-08-09 18:34:19 +0000 | [diff] [blame] | 26 | syn keyword llvmStatement bitcast br catchpad catchswitch catchret call |
| 27 | syn keyword llvmStatement cleanuppad cleanupret cmpxchg eq exact extractelement |
Matt Arsenault | b03bd4d | 2013-11-15 01:34:59 +0000 | [diff] [blame] | 28 | syn keyword llvmStatement extractvalue fadd fast fcmp fdiv fence fmul fpext |
| 29 | syn keyword llvmStatement fptosi fptoui fptrunc free frem fsub getelementptr |
| 30 | syn keyword llvmStatement icmp inbounds indirectbr insertelement insertvalue |
| 31 | syn keyword llvmStatement inttoptr invoke landingpad load lshr malloc max min |
| 32 | syn keyword llvmStatement mul nand ne ninf nnan nsw nsz nuw oeq oge ogt ole |
| 33 | syn keyword llvmStatement olt one or ord phi ptrtoint resume ret sdiv select |
| 34 | syn keyword llvmStatement sext sge sgt shl shufflevector sitofp sle slt srem |
| 35 | syn keyword llvmStatement store sub switch trunc udiv ueq uge ugt uitofp ule ult |
| 36 | syn keyword llvmStatement umax umin une uno unreachable unwind urem va_arg |
| 37 | syn keyword llvmStatement xchg xor zext |
Nick Hildenbrandt | 37e690a | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 38 | |
Dan Gohman | 29ad9bf | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 39 | " Keywords. |
Saleem Abdulrasool | b21e783 | 2016-07-13 03:47:58 +0000 | [diff] [blame] | 40 | syn keyword llvmKeyword |
| 41 | \ acq_rel |
| 42 | \ acquire |
| 43 | \ addrspace |
| 44 | \ alias |
| 45 | \ align |
| 46 | \ alignstack |
| 47 | \ alwaysinline |
| 48 | \ appending |
David Majnemer | 3124181 | 2016-08-11 21:14:05 +0000 | [diff] [blame] | 49 | \ argmemonly |
Saleem Abdulrasool | b21e783 | 2016-07-13 03:47:58 +0000 | [diff] [blame] | 50 | \ arm_aapcscc |
| 51 | \ arm_aapcs_vfpcc |
| 52 | \ arm_apcscc |
| 53 | \ asm |
| 54 | \ atomic |
| 55 | \ available_externally |
| 56 | \ blockaddress |
Craig Topper | 1491bdf | 2017-07-07 18:28:45 +0000 | [diff] [blame] | 57 | \ builtin |
Saleem Abdulrasool | b21e783 | 2016-07-13 03:47:58 +0000 | [diff] [blame] | 58 | \ byval |
| 59 | \ c |
| 60 | \ catch |
David Majnemer | 982ab5d | 2016-08-09 18:34:19 +0000 | [diff] [blame] | 61 | \ caller |
Saleem Abdulrasool | b21e783 | 2016-07-13 03:47:58 +0000 | [diff] [blame] | 62 | \ cc |
| 63 | \ ccc |
| 64 | \ cleanup |
| 65 | \ coldcc |
Saleem Abdulrasool | 8ef2170 | 2016-10-14 19:48:31 +0000 | [diff] [blame] | 66 | \ comdat |
Saleem Abdulrasool | b21e783 | 2016-07-13 03:47:58 +0000 | [diff] [blame] | 67 | \ common |
| 68 | \ constant |
| 69 | \ datalayout |
| 70 | \ declare |
| 71 | \ default |
| 72 | \ define |
| 73 | \ deplibs |
David Majnemer | 982ab5d | 2016-08-09 18:34:19 +0000 | [diff] [blame] | 74 | \ dereferenceable |
Saleem Abdulrasool | b21e783 | 2016-07-13 03:47:58 +0000 | [diff] [blame] | 75 | \ distinct |
| 76 | \ dllexport |
| 77 | \ dllimport |
| 78 | \ except |
| 79 | \ external |
| 80 | \ externally_initialized |
| 81 | \ extern_weak |
| 82 | \ fastcc |
| 83 | \ filter |
David Majnemer | 982ab5d | 2016-08-09 18:34:19 +0000 | [diff] [blame] | 84 | \ from |
Saleem Abdulrasool | b21e783 | 2016-07-13 03:47:58 +0000 | [diff] [blame] | 85 | \ gc |
| 86 | \ global |
| 87 | \ hhvmcc |
| 88 | \ hhvm_ccc |
| 89 | \ hidden |
| 90 | \ initialexec |
| 91 | \ inlinehint |
| 92 | \ inreg |
| 93 | \ inteldialect |
| 94 | \ intel_ocl_bicc |
| 95 | \ internal |
| 96 | \ linkonce |
| 97 | \ linkonce_odr |
| 98 | \ localdynamic |
| 99 | \ localexec |
| 100 | \ local_unnamed_addr |
| 101 | \ minsize |
| 102 | \ module |
| 103 | \ monotonic |
| 104 | \ msp430_intrcc |
| 105 | \ musttail |
| 106 | \ naked |
| 107 | \ nest |
| 108 | \ noalias |
Craig Topper | 1491bdf | 2017-07-07 18:28:45 +0000 | [diff] [blame] | 109 | \ nobuiltin |
Saleem Abdulrasool | b21e783 | 2016-07-13 03:47:58 +0000 | [diff] [blame] | 110 | \ nocapture |
| 111 | \ noimplicitfloat |
| 112 | \ noinline |
| 113 | \ nonlazybind |
Craig Topper | 1491bdf | 2017-07-07 18:28:45 +0000 | [diff] [blame] | 114 | \ nonnull |
Saleem Abdulrasool | f1b1bfa | 2016-10-14 19:48:34 +0000 | [diff] [blame] | 115 | \ norecurse |
Saleem Abdulrasool | b21e783 | 2016-07-13 03:47:58 +0000 | [diff] [blame] | 116 | \ noredzone |
| 117 | \ noreturn |
| 118 | \ nounwind |
| 119 | \ optnone |
| 120 | \ optsize |
| 121 | \ personality |
| 122 | \ private |
| 123 | \ protected |
| 124 | \ ptx_device |
| 125 | \ ptx_kernel |
| 126 | \ readnone |
| 127 | \ readonly |
| 128 | \ release |
Saleem Abdulrasool | 769b98d | 2017-02-10 23:57:11 +0000 | [diff] [blame] | 129 | \ returned |
Saleem Abdulrasool | b21e783 | 2016-07-13 03:47:58 +0000 | [diff] [blame] | 130 | \ returns_twice |
| 131 | \ sanitize_address |
| 132 | \ sanitize_memory |
| 133 | \ sanitize_thread |
| 134 | \ section |
| 135 | \ seq_cst |
| 136 | \ sideeffect |
| 137 | \ signext |
| 138 | \ singlethread |
| 139 | \ source_filename |
Craig Topper | 1491bdf | 2017-07-07 18:28:45 +0000 | [diff] [blame] | 140 | \ speculatable |
Saleem Abdulrasool | b21e783 | 2016-07-13 03:47:58 +0000 | [diff] [blame] | 141 | \ spir_func |
| 142 | \ spir_kernel |
| 143 | \ sret |
| 144 | \ ssp |
| 145 | \ sspreq |
| 146 | \ sspstrong |
Andrew Kaylor | 53a5fbb | 2017-08-14 21:15:13 +0000 | [diff] [blame] | 147 | \ strictfp |
Saleem Abdulrasool | b21e783 | 2016-07-13 03:47:58 +0000 | [diff] [blame] | 148 | \ swiftcc |
| 149 | \ tail |
| 150 | \ target |
| 151 | \ thread_local |
| 152 | \ to |
| 153 | \ triple |
| 154 | \ unnamed_addr |
| 155 | \ unordered |
| 156 | \ uselistorder |
| 157 | \ uselistorder_bb |
| 158 | \ uwtable |
| 159 | \ volatile |
| 160 | \ weak |
| 161 | \ weak_odr |
David Majnemer | 982ab5d | 2016-08-09 18:34:19 +0000 | [diff] [blame] | 162 | \ within |
David Majnemer | 3124181 | 2016-08-11 21:14:05 +0000 | [diff] [blame] | 163 | \ writeonly |
Saleem Abdulrasool | b21e783 | 2016-07-13 03:47:58 +0000 | [diff] [blame] | 164 | \ x86_64_sysvcc |
Martin Storsjo | 2f24e93 | 2017-07-17 20:05:19 +0000 | [diff] [blame] | 165 | \ win64cc |
Saleem Abdulrasool | b21e783 | 2016-07-13 03:47:58 +0000 | [diff] [blame] | 166 | \ x86_fastcallcc |
| 167 | \ x86_stdcallcc |
| 168 | \ x86_thiscallcc |
| 169 | \ zeroext |
Nick Hildenbrandt | 37e690a | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 170 | |
Dan Gohman | 29ad9bf | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 171 | " Obsolete keywords. |
Dan Gohman | d13b1a3 | 2010-08-28 20:14:05 +0000 | [diff] [blame] | 172 | syn keyword llvmError getresult begin end |
Nick Hildenbrandt | 37e690a | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 173 | |
Dan Gohman | 29ad9bf | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 174 | " Misc syntax. |
Duncan P. N. Exon Smith | 6a48483 | 2015-01-13 21:10:44 +0000 | [diff] [blame] | 175 | syn match llvmNoName /[%@!]\d\+\>/ |
Dan Gohman | 29ad9bf | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 176 | syn match llvmNumber /-\?\<\d\+\>/ |
| 177 | syn match llvmFloat /-\?\<\d\+\.\d*\(e[+-]\d\+\)\?\>/ |
| 178 | syn match llvmFloat /\<0x\x\+\>/ |
| 179 | syn keyword llvmBoolean true false |
David Majnemer | 982ab5d | 2016-08-09 18:34:19 +0000 | [diff] [blame] | 180 | syn keyword llvmConstant zeroinitializer undef null none |
Dan Gohman | 29ad9bf | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 181 | syn match llvmComment /;.*$/ |
| 182 | syn region llvmString start=/"/ skip=/\\"/ end=/"/ |
Dan Gohman | 62f05b2 | 2010-01-09 17:22:48 +0000 | [diff] [blame] | 183 | syn match llvmLabel /[-a-zA-Z$._][-a-zA-Z$._0-9]*:/ |
| 184 | syn match llvmIdentifier /[%@][-a-zA-Z$._][-a-zA-Z$._0-9]*/ |
Dan Gohman | 29ad9bf | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 185 | |
Duncan P. N. Exon Smith | 6a48483 | 2015-01-13 21:10:44 +0000 | [diff] [blame] | 186 | " Named metadata and specialized metadata keywords. |
| 187 | syn match llvmIdentifier /![-a-zA-Z$._][-a-zA-Z$._0-9]*\ze\s*$/ |
| 188 | syn match llvmIdentifier /![-a-zA-Z$._][-a-zA-Z$._0-9]*\ze\s*[=!]/ |
| 189 | syn match llvmType /!\zs\a\+\ze\s*(/ |
Duncan P. N. Exon Smith | 9748607 | 2015-02-03 21:56:01 +0000 | [diff] [blame] | 190 | syn match llvmConstant /\<DW_TAG_[a-z_]\+\>/ |
Duncan P. N. Exon Smith | cd6636c | 2015-02-13 01:17:35 +0000 | [diff] [blame] | 191 | syn match llvmConstant /\<DW_ATE_[a-zA-Z_]\+\>/ |
Duncan P. N. Exon Smith | 0c5c012 | 2015-02-13 01:42:09 +0000 | [diff] [blame] | 192 | syn match llvmConstant /\<DW_OP_[a-zA-Z0-9_]\+\>/ |
Duncan P. N. Exon Smith | aece2dc | 2015-02-13 01:21:25 +0000 | [diff] [blame] | 193 | syn match llvmConstant /\<DW_LANG_[a-zA-Z0-9_]\+\>/ |
Duncan P. N. Exon Smith | 890533e | 2015-02-13 01:28:16 +0000 | [diff] [blame] | 194 | syn match llvmConstant /\<DW_VIRTUALITY_[a-z_]\+\>/ |
Duncan P. N. Exon Smith | 70ab3d2 | 2015-02-21 01:02:18 +0000 | [diff] [blame] | 195 | syn match llvmConstant /\<DIFlag[A-Za-z]\+\>/ |
Duncan P. N. Exon Smith | 6a48483 | 2015-01-13 21:10:44 +0000 | [diff] [blame] | 196 | |
Chandler Carruth | 60ec79e | 2015-07-15 01:48:40 +0000 | [diff] [blame] | 197 | " Syntax-highlight lit test commands and bug numbers. |
Dan Gohman | 29ad9bf | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 198 | syn match llvmSpecialComment /;\s*PR\d*\s*$/ |
Chandler Carruth | 60ec79e | 2015-07-15 01:48:40 +0000 | [diff] [blame] | 199 | syn match llvmSpecialComment /;\s*REQUIRES:.*$/ |
| 200 | syn match llvmSpecialComment /;\s*RUN:.*$/ |
Saleem Abdulrasool | a25f90d | 2016-11-03 15:56:06 +0000 | [diff] [blame] | 201 | syn match llvmSpecialComment /;\s*CHECK:.*$/ |
Dan Gohman | 29ad9bf | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 202 | syn match llvmSpecialComment /;\s*XFAIL:.*$/ |
Nick Hildenbrandt | 37e690a | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 203 | |
| 204 | if version >= 508 || !exists("did_c_syn_inits") |
| 205 | if version < 508 |
| 206 | let did_c_syn_inits = 1 |
| 207 | command -nargs=+ HiLink hi link <args> |
| 208 | else |
| 209 | command -nargs=+ HiLink hi def link <args> |
| 210 | endif |
| 211 | |
| 212 | HiLink llvmType Type |
| 213 | HiLink llvmStatement Statement |
| 214 | HiLink llvmNumber Number |
| 215 | HiLink llvmComment Comment |
| 216 | HiLink llvmString String |
| 217 | HiLink llvmLabel Label |
Dan Gohman | 29ad9bf | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 218 | HiLink llvmKeyword Keyword |
| 219 | HiLink llvmBoolean Boolean |
| 220 | HiLink llvmFloat Float |
Owen Anderson | b2c657c | 2010-07-29 17:57:57 +0000 | [diff] [blame] | 221 | HiLink llvmNoName Identifier |
Dan Gohman | 29ad9bf | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 222 | HiLink llvmConstant Constant |
| 223 | HiLink llvmSpecialComment SpecialComment |
| 224 | HiLink llvmError Error |
Dan Gohman | 62f05b2 | 2010-01-09 17:22:48 +0000 | [diff] [blame] | 225 | HiLink llvmIdentifier Identifier |
Nick Hildenbrandt | 37e690a | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 226 | |
| 227 | delcommand HiLink |
| 228 | endif |
Misha Brukman | ac7b456 | 2009-01-02 16:26:14 +0000 | [diff] [blame] | 229 | |
Nick Hildenbrandt | 37e690a | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 230 | let b:current_syntax = "llvm" |