| " Vim syntax file | |
| " Language: llvm | |
| " Maintainer: The LLVM team, http://llvm.org/ | |
| " Version: $Revision: 137806 $ | |
| if version < 600 | |
| syntax clear | |
| elseif exists("b:current_syntax") | |
| finish | |
| endif | |
| syn case match | |
| " Types. | |
| " Types also include struct, array, vector, etc. but these don't | |
| " benefit as much from having dedicated highlighting rules. | |
| syn keyword llvmType void float double | |
| syn keyword llvmType x86_fp80 fp128 ppc_fp128 | |
| syn keyword llvmType type label opaque | |
| syn match llvmType /\<i\d\+\>/ | |
| " Instructions. | |
| " The true and false tokens can be used for comparison opcodes, but it's | |
| " much more common for these tokens to be used for boolean constants. | |
| syn keyword llvmStatement add fadd sub fsub mul fmul | |
| syn keyword llvmStatement sdiv udiv fdiv srem urem frem | |
| syn keyword llvmStatement and or xor | |
| syn keyword llvmStatement icmp fcmp | |
| syn keyword llvmStatement eq ne ugt uge ult ule sgt sge slt sle | |
| syn keyword llvmStatement oeq ogt oge olt ole one ord ueq ugt uge | |
| syn keyword llvmStatement ult ule une uno | |
| syn keyword llvmStatement nuw nsw exact inbounds | |
| syn keyword llvmStatement phi call select shl lshr ashr va_arg | |
| syn keyword llvmStatement trunc zext sext | |
| syn keyword llvmStatement fptrunc fpext fptoui fptosi uitofp sitofp | |
| syn keyword llvmStatement ptrtoint inttoptr bitcast | |
| syn keyword llvmStatement ret br indirectbr switch invoke unwind unreachable | |
| syn keyword llvmStatement malloc alloca free load store getelementptr | |
| syn keyword llvmStatement extractelement insertelement shufflevector | |
| syn keyword llvmStatement extractvalue insertvalue | |
| " Keywords. | |
| syn keyword llvmKeyword define declare global constant | |
| syn keyword llvmKeyword internal external private | |
| syn keyword llvmKeyword linkonce linkonce_odr weak weak_odr appending | |
| syn keyword llvmKeyword common extern_weak | |
| syn keyword llvmKeyword thread_local dllimport dllexport | |
| syn keyword llvmKeyword hidden protected default | |
| syn keyword llvmKeyword except deplibs | |
| syn keyword llvmKeyword volatile fastcc coldcc cc ccc | |
| syn keyword llvmKeyword x86_stdcallcc x86_fastcallcc | |
| syn keyword llvmKeyword ptx_kernel ptx_device | |
| syn keyword llvmKeyword signext zeroext inreg sret nounwind noreturn | |
| syn keyword llvmKeyword nocapture byval nest readnone readonly noalias uwtable | |
| syn keyword llvmKeyword inlinehint noinline alwaysinline optsize ssp sspreq | |
| syn keyword llvmKeyword noredzone noimplicitfloat naked alignstack | |
| syn keyword llvmKeyword module asm align tail to | |
| syn keyword llvmKeyword addrspace section alias sideeffect c gc | |
| syn keyword llvmKeyword target datalayout triple | |
| syn keyword llvmKeyword blockaddress | |
| " Obsolete keywords. | |
| syn keyword llvmError getresult begin end | |
| " Misc syntax. | |
| syn match llvmNoName /[%@]\d\+\>/ | |
| syn match llvmNumber /-\?\<\d\+\>/ | |
| syn match llvmFloat /-\?\<\d\+\.\d*\(e[+-]\d\+\)\?\>/ | |
| syn match llvmFloat /\<0x\x\+\>/ | |
| syn keyword llvmBoolean true false | |
| syn keyword llvmConstant zeroinitializer undef null | |
| syn match llvmComment /;.*$/ | |
| syn region llvmString start=/"/ skip=/\\"/ end=/"/ | |
| syn match llvmLabel /[-a-zA-Z$._][-a-zA-Z$._0-9]*:/ | |
| syn match llvmIdentifier /[%@][-a-zA-Z$._][-a-zA-Z$._0-9]*/ | |
| " Syntax-highlight dejagnu test commands. | |
| syn match llvmSpecialComment /;\s*RUN:.*$/ | |
| syn match llvmSpecialComment /;\s*PR\d*\s*$/ | |
| syn match llvmSpecialComment /;\s*END\.\s*$/ | |
| syn match llvmSpecialComment /;\s*XFAIL:.*$/ | |
| syn match llvmSpecialComment /;\s*XTARGET:.*$/ | |
| if version >= 508 || !exists("did_c_syn_inits") | |
| if version < 508 | |
| let did_c_syn_inits = 1 | |
| command -nargs=+ HiLink hi link <args> | |
| else | |
| command -nargs=+ HiLink hi def link <args> | |
| endif | |
| HiLink llvmType Type | |
| HiLink llvmStatement Statement | |
| HiLink llvmNumber Number | |
| HiLink llvmComment Comment | |
| HiLink llvmString String | |
| HiLink llvmLabel Label | |
| HiLink llvmKeyword Keyword | |
| HiLink llvmBoolean Boolean | |
| HiLink llvmFloat Float | |
| HiLink llvmNoName Identifier | |
| HiLink llvmConstant Constant | |
| HiLink llvmSpecialComment SpecialComment | |
| HiLink llvmError Error | |
| HiLink llvmIdentifier Identifier | |
| delcommand HiLink | |
| endif | |
| let b:current_syntax = "llvm" |