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 |
| 26 | syn keyword llvmStatement bitcast br call cmpxchg eq exact extractelement |
| 27 | syn keyword llvmStatement extractvalue fadd fast fcmp fdiv fence fmul fpext |
| 28 | syn keyword llvmStatement fptosi fptoui fptrunc free frem fsub getelementptr |
| 29 | syn keyword llvmStatement icmp inbounds indirectbr insertelement insertvalue |
| 30 | syn keyword llvmStatement inttoptr invoke landingpad load lshr malloc max min |
| 31 | syn keyword llvmStatement mul nand ne ninf nnan nsw nsz nuw oeq oge ogt ole |
| 32 | syn keyword llvmStatement olt one or ord phi ptrtoint resume ret sdiv select |
| 33 | syn keyword llvmStatement sext sge sgt shl shufflevector sitofp sle slt srem |
| 34 | syn keyword llvmStatement store sub switch trunc udiv ueq uge ugt uitofp ule ult |
| 35 | syn keyword llvmStatement umax umin une uno unreachable unwind urem va_arg |
| 36 | syn keyword llvmStatement xchg xor zext |
Nick Hildenbrandt | 37e690a | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 37 | |
Dan Gohman | 29ad9bf | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 38 | " Keywords. |
Kostya Serebryany | cf880b9 | 2013-02-26 06:58:09 +0000 | [diff] [blame] | 39 | syn keyword llvmKeyword acq_rel acquire sanitize_address addrspace alias align |
Benjamin Kramer | 65e7c66 | 2012-12-02 16:40:38 +0000 | [diff] [blame] | 40 | syn keyword llvmKeyword alignstack alwaysinline appending arm_aapcs_vfpcc |
| 41 | syn keyword llvmKeyword arm_aapcscc arm_apcscc asm atomic available_externally |
| 42 | syn keyword llvmKeyword blockaddress byval c catch cc ccc cleanup coldcc common |
| 43 | syn keyword llvmKeyword constant datalayout declare default define deplibs |
Duncan P. N. Exon Smith | 090a19b | 2015-01-08 22:38:29 +0000 | [diff] [blame] | 44 | syn keyword llvmKeyword distinct dllexport dllimport except extern_weak external |
Maksim Panchenko | cce239c | 2015-09-29 22:09:16 +0000 | [diff] [blame] | 45 | syn keyword llvmKeyword externally_initialized fastcc filter gc global hhvmcc |
| 46 | syn keyword llvmKeyword hhvm_ccc hidden initialexec inlinehint inreg |
| 47 | syn keyword llvmKeyword intel_ocl_bicc inteldialect internal linkonce |
| 48 | syn keyword llvmKeyword linkonce_odr localdynamic localexec minsize module |
| 49 | syn keyword llvmKeyword monotonic msp430_intrcc musttail naked nest |
Saleem Abdulrasool | 9fa3dd4 | 2014-12-12 21:52:44 +0000 | [diff] [blame] | 50 | syn keyword llvmKeyword noalias nocapture noimplicitfloat noinline nonlazybind |
| 51 | syn keyword llvmKeyword noredzone noreturn nounwind optnone optsize personality |
| 52 | syn keyword llvmKeyword private protected ptx_device ptx_kernel readnone |
| 53 | syn keyword llvmKeyword readonly release returns_twice sanitize_thread |
| 54 | syn keyword llvmKeyword sanitize_memory section seq_cst sideeffect signext |
| 55 | syn keyword llvmKeyword singlethread spir_func spir_kernel sret ssp sspreq |
| 56 | syn keyword llvmKeyword sspstrong tail target thread_local to triple |
| 57 | syn keyword llvmKeyword unnamed_addr unordered uwtable volatile weak weak_odr |
| 58 | syn keyword llvmKeyword x86_fastcallcc x86_stdcallcc x86_thiscallcc |
| 59 | syn keyword llvmKeyword x86_64_sysvcc x86_64_win64cc zeroext uselistorder |
Jonathan Roelofs | 32eeb76 | 2015-09-03 20:10:40 +0000 | [diff] [blame] | 60 | syn keyword llvmKeyword uselistorder_bb musttail |
Nick Hildenbrandt | 37e690a | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 61 | |
Dan Gohman | 29ad9bf | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 62 | " Obsolete keywords. |
Dan Gohman | d13b1a3 | 2010-08-28 20:14:05 +0000 | [diff] [blame] | 63 | syn keyword llvmError getresult begin end |
Nick Hildenbrandt | 37e690a | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 64 | |
Dan Gohman | 29ad9bf | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 65 | " Misc syntax. |
Duncan P. N. Exon Smith | 6a48483 | 2015-01-13 21:10:44 +0000 | [diff] [blame] | 66 | syn match llvmNoName /[%@!]\d\+\>/ |
Dan Gohman | 29ad9bf | 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 | 62f05b2 | 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 | 29ad9bf | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 76 | |
Duncan P. N. Exon Smith | 6a48483 | 2015-01-13 21:10:44 +0000 | [diff] [blame] | 77 | " Named metadata and specialized metadata keywords. |
| 78 | syn match llvmIdentifier /![-a-zA-Z$._][-a-zA-Z$._0-9]*\ze\s*$/ |
| 79 | syn match llvmIdentifier /![-a-zA-Z$._][-a-zA-Z$._0-9]*\ze\s*[=!]/ |
| 80 | syn match llvmType /!\zs\a\+\ze\s*(/ |
Duncan P. N. Exon Smith | 9748607 | 2015-02-03 21:56:01 +0000 | [diff] [blame] | 81 | syn match llvmConstant /\<DW_TAG_[a-z_]\+\>/ |
Duncan P. N. Exon Smith | cd6636c | 2015-02-13 01:17:35 +0000 | [diff] [blame] | 82 | syn match llvmConstant /\<DW_ATE_[a-zA-Z_]\+\>/ |
Duncan P. N. Exon Smith | 0c5c012 | 2015-02-13 01:42:09 +0000 | [diff] [blame] | 83 | syn match llvmConstant /\<DW_OP_[a-zA-Z0-9_]\+\>/ |
Duncan P. N. Exon Smith | aece2dc | 2015-02-13 01:21:25 +0000 | [diff] [blame] | 84 | syn match llvmConstant /\<DW_LANG_[a-zA-Z0-9_]\+\>/ |
Duncan P. N. Exon Smith | 890533e | 2015-02-13 01:28:16 +0000 | [diff] [blame] | 85 | syn match llvmConstant /\<DW_VIRTUALITY_[a-z_]\+\>/ |
Duncan P. N. Exon Smith | 70ab3d2 | 2015-02-21 01:02:18 +0000 | [diff] [blame] | 86 | syn match llvmConstant /\<DIFlag[A-Za-z]\+\>/ |
Duncan P. N. Exon Smith | 6a48483 | 2015-01-13 21:10:44 +0000 | [diff] [blame] | 87 | |
Chandler Carruth | 60ec79e | 2015-07-15 01:48:40 +0000 | [diff] [blame] | 88 | " Syntax-highlight lit test commands and bug numbers. |
Dan Gohman | 29ad9bf | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 89 | syn match llvmSpecialComment /;\s*PR\d*\s*$/ |
Chandler Carruth | 60ec79e | 2015-07-15 01:48:40 +0000 | [diff] [blame] | 90 | syn match llvmSpecialComment /;\s*REQUIRES:.*$/ |
| 91 | syn match llvmSpecialComment /;\s*RUN:.*$/ |
Dan Gohman | 29ad9bf | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 92 | syn match llvmSpecialComment /;\s*XFAIL:.*$/ |
Nick Hildenbrandt | 37e690a | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 93 | |
| 94 | if version >= 508 || !exists("did_c_syn_inits") |
| 95 | if version < 508 |
| 96 | let did_c_syn_inits = 1 |
| 97 | command -nargs=+ HiLink hi link <args> |
| 98 | else |
| 99 | command -nargs=+ HiLink hi def link <args> |
| 100 | endif |
| 101 | |
| 102 | HiLink llvmType Type |
| 103 | HiLink llvmStatement Statement |
| 104 | HiLink llvmNumber Number |
| 105 | HiLink llvmComment Comment |
| 106 | HiLink llvmString String |
| 107 | HiLink llvmLabel Label |
Dan Gohman | 29ad9bf | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 108 | HiLink llvmKeyword Keyword |
| 109 | HiLink llvmBoolean Boolean |
| 110 | HiLink llvmFloat Float |
Owen Anderson | b2c657c | 2010-07-29 17:57:57 +0000 | [diff] [blame] | 111 | HiLink llvmNoName Identifier |
Dan Gohman | 29ad9bf | 2009-01-04 23:09:38 +0000 | [diff] [blame] | 112 | HiLink llvmConstant Constant |
| 113 | HiLink llvmSpecialComment SpecialComment |
| 114 | HiLink llvmError Error |
Dan Gohman | 62f05b2 | 2010-01-09 17:22:48 +0000 | [diff] [blame] | 115 | HiLink llvmIdentifier Identifier |
Nick Hildenbrandt | 37e690a | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 116 | |
| 117 | delcommand HiLink |
| 118 | endif |
Misha Brukman | ac7b456 | 2009-01-02 16:26:14 +0000 | [diff] [blame] | 119 | |
Nick Hildenbrandt | 37e690a | 2002-10-07 22:54:48 +0000 | [diff] [blame] | 120 | let b:current_syntax = "llvm" |