llvm.vim 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. " Vim syntax file
  2. " Language: llvm
  3. " Filenames: *.ll
  4. " Maintainer: The LLVM team, http://llvm.org/
  5. " Version: $Revision: 137806 $
  6. if version < 600
  7. syntax clear
  8. elseif exists("b:current_syntax")
  9. finish
  10. endif
  11. syn case match
  12. " Types.
  13. " Types also include struct, array, vector, etc. but these don't
  14. " benefit as much from having dedicated highlighting rules.
  15. syn keyword llvmType void float double
  16. syn keyword llvmType x86_fp80 fp128 ppc_fp128
  17. syn keyword llvmType type label opaque
  18. syn match llvmType /\<i\d\+\>/
  19. " Instructions.
  20. " The true and false tokens can be used for comparison opcodes, but it's
  21. " much more common for these tokens to be used for boolean constants.
  22. syn keyword llvmStatement add fadd sub fsub mul fmul
  23. syn keyword llvmStatement sdiv udiv fdiv srem urem frem
  24. syn keyword llvmStatement and or xor
  25. syn keyword llvmStatement icmp fcmp
  26. syn keyword llvmStatement eq ne ugt uge ult ule sgt sge slt sle
  27. syn keyword llvmStatement oeq ogt oge olt ole one ord ueq ugt uge
  28. syn keyword llvmStatement ult ule une uno
  29. syn keyword llvmStatement nuw nsw exact inbounds
  30. syn keyword llvmStatement phi call select shl lshr ashr va_arg
  31. syn keyword llvmStatement trunc zext sext
  32. syn keyword llvmStatement fptrunc fpext fptoui fptosi uitofp sitofp
  33. syn keyword llvmStatement ptrtoint inttoptr bitcast
  34. syn keyword llvmStatement ret br indirectbr switch invoke unwind unreachable
  35. syn keyword llvmStatement malloc alloca free load store getelementptr
  36. syn keyword llvmStatement extractelement insertelement shufflevector
  37. syn keyword llvmStatement extractvalue insertvalue
  38. " Keywords.
  39. syn keyword llvmKeyword define declare global constant
  40. syn keyword llvmKeyword internal external private
  41. syn keyword llvmKeyword linkonce linkonce_odr weak weak_odr appending
  42. syn keyword llvmKeyword common extern_weak
  43. syn keyword llvmKeyword thread_local dllimport dllexport
  44. syn keyword llvmKeyword hidden protected default
  45. syn keyword llvmKeyword except deplibs
  46. syn keyword llvmKeyword volatile fastcc coldcc cc ccc
  47. syn keyword llvmKeyword x86_stdcallcc x86_fastcallcc
  48. syn keyword llvmKeyword ptx_kernel ptx_device
  49. syn keyword llvmKeyword signext zeroext inreg sret nounwind noreturn
  50. syn keyword llvmKeyword nocapture byval nest readnone readonly noalias uwtable
  51. syn keyword llvmKeyword inlinehint noinline alwaysinline optsize ssp sspreq
  52. syn keyword llvmKeyword noredzone noimplicitfloat naked alignstack
  53. syn keyword llvmKeyword module asm align tail to
  54. syn keyword llvmKeyword addrspace section alias sideeffect c gc
  55. syn keyword llvmKeyword target datalayout triple
  56. syn keyword llvmKeyword blockaddress
  57. " Obsolete keywords.
  58. syn keyword llvmError getresult begin end
  59. " Misc syntax.
  60. syn match llvmNoName /[%@]\d\+\>/
  61. syn match llvmNumber /-\?\<\d\+\>/
  62. syn match llvmFloat /-\?\<\d\+\.\d*\(e[+-]\d\+\)\?\>/
  63. syn match llvmFloat /\<0x\x\+\>/
  64. syn keyword llvmBoolean true false
  65. syn keyword llvmConstant zeroinitializer undef null
  66. syn match llvmComment /;.*$/ contains=@Spell
  67. syn region llvmString start=/"/ skip=/\\"/ end=/"/
  68. syn match llvmLabel /[-a-zA-Z$._][-a-zA-Z$._0-9]*:/
  69. syn match llvmIdentifier /[%@][-a-zA-Z$._][-a-zA-Z$._0-9]*/
  70. " Syntax-highlight dejagnu test commands.
  71. syn match llvmSpecialComment /;\s*RUN:.*$/
  72. syn match llvmSpecialComment /;\s*PR\d*\s*$/
  73. syn match llvmSpecialComment /;\s*END\.\s*$/
  74. syn match llvmSpecialComment /;\s*XFAIL:.*$/
  75. syn match llvmSpecialComment /;\s*XTARGET:.*$/
  76. if version >= 508 || !exists("did_c_syn_inits")
  77. if version < 508
  78. let did_c_syn_inits = 1
  79. command -nargs=+ HiLink hi link <args>
  80. else
  81. command -nargs=+ HiLink hi def link <args>
  82. endif
  83. HiLink llvmType Type
  84. HiLink llvmStatement Statement
  85. HiLink llvmNumber Number
  86. HiLink llvmComment Comment
  87. HiLink llvmString String
  88. HiLink llvmLabel Label
  89. HiLink llvmKeyword Keyword
  90. HiLink llvmBoolean Boolean
  91. HiLink llvmFloat Float
  92. HiLink llvmNoName Identifier
  93. HiLink llvmConstant Constant
  94. HiLink llvmSpecialComment SpecialComment
  95. HiLink llvmError Error
  96. HiLink llvmIdentifier Identifier
  97. delcommand HiLink
  98. endif
  99. let b:current_syntax = "llvm"