llvm.vim 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. " Vim syntax file
  2. " Language: llvm
  3. " Maintainer: The LLVM team, http://llvm.org/
  4. " Version: $Revision$
  5. if version < 600
  6. syntax clear
  7. elseif exists("b:current_syntax")
  8. finish
  9. endif
  10. syn case match
  11. " Types.
  12. " Types also include struct, array, vector, etc. but these don't
  13. " benefit as much from having dedicated highlighting rules.
  14. syn keyword llvmType void half float double x86_fp80 fp128 ppc_fp128
  15. syn keyword llvmType label metadata x86_mmx
  16. syn keyword llvmType type label opaque token
  17. syn match llvmType /\<i\d\+\>/
  18. " Instructions.
  19. " The true and false tokens can be used for comparison opcodes, but it's
  20. " much more common for these tokens to be used for boolean constants.
  21. syn keyword llvmStatement add addrspacecast alloca and arcp ashr atomicrmw
  22. syn keyword llvmStatement bitcast br catchpad catchswitch catchret call callbr
  23. syn keyword llvmStatement cleanuppad cleanupret cmpxchg eq exact extractelement
  24. syn keyword llvmStatement extractvalue fadd fast fcmp fdiv fence fmul fpext
  25. syn keyword llvmStatement fptosi fptoui fptrunc free frem fsub fneg getelementptr
  26. syn keyword llvmStatement icmp inbounds indirectbr insertelement insertvalue
  27. syn keyword llvmStatement inttoptr invoke landingpad load lshr malloc max min
  28. syn keyword llvmStatement mul nand ne ninf nnan nsw nsz nuw oeq oge ogt ole
  29. syn keyword llvmStatement olt one or ord phi ptrtoint resume ret sdiv select
  30. syn keyword llvmStatement sext sge sgt shl shufflevector sitofp sle slt srem
  31. syn keyword llvmStatement store sub switch trunc udiv ueq uge ugt uitofp ule ult
  32. syn keyword llvmStatement umax umin une uno unreachable unwind urem va_arg
  33. syn keyword llvmStatement xchg xor zext
  34. " Keywords.
  35. syn keyword llvmKeyword
  36. \ acq_rel
  37. \ acquire
  38. \ addrspace
  39. \ alias
  40. \ align
  41. \ alignstack
  42. \ alwaysinline
  43. \ appending
  44. \ argmemonly
  45. \ arm_aapcscc
  46. \ arm_aapcs_vfpcc
  47. \ arm_apcscc
  48. \ asm
  49. \ atomic
  50. \ available_externally
  51. \ blockaddress
  52. \ builtin
  53. \ byval
  54. \ c
  55. \ catch
  56. \ caller
  57. \ cc
  58. \ ccc
  59. \ cleanup
  60. \ coldcc
  61. \ comdat
  62. \ common
  63. \ constant
  64. \ datalayout
  65. \ declare
  66. \ default
  67. \ define
  68. \ deplibs
  69. \ dereferenceable
  70. \ distinct
  71. \ dllexport
  72. \ dllimport
  73. \ dso_local
  74. \ dso_preemptable
  75. \ except
  76. \ external
  77. \ externally_initialized
  78. \ extern_weak
  79. \ fastcc
  80. \ filter
  81. \ from
  82. \ gc
  83. \ global
  84. \ hhvmcc
  85. \ hhvm_ccc
  86. \ hidden
  87. \ immarg
  88. \ initialexec
  89. \ inlinehint
  90. \ inreg
  91. \ inteldialect
  92. \ intel_ocl_bicc
  93. \ internal
  94. \ linkonce
  95. \ linkonce_odr
  96. \ localdynamic
  97. \ localexec
  98. \ local_unnamed_addr
  99. \ minsize
  100. \ module
  101. \ monotonic
  102. \ msp430_intrcc
  103. \ musttail
  104. \ naked
  105. \ nest
  106. \ noalias
  107. \ nobuiltin
  108. \ nocapture
  109. \ noimplicitfloat
  110. \ noinline
  111. \ nonlazybind
  112. \ nonnull
  113. \ norecurse
  114. \ noredzone
  115. \ noreturn
  116. \ nounwind
  117. \ optnone
  118. \ optsize
  119. \ personality
  120. \ private
  121. \ protected
  122. \ ptx_device
  123. \ ptx_kernel
  124. \ readnone
  125. \ readonly
  126. \ release
  127. \ returned
  128. \ returns_twice
  129. \ sanitize_address
  130. \ sanitize_memory
  131. \ sanitize_thread
  132. \ section
  133. \ seq_cst
  134. \ sideeffect
  135. \ signext
  136. \ syncscope
  137. \ source_filename
  138. \ speculatable
  139. \ spir_func
  140. \ spir_kernel
  141. \ sret
  142. \ ssp
  143. \ sspreq
  144. \ sspstrong
  145. \ strictfp
  146. \ swiftcc
  147. \ swiftself
  148. \ tail
  149. \ target
  150. \ thread_local
  151. \ to
  152. \ triple
  153. \ unnamed_addr
  154. \ unordered
  155. \ uselistorder
  156. \ uselistorder_bb
  157. \ uwtable
  158. \ volatile
  159. \ weak
  160. \ weak_odr
  161. \ within
  162. \ writeonly
  163. \ x86_64_sysvcc
  164. \ win64cc
  165. \ x86_fastcallcc
  166. \ x86_stdcallcc
  167. \ x86_thiscallcc
  168. \ zeroext
  169. " Obsolete keywords.
  170. syn keyword llvmError getresult begin end
  171. " Misc syntax.
  172. syn match llvmNoName /[%@!]\d\+\>/
  173. syn match llvmNumber /-\?\<\d\+\>/
  174. syn match llvmFloat /-\?\<\d\+\.\d*\(e[+-]\d\+\)\?\>/
  175. syn match llvmFloat /\<0x\x\+\>/
  176. syn keyword llvmBoolean true false
  177. syn keyword llvmConstant zeroinitializer undef null none
  178. syn match llvmComment /;.*$/
  179. syn region llvmString start=/"/ skip=/\\"/ end=/"/
  180. syn match llvmLabel /[-a-zA-Z$._][-a-zA-Z$._0-9]*:/
  181. syn match llvmIdentifier /[%@][-a-zA-Z$._][-a-zA-Z$._0-9]*/
  182. " Named metadata and specialized metadata keywords.
  183. syn match llvmIdentifier /![-a-zA-Z$._][-a-zA-Z$._0-9]*\ze\s*$/
  184. syn match llvmIdentifier /![-a-zA-Z$._][-a-zA-Z$._0-9]*\ze\s*[=!]/
  185. syn match llvmType /!\zs\a\+\ze\s*(/
  186. syn match llvmConstant /\<DW_TAG_[a-z_]\+\>/
  187. syn match llvmConstant /\<DW_ATE_[a-zA-Z_]\+\>/
  188. syn match llvmConstant /\<DW_OP_[a-zA-Z0-9_]\+\>/
  189. syn match llvmConstant /\<DW_LANG_[a-zA-Z0-9_]\+\>/
  190. syn match llvmConstant /\<DW_VIRTUALITY_[a-z_]\+\>/
  191. syn match llvmConstant /\<DIFlag[A-Za-z]\+\>/
  192. " Syntax-highlight lit test commands and bug numbers.
  193. syn match llvmSpecialComment /;\s*PR\d*\s*$/
  194. syn match llvmSpecialComment /;\s*REQUIRES:.*$/
  195. syn match llvmSpecialComment /;\s*RUN:.*$/
  196. syn match llvmSpecialComment /;\s*CHECK:.*$/
  197. syn match llvmSpecialComment "\v;\s*CHECK-(NEXT|NOT|DAG|SAME|LABEL):.*$"
  198. syn match llvmSpecialComment /;\s*XFAIL:.*$/
  199. if version >= 508 || !exists("did_c_syn_inits")
  200. if version < 508
  201. let did_c_syn_inits = 1
  202. command -nargs=+ HiLink hi link <args>
  203. else
  204. command -nargs=+ HiLink hi def link <args>
  205. endif
  206. HiLink llvmType Type
  207. HiLink llvmStatement Statement
  208. HiLink llvmNumber Number
  209. HiLink llvmComment Comment
  210. HiLink llvmString String
  211. HiLink llvmLabel Label
  212. HiLink llvmKeyword Keyword
  213. HiLink llvmBoolean Boolean
  214. HiLink llvmFloat Float
  215. HiLink llvmNoName Identifier
  216. HiLink llvmConstant Constant
  217. HiLink llvmSpecialComment SpecialComment
  218. HiLink llvmError Error
  219. HiLink llvmIdentifier Identifier
  220. delcommand HiLink
  221. endif
  222. let b:current_syntax = "llvm"