Nick Hildenbrandt | 75f79b9 | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 1 | " Vim syntax file |
Misha Brukman | 5981d78 | 2003-06-03 00:56:09 +0000 | [diff] [blame] | 2 | " Language: llvm |
Reid Spencer | 9dce2b3 | 2006-03-14 05:54:52 +0000 | [diff] [blame] | 3 | " Maintainer: The LLVM team, http://llvm.org/ |
Dan Gohman | 7b14fc2 | 2010-02-26 21:38:04 +0000 | [diff] [blame] | 4 | " Version: $Revision$ |
Nick Hildenbrandt | 75f79b9 | 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 | 5d8ab65 | 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. |
Dan Gohman | 0e9dfb0 | 2008-01-29 12:35:50 +0000 | [diff] [blame] | 17 | syn keyword llvmType void float double |
| 18 | syn keyword llvmType x86_fp80 fp128 ppc_fp128 |
Nick Hildenbrandt | 75f79b9 | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 19 | syn keyword llvmType type label opaque |
Dan Gohman | 0e9dfb0 | 2008-01-29 12:35:50 +0000 | [diff] [blame] | 20 | syn match llvmType /\<i\d\+\>/ |
Nick Hildenbrandt | 75f79b9 | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 21 | |
Dan Gohman | 5d8ab65 | 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. |
Dan Gohman | ae3a0be | 2009-06-04 22:49:04 +0000 | [diff] [blame] | 25 | syn keyword llvmStatement add fadd sub fsub mul fmul |
| 26 | syn keyword llvmStatement sdiv udiv fdiv srem urem frem |
Nick Hildenbrandt | 75f79b9 | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 27 | syn keyword llvmStatement and or xor |
Dan Gohman | 0e9dfb0 | 2008-01-29 12:35:50 +0000 | [diff] [blame] | 28 | syn keyword llvmStatement icmp fcmp |
| 29 | syn keyword llvmStatement eq ne ugt uge ult ule sgt sge slt sle |
Dan Gohman | 5d8ab65 | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 30 | syn keyword llvmStatement oeq ogt oge olt ole one ord ueq ugt uge |
| 31 | syn keyword llvmStatement ult ule une uno |
Dan Gohman | d5c9470 | 2009-07-27 21:54:51 +0000 | [diff] [blame] | 32 | syn keyword llvmStatement nuw nsw exact inbounds |
Dan Gohman | 5d8ab65 | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 33 | syn keyword llvmStatement phi call select shl lshr ashr va_arg |
Dan Gohman | 0e9dfb0 | 2008-01-29 12:35:50 +0000 | [diff] [blame] | 34 | syn keyword llvmStatement trunc zext sext |
| 35 | syn keyword llvmStatement fptrunc fpext fptoui fptosi uitofp sitofp |
| 36 | syn keyword llvmStatement ptrtoint inttoptr bitcast |
Dan Gohman | 6b3bd7b | 2009-10-29 00:14:44 +0000 | [diff] [blame] | 37 | syn keyword llvmStatement ret br indirectbr switch invoke unwind unreachable |
Nick Hildenbrandt | 75f79b9 | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 38 | syn keyword llvmStatement malloc alloca free load store getelementptr |
Dan Gohman | 0e9dfb0 | 2008-01-29 12:35:50 +0000 | [diff] [blame] | 39 | syn keyword llvmStatement extractelement insertelement shufflevector |
Dan Gohman | 5d8ab65 | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 40 | syn keyword llvmStatement extractvalue insertvalue |
Nick Hildenbrandt | 75f79b9 | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 41 | |
Dan Gohman | 5d8ab65 | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 42 | " Keywords. |
| 43 | syn keyword llvmKeyword define declare global constant |
Dan Gohman | 21de024 | 2009-07-17 01:06:53 +0000 | [diff] [blame] | 44 | syn keyword llvmKeyword internal external private |
Duncan Sands | 667d4b8 | 2009-03-07 15:45:40 +0000 | [diff] [blame] | 45 | syn keyword llvmKeyword linkonce linkonce_odr weak weak_odr appending |
Duncan Sands | 4dc2b39 | 2009-03-11 20:14:15 +0000 | [diff] [blame] | 46 | syn keyword llvmKeyword common extern_weak |
Dan Gohman | 5d8ab65 | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 47 | syn keyword llvmKeyword thread_local dllimport dllexport |
Dan Gohman | 1ed7942 | 2009-01-05 17:44:11 +0000 | [diff] [blame] | 48 | syn keyword llvmKeyword hidden protected default |
Dan Gohman | 5d8ab65 | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 49 | syn keyword llvmKeyword except deplibs |
| 50 | syn keyword llvmKeyword volatile fastcc coldcc cc ccc |
| 51 | syn keyword llvmKeyword x86_stdcallcc x86_fastcallcc |
Che-Liang Chiou | f9930da | 2010-09-25 07:46:17 +0000 | [diff] [blame] | 52 | syn keyword llvmKeyword ptx_kernel ptx_device |
Dan Gohman | 5d8ab65 | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 53 | syn keyword llvmKeyword signext zeroext inreg sret nounwind noreturn |
Dan Gohman | b8281ca | 2009-08-05 16:38:48 +0000 | [diff] [blame] | 54 | syn keyword llvmKeyword nocapture byval nest readnone readonly noalias |
Jakob Stoklund Olesen | 570a4a5 | 2010-02-06 01:16:28 +0000 | [diff] [blame] | 55 | syn keyword llvmKeyword inlinehint noinline alwaysinline optsize ssp sspreq |
Dan Gohman | 79073e3 | 2010-02-26 21:16:17 +0000 | [diff] [blame] | 56 | syn keyword llvmKeyword noredzone noimplicitfloat naked alignstack |
Dan Gohman | 5d8ab65 | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 57 | syn keyword llvmKeyword module asm align tail to |
Dan Gohman | 6a9e75e | 2009-01-05 03:22:02 +0000 | [diff] [blame] | 58 | syn keyword llvmKeyword addrspace section alias sideeffect c gc |
Dan Gohman | 5d8ab65 | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 59 | syn keyword llvmKeyword target datalayout triple |
Dan Gohman | 6b3bd7b | 2009-10-29 00:14:44 +0000 | [diff] [blame] | 60 | syn keyword llvmKeyword blockaddress |
Nick Hildenbrandt | 75f79b9 | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 61 | |
Dan Gohman | 5d8ab65 | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 62 | " Obsolete keywords. |
Dan Gohman | 245ae51 | 2010-08-28 20:14:05 +0000 | [diff] [blame] | 63 | syn keyword llvmError getresult begin end |
Nick Hildenbrandt | 75f79b9 | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 64 | |
Dan Gohman | 5d8ab65 | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 65 | " Misc syntax. |
Owen Anderson | 2a5892f | 2010-07-29 17:57:57 +0000 | [diff] [blame] | 66 | syn match llvmNoName /[%@]\d\+\>/ |
Dan Gohman | 5d8ab65 | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 67 | syn match llvmNumber /-\?\<\d\+\>/ |
| 68 | syn match llvmFloat /-\?\<\d\+\.\d*\(e[+-]\d\+\)\?\>/ |
| 69 | syn match llvmFloat /\<0x\x\+\>/ |
| 70 | syn keyword llvmBoolean true false |
| 71 | syn keyword llvmConstant zeroinitializer undef null |
| 72 | syn match llvmComment /;.*$/ |
| 73 | syn region llvmString start=/"/ skip=/\\"/ end=/"/ |
Dan Gohman | 7a523dd | 2010-01-09 17:22:48 +0000 | [diff] [blame] | 74 | syn match llvmLabel /[-a-zA-Z$._][-a-zA-Z$._0-9]*:/ |
| 75 | syn match llvmIdentifier /[%@][-a-zA-Z$._][-a-zA-Z$._0-9]*/ |
Dan Gohman | 5d8ab65 | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 76 | |
| 77 | " Syntax-highlight dejagnu test commands. |
| 78 | syn match llvmSpecialComment /;\s*RUN:.*$/ |
| 79 | syn match llvmSpecialComment /;\s*PR\d*\s*$/ |
| 80 | syn match llvmSpecialComment /;\s*END\.\s*$/ |
| 81 | syn match llvmSpecialComment /;\s*XFAIL:.*$/ |
| 82 | syn match llvmSpecialComment /;\s*XTARGET:.*$/ |
Nick Hildenbrandt | 75f79b9 | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 83 | |
| 84 | if version >= 508 || !exists("did_c_syn_inits") |
| 85 | if version < 508 |
| 86 | let did_c_syn_inits = 1 |
| 87 | command -nargs=+ HiLink hi link <args> |
| 88 | else |
| 89 | command -nargs=+ HiLink hi def link <args> |
| 90 | endif |
| 91 | |
| 92 | HiLink llvmType Type |
| 93 | HiLink llvmStatement Statement |
| 94 | HiLink llvmNumber Number |
| 95 | HiLink llvmComment Comment |
| 96 | HiLink llvmString String |
| 97 | HiLink llvmLabel Label |
Dan Gohman | 5d8ab65 | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 98 | HiLink llvmKeyword Keyword |
| 99 | HiLink llvmBoolean Boolean |
| 100 | HiLink llvmFloat Float |
Owen Anderson | 2a5892f | 2010-07-29 17:57:57 +0000 | [diff] [blame] | 101 | HiLink llvmNoName Identifier |
Dan Gohman | 5d8ab65 | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 102 | HiLink llvmConstant Constant |
| 103 | HiLink llvmSpecialComment SpecialComment |
| 104 | HiLink llvmError Error |
Dan Gohman | 7a523dd | 2010-01-09 17:22:48 +0000 | [diff] [blame] | 105 | HiLink llvmIdentifier Identifier |
Nick Hildenbrandt | 75f79b9 | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 106 | |
| 107 | delcommand HiLink |
| 108 | endif |
Misha Brukman | adf4e4d | 2009-01-02 16:26:14 +0000 | [diff] [blame] | 109 | |
Nick Hildenbrandt | 75f79b9 | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 110 | let b:current_syntax = "llvm" |