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/ |
Misha Brukman | 5981d78 | 2003-06-03 00:56:09 +0000 | [diff] [blame] | 4 | " Updated: 2003-06-02 |
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 | 0e9dfb0 | 2008-01-29 12:35:50 +0000 | [diff] [blame] | 25 | syn keyword llvmStatement add sub mul sdiv udiv fdiv srem urem frem |
Nick Hildenbrandt | 75f79b9 | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 26 | syn keyword llvmStatement and or xor |
Dan Gohman | 0e9dfb0 | 2008-01-29 12:35:50 +0000 | [diff] [blame] | 27 | syn keyword llvmStatement icmp fcmp |
| 28 | 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] | 29 | syn keyword llvmStatement oeq ogt oge olt ole one ord ueq ugt uge |
| 30 | syn keyword llvmStatement ult ule une uno |
| 31 | syn keyword llvmStatement phi call select shl lshr ashr va_arg |
Dan Gohman | 0e9dfb0 | 2008-01-29 12:35:50 +0000 | [diff] [blame] | 32 | syn keyword llvmStatement trunc zext sext |
| 33 | syn keyword llvmStatement fptrunc fpext fptoui fptosi uitofp sitofp |
| 34 | syn keyword llvmStatement ptrtoint inttoptr bitcast |
Chris Lattner | 4c554c5 | 2004-10-16 18:24:35 +0000 | [diff] [blame] | 35 | syn keyword llvmStatement ret br switch invoke unwind unreachable |
Nick Hildenbrandt | 75f79b9 | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 36 | syn keyword llvmStatement malloc alloca free load store getelementptr |
Dan Gohman | 0e9dfb0 | 2008-01-29 12:35:50 +0000 | [diff] [blame] | 37 | syn keyword llvmStatement extractelement insertelement shufflevector |
Dan Gohman | 5d8ab65 | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 38 | syn keyword llvmStatement extractvalue insertvalue |
Nick Hildenbrandt | 75f79b9 | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 39 | |
Dan Gohman | 5d8ab65 | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 40 | " Keywords. |
| 41 | syn keyword llvmKeyword define declare global constant |
| 42 | syn keyword llvmKeyword internal external |
| 43 | syn keyword llvmKeyword linkonce weak appending common extern_weak |
| 44 | syn keyword llvmKeyword thread_local dllimport dllexport |
Dan Gohman | 1ed7942 | 2009-01-05 17:44:11 +0000 | [diff] [blame] | 45 | syn keyword llvmKeyword hidden protected default |
Dan Gohman | 5d8ab65 | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 46 | syn keyword llvmKeyword except deplibs |
| 47 | syn keyword llvmKeyword volatile fastcc coldcc cc ccc |
| 48 | syn keyword llvmKeyword x86_stdcallcc x86_fastcallcc |
| 49 | syn keyword llvmKeyword signext zeroext inreg sret nounwind noreturn |
| 50 | syn keyword llvmKeyword nocapture byval nest readnone readonly |
| 51 | syn keyword llvmKeyword noinline alwaysinline optsize ssp sspreq |
| 52 | syn keyword llvmKeyword module asm align tail to |
Dan Gohman | 6a9e75e | 2009-01-05 03:22:02 +0000 | [diff] [blame] | 53 | syn keyword llvmKeyword addrspace section alias sideeffect c gc |
Dan Gohman | 5d8ab65 | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 54 | syn keyword llvmKeyword target datalayout triple |
Nick Hildenbrandt | 75f79b9 | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 55 | |
Dan Gohman | 5d8ab65 | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 56 | " Obsolete keywords. |
| 57 | syn keyword llvmError uninitialized implementation |
Dan Gohman | 6a9e75e | 2009-01-05 03:22:02 +0000 | [diff] [blame] | 58 | syn keyword llvmError getresult big little endian begin end |
Nick Hildenbrandt | 75f79b9 | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 59 | |
Dan Gohman | 5d8ab65 | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 60 | " Misc syntax. |
| 61 | syn match llvmIgnore /[%@]\d\+\>/ |
| 62 | syn match llvmNumber /-\?\<\d\+\>/ |
| 63 | syn match llvmFloat /-\?\<\d\+\.\d*\(e[+-]\d\+\)\?\>/ |
| 64 | syn match llvmFloat /\<0x\x\+\>/ |
| 65 | syn keyword llvmBoolean true false |
| 66 | syn keyword llvmConstant zeroinitializer undef null |
| 67 | syn match llvmComment /;.*$/ |
| 68 | syn region llvmString start=/"/ skip=/\\"/ end=/"/ |
| 69 | syn match llvmLabel /[\-a-zA-Z\$._0-9]*:/ |
| 70 | |
| 71 | " Syntax-highlight dejagnu test commands. |
| 72 | syn match llvmSpecialComment /;\s*RUN:.*$/ |
| 73 | syn match llvmSpecialComment /;\s*PR\d*\s*$/ |
| 74 | syn match llvmSpecialComment /;\s*END\.\s*$/ |
| 75 | syn match llvmSpecialComment /;\s*XFAIL:.*$/ |
| 76 | syn match llvmSpecialComment /;\s*XTARGET:.*$/ |
Nick Hildenbrandt | 75f79b9 | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 77 | |
| 78 | if version >= 508 || !exists("did_c_syn_inits") |
| 79 | if version < 508 |
| 80 | let did_c_syn_inits = 1 |
| 81 | command -nargs=+ HiLink hi link <args> |
| 82 | else |
| 83 | command -nargs=+ HiLink hi def link <args> |
| 84 | endif |
| 85 | |
| 86 | HiLink llvmType Type |
| 87 | HiLink llvmStatement Statement |
| 88 | HiLink llvmNumber Number |
| 89 | HiLink llvmComment Comment |
| 90 | HiLink llvmString String |
| 91 | HiLink llvmLabel Label |
Dan Gohman | 5d8ab65 | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 92 | HiLink llvmKeyword Keyword |
| 93 | HiLink llvmBoolean Boolean |
| 94 | HiLink llvmFloat Float |
| 95 | HiLink llvmIgnore Ignore |
| 96 | HiLink llvmConstant Constant |
| 97 | HiLink llvmSpecialComment SpecialComment |
| 98 | HiLink llvmError Error |
Nick Hildenbrandt | 75f79b9 | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 99 | |
| 100 | delcommand HiLink |
| 101 | endif |
Misha Brukman | adf4e4d | 2009-01-02 16:26:14 +0000 | [diff] [blame] | 102 | |
Nick Hildenbrandt | 75f79b9 | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 103 | let b:current_syntax = "llvm" |