blob: db0de6c0d5a98378174ec0749c1a3277070405c9 [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
Sean Fertilec70d28b2017-10-26 15:00:26 +000048 kw_dso_local,
49 kw_dso_preemptable,
50
Rafael Espindolaea7f5392016-05-11 12:07:32 +000051 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,
Peter Collingbourne96efdd62016-06-14 21:01:22 +000066 kw_local_unnamed_addr,
Rafael Espindolaea7f5392016-05-11 12:07:32 +000067 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,
Konstantin Zhuravlyovbb80d3e2017-07-11 22:23:00 +000099 kw_syncscope,
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000100 kw_nnan,
101 kw_ninf,
102 kw_nsz,
103 kw_arcp,
Adam Nemetcd847a82017-03-28 20:11:52 +0000104 kw_contract,
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000105 kw_fast,
106 kw_nuw,
107 kw_nsw,
108 kw_exact,
109 kw_inbounds,
Peter Collingbourned93620b2016-11-10 22:34:55 +0000110 kw_inrange,
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000111 kw_align,
112 kw_addrspace,
113 kw_section,
114 kw_alias,
115 kw_ifunc,
116 kw_module,
117 kw_asm,
118 kw_sideeffect,
119 kw_alignstack,
120 kw_inteldialect,
121 kw_gc,
122 kw_prefix,
123 kw_prologue,
124 kw_c,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000125
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000126 kw_cc,
127 kw_ccc,
128 kw_fastcc,
129 kw_coldcc,
130 kw_intel_ocl_bicc,
131 kw_x86_stdcallcc,
132 kw_x86_fastcallcc,
133 kw_x86_thiscallcc,
134 kw_x86_vectorcallcc,
Oren Ben Simhon92ccbf22016-10-13 07:53:43 +0000135 kw_x86_regcallcc,
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000136 kw_arm_apcscc,
137 kw_arm_aapcscc,
138 kw_arm_aapcs_vfpcc,
139 kw_msp430_intrcc,
140 kw_avr_intrcc,
141 kw_avr_signalcc,
142 kw_ptx_kernel,
143 kw_ptx_device,
144 kw_spir_kernel,
145 kw_spir_func,
146 kw_x86_64_sysvcc,
Martin Storsjo2f24e932017-07-17 20:05:19 +0000147 kw_win64cc,
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000148 kw_webkit_jscc,
149 kw_anyregcc,
150 kw_swiftcc,
151 kw_preserve_mostcc,
152 kw_preserve_allcc,
153 kw_ghccc,
154 kw_x86_intrcc,
155 kw_hhvmcc,
156 kw_hhvm_ccc,
157 kw_cxx_fast_tlscc,
158 kw_amdgpu_vs,
Tim Renoufef1ae8f2017-09-29 09:51:22 +0000159 kw_amdgpu_ls,
Marek Olsaka302a7362017-05-02 15:41:10 +0000160 kw_amdgpu_hs,
Tim Renoufef1ae8f2017-09-29 09:51:22 +0000161 kw_amdgpu_es,
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000162 kw_amdgpu_gs,
163 kw_amdgpu_ps,
164 kw_amdgpu_cs,
165 kw_amdgpu_kernel,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000166
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000167 // Attributes:
168 kw_attributes,
169 kw_allocsize,
170 kw_alwaysinline,
171 kw_argmemonly,
172 kw_sanitize_address,
173 kw_builtin,
174 kw_byval,
175 kw_inalloca,
176 kw_cold,
177 kw_convergent,
178 kw_dereferenceable,
179 kw_dereferenceable_or_null,
180 kw_inaccessiblememonly,
181 kw_inaccessiblemem_or_argmemonly,
182 kw_inlinehint,
183 kw_inreg,
184 kw_jumptable,
185 kw_minsize,
186 kw_naked,
187 kw_nest,
188 kw_noalias,
189 kw_nobuiltin,
190 kw_nocapture,
191 kw_noduplicate,
192 kw_noimplicitfloat,
193 kw_noinline,
194 kw_norecurse,
195 kw_nonlazybind,
196 kw_nonnull,
197 kw_noredzone,
198 kw_noreturn,
199 kw_nounwind,
200 kw_optnone,
201 kw_optsize,
202 kw_readnone,
203 kw_readonly,
204 kw_returned,
205 kw_returns_twice,
206 kw_signext,
Matt Arsenaultb19b57e2017-04-28 20:25:27 +0000207 kw_speculatable,
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000208 kw_ssp,
209 kw_sspreq,
210 kw_sspstrong,
211 kw_safestack,
212 kw_sret,
213 kw_sanitize_thread,
214 kw_sanitize_memory,
Andrew Kaylor53a5fbb2017-08-14 21:15:13 +0000215 kw_strictfp,
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000216 kw_swifterror,
217 kw_swiftself,
218 kw_uwtable,
Nicolai Haehnle84c9f992016-07-04 08:01:29 +0000219 kw_writeonly,
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000220 kw_zeroext,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000221
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000222 kw_type,
223 kw_opaque,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000224
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000225 kw_comdat,
David Majnemerdad0a642014-06-27 18:19:56 +0000226
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000227 // Comdat types
228 kw_any,
229 kw_exactmatch,
230 kw_largest,
231 kw_noduplicates,
232 kw_samesize,
David Majnemerdad0a642014-06-27 18:19:56 +0000233
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000234 kw_eq,
235 kw_ne,
236 kw_slt,
237 kw_sgt,
238 kw_sle,
239 kw_sge,
240 kw_ult,
241 kw_ugt,
242 kw_ule,
243 kw_uge,
244 kw_oeq,
245 kw_one,
246 kw_olt,
247 kw_ogt,
248 kw_ole,
249 kw_oge,
250 kw_ord,
251 kw_uno,
252 kw_ueq,
253 kw_une,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000254
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000255 // atomicrmw operations that aren't also instruction keywords.
256 kw_xchg,
257 kw_nand,
258 kw_max,
259 kw_min,
260 kw_umax,
261 kw_umin,
Eli Friedmanc9a551e2011-07-28 21:48:00 +0000262
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000263 // Instruction Opcodes (Opcode in UIntVal).
264 kw_add,
265 kw_fadd,
266 kw_sub,
267 kw_fsub,
268 kw_mul,
269 kw_fmul,
270 kw_udiv,
271 kw_sdiv,
272 kw_fdiv,
273 kw_urem,
274 kw_srem,
275 kw_frem,
276 kw_shl,
277 kw_lshr,
278 kw_ashr,
279 kw_and,
280 kw_or,
281 kw_xor,
282 kw_icmp,
283 kw_fcmp,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000284
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000285 kw_phi,
286 kw_call,
287 kw_trunc,
288 kw_zext,
289 kw_sext,
290 kw_fptrunc,
291 kw_fpext,
292 kw_uitofp,
293 kw_sitofp,
294 kw_fptoui,
295 kw_fptosi,
296 kw_inttoptr,
297 kw_ptrtoint,
298 kw_bitcast,
299 kw_addrspacecast,
300 kw_select,
301 kw_va_arg,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000302
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000303 kw_landingpad,
304 kw_personality,
305 kw_cleanup,
306 kw_catch,
307 kw_filter,
Bill Wendlingfae14752011-08-12 20:24:12 +0000308
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000309 kw_ret,
310 kw_br,
311 kw_switch,
312 kw_indirectbr,
313 kw_invoke,
314 kw_resume,
315 kw_unreachable,
316 kw_cleanupret,
317 kw_catchswitch,
318 kw_catchret,
319 kw_catchpad,
320 kw_cleanuppad,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000321
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000322 kw_alloca,
323 kw_load,
324 kw_store,
325 kw_fence,
326 kw_cmpxchg,
327 kw_atomicrmw,
328 kw_getelementptr,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000329
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000330 kw_extractelement,
331 kw_insertelement,
332 kw_shufflevector,
333 kw_extractvalue,
334 kw_insertvalue,
335 kw_blockaddress,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000336
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000337 // Metadata types.
338 kw_distinct,
Duncan P. N. Exon Smith090a19b2015-01-08 22:38:29 +0000339
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000340 // Use-list order directives.
341 kw_uselistorder,
342 kw_uselistorder_bb,
Duncan P. N. Exon Smith0a448fb2014-08-19 21:30:15 +0000343
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000344 // Unsigned Valued tokens (UIntVal).
345 GlobalID, // @42
346 LocalVarID, // %42
347 AttrGrpID, // #42
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000348
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000349 // String valued tokens (StrVal).
350 LabelStr, // foo:
351 GlobalVar, // @foo @"foo"
352 ComdatVar, // $foo
353 LocalVar, // %foo %"foo"
354 MetadataVar, // !foo
355 StringConstant, // "foo"
356 DwarfTag, // DW_TAG_foo
357 DwarfAttEncoding, // DW_ATE_foo
358 DwarfVirtuality, // DW_VIRTUALITY_foo
359 DwarfLang, // DW_LANG_foo
Reid Klecknerde3d8b52016-06-08 20:34:29 +0000360 DwarfCC, // DW_CC_foo
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000361 EmissionKind, // lineTablesOnly
362 DwarfOp, // DW_OP_foo
363 DIFlag, // DIFlagFoo
364 DwarfMacinfo, // DW_MACINFO_foo
Amjad Aboud7faeecc2016-12-25 10:12:09 +0000365 ChecksumKind, // CSK_foo
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000366
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000367 // Type valued tokens (TyVal).
368 Type,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000369
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000370 APFloat, // APFloatVal
371 APSInt // APSInt
372};
Chris Lattnerac161bf2009-01-02 07:01:27 +0000373} // end namespace lltok
374} // end namespace llvm
375
376#endif