1# https://macromates.com/manual/en/language_grammars 2# https://macromates.com/manual/en/regular_expressions 3# https://www.sublimetext.com/docs/3/scope_naming.html 4 5# Coloring 6# https://code.visualstudio.com/docs/getstarted/themes 7# https://code.visualstudio.com/api/extension-guides/color-theme#syntax-colors 8# https://code.visualstudio.com/api/language-extensions/syntax-highlight-guide 9# https://code.visualstudio.com/docs/cpp/colorization-cpp 10 11$schema: https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json 12name: LLVM IR 13scopeName: source.llvm 14patterns: 15 - match: "\\bvoid\\b|\ 16 \\bhalf\\b|\ 17 \\bbfloat\\b|\ 18 \\bfloat\\b|\ 19 \\bdouble\\b|\ 20 \\bx86_fp80\\b|\ 21 \\bfp128\\b|\ 22 \\bppc_fp128\\b|\ 23 \\blabel\\b|\ 24 \\bmetadata\\b|\ 25 \\bx86_mmx\\b|\ 26 \\bx86_amx\\b|\ 27 \\btype\\b|\ 28 \\blabel\\b|\ 29 \\bopaque\\b|\ 30 \\btoken\\b|\ 31 \\bi\\d+\\**" 32 name: storage.type.llvm 33 - match: "!([a-zA-Z]+)\\s*\\(" 34 captures: 35 1: 36 name: storage.type.llvm 37 - match: "\\badd\\b|\ 38 \\baddrspacecast\\b|\ 39 \\balloca\\b|\ 40 \\band\\b|\ 41 \\barcp\\b|\ 42 \\bashr\\b|\ 43 \\batomicrmw\\b|\ 44 \\bbitcast\\b|\ 45 \\bbr\\b|\ 46 \\bcatchpad\\b|\ 47 \\bcatchswitch\\b|\ 48 \\bcatchret\\b|\ 49 \\bcall\\b|\ 50 \\bcallbr\\b|\ 51 \\bcleanuppad\\b|\ 52 \\bcleanupret\\b|\ 53 \\bcmpxchg\\b|\ 54 \\beq\\b|\ 55 \\bexact\\b|\ 56 \\bextractelement\\b|\ 57 \\bextractvalue\\b|\ 58 \\bfadd\\b|\ 59 \\bfast\\b|\ 60 \\bfcmp\\b|\ 61 \\bfdiv\\b|\ 62 \\bfence\\b|\ 63 \\bfmul\\b|\ 64 \\bfpext\\b|\ 65 \\bfptosi\\b|\ 66 \\bfptoui\\b|\ 67 \\bfptrunc\\b|\ 68 \\bfree\\b|\ 69 \\bfrem\\b|\ 70 \\bfsub\\b|\ 71 \\bfneg\\b|\ 72 \\bgetelementptr\\b|\ 73 \\bicmp\\b|\ 74 \\binbounds\\b|\ 75 \\bindirectbr\\b|\ 76 \\binsertelement\\b|\ 77 \\binsertvalue\\b|\ 78 \\binttoptr\\b|\ 79 \\binvoke\\b|\ 80 \\blandingpad\\b|\ 81 \\bload\\b|\ 82 \\blshr\\b|\ 83 \\bmalloc\\b|\ 84 \\bmax\\b|\ 85 \\bmin\\b|\ 86 \\bmul\\b|\ 87 \\bnand\\b|\ 88 \\bne\\b|\ 89 \\bninf\\b|\ 90 \\bnnan\\b|\ 91 \\bnsw\\b|\ 92 \\bnsz\\b|\ 93 \\bnuw\\b|\ 94 \\boeq\\b|\ 95 \\boge\\b|\ 96 \\bogt\\b|\ 97 \\bole\\b|\ 98 \\bolt\\b|\ 99 \\bone\\b|\ 100 \\bor\\b|\ 101 \\bord\\b|\ 102 \\bphi\\b|\ 103 \\bptrtoint\\b|\ 104 \\bresume\\b|\ 105 \\bret\\b|\ 106 \\bsdiv\\b|\ 107 \\bselect\\b|\ 108 \\bsext\\b|\ 109 \\bsge\\b|\ 110 \\bsgt\\b|\ 111 \\bshl\\b|\ 112 \\bshufflevector\\b|\ 113 \\bsitofp\\b|\ 114 \\bsle\\b|\ 115 \\bslt\\b|\ 116 \\bsrem\\b|\ 117 \\bstore\\b|\ 118 \\bsub\\b|\ 119 \\bswitch\\b|\ 120 \\btrunc\\b|\ 121 \\budiv\\b|\ 122 \\bueq\\b|\ 123 \\buge\\b|\ 124 \\bugt\\b|\ 125 \\buitofp\\b|\ 126 \\bule\\b|\ 127 \\bult\\b|\ 128 \\bumax\\b|\ 129 \\bumin\\b|\ 130 \\bune\\b|\ 131 \\buno\\b|\ 132 \\bunreachable\\b|\ 133 \\bunwind\\b|\ 134 \\burem\\b|\ 135 \\bva_arg\\b|\ 136 \\bxchg\\b|\ 137 \\bxor\\b|\ 138 \\bzext\\b" 139 name: keyword.instruction.llvm 140 - match: "\\bacq_rel\\b|\ 141 \\bacquire\\b|\ 142 \\baddrspace\\b|\ 143 \\balias\\b|\ 144 \\balign\\b|\ 145 \\balignstack\\b|\ 146 \\ballocsize\\b|\ 147 \\balwaysinline\\b|\ 148 \\bappending\\b|\ 149 \\bargmemonly\\b|\ 150 \\barm_aapcs_vfpcc\\b|\ 151 \\barm_aapcscc\\b|\ 152 \\barm_apcscc\\b|\ 153 \\basm\\b|\ 154 \\batomic\\b|\ 155 \\bavailable_externally\\b|\ 156 \\bblockaddress\\b|\ 157 \\bbuiltin\\b|\ 158 \\bbyref\\b|\ 159 \\bbyval\\b|\ 160 \\bc\\b|\ 161 \\bcaller\\b|\ 162 \\bcatch\\b|\ 163 \\bcc\\b|\ 164 \\bccc\\b|\ 165 \\bcleanup\\b|\ 166 \\bcold\\b|\ 167 \\bcoldcc\\b|\ 168 \\bcomdat\\b|\ 169 \\bcommon\\b|\ 170 \\bconstant\\b|\ 171 \\bconvergent\\b|\ 172 \\bdatalayout\\b|\ 173 \\bdeclare\\b|\ 174 \\bdefault\\b|\ 175 \\bdefine\\b|\ 176 \\bdeplibs\\b|\ 177 \\bdereferenceable\\b|\ 178 \\bdereferenceable_or_null\\b|\ 179 \\bdistinct\\b|\ 180 \\bdllexport\\b|\ 181 \\bdllimport\\b|\ 182 \\bdso_local\\b|\ 183 \\bdso_preemptable\\b|\ 184 \\bexcept\\b|\ 185 \\bextern_weak\\b|\ 186 \\bexternal\\b|\ 187 \\bexternally_initialized\\b|\ 188 \\bfastcc\\b|\ 189 \\bfilter\\b|\ 190 \\bfrom\\b|\ 191 \\bgc\\b|\ 192 \\bglobal\\b|\ 193 \\bhhvm_ccc\\b|\ 194 \\bhhvmcc\\b|\ 195 \\bhidden\\b|\ 196 \\bhot\\b|\ 197 \\bimmarg\\b|\ 198 \\binaccessiblemem_or_argmemonly\\b|\ 199 \\binaccessiblememonly\\b|\ 200 \\binalloc\\b|\ 201 \\binitialexec\\b|\ 202 \\binlinehint\\b|\ 203 \\binreg\\b|\ 204 \\bintel_ocl_bicc\\b|\ 205 \\binteldialect\\b|\ 206 \\binternal\\b|\ 207 \\bjumptable\\b|\ 208 \\blinkonce\\b|\ 209 \\blinkonce_odr\\b|\ 210 \\blocal_unnamed_addr\\b|\ 211 \\blocaldynamic\\b|\ 212 \\blocalexec\\b|\ 213 \\bminsize\\b|\ 214 \\bmodule\\b|\ 215 \\bmonotonic\\b|\ 216 \\bmsp430_intrcc\\b|\ 217 \\bmustprogress\\b|\ 218 \\bmusttail\\b|\ 219 \\bnaked\\b|\ 220 \\bnest\\b|\ 221 \\bnoalias\\b|\ 222 \\bnobuiltin\\b|\ 223 \\bnocallback\\b|\ 224 \\bnocapture\\b|\ 225 \\bnocf_check\\b|\ 226 \\bnoduplicate\\b|\ 227 \\bnofree\\b|\ 228 \\bnoimplicitfloat\\b|\ 229 \\bnoinline\\b|\ 230 \\bnomerge\\b|\ 231 \\bnonlazybind\\b|\ 232 \\bnonnull\\b|\ 233 \\bnoprofile\\b|\ 234 \\bnorecurse\\b|\ 235 \\bnoredzone\\b|\ 236 \\bnoreturn\\b|\ 237 \\bnosync\\b|\ 238 \\bnoundef\\b|\ 239 \\bnounwind\\b|\ 240 \\bnull_pointer_is_valid\\b|\ 241 \\boptforfuzzing\\b|\ 242 \\boptnone\\b|\ 243 \\boptsize\\b|\ 244 \\bpersonality\\b|\ 245 \\bpreallocated\\b|\ 246 \\bprivate\\b|\ 247 \\bprotected\\b|\ 248 \\bptx_device\\b|\ 249 \\bptx_kernel\\b|\ 250 \\breadnone\\b|\ 251 \\breadonly\\b|\ 252 \\brelease\\b|\ 253 \\breturned\\b|\ 254 \\breturns_twice\\b|\ 255 \\bsafestack\\b|\ 256 \\bsanitize_address\\b|\ 257 \\bsanitize_hwaddress\\b|\ 258 \\bsanitize_memory\\b|\ 259 \\bsanitize_memtag\\b|\ 260 \\bsanitize_thread\\b|\ 261 \\bsection\\b|\ 262 \\bseq_cst\\b|\ 263 \\bshadowcallstack\\b|\ 264 \\bsideeffect\\b|\ 265 \\bsignext\\b|\ 266 \\bsource_filename\\b|\ 267 \\bspeculatable\\b|\ 268 \\bspeculative_load_hardening\\b|\ 269 \\bspir_func\\b|\ 270 \\bspir_kernel\\b|\ 271 \\bsret\\b|\ 272 \\bssp\\b|\ 273 \\bsspreq\\b|\ 274 \\bsspstrong\\b|\ 275 \\bstrictfp\\b|\ 276 \\bswiftcc\\b|\ 277 \\bswifterror\\b|\ 278 \\bswiftself\\b|\ 279 \\bsyncscope\\b|\ 280 \\btail\\b|\ 281 \\btailcc\\b|\ 282 \\btarget\\b|\ 283 \\bthread_local\\b|\ 284 \\bto\\b|\ 285 \\btriple\\b|\ 286 \\bunnamed_addr\\b|\ 287 \\bunordered\\b|\ 288 \\buselistorder\\b|\ 289 \\buselistorder_bb\\b|\ 290 \\buwtable\\b|\ 291 \\bvolatile\\b|\ 292 \\bweak\\b|\ 293 \\bweak_odr\\b|\ 294 \\bwillreturn\\b|\ 295 \\bwin64cc\\b|\ 296 \\bwithin\\b|\ 297 \\bwriteonly\\b|\ 298 \\bx86_64_sysvcc\\b|\ 299 \\bx86_fastcallcc\\b|\ 300 \\bx86_stdcallcc\\b|\ 301 \\bx86_thiscallcc\\b|\ 302 \\bzeroext\\b" 303 name: storage.modifier.llvm 304 - match: "@[-a-zA-Z$._][-a-zA-Z$._0-9]*" 305 name: entity.name.function.llvm 306 - match: "[%@!]\\d+\\b" 307 name: variable.llvm 308 - match: "%[-a-zA-Z$._][-a-zA-Z$._0-9]*" 309 name: variable.llvm 310 - match: "(![-a-zA-Z$._][-a-zA-Z$._0-9]*)\\s*$" 311 captures: 312 1: 313 name: variable.llvm 314 - match: "(![-a-zA-Z$._][-a-zA-Z$._0-9]*)\\s*[=!]" 315 captures: 316 1: 317 name: variable.llvm 318 - begin: "\"" 319 end: "\"" 320 patterns: 321 - name: "constant.character.escape.untitled" 322 match: "\\." 323 name: string.quoted.double.llvm 324 - match: "[-a-zA-Z$._][-a-zA-Z$._0-9]*:" 325 name: entity.name.label.llvm 326 - match: "-?\\b\\d+\\.\\d*(e[+-]\\d+)?\\b" 327 name: constant.numeric.float 328 - match: "\\b0x\\x+\\b" 329 name: constant.numeric.float 330 - match: "-?\\b\\d+\\b" 331 name: constant.numeric.integer 332 - match: "\\btrue\\b|\ 333 \\bfalse\\b|\ 334 \\bnull\\b|\ 335 \\bzeroinitializer\\b|\ 336 \\bundef\\b|\ 337 \\bnull\\b|\ 338 \\bnone\\b" 339 name: constant.language 340 - match: "\\bDW_TAG_[a-z_]+\\b|\ 341 \\bDW_ATE_[a-zA-Z_]+\\b|\ 342 \\bDW_OP_[a-zA-Z0-9_]+\\b|\ 343 \\bDW_LANG_[a-zA-Z0-9_]+\\b|\ 344 \\bDW_VIRTUALITY_[a-z_]+\\b|\ 345 \\bDIFlag[A-Za-z]+\\b" 346 name: constant.other 347 - match: ";\\s*PR\\d*\\s*$" 348 name: string.regexp 349 - match: ";\\s*REQUIRES:.*$" 350 name: string.regexp 351 - match: ";\\s*RUN:.*$" 352 name: string.regexp 353 - match: ";\\s*ALLOW_RETRIES:.*$" 354 name: string.regexp 355 - match: ";\\s*CHECK:.*$" 356 name: string.regexp 357 - match: ";\\s*CHECK-(NEXT|NOT|DAG|SAME|LABEL):.*$" 358 name: string.regexp 359 - match: ";\\s*XFAIL:.*$" 360 name: string.regexp 361 - match: ;.*$ 362 name: comment.line.llvm 363