blob: 80a1eb99e352c2223f69b2c1c50e6e95db322509 [file] [log] [blame]
Chris Lattnerac161bf2009-01-02 07:01:27 +00001//===- LLToken.h - Token Codes for LLVM Assembly Files ----------*- C++ -*-===//
2//
Chandler Carruth2946cd72019-01-19 08:50:56 +00003// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
Chris Lattnerac161bf2009-01-02 07:01:27 +00006//
7//===----------------------------------------------------------------------===//
8//
9// This file defines the enums for the .ll lexer.
10//
11//===----------------------------------------------------------------------===//
12
Benjamin Kramera7c40ef2014-08-13 16:26:38 +000013#ifndef LLVM_LIB_ASMPARSER_LLTOKEN_H
14#define LLVM_LIB_ASMPARSER_LLTOKEN_H
Chris Lattnerac161bf2009-01-02 07:01:27 +000015
16namespace llvm {
17namespace lltok {
Rafael Espindolaea7f5392016-05-11 12:07:32 +000018enum Kind {
19 // Markers
20 Eof,
21 Error,
Misha Brukman1d9a93d2009-01-02 22:46:48 +000022
Rafael Espindolaea7f5392016-05-11 12:07:32 +000023 // Tokens with no info.
24 dotdotdot, // ...
25 equal,
26 comma, // = ,
27 star, // *
28 lsquare,
29 rsquare, // [ ]
30 lbrace,
31 rbrace, // { }
32 less,
33 greater, // < >
34 lparen,
35 rparen, // ( )
36 exclaim, // !
37 bar, // |
Teresa Johnson63ee0e72018-06-26 13:56:49 +000038 colon, // :
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,
Sanjay Patel629c4112017-11-06 16:27:15 +0000105 kw_reassoc,
106 kw_afn,
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000107 kw_fast,
108 kw_nuw,
109 kw_nsw,
110 kw_exact,
111 kw_inbounds,
Peter Collingbourned93620b2016-11-10 22:34:55 +0000112 kw_inrange,
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000113 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,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000127
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000128 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,
Oren Ben Simhon92ccbf22016-10-13 07:53:43 +0000137 kw_x86_regcallcc,
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000138 kw_arm_apcscc,
139 kw_arm_aapcscc,
140 kw_arm_aapcs_vfpcc,
Sander de Smalen4dbc5122018-09-12 08:54:06 +0000141 kw_aarch64_vector_pcs,
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000142 kw_msp430_intrcc,
143 kw_avr_intrcc,
144 kw_avr_signalcc,
145 kw_ptx_kernel,
146 kw_ptx_device,
147 kw_spir_kernel,
148 kw_spir_func,
149 kw_x86_64_sysvcc,
Martin Storsjo2f24e932017-07-17 20:05:19 +0000150 kw_win64cc,
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000151 kw_webkit_jscc,
152 kw_anyregcc,
153 kw_swiftcc,
154 kw_preserve_mostcc,
155 kw_preserve_allcc,
156 kw_ghccc,
157 kw_x86_intrcc,
158 kw_hhvmcc,
159 kw_hhvm_ccc,
160 kw_cxx_fast_tlscc,
161 kw_amdgpu_vs,
Tim Renoufef1ae8f2017-09-29 09:51:22 +0000162 kw_amdgpu_ls,
Marek Olsaka302a7362017-05-02 15:41:10 +0000163 kw_amdgpu_hs,
Tim Renoufef1ae8f2017-09-29 09:51:22 +0000164 kw_amdgpu_es,
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000165 kw_amdgpu_gs,
166 kw_amdgpu_ps,
167 kw_amdgpu_cs,
168 kw_amdgpu_kernel,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000169
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000170 // Attributes:
171 kw_attributes,
172 kw_allocsize,
173 kw_alwaysinline,
174 kw_argmemonly,
175 kw_sanitize_address,
Evgeniy Stepanovc667c1f2017-12-09 00:21:41 +0000176 kw_sanitize_hwaddress,
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000177 kw_builtin,
178 kw_byval,
179 kw_inalloca,
180 kw_cold,
181 kw_convergent,
182 kw_dereferenceable,
183 kw_dereferenceable_or_null,
184 kw_inaccessiblememonly,
185 kw_inaccessiblemem_or_argmemonly,
186 kw_inlinehint,
187 kw_inreg,
188 kw_jumptable,
189 kw_minsize,
190 kw_naked,
191 kw_nest,
192 kw_noalias,
193 kw_nobuiltin,
194 kw_nocapture,
195 kw_noduplicate,
196 kw_noimplicitfloat,
197 kw_noinline,
198 kw_norecurse,
199 kw_nonlazybind,
200 kw_nonnull,
201 kw_noredzone,
202 kw_noreturn,
Oren Ben Simhonfdd72fd2018-03-17 13:29:46 +0000203 kw_nocf_check,
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000204 kw_nounwind,
Matt Morehouse236cdaf2018-03-22 17:07:51 +0000205 kw_optforfuzzing,
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000206 kw_optnone,
207 kw_optsize,
208 kw_readnone,
209 kw_readonly,
210 kw_returned,
211 kw_returns_twice,
212 kw_signext,
Matt Arsenaultb19b57e2017-04-28 20:25:27 +0000213 kw_speculatable,
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000214 kw_ssp,
215 kw_sspreq,
216 kw_sspstrong,
217 kw_safestack,
Vlad Tsyrklevichd17f61e2018-04-03 20:10:40 +0000218 kw_shadowcallstack,
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000219 kw_sret,
220 kw_sanitize_thread,
221 kw_sanitize_memory,
Chandler Carruth664aa862018-09-04 12:38:00 +0000222 kw_speculative_load_hardening,
Andrew Kaylor53a5fbb2017-08-14 21:15:13 +0000223 kw_strictfp,
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000224 kw_swifterror,
225 kw_swiftself,
226 kw_uwtable,
Nicolai Haehnle84c9f992016-07-04 08:01:29 +0000227 kw_writeonly,
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000228 kw_zeroext,
Matt Arsenaultcaf13162019-03-12 21:02:54 +0000229 kw_immarg,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000230
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000231 kw_type,
232 kw_opaque,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000233
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000234 kw_comdat,
David Majnemerdad0a642014-06-27 18:19:56 +0000235
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000236 // Comdat types
237 kw_any,
238 kw_exactmatch,
239 kw_largest,
240 kw_noduplicates,
241 kw_samesize,
David Majnemerdad0a642014-06-27 18:19:56 +0000242
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000243 kw_eq,
244 kw_ne,
245 kw_slt,
246 kw_sgt,
247 kw_sle,
248 kw_sge,
249 kw_ult,
250 kw_ugt,
251 kw_ule,
252 kw_uge,
253 kw_oeq,
254 kw_one,
255 kw_olt,
256 kw_ogt,
257 kw_ole,
258 kw_oge,
259 kw_ord,
260 kw_uno,
261 kw_ueq,
262 kw_une,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000263
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000264 // atomicrmw operations that aren't also instruction keywords.
265 kw_xchg,
266 kw_nand,
267 kw_max,
268 kw_min,
269 kw_umax,
270 kw_umin,
Eli Friedmanc9a551e2011-07-28 21:48:00 +0000271
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000272 // Instruction Opcodes (Opcode in UIntVal).
Cameron McInallycbde0d92018-11-13 18:15:47 +0000273 kw_fneg,
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000274 kw_add,
275 kw_fadd,
276 kw_sub,
277 kw_fsub,
278 kw_mul,
279 kw_fmul,
280 kw_udiv,
281 kw_sdiv,
282 kw_fdiv,
283 kw_urem,
284 kw_srem,
285 kw_frem,
286 kw_shl,
287 kw_lshr,
288 kw_ashr,
289 kw_and,
290 kw_or,
291 kw_xor,
292 kw_icmp,
293 kw_fcmp,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000294
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000295 kw_phi,
296 kw_call,
297 kw_trunc,
298 kw_zext,
299 kw_sext,
300 kw_fptrunc,
301 kw_fpext,
302 kw_uitofp,
303 kw_sitofp,
304 kw_fptoui,
305 kw_fptosi,
306 kw_inttoptr,
307 kw_ptrtoint,
308 kw_bitcast,
309 kw_addrspacecast,
310 kw_select,
311 kw_va_arg,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000312
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000313 kw_landingpad,
314 kw_personality,
315 kw_cleanup,
316 kw_catch,
317 kw_filter,
Bill Wendlingfae14752011-08-12 20:24:12 +0000318
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000319 kw_ret,
320 kw_br,
321 kw_switch,
322 kw_indirectbr,
323 kw_invoke,
324 kw_resume,
325 kw_unreachable,
326 kw_cleanupret,
327 kw_catchswitch,
328 kw_catchret,
329 kw_catchpad,
330 kw_cleanuppad,
Craig Topper784929d2019-02-08 20:48:56 +0000331 kw_callbr,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000332
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000333 kw_alloca,
334 kw_load,
335 kw_store,
336 kw_fence,
337 kw_cmpxchg,
338 kw_atomicrmw,
339 kw_getelementptr,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000340
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000341 kw_extractelement,
342 kw_insertelement,
343 kw_shufflevector,
344 kw_extractvalue,
345 kw_insertvalue,
346 kw_blockaddress,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000347
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000348 // Metadata types.
349 kw_distinct,
Duncan P. N. Exon Smith090a19b2015-01-08 22:38:29 +0000350
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000351 // Use-list order directives.
352 kw_uselistorder,
353 kw_uselistorder_bb,
Duncan P. N. Exon Smith0a448fb2014-08-19 21:30:15 +0000354
Teresa Johnson63ee0e72018-06-26 13:56:49 +0000355 // Summary index keywords
356 kw_path,
357 kw_hash,
358 kw_gv,
359 kw_guid,
360 kw_name,
361 kw_summaries,
362 kw_flags,
363 kw_linkage,
364 kw_notEligibleToImport,
365 kw_live,
366 kw_dsoLocal,
367 kw_function,
368 kw_insts,
369 kw_funcFlags,
370 kw_readNone,
371 kw_readOnly,
372 kw_noRecurse,
373 kw_returnDoesNotAlias,
Teresa Johnsoncb397462018-11-06 19:41:35 +0000374 kw_noInline,
Teresa Johnson63ee0e72018-06-26 13:56:49 +0000375 kw_calls,
376 kw_callee,
377 kw_hotness,
378 kw_unknown,
379 kw_hot,
380 kw_critical,
381 kw_relbf,
382 kw_variable,
383 kw_aliasee,
384 kw_refs,
385 kw_typeIdInfo,
386 kw_typeTests,
387 kw_typeTestAssumeVCalls,
388 kw_typeCheckedLoadVCalls,
389 kw_typeTestAssumeConstVCalls,
390 kw_typeCheckedLoadConstVCalls,
391 kw_vFuncId,
392 kw_offset,
393 kw_args,
394 kw_typeid,
395 kw_summary,
396 kw_typeTestRes,
397 kw_kind,
398 kw_unsat,
399 kw_byteArray,
400 kw_inline,
401 kw_single,
402 kw_allOnes,
403 kw_sizeM1BitWidth,
404 kw_alignLog2,
405 kw_sizeM1,
406 kw_bitMask,
407 kw_inlineBits,
408 kw_wpdResolutions,
409 kw_wpdRes,
410 kw_indir,
411 kw_singleImpl,
412 kw_branchFunnel,
413 kw_singleImplName,
414 kw_resByArg,
415 kw_byArg,
416 kw_uniformRetVal,
417 kw_uniqueRetVal,
418 kw_virtualConstProp,
419 kw_info,
420 kw_byte,
421 kw_bit,
Eugene Leviant009d8332018-11-23 10:54:51 +0000422 kw_varFlags,
Teresa Johnson63ee0e72018-06-26 13:56:49 +0000423
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000424 // Unsigned Valued tokens (UIntVal).
James Y Knightc0e6b8a2019-03-22 18:27:13 +0000425 LabelID, // 42:
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000426 GlobalID, // @42
427 LocalVarID, // %42
428 AttrGrpID, // #42
Teresa Johnson08d5b4e2018-05-26 02:34:13 +0000429 SummaryID, // ^42
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000430
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000431 // String valued tokens (StrVal).
432 LabelStr, // foo:
433 GlobalVar, // @foo @"foo"
434 ComdatVar, // $foo
435 LocalVar, // %foo %"foo"
436 MetadataVar, // !foo
437 StringConstant, // "foo"
438 DwarfTag, // DW_TAG_foo
439 DwarfAttEncoding, // DW_ATE_foo
440 DwarfVirtuality, // DW_VIRTUALITY_foo
441 DwarfLang, // DW_LANG_foo
Reid Klecknerde3d8b52016-06-08 20:34:29 +0000442 DwarfCC, // DW_CC_foo
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000443 EmissionKind, // lineTablesOnly
David Blaikie66cf14d2018-08-16 21:29:55 +0000444 NameTableKind, // GNU
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000445 DwarfOp, // DW_OP_foo
446 DIFlag, // DIFlagFoo
Paul Robinsonadcdc1b2018-11-28 21:14:32 +0000447 DISPFlag, // DISPFlagFoo
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000448 DwarfMacinfo, // DW_MACINFO_foo
Amjad Aboud7faeecc2016-12-25 10:12:09 +0000449 ChecksumKind, // CSK_foo
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000450
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000451 // Type valued tokens (TyVal).
452 Type,
Misha Brukman1d9a93d2009-01-02 22:46:48 +0000453
Rafael Espindolaea7f5392016-05-11 12:07:32 +0000454 APFloat, // APFloatVal
455 APSInt // APSInt
456};
Chris Lattnerac161bf2009-01-02 07:01:27 +0000457} // end namespace lltok
458} // end namespace llvm
459
460#endif