OSDN Git Service

ad826cc4fd216c6c171dc5e1880eb686f2447102
[android-x86/external-llvm.git] / lib / AsmParser / LLToken.h
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
14 #ifndef LLVM_LIB_ASMPARSER_LLTOKEN_H
15 #define LLVM_LIB_ASMPARSER_LLTOKEN_H
16
17 namespace llvm {
18 namespace lltok {
19 enum Kind {
20   // Markers
21   Eof,
22   Error,
23
24   // Tokens with no info.
25   dotdotdot, // ...
26   equal,
27   comma, // =  ,
28   star,  // *
29   lsquare,
30   rsquare, // [  ]
31   lbrace,
32   rbrace, // {  }
33   less,
34   greater, // <  >
35   lparen,
36   rparen,  // (  )
37   exclaim, // !
38   bar,     // |
39
40   kw_x,
41   kw_true,
42   kw_false,
43   kw_declare,
44   kw_define,
45   kw_global,
46   kw_constant,
47
48   kw_dso_local,
49   kw_dso_preemptable,
50
51   kw_private,
52   kw_internal,
53   kw_linkonce,
54   kw_linkonce_odr,
55   kw_weak, // Used as a linkage, and a modifier for "cmpxchg".
56   kw_weak_odr,
57   kw_appending,
58   kw_dllimport,
59   kw_dllexport,
60   kw_common,
61   kw_available_externally,
62   kw_default,
63   kw_hidden,
64   kw_protected,
65   kw_unnamed_addr,
66   kw_local_unnamed_addr,
67   kw_externally_initialized,
68   kw_extern_weak,
69   kw_external,
70   kw_thread_local,
71   kw_localdynamic,
72   kw_initialexec,
73   kw_localexec,
74   kw_zeroinitializer,
75   kw_undef,
76   kw_null,
77   kw_none,
78   kw_to,
79   kw_caller,
80   kw_within,
81   kw_from,
82   kw_tail,
83   kw_musttail,
84   kw_notail,
85   kw_target,
86   kw_triple,
87   kw_source_filename,
88   kw_unwind,
89   kw_deplibs, // FIXME: Remove in 4.0
90   kw_datalayout,
91   kw_volatile,
92   kw_atomic,
93   kw_unordered,
94   kw_monotonic,
95   kw_acquire,
96   kw_release,
97   kw_acq_rel,
98   kw_seq_cst,
99   kw_syncscope,
100   kw_nnan,
101   kw_ninf,
102   kw_nsz,
103   kw_arcp,
104   kw_contract,
105   kw_reassoc,
106   kw_afn,
107   kw_fast,
108   kw_nuw,
109   kw_nsw,
110   kw_exact,
111   kw_inbounds,
112   kw_inrange,
113   kw_align,
114   kw_addrspace,
115   kw_section,
116   kw_alias,
117   kw_ifunc,
118   kw_module,
119   kw_asm,
120   kw_sideeffect,
121   kw_alignstack,
122   kw_inteldialect,
123   kw_gc,
124   kw_prefix,
125   kw_prologue,
126   kw_c,
127
128   kw_cc,
129   kw_ccc,
130   kw_fastcc,
131   kw_coldcc,
132   kw_intel_ocl_bicc,
133   kw_x86_stdcallcc,
134   kw_x86_fastcallcc,
135   kw_x86_thiscallcc,
136   kw_x86_vectorcallcc,
137   kw_x86_regcallcc,
138   kw_arm_apcscc,
139   kw_arm_aapcscc,
140   kw_arm_aapcs_vfpcc,
141   kw_msp430_intrcc,
142   kw_avr_intrcc,
143   kw_avr_signalcc,
144   kw_ptx_kernel,
145   kw_ptx_device,
146   kw_spir_kernel,
147   kw_spir_func,
148   kw_x86_64_sysvcc,
149   kw_win64cc,
150   kw_webkit_jscc,
151   kw_anyregcc,
152   kw_swiftcc,
153   kw_preserve_mostcc,
154   kw_preserve_allcc,
155   kw_ghccc,
156   kw_x86_intrcc,
157   kw_hhvmcc,
158   kw_hhvm_ccc,
159   kw_cxx_fast_tlscc,
160   kw_amdgpu_vs,
161   kw_amdgpu_ls,
162   kw_amdgpu_hs,
163   kw_amdgpu_es,
164   kw_amdgpu_gs,
165   kw_amdgpu_ps,
166   kw_amdgpu_cs,
167   kw_amdgpu_kernel,
168
169   // Attributes:
170   kw_attributes,
171   kw_allocsize,
172   kw_alwaysinline,
173   kw_argmemonly,
174   kw_sanitize_address,
175   kw_sanitize_hwaddress,
176   kw_builtin,
177   kw_byval,
178   kw_inalloca,
179   kw_cold,
180   kw_convergent,
181   kw_dereferenceable,
182   kw_dereferenceable_or_null,
183   kw_inaccessiblememonly,
184   kw_inaccessiblemem_or_argmemonly,
185   kw_inlinehint,
186   kw_inreg,
187   kw_jumptable,
188   kw_minsize,
189   kw_naked,
190   kw_nest,
191   kw_noalias,
192   kw_nobuiltin,
193   kw_nocapture,
194   kw_noduplicate,
195   kw_noimplicitfloat,
196   kw_noinline,
197   kw_norecurse,
198   kw_nonlazybind,
199   kw_nonnull,
200   kw_noredzone,
201   kw_noreturn,
202   kw_nounwind,
203   kw_optnone,
204   kw_optsize,
205   kw_readnone,
206   kw_readonly,
207   kw_returned,
208   kw_returns_twice,
209   kw_signext,
210   kw_speculatable,
211   kw_ssp,
212   kw_sspreq,
213   kw_sspstrong,
214   kw_safestack,
215   kw_sret,
216   kw_sanitize_thread,
217   kw_sanitize_memory,
218   kw_strictfp,
219   kw_swifterror,
220   kw_swiftself,
221   kw_uwtable,
222   kw_writeonly,
223   kw_zeroext,
224
225   kw_type,
226   kw_opaque,
227
228   kw_comdat,
229
230   // Comdat types
231   kw_any,
232   kw_exactmatch,
233   kw_largest,
234   kw_noduplicates,
235   kw_samesize,
236
237   kw_eq,
238   kw_ne,
239   kw_slt,
240   kw_sgt,
241   kw_sle,
242   kw_sge,
243   kw_ult,
244   kw_ugt,
245   kw_ule,
246   kw_uge,
247   kw_oeq,
248   kw_one,
249   kw_olt,
250   kw_ogt,
251   kw_ole,
252   kw_oge,
253   kw_ord,
254   kw_uno,
255   kw_ueq,
256   kw_une,
257
258   // atomicrmw operations that aren't also instruction keywords.
259   kw_xchg,
260   kw_nand,
261   kw_max,
262   kw_min,
263   kw_umax,
264   kw_umin,
265
266   // Instruction Opcodes (Opcode in UIntVal).
267   kw_add,
268   kw_fadd,
269   kw_sub,
270   kw_fsub,
271   kw_mul,
272   kw_fmul,
273   kw_udiv,
274   kw_sdiv,
275   kw_fdiv,
276   kw_urem,
277   kw_srem,
278   kw_frem,
279   kw_shl,
280   kw_lshr,
281   kw_ashr,
282   kw_and,
283   kw_or,
284   kw_xor,
285   kw_icmp,
286   kw_fcmp,
287
288   kw_phi,
289   kw_call,
290   kw_trunc,
291   kw_zext,
292   kw_sext,
293   kw_fptrunc,
294   kw_fpext,
295   kw_uitofp,
296   kw_sitofp,
297   kw_fptoui,
298   kw_fptosi,
299   kw_inttoptr,
300   kw_ptrtoint,
301   kw_bitcast,
302   kw_addrspacecast,
303   kw_select,
304   kw_va_arg,
305
306   kw_landingpad,
307   kw_personality,
308   kw_cleanup,
309   kw_catch,
310   kw_filter,
311
312   kw_ret,
313   kw_br,
314   kw_switch,
315   kw_indirectbr,
316   kw_invoke,
317   kw_resume,
318   kw_unreachable,
319   kw_cleanupret,
320   kw_catchswitch,
321   kw_catchret,
322   kw_catchpad,
323   kw_cleanuppad,
324
325   kw_alloca,
326   kw_load,
327   kw_store,
328   kw_fence,
329   kw_cmpxchg,
330   kw_atomicrmw,
331   kw_getelementptr,
332
333   kw_extractelement,
334   kw_insertelement,
335   kw_shufflevector,
336   kw_extractvalue,
337   kw_insertvalue,
338   kw_blockaddress,
339
340   // Metadata types.
341   kw_distinct,
342
343   // Use-list order directives.
344   kw_uselistorder,
345   kw_uselistorder_bb,
346
347   // Unsigned Valued tokens (UIntVal).
348   GlobalID,   // @42
349   LocalVarID, // %42
350   AttrGrpID,  // #42
351
352   // String valued tokens (StrVal).
353   LabelStr,         // foo:
354   GlobalVar,        // @foo @"foo"
355   ComdatVar,        // $foo
356   LocalVar,         // %foo %"foo"
357   MetadataVar,      // !foo
358   StringConstant,   // "foo"
359   DwarfTag,         // DW_TAG_foo
360   DwarfAttEncoding, // DW_ATE_foo
361   DwarfVirtuality,  // DW_VIRTUALITY_foo
362   DwarfLang,        // DW_LANG_foo
363   DwarfCC,          // DW_CC_foo
364   EmissionKind,     // lineTablesOnly
365   DwarfOp,          // DW_OP_foo
366   DIFlag,           // DIFlagFoo
367   DwarfMacinfo,     // DW_MACINFO_foo
368   ChecksumKind,     // CSK_foo
369
370   // Type valued tokens (TyVal).
371   Type,
372
373   APFloat, // APFloatVal
374   APSInt   // APSInt
375 };
376 } // end namespace lltok
377 } // end namespace llvm
378
379 #endif