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. |
Benjamin Kramer | f39eab9 | 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 | 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. |
Benjamin Kramer | f39eab9 | 2012-12-02 16:40:38 +0000 | [diff] [blame] | 25 | syn keyword llvmStatement add alloca and arcp ashr atomicrmw bitcast br call |
| 26 | syn keyword llvmStatement cmpxchg eq exact extractelement extractvalue fadd fast |
| 27 | syn keyword llvmStatement fcmp fdiv fence fmul fpext fptosi fptoui fptrunc free |
| 28 | syn keyword llvmStatement frem fsub getelementptr icmp inbounds indirectbr |
| 29 | syn keyword llvmStatement insertelement insertvalue inttoptr invoke landingpad |
| 30 | syn keyword llvmStatement load lshr malloc max min mul nand ne ninf nnan nsw nsz |
| 31 | syn keyword llvmStatement nuw oeq oge ogt ole olt one or ord phi ptrtoint resume |
| 32 | syn keyword llvmStatement ret sdiv select sext sge sgt shl shufflevector sitofp |
| 33 | syn keyword llvmStatement sle slt srem store sub switch trunc udiv ueq uge ugt |
| 34 | syn keyword llvmStatement uitofp ule ult umax umin une uno unreachable unwind |
| 35 | syn keyword llvmStatement urem va_arg xchg xor zext |
Nick Hildenbrandt | 75f79b9 | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 36 | |
Dan Gohman | 5d8ab65 | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 37 | " Keywords. |
Benjamin Kramer | f39eab9 | 2012-12-02 16:40:38 +0000 | [diff] [blame] | 38 | syn keyword llvmKeyword acq_rel acquire address_safety addrspace alias align |
| 39 | syn keyword llvmKeyword alignstack alwaysinline appending arm_aapcs_vfpcc |
| 40 | syn keyword llvmKeyword arm_aapcscc arm_apcscc asm atomic available_externally |
| 41 | syn keyword llvmKeyword blockaddress byval c catch cc ccc cleanup coldcc common |
| 42 | syn keyword llvmKeyword constant datalayout declare default define deplibs |
| 43 | syn keyword llvmKeyword dllexport dllimport except extern_weak external fastcc |
| 44 | syn keyword llvmKeyword filter gc global hidden initialexec inlinehint inreg |
| 45 | syn keyword llvmKeyword intel_ocl_bicc inteldialect internal linker_private |
| 46 | syn keyword llvmKeyword linker_private_weak linker_private_weak_def_auto |
| 47 | syn keyword llvmKeyword linkonce linkonce_odr linkonce_odr_auto_hide |
| 48 | syn keyword llvmKeyword localdynamic localexec minsize module monotonic |
| 49 | syn keyword llvmKeyword msp430_intrcc naked nest noalias nocapture |
| 50 | syn keyword llvmKeyword noimplicitfloat noinline nonlazybind noredzone noreturn |
| 51 | syn keyword llvmKeyword nounwind optsize personality private protected |
| 52 | syn keyword llvmKeyword ptx_device ptx_kernel readnone readonly release |
| 53 | syn keyword llvmKeyword returns_twice section seq_cst sideeffect signext |
Bill Wendling | 114baee | 2013-01-23 06:41:41 +0000 | [diff] [blame^] | 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 zeroext |
Nick Hildenbrandt | 75f79b9 | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 58 | |
Dan Gohman | 5d8ab65 | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 59 | " Obsolete keywords. |
Dan Gohman | 245ae51 | 2010-08-28 20:14:05 +0000 | [diff] [blame] | 60 | syn keyword llvmError getresult begin end |
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 | " Misc syntax. |
Owen Anderson | 2a5892f | 2010-07-29 17:57:57 +0000 | [diff] [blame] | 63 | syn match llvmNoName /[%@]\d\+\>/ |
Dan Gohman | 5d8ab65 | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 64 | syn match llvmNumber /-\?\<\d\+\>/ |
| 65 | syn match llvmFloat /-\?\<\d\+\.\d*\(e[+-]\d\+\)\?\>/ |
| 66 | syn match llvmFloat /\<0x\x\+\>/ |
| 67 | syn keyword llvmBoolean true false |
| 68 | syn keyword llvmConstant zeroinitializer undef null |
| 69 | syn match llvmComment /;.*$/ |
| 70 | syn region llvmString start=/"/ skip=/\\"/ end=/"/ |
Dan Gohman | 7a523dd | 2010-01-09 17:22:48 +0000 | [diff] [blame] | 71 | syn match llvmLabel /[-a-zA-Z$._][-a-zA-Z$._0-9]*:/ |
| 72 | syn match llvmIdentifier /[%@][-a-zA-Z$._][-a-zA-Z$._0-9]*/ |
Dan Gohman | 5d8ab65 | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 73 | |
| 74 | " Syntax-highlight dejagnu test commands. |
| 75 | syn match llvmSpecialComment /;\s*RUN:.*$/ |
| 76 | syn match llvmSpecialComment /;\s*PR\d*\s*$/ |
| 77 | syn match llvmSpecialComment /;\s*END\.\s*$/ |
| 78 | syn match llvmSpecialComment /;\s*XFAIL:.*$/ |
Nick Hildenbrandt | 75f79b9 | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 79 | |
| 80 | if version >= 508 || !exists("did_c_syn_inits") |
| 81 | if version < 508 |
| 82 | let did_c_syn_inits = 1 |
| 83 | command -nargs=+ HiLink hi link <args> |
| 84 | else |
| 85 | command -nargs=+ HiLink hi def link <args> |
| 86 | endif |
| 87 | |
| 88 | HiLink llvmType Type |
| 89 | HiLink llvmStatement Statement |
| 90 | HiLink llvmNumber Number |
| 91 | HiLink llvmComment Comment |
| 92 | HiLink llvmString String |
| 93 | HiLink llvmLabel Label |
Dan Gohman | 5d8ab65 | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 94 | HiLink llvmKeyword Keyword |
| 95 | HiLink llvmBoolean Boolean |
| 96 | HiLink llvmFloat Float |
Owen Anderson | 2a5892f | 2010-07-29 17:57:57 +0000 | [diff] [blame] | 97 | HiLink llvmNoName Identifier |
Dan Gohman | 5d8ab65 | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 98 | HiLink llvmConstant Constant |
| 99 | HiLink llvmSpecialComment SpecialComment |
| 100 | HiLink llvmError Error |
Dan Gohman | 7a523dd | 2010-01-09 17:22:48 +0000 | [diff] [blame] | 101 | HiLink llvmIdentifier Identifier |
Nick Hildenbrandt | 75f79b9 | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 102 | |
| 103 | delcommand HiLink |
| 104 | endif |
Misha Brukman | adf4e4d | 2009-01-02 16:26:14 +0000 | [diff] [blame] | 105 | |
Nick Hildenbrandt | 75f79b9 | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 106 | let b:current_syntax = "llvm" |