2
0

LLToken.h 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. //===- LLToken.h - Token Codes for LLVM Assembly Files ----------*- C++ -*-===//
  2. //
  3. // The LLVM Compiler Infrastructure
  4. //
  5. // This file is distributed under the University of Illinois Open Source
  6. // License. See LICENSE.TXT for details.
  7. //
  8. //===----------------------------------------------------------------------===//
  9. //
  10. // This file defines the enums for the .ll lexer.
  11. //
  12. //===----------------------------------------------------------------------===//
  13. #ifndef LLVM_LIB_ASMPARSER_LLTOKEN_H
  14. #define LLVM_LIB_ASMPARSER_LLTOKEN_H
  15. namespace llvm {
  16. namespace lltok {
  17. enum Kind {
  18. // Markers
  19. Eof, Error,
  20. // Tokens with no info.
  21. dotdotdot, // ...
  22. equal, comma, // = ,
  23. star, // *
  24. lsquare, rsquare, // [ ]
  25. lbrace, rbrace, // { }
  26. less, greater, // < >
  27. lparen, rparen, // ( )
  28. exclaim, // !
  29. bar, // |
  30. kw_x,
  31. kw_true, kw_false,
  32. kw_declare, kw_define,
  33. kw_global, kw_constant,
  34. kw_private,
  35. kw_internal,
  36. kw_linkonce, kw_linkonce_odr,
  37. kw_weak, // Used as a linkage, and a modifier for "cmpxchg".
  38. kw_weak_odr, kw_appending,
  39. kw_dllimport, kw_dllexport, kw_common, kw_available_externally,
  40. kw_default, kw_hidden, kw_protected,
  41. kw_unnamed_addr,
  42. kw_externally_initialized,
  43. kw_extern_weak,
  44. kw_external, kw_thread_local,
  45. kw_localdynamic, kw_initialexec, kw_localexec,
  46. kw_zeroinitializer,
  47. kw_undef, kw_null,
  48. kw_to,
  49. kw_tail,
  50. kw_musttail,
  51. kw_target,
  52. kw_triple,
  53. kw_unwind,
  54. kw_deplibs, // FIXME: Remove in 4.0
  55. kw_datalayout,
  56. kw_volatile,
  57. kw_atomic,
  58. kw_unordered, kw_monotonic, kw_acquire, kw_release, kw_acq_rel, kw_seq_cst,
  59. kw_singlethread,
  60. kw_nnan,
  61. kw_ninf,
  62. kw_nsz,
  63. kw_arcp,
  64. kw_fast,
  65. kw_nuw,
  66. kw_nsw,
  67. kw_exact,
  68. kw_inbounds,
  69. kw_align,
  70. kw_addrspace,
  71. kw_section,
  72. kw_alias,
  73. kw_module,
  74. kw_asm,
  75. kw_sideeffect,
  76. kw_alignstack,
  77. kw_inteldialect,
  78. kw_gc,
  79. kw_prefix,
  80. kw_prologue,
  81. kw_c,
  82. kw_cc, kw_ccc, kw_fastcc, kw_coldcc,
  83. kw_intel_ocl_bicc,
  84. kw_x86_stdcallcc, kw_x86_fastcallcc, kw_x86_thiscallcc, kw_x86_vectorcallcc,
  85. kw_arm_apcscc, kw_arm_aapcscc, kw_arm_aapcs_vfpcc,
  86. kw_msp430_intrcc,
  87. kw_ptx_kernel, kw_ptx_device,
  88. kw_spir_kernel, kw_spir_func,
  89. kw_x86_64_sysvcc, kw_x86_64_win64cc,
  90. kw_webkit_jscc, kw_anyregcc,
  91. kw_preserve_mostcc, kw_preserve_allcc,
  92. kw_ghccc,
  93. // Attributes:
  94. kw_attributes,
  95. kw_alwaysinline,
  96. kw_argmemonly,
  97. kw_sanitize_address,
  98. kw_builtin,
  99. kw_byval,
  100. kw_inalloca,
  101. kw_cold,
  102. kw_convergent,
  103. kw_dereferenceable,
  104. kw_dereferenceable_or_null,
  105. kw_inlinehint,
  106. kw_inreg,
  107. kw_jumptable,
  108. kw_minsize,
  109. kw_naked,
  110. kw_nest,
  111. kw_noalias,
  112. kw_nobuiltin,
  113. kw_nocapture,
  114. kw_noduplicate,
  115. kw_noimplicitfloat,
  116. kw_noinline,
  117. kw_nonlazybind,
  118. kw_nonnull,
  119. kw_noredzone,
  120. kw_noreturn,
  121. kw_nounwind,
  122. kw_optnone,
  123. kw_optsize,
  124. kw_readnone,
  125. kw_readonly,
  126. kw_returned,
  127. kw_returns_twice,
  128. kw_signext,
  129. kw_ssp,
  130. kw_sspreq,
  131. kw_sspstrong,
  132. kw_safestack,
  133. kw_sret,
  134. kw_sanitize_thread,
  135. kw_sanitize_memory,
  136. kw_uwtable,
  137. kw_zeroext,
  138. kw_type,
  139. kw_opaque,
  140. kw_comdat,
  141. // Comdat types
  142. kw_any,
  143. kw_exactmatch,
  144. kw_largest,
  145. kw_noduplicates,
  146. kw_samesize,
  147. kw_eq, kw_ne, kw_slt, kw_sgt, kw_sle, kw_sge, kw_ult, kw_ugt, kw_ule,
  148. kw_uge, kw_oeq, kw_one, kw_olt, kw_ogt, kw_ole, kw_oge, kw_ord, kw_uno,
  149. kw_ueq, kw_une,
  150. // atomicrmw operations that aren't also instruction keywords.
  151. kw_xchg, kw_nand, kw_max, kw_min, kw_umax, kw_umin,
  152. // Instruction Opcodes (Opcode in UIntVal).
  153. kw_add, kw_fadd, kw_sub, kw_fsub, kw_mul, kw_fmul,
  154. kw_udiv, kw_sdiv, kw_fdiv,
  155. kw_urem, kw_srem, kw_frem, kw_shl, kw_lshr, kw_ashr,
  156. kw_and, kw_or, kw_xor, kw_icmp, kw_fcmp,
  157. kw_phi, kw_call,
  158. kw_trunc, kw_zext, kw_sext, kw_fptrunc, kw_fpext, kw_uitofp, kw_sitofp,
  159. kw_fptoui, kw_fptosi, kw_inttoptr, kw_ptrtoint, kw_bitcast,
  160. kw_addrspacecast,
  161. kw_select, kw_va_arg,
  162. kw_landingpad, kw_personality, kw_cleanup, kw_catch, kw_filter,
  163. kw_ret, kw_br, kw_switch, kw_indirectbr, kw_invoke, kw_resume,
  164. kw_unreachable,
  165. kw_alloca, kw_load, kw_store, kw_fence, kw_cmpxchg, kw_atomicrmw,
  166. kw_getelementptr,
  167. kw_extractelement, kw_insertelement, kw_shufflevector,
  168. kw_extractvalue, kw_insertvalue, kw_blockaddress,
  169. // Metadata types.
  170. kw_distinct,
  171. // Use-list order directives.
  172. kw_uselistorder, kw_uselistorder_bb,
  173. // Unsigned Valued tokens (UIntVal).
  174. GlobalID, // @42
  175. LocalVarID, // %42
  176. AttrGrpID, // #42
  177. // String valued tokens (StrVal).
  178. LabelStr, // foo:
  179. GlobalVar, // @foo @"foo"
  180. ComdatVar, // $foo
  181. LocalVar, // %foo %"foo"
  182. MetadataVar, // !foo
  183. StringConstant, // "foo"
  184. DwarfTag, // DW_TAG_foo
  185. DwarfAttEncoding, // DW_ATE_foo
  186. DwarfVirtuality, // DW_VIRTUALITY_foo
  187. DwarfLang, // DW_LANG_foo
  188. DwarfOp, // DW_OP_foo
  189. DIFlag, // DIFlagFoo
  190. // Type valued tokens (TyVal).
  191. Type,
  192. APFloat, // APFloatVal
  193. APSInt // APSInt
  194. };
  195. } // end namespace lltok
  196. } // end namespace llvm
  197. #endif