From 2414a946848dbba33c2abea88a65a291a2399121 Mon Sep 17 00:00:00 2001 From: "Kenneth Benzie (Benie)" Date: Wed, 12 Sep 2018 16:05:52 +0100 Subject: [PATCH] Update llvm syntax file --- syntax/llvm.vim | 213 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 168 insertions(+), 45 deletions(-) diff --git a/syntax/llvm.vim b/syntax/llvm.vim index 89d340b..33abbc8 100644 --- a/syntax/llvm.vim +++ b/syntax/llvm.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: llvm " Maintainer: The LLVM team, http://llvm.org/ -" Version: $Revision: 137806 $ +" Version: $Revision$ if version < 600 syntax clear @@ -14,72 +14,195 @@ 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 keyword llvmType void half float double x86_fp80 fp128 ppc_fp128 +syn keyword llvmType label metadata x86_mmx +syn keyword llvmType type label opaque token syn match llvmType /\/ " 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 +syn keyword llvmStatement add addrspacecast alloca and arcp ashr atomicrmw +syn keyword llvmStatement bitcast br catchpad catchswitch catchret call +syn keyword llvmStatement cleanuppad cleanupret cmpxchg eq exact extractelement +syn keyword llvmStatement extractvalue fadd fast fcmp fdiv fence fmul fpext +syn keyword llvmStatement fptosi fptoui fptrunc free frem fsub getelementptr +syn keyword llvmStatement icmp inbounds indirectbr insertelement insertvalue +syn keyword llvmStatement inttoptr invoke landingpad load lshr malloc max min +syn keyword llvmStatement mul nand ne ninf nnan nsw nsz nuw oeq oge ogt ole +syn keyword llvmStatement olt one or ord phi ptrtoint resume ret sdiv select +syn keyword llvmStatement sext sge sgt shl shufflevector sitofp sle slt srem +syn keyword llvmStatement store sub switch trunc udiv ueq uge ugt uitofp ule ult +syn keyword llvmStatement umax umin une uno unreachable unwind urem va_arg +syn keyword llvmStatement xchg xor zext " 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 +syn keyword llvmKeyword + \ acq_rel + \ acquire + \ addrspace + \ alias + \ align + \ alignstack + \ alwaysinline + \ appending + \ argmemonly + \ arm_aapcscc + \ arm_aapcs_vfpcc + \ arm_apcscc + \ asm + \ atomic + \ available_externally + \ blockaddress + \ builtin + \ byval + \ c + \ catch + \ caller + \ cc + \ ccc + \ cleanup + \ coldcc + \ comdat + \ common + \ constant + \ datalayout + \ declare + \ default + \ define + \ deplibs + \ dereferenceable + \ distinct + \ dllexport + \ dllimport + \ dso_local + \ dso_preemptable + \ except + \ external + \ externally_initialized + \ extern_weak + \ fastcc + \ filter + \ from + \ gc + \ global + \ hhvmcc + \ hhvm_ccc + \ hidden + \ initialexec + \ inlinehint + \ inreg + \ inteldialect + \ intel_ocl_bicc + \ internal + \ linkonce + \ linkonce_odr + \ localdynamic + \ localexec + \ local_unnamed_addr + \ minsize + \ module + \ monotonic + \ msp430_intrcc + \ musttail + \ naked + \ nest + \ noalias + \ nobuiltin + \ nocapture + \ noimplicitfloat + \ noinline + \ nonlazybind + \ nonnull + \ norecurse + \ noredzone + \ noreturn + \ nounwind + \ optnone + \ optsize + \ personality + \ private + \ protected + \ ptx_device + \ ptx_kernel + \ readnone + \ readonly + \ release + \ returned + \ returns_twice + \ sanitize_address + \ sanitize_memory + \ sanitize_thread + \ section + \ seq_cst + \ sideeffect + \ signext + \ syncscope + \ source_filename + \ speculatable + \ spir_func + \ spir_kernel + \ sret + \ ssp + \ sspreq + \ sspstrong + \ strictfp + \ swiftcc + \ tail + \ target + \ thread_local + \ to + \ triple + \ unnamed_addr + \ unordered + \ uselistorder + \ uselistorder_bb + \ uwtable + \ volatile + \ weak + \ weak_odr + \ within + \ writeonly + \ x86_64_sysvcc + \ win64cc + \ x86_fastcallcc + \ x86_stdcallcc + \ x86_thiscallcc + \ zeroext " Obsolete keywords. syn keyword llvmError getresult begin end " Misc syntax. -syn match llvmNoName /[%@]\d\+\>/ +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 /;.*$/ contains=@Spell +syn keyword llvmConstant zeroinitializer undef null none +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:.*$/ +" Named metadata and specialized metadata keywords. +syn match llvmIdentifier /![-a-zA-Z$._][-a-zA-Z$._0-9]*\ze\s*$/ +syn match llvmIdentifier /![-a-zA-Z$._][-a-zA-Z$._0-9]*\ze\s*[=!]/ +syn match llvmType /!\zs\a\+\ze\s*(/ +syn match llvmConstant /\/ +syn match llvmConstant /\/ +syn match llvmConstant /\/ +syn match llvmConstant /\/ +syn match llvmConstant /\/ +syn match llvmConstant /\/ + +" Syntax-highlight lit test commands and bug numbers. syn match llvmSpecialComment /;\s*PR\d*\s*$/ -syn match llvmSpecialComment /;\s*END\.\s*$/ +syn match llvmSpecialComment /;\s*REQUIRES:.*$/ +syn match llvmSpecialComment /;\s*RUN:.*$/ +syn match llvmSpecialComment /;\s*CHECK:.*$/ +syn match llvmSpecialComment "\v;\s*CHECK-(NEXT|NOT|DAG|SAME|LABEL):.*$" syn match llvmSpecialComment /;\s*XFAIL:.*$/ -syn match llvmSpecialComment /;\s*XTARGET:.*$/ if version >= 508 || !exists("did_c_syn_inits") if version < 508