279 lines · plain
1" Vim syntax file2" Language: llvm3" Maintainer: The LLVM team, http://llvm.org/4" Version: $Revision$5 6if version < 6007 syntax clear8elseif exists("b:current_syntax")9 finish10endif11 12syn case match13 14" Types.15" Types also include struct, array, vector, etc. but these don't16" benefit as much from having dedicated highlighting rules.17syn keyword llvmType void half bfloat float double x86_fp80 fp128 ppc_fp12818syn keyword llvmType label metadata x86_mmx x86_amx19syn keyword llvmType type label opaque token ptr20syn match llvmType /\<i\d\+\>/21 22" Instructions.23" The true and false tokens can be used for comparison opcodes, but it's24" much more common for these tokens to be used for boolean constants.25syn keyword llvmStatement add addrspacecast alloca and arcp ashr atomicrmw26syn keyword llvmStatement bitcast br catchpad catchswitch catchret call callbr27syn keyword llvmStatement cleanuppad cleanupret cmpxchg disjoint eq exact28syn keyword llvmStatement extractelement extractvalue fadd fast fcmp fdiv fence29syn keyword llvmStatement fmul fneg fpext fptosi fptoui fptrunc free freeze30syn keyword llvmStatement frem fsub getelementptr icmp inbounds indirectbr31syn keyword llvmStatement insertelement insertvalue inttoptr invoke landingpad32syn keyword llvmStatement load lshr malloc max min mul nand ne ninf nnan nsw33syn keyword llvmStatement nsz nuw oeq oge ogt ole olt one or ord phi ptrtoint34syn keyword llvmStatement resume ret sdiv select sext sge sgt shl shufflevector35syn keyword llvmStatement sitofp sle slt srem store sub switch trunc udiv ueq36syn keyword llvmStatement uge ugt uitofp ule ult umax umin une uno unreachable37syn keyword llvmStatement unwind urem va_arg xchg xor zext38 39" Debug records.40syn match llvmStatement /\v#dbg_(assign|declare|label|value)/41 42" Keywords.43syn keyword llvmKeyword44 \ acq_rel45 \ acquire46 \ addrspace47 \ alias48 \ align49 \ alignstack50 \ allocsize51 \ alwaysinline52 \ appending53 \ argmemonly54 \ arm_aapcs_vfpcc55 \ arm_aapcscc56 \ arm_apcscc57 \ asm58 \ atomic59 \ available_externally60 \ blockaddress61 \ builtin62 \ byref63 \ byval64 \ c65 \ caller66 \ catch67 \ cc68 \ ccc69 \ cleanup70 \ cold71 \ coldcc72 \ comdat73 \ common74 \ constant75 \ convergent76 \ datalayout77 \ declare78 \ default79 \ define80 \ deplibs81 \ dereferenceable82 \ dereferenceable_or_null83 \ distinct84 \ dllexport85 \ dllimport86 \ dso_local87 \ dso_preemptable88 \ except89 \ extern_weak90 \ external91 \ externally_initialized92 \ fastcc93 \ filter94 \ from95 \ gc96 \ global97 \ hhvm_ccc98 \ hhvmcc99 \ hidden100 \ hot101 \ immarg102 \ inaccessiblemem_or_argmemonly103 \ inaccessiblememonly104 \ inalloca105 \ initialexec106 \ inlinehint107 \ inreg108 \ intel_ocl_bicc109 \ inteldialect110 \ internal111 \ jumptable112 \ linkonce113 \ linkonce_odr114 \ local_unnamed_addr115 \ localdynamic116 \ localexec117 \ minsize118 \ module119 \ monotonic120 \ msp430_intrcc121 \ mustprogress122 \ musttail123 \ naked124 \ nest125 \ noalias126 \ nobuiltin127 \ nocallback128 \ nocapture129 \ nocf_check130 \ no_cfi131 \ noduplicate132 \ nofree133 \ noimplicitfloat134 \ noinline135 \ nomerge136 \ nonlazybind137 \ nonnull138 \ noprofile139 \ norecurse140 \ noredzone141 \ noreturn142 \ nosync143 \ noundef144 \ nounwind145 \ nosanitize_bounds146 \ nosanitize_coverage147 \ null_pointer_is_valid148 \ optdebug149 \ optforfuzzing150 \ optnone151 \ optsize152 \ personality153 \ preallocated154 \ private155 \ protected156 \ ptrauth157 \ ptx_device158 \ ptx_kernel159 \ readnone160 \ readonly161 \ release162 \ returned163 \ returns_twice164 \ safestack165 \ sanitize_address166 \ sanitize_alloc_token167 \ sanitize_hwaddress168 \ sanitize_memory169 \ sanitize_memtag170 \ sanitize_thread171 \ section172 \ seq_cst173 \ shadowcallstack174 \ sideeffect175 \ signext176 \ source_filename177 \ speculatable178 \ speculative_load_hardening179 \ spir_func180 \ spir_kernel181 \ splat182 \ sret183 \ ssp184 \ sspreq185 \ sspstrong186 \ strictfp187 \ swiftcc188 \ swifterror189 \ swifttailcc190 \ swiftself191 \ syncscope192 \ tail193 \ tailcc194 \ target195 \ thread_local196 \ to197 \ triple198 \ unnamed_addr199 \ unordered200 \ uselistorder201 \ uselistorder_bb202 \ uwtable203 \ volatile204 \ weak205 \ weak_odr206 \ willreturn207 \ win64cc208 \ within209 \ writeonly210 \ x86_64_sysvcc211 \ x86_fastcallcc212 \ x86_stdcallcc213 \ x86_thiscallcc214 \ zeroext215 216" Obsolete keywords.217syn keyword llvmError getresult begin end218 219" Misc syntax.220syn match llvmNoName /[%@!]\d\+\>/221syn match llvmNumber /-\?\<\d\+\>/222syn match llvmFloat /-\?\<\d\+\.\d*\(e[+-]\d\+\)\?\>/223syn match llvmFloat /\<\(u\|s\)\?0x[KLMHR]\?\x\+\>/224syn keyword llvmBoolean true false225syn keyword llvmConstant zeroinitializer undef null none poison vscale226syn match llvmComment /;.*$/227syn region llvmString start=/"/ skip=/\\"/ end=/"/228syn match llvmLabel /[-a-zA-Z$._][-a-zA-Z$._0-9]*:/229syn match llvmIdentifier /[%@][-a-zA-Z$._][-a-zA-Z$._0-9]*/230 231" Named metadata and specialized metadata keywords.232syn match llvmIdentifier /![-a-zA-Z$._][-a-zA-Z$._0-9]*\ze\s*$/233syn match llvmIdentifier /![-a-zA-Z$._][-a-zA-Z$._0-9]*\ze\s*[=!]/234syn match llvmType /!\zs\a\+\ze\s*(/235syn match llvmConstant /\<DW_TAG_[a-z_]\+\>/236syn match llvmConstant /\<DW_ATE_[a-zA-Z_]\+\>/237syn match llvmConstant /\<DW_OP_[a-zA-Z0-9_]\+\>/238syn match llvmConstant /\<DW_LANG_[a-zA-Z0-9_]\+\>/239syn match llvmConstant /\<DW_VIRTUALITY_[a-z_]\+\>/240syn match llvmConstant /\<DIFlag[A-Za-z]\+\>/241 242" Syntax-highlight lit test commands and bug numbers.243syn match llvmSpecialComment /;\s*PR\d*\s*$/244syn match llvmSpecialComment /;\s*REQUIRES:.*$/245syn match llvmSpecialComment /;\s*RUN:.*$/246syn match llvmSpecialComment /;\s*ALLOW_RETRIES:.*$/247syn match llvmSpecialComment /;\s*CHECK:.*$/248syn match llvmSpecialComment /;\s*CHECK-EMPTY:\s*$/249syn match llvmSpecialComment /\v;\s*CHECK-(NEXT|NOT|DAG|SAME|LABEL|COUNT-\d+):.*$/250syn match llvmSpecialComment /;\s*XFAIL:.*$/251 252if version >= 508 || !exists("did_c_syn_inits")253 if version < 508254 let did_c_syn_inits = 1255 command -nargs=+ HiLink hi link <args>256 else257 command -nargs=+ HiLink hi def link <args>258 endif259 260 HiLink llvmType Type261 HiLink llvmStatement Statement262 HiLink llvmNumber Number263 HiLink llvmComment Comment264 HiLink llvmString String265 HiLink llvmLabel Label266 HiLink llvmKeyword Keyword267 HiLink llvmBoolean Boolean268 HiLink llvmFloat Float269 HiLink llvmNoName Identifier270 HiLink llvmConstant Constant271 HiLink llvmSpecialComment SpecialComment272 HiLink llvmError Error273 HiLink llvmIdentifier Identifier274 275 delcommand HiLink276endif277 278let b:current_syntax = "llvm"279