1//===- LLToken.h - Token Codes for LLVM Assembly Files ----------*- C++ -*-===//
2//
3// 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
6//
7//===----------------------------------------------------------------------===//
8//
9// This file defines the enums for the .ll lexer.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef LLVM_LIB_ASMPARSER_LLTOKEN_H
14#define LLVM_LIB_ASMPARSER_LLTOKEN_H
15
16namespace llvm {
17namespace lltok {
18enum Kind {
19  // Markers
20  Eof,
21  Error,
22
23  // 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,     // |
38  colon,   // :
39
40  kw_vscale,
41  kw_x,
42  kw_true,
43  kw_false,
44  kw_declare,
45  kw_define,
46  kw_global,
47  kw_constant,
48
49  kw_dso_local,
50  kw_dso_preemptable,
51
52  kw_private,
53  kw_internal,
54  kw_linkonce,
55  kw_linkonce_odr,
56  kw_weak, // Used as a linkage, and a modifier for "cmpxchg".
57  kw_weak_odr,
58  kw_appending,
59  kw_dllimport,
60  kw_dllexport,
61  kw_common,
62  kw_available_externally,
63  kw_default,
64  kw_hidden,
65  kw_protected,
66  kw_unnamed_addr,
67  kw_local_unnamed_addr,
68  kw_externally_initialized,
69  kw_extern_weak,
70  kw_external,
71  kw_thread_local,
72  kw_localdynamic,
73  kw_initialexec,
74  kw_localexec,
75  kw_zeroinitializer,
76  kw_undef,
77  kw_null,
78  kw_none,
79  kw_to,
80  kw_caller,
81  kw_within,
82  kw_from,
83  kw_tail,
84  kw_musttail,
85  kw_notail,
86  kw_target,
87  kw_triple,
88  kw_source_filename,
89  kw_unwind,
90  kw_deplibs, // FIXME: Remove in 4.0
91  kw_datalayout,
92  kw_volatile,
93  kw_atomic,
94  kw_unordered,
95  kw_monotonic,
96  kw_acquire,
97  kw_release,
98  kw_acq_rel,
99  kw_seq_cst,
100  kw_syncscope,
101  kw_nnan,
102  kw_ninf,
103  kw_nsz,
104  kw_arcp,
105  kw_contract,
106  kw_reassoc,
107  kw_afn,
108  kw_fast,
109  kw_nuw,
110  kw_nsw,
111  kw_exact,
112  kw_inbounds,
113  kw_inrange,
114  kw_align,
115  kw_addrspace,
116  kw_section,
117  kw_partition,
118  kw_alias,
119  kw_ifunc,
120  kw_module,
121  kw_asm,
122  kw_sideeffect,
123  kw_alignstack,
124  kw_inteldialect,
125  kw_gc,
126  kw_prefix,
127  kw_prologue,
128  kw_c,
129
130  kw_cc,
131  kw_ccc,
132  kw_fastcc,
133  kw_coldcc,
134  kw_intel_ocl_bicc,
135  kw_cfguard_checkcc,
136  kw_x86_stdcallcc,
137  kw_x86_fastcallcc,
138  kw_x86_thiscallcc,
139  kw_x86_vectorcallcc,
140  kw_x86_regcallcc,
141  kw_arm_apcscc,
142  kw_arm_aapcscc,
143  kw_arm_aapcs_vfpcc,
144  kw_aarch64_vector_pcs,
145  kw_aarch64_sve_vector_pcs,
146  kw_msp430_intrcc,
147  kw_avr_intrcc,
148  kw_avr_signalcc,
149  kw_ptx_kernel,
150  kw_ptx_device,
151  kw_spir_kernel,
152  kw_spir_func,
153  kw_x86_64_sysvcc,
154  kw_win64cc,
155  kw_webkit_jscc,
156  kw_anyregcc,
157  kw_swiftcc,
158  kw_preserve_mostcc,
159  kw_preserve_allcc,
160  kw_ghccc,
161  kw_x86_intrcc,
162  kw_hhvmcc,
163  kw_hhvm_ccc,
164  kw_cxx_fast_tlscc,
165  kw_amdgpu_vs,
166  kw_amdgpu_ls,
167  kw_amdgpu_hs,
168  kw_amdgpu_es,
169  kw_amdgpu_gs,
170  kw_amdgpu_ps,
171  kw_amdgpu_cs,
172  kw_amdgpu_kernel,
173  kw_tailcc,
174
175  // Attributes:
176  kw_attributes,
177  kw_allocsize,
178  kw_alwaysinline,
179  kw_argmemonly,
180  kw_sanitize_address,
181  kw_sanitize_hwaddress,
182  kw_sanitize_memtag,
183  kw_builtin,
184  kw_byval,
185  kw_inalloca,
186  kw_cold,
187  kw_convergent,
188  kw_dereferenceable,
189  kw_dereferenceable_or_null,
190  kw_inaccessiblememonly,
191  kw_inaccessiblemem_or_argmemonly,
192  kw_inlinehint,
193  kw_inreg,
194  kw_jumptable,
195  kw_minsize,
196  kw_naked,
197  kw_nest,
198  kw_noalias,
199  kw_noundef,
200  kw_nobuiltin,
201  kw_nocapture,
202  kw_noduplicate,
203  kw_nofree,
204  kw_noimplicitfloat,
205  kw_noinline,
206  kw_norecurse,
207  kw_nonlazybind,
208  kw_nomerge,
209  kw_nonnull,
210  kw_noredzone,
211  kw_noreturn,
212  kw_nosync,
213  kw_nocf_check,
214  kw_nounwind,
215  kw_null_pointer_is_valid,
216  kw_optforfuzzing,
217  kw_optnone,
218  kw_optsize,
219  kw_preallocated,
220  kw_readnone,
221  kw_readonly,
222  kw_returned,
223  kw_returns_twice,
224  kw_signext,
225  kw_speculatable,
226  kw_ssp,
227  kw_sspreq,
228  kw_sspstrong,
229  kw_safestack,
230  kw_shadowcallstack,
231  kw_sret,
232  kw_sanitize_thread,
233  kw_sanitize_memory,
234  kw_speculative_load_hardening,
235  kw_strictfp,
236  kw_swifterror,
237  kw_swiftself,
238  kw_uwtable,
239  kw_willreturn,
240  kw_writeonly,
241  kw_zeroext,
242  kw_immarg,
243
244  kw_type,
245  kw_opaque,
246
247  kw_comdat,
248
249  // Comdat types
250  kw_any,
251  kw_exactmatch,
252  kw_largest,
253  kw_noduplicates,
254  kw_samesize,
255
256  kw_eq,
257  kw_ne,
258  kw_slt,
259  kw_sgt,
260  kw_sle,
261  kw_sge,
262  kw_ult,
263  kw_ugt,
264  kw_ule,
265  kw_uge,
266  kw_oeq,
267  kw_one,
268  kw_olt,
269  kw_ogt,
270  kw_ole,
271  kw_oge,
272  kw_ord,
273  kw_uno,
274  kw_ueq,
275  kw_une,
276
277  // atomicrmw operations that aren't also instruction keywords.
278  kw_xchg,
279  kw_nand,
280  kw_max,
281  kw_min,
282  kw_umax,
283  kw_umin,
284
285  // Instruction Opcodes (Opcode in UIntVal).
286  kw_fneg,
287  kw_add,
288  kw_fadd,
289  kw_sub,
290  kw_fsub,
291  kw_mul,
292  kw_fmul,
293  kw_udiv,
294  kw_sdiv,
295  kw_fdiv,
296  kw_urem,
297  kw_srem,
298  kw_frem,
299  kw_shl,
300  kw_lshr,
301  kw_ashr,
302  kw_and,
303  kw_or,
304  kw_xor,
305  kw_icmp,
306  kw_fcmp,
307
308  kw_phi,
309  kw_call,
310  kw_trunc,
311  kw_zext,
312  kw_sext,
313  kw_fptrunc,
314  kw_fpext,
315  kw_uitofp,
316  kw_sitofp,
317  kw_fptoui,
318  kw_fptosi,
319  kw_inttoptr,
320  kw_ptrtoint,
321  kw_bitcast,
322  kw_addrspacecast,
323  kw_select,
324  kw_va_arg,
325
326  kw_landingpad,
327  kw_personality,
328  kw_cleanup,
329  kw_catch,
330  kw_filter,
331
332  kw_ret,
333  kw_br,
334  kw_switch,
335  kw_indirectbr,
336  kw_invoke,
337  kw_resume,
338  kw_unreachable,
339  kw_cleanupret,
340  kw_catchswitch,
341  kw_catchret,
342  kw_catchpad,
343  kw_cleanuppad,
344  kw_callbr,
345
346  kw_alloca,
347  kw_load,
348  kw_store,
349  kw_fence,
350  kw_cmpxchg,
351  kw_atomicrmw,
352  kw_getelementptr,
353
354  kw_extractelement,
355  kw_insertelement,
356  kw_shufflevector,
357  kw_extractvalue,
358  kw_insertvalue,
359  kw_blockaddress,
360
361  kw_freeze,
362
363  // Metadata types.
364  kw_distinct,
365
366  // Use-list order directives.
367  kw_uselistorder,
368  kw_uselistorder_bb,
369
370  // Summary index keywords
371  kw_path,
372  kw_hash,
373  kw_gv,
374  kw_guid,
375  kw_name,
376  kw_summaries,
377  kw_flags,
378  kw_blockcount,
379  kw_linkage,
380  kw_notEligibleToImport,
381  kw_live,
382  kw_dsoLocal,
383  kw_canAutoHide,
384  kw_function,
385  kw_insts,
386  kw_funcFlags,
387  kw_readNone,
388  kw_readOnly,
389  kw_noRecurse,
390  kw_returnDoesNotAlias,
391  kw_noInline,
392  kw_alwaysInline,
393  kw_calls,
394  kw_callee,
395  kw_params,
396  kw_param,
397  kw_hotness,
398  kw_unknown,
399  kw_hot,
400  kw_critical,
401  kw_relbf,
402  kw_variable,
403  kw_vTableFuncs,
404  kw_virtFunc,
405  kw_aliasee,
406  kw_refs,
407  kw_typeIdInfo,
408  kw_typeTests,
409  kw_typeTestAssumeVCalls,
410  kw_typeCheckedLoadVCalls,
411  kw_typeTestAssumeConstVCalls,
412  kw_typeCheckedLoadConstVCalls,
413  kw_vFuncId,
414  kw_offset,
415  kw_args,
416  kw_typeid,
417  kw_typeidCompatibleVTable,
418  kw_summary,
419  kw_typeTestRes,
420  kw_kind,
421  kw_unsat,
422  kw_byteArray,
423  kw_inline,
424  kw_single,
425  kw_allOnes,
426  kw_sizeM1BitWidth,
427  kw_alignLog2,
428  kw_sizeM1,
429  kw_bitMask,
430  kw_inlineBits,
431  kw_vcall_visibility,
432  kw_wpdResolutions,
433  kw_wpdRes,
434  kw_indir,
435  kw_singleImpl,
436  kw_branchFunnel,
437  kw_singleImplName,
438  kw_resByArg,
439  kw_byArg,
440  kw_uniformRetVal,
441  kw_uniqueRetVal,
442  kw_virtualConstProp,
443  kw_info,
444  kw_byte,
445  kw_bit,
446  kw_varFlags,
447
448  // Unsigned Valued tokens (UIntVal).
449  LabelID,    // 42:
450  GlobalID,   // @42
451  LocalVarID, // %42
452  AttrGrpID,  // #42
453  SummaryID,  // ^42
454
455  // String valued tokens (StrVal).
456  LabelStr,         // foo:
457  GlobalVar,        // @foo @"foo"
458  ComdatVar,        // $foo
459  LocalVar,         // %foo %"foo"
460  MetadataVar,      // !foo
461  StringConstant,   // "foo"
462  DwarfTag,         // DW_TAG_foo
463  DwarfAttEncoding, // DW_ATE_foo
464  DwarfVirtuality,  // DW_VIRTUALITY_foo
465  DwarfLang,        // DW_LANG_foo
466  DwarfCC,          // DW_CC_foo
467  EmissionKind,     // lineTablesOnly
468  NameTableKind,    // GNU
469  DwarfOp,          // DW_OP_foo
470  DIFlag,           // DIFlagFoo
471  DISPFlag,         // DISPFlagFoo
472  DwarfMacinfo,     // DW_MACINFO_foo
473  ChecksumKind,     // CSK_foo
474
475  // Type valued tokens (TyVal).
476  Type,
477
478  APFloat, // APFloatVal
479  APSInt   // APSInt
480};
481} // end namespace lltok
482} // end namespace llvm
483
484#endif
485