| " Vim syntax file |
| " Language: llvm |
| " Maintainer: The LLVM team, http://llvm.org/ |
| " Version: $Revision$ |
| |
| 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" |