blob: 9713cd6759855a85e113ea85a3d44e041447c69a [file] [log] [blame]
Chris Lattnerac161bf2009-01-02 07:01:27 +00001//===- 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
Benjamin Kramera7c40ef2014-08-13 16:26:38 +000014#ifndef LLVM_LIB_ASMPARSER_LLTOKEN_H
15#define LLVM_LIB_ASMPARSER_LLTOKEN_H
Chris Lattnerac161bf2009-01-02 07:01:27 +000016
17namespace llvm {
18namespace lltok {
Rafael Espindolaea7f5392016-05-11 12:07:32 +000019enum Kind {
20 // Markers
21 Eof,
22 Error,
Misha Brukman1d9a93d2009-01-02 22:46:48 +000023
Rafael Espindolaea7f5392016-05-11 12:07:32 +000024 // 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, // |
Misha Brukman1d9a93d2009-01-02 22:46:48 +000039
Rafael Espindolaea7f5392016-05-11 12:07:32 +000040 kw_x,
41 kw_true,
42 kw_false,
43 kw_declare,
44 kw_define,
45 kw_global,
46 kw_constant,
Misha Brukman1d9a93d2009-01-02 22:46:48 +000047
Rafael Espindolaea7f5392016-05-11 12:07:32 +000048 kw_private,
49 kw_internal,
50 kw_linkonce,
51 kw_linkonce_odr,
52 kw_weak, // Used as a linkage, and a modifier for "cmpxchg".
53 kw_weak_odr,
54 kw_appending,
55 kw_dllimport,
56 kw_dllexport,
57 kw_common,
58 kw_available_externally,
59 kw_default,
60 kw_hidden,
61 kw_protected,
62 kw_unnamed_addr,
63 kw_externally_initialized,
64 kw_extern_weak,
65 kw_external,
66 kw_thread_local,
67 kw_localdynamic,
68 kw_initialexec,
69 kw_localexec,
70 kw_zeroinitializer,
71 kw_undef,
72 kw_null,
73 kw_none,
74 kw_to,
75 kw_caller,
76 kw_within,
77 kw_from,
78 kw_tail,
79 kw_musttail,
80 kw_notail,
81 kw_target,
82 kw_triple,
83 kw_source_filename,
84 kw_unwind,
85 kw_deplibs, // FIXME: Remove in 4.0
86 kw_datalayout,
87 kw_volatile,
88 kw_atomic,
89 kw_unordered,
90 kw_monotonic,
91 kw_acquire,
92 kw_release,
93 kw_acq_rel,
94 kw_seq_cst,
95 kw_singlethread,
96 kw_nnan,
97 kw_ninf,
98 kw_nsz,
99 kw_arcp,
100 kw_fast,
101 kw_nuw,
102 kw_nsw,
103 kw_exact,
104 kw_inbounds,
105 kw_align,
106 kw_addrspace,
107 kw_section,
108 kw_alias,
109 kw_ifunc,
110 kw_module,
111 kw_asm,
112 kw_sideeffect,
113 kw_alignstack,
114 kw_inteldialect,
115 kw_gc,
116 kw_prefix,
117 kw_prologue,
118 kw_c,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000119
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000120 kw_cc,
121 kw_ccc,
122 kw_fastcc,
123 kw_coldcc,
124 kw_intel_ocl_bicc,
125 kw_x86_stdcallcc,
126 kw_x86_fastcallcc,
127 kw_x86_thiscallcc,
128 kw_x86_vectorcallcc,
129 kw_arm_apcscc,
130 kw_arm_aapcscc,
131 kw_arm_aapcs_vfpcc,
132 kw_msp430_intrcc,
133 kw_avr_intrcc,
134 kw_avr_signalcc,
135 kw_ptx_kernel,
136 kw_ptx_device,
137 kw_spir_kernel,
138 kw_spir_func,
139 kw_x86_64_sysvcc,
140 kw_x86_64_win64cc,
141 kw_webkit_jscc,
142 kw_anyregcc,
143 kw_swiftcc,
144 kw_preserve_mostcc,
145 kw_preserve_allcc,
146 kw_ghccc,
147 kw_x86_intrcc,
148 kw_hhvmcc,
149 kw_hhvm_ccc,
150 kw_cxx_fast_tlscc,
151 kw_amdgpu_vs,
152 kw_amdgpu_gs,
153 kw_amdgpu_ps,
154 kw_amdgpu_cs,
155 kw_amdgpu_kernel,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000156
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000157 // Attributes:
158 kw_attributes,
159 kw_allocsize,
160 kw_alwaysinline,
161 kw_argmemonly,
162 kw_sanitize_address,
163 kw_builtin,
164 kw_byval,
165 kw_inalloca,
166 kw_cold,
167 kw_convergent,
168 kw_dereferenceable,
169 kw_dereferenceable_or_null,
170 kw_inaccessiblememonly,
171 kw_inaccessiblemem_or_argmemonly,
172 kw_inlinehint,
173 kw_inreg,
174 kw_jumptable,
175 kw_minsize,
176 kw_naked,
177 kw_nest,
178 kw_noalias,
179 kw_nobuiltin,
180 kw_nocapture,
181 kw_noduplicate,
182 kw_noimplicitfloat,
183 kw_noinline,
184 kw_norecurse,
185 kw_nonlazybind,
186 kw_nonnull,
187 kw_noredzone,
188 kw_noreturn,
189 kw_nounwind,
190 kw_optnone,
191 kw_optsize,
192 kw_readnone,
193 kw_readonly,
194 kw_returned,
195 kw_returns_twice,
196 kw_signext,
197 kw_ssp,
198 kw_sspreq,
199 kw_sspstrong,
200 kw_safestack,
201 kw_sret,
202 kw_sanitize_thread,
203 kw_sanitize_memory,
204 kw_swifterror,
205 kw_swiftself,
206 kw_uwtable,
207 kw_zeroext,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000208
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000209 kw_type,
210 kw_opaque,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000211
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000212 kw_comdat,
David Majnemerdad0a642014-06-27 18:19:56 +0000213
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000214 // Comdat types
215 kw_any,
216 kw_exactmatch,
217 kw_largest,
218 kw_noduplicates,
219 kw_samesize,
David Majnemerdad0a642014-06-27 18:19:56 +0000220
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000221 kw_eq,
222 kw_ne,
223 kw_slt,
224 kw_sgt,
225 kw_sle,
226 kw_sge,
227 kw_ult,
228 kw_ugt,
229 kw_ule,
230 kw_uge,
231 kw_oeq,
232 kw_one,
233 kw_olt,
234 kw_ogt,
235 kw_ole,
236 kw_oge,
237 kw_ord,
238 kw_uno,
239 kw_ueq,
240 kw_une,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000241
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000242 // atomicrmw operations that aren't also instruction keywords.
243 kw_xchg,
244 kw_nand,
245 kw_max,
246 kw_min,
247 kw_umax,
248 kw_umin,
Eli Friedmanc9a551e2011-07-28 21:48:00 +0000249
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000250 // Instruction Opcodes (Opcode in UIntVal).
251 kw_add,
252 kw_fadd,
253 kw_sub,
254 kw_fsub,
255 kw_mul,
256 kw_fmul,
257 kw_udiv,
258 kw_sdiv,
259 kw_fdiv,
260 kw_urem,
261 kw_srem,
262 kw_frem,
263 kw_shl,
264 kw_lshr,
265 kw_ashr,
266 kw_and,
267 kw_or,
268 kw_xor,
269 kw_icmp,
270 kw_fcmp,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000271
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000272 kw_phi,
273 kw_call,
274 kw_trunc,
275 kw_zext,
276 kw_sext,
277 kw_fptrunc,
278 kw_fpext,
279 kw_uitofp,
280 kw_sitofp,
281 kw_fptoui,
282 kw_fptosi,
283 kw_inttoptr,
284 kw_ptrtoint,
285 kw_bitcast,
286 kw_addrspacecast,
287 kw_select,
288 kw_va_arg,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000289
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000290 kw_landingpad,
291 kw_personality,
292 kw_cleanup,
293 kw_catch,
294 kw_filter,
Bill Wendlingfae14752011-08-12 20:24:12 +0000295
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000296 kw_ret,
297 kw_br,
298 kw_switch,
299 kw_indirectbr,
300 kw_invoke,
301 kw_resume,
302 kw_unreachable,
303 kw_cleanupret,
304 kw_catchswitch,
305 kw_catchret,
306 kw_catchpad,
307 kw_cleanuppad,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000308
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000309 kw_alloca,
310 kw_load,
311 kw_store,
312 kw_fence,
313 kw_cmpxchg,
314 kw_atomicrmw,
315 kw_getelementptr,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000316
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000317 kw_extractelement,
318 kw_insertelement,
319 kw_shufflevector,
320 kw_extractvalue,
321 kw_insertvalue,
322 kw_blockaddress,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000323
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000324 // Metadata types.
325 kw_distinct,
Duncan P. N. Exon Smith090a19b2015-01-08 22:38:29 +0000326
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000327 // Use-list order directives.
328 kw_uselistorder,
329 kw_uselistorder_bb,
Duncan P. N. Exon Smith0a448fb2014-08-19 21:30:15 +0000330
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000331 // Unsigned Valued tokens (UIntVal).
332 GlobalID, // @42
333 LocalVarID, // %42
334 AttrGrpID, // #42
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000335
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000336 // String valued tokens (StrVal).
337 LabelStr, // foo:
338 GlobalVar, // @foo @"foo"
339 ComdatVar, // $foo
340 LocalVar, // %foo %"foo"
341 MetadataVar, // !foo
342 StringConstant, // "foo"
343 DwarfTag, // DW_TAG_foo
344 DwarfAttEncoding, // DW_ATE_foo
345 DwarfVirtuality, // DW_VIRTUALITY_foo
346 DwarfLang, // DW_LANG_foo
347 EmissionKind, // lineTablesOnly
348 DwarfOp, // DW_OP_foo
349 DIFlag, // DIFlagFoo
350 DwarfMacinfo, // DW_MACINFO_foo
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000351
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000352 // Type valued tokens (TyVal).
353 Type,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000354
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000355 APFloat, // APFloatVal
356 APSInt // APSInt
357};
Chris Lattnerac161bf2009-01-02 07:01:27 +0000358} // end namespace lltok
359} // end namespace llvm
360
361#endif