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_ASMPARSER_LLTOKEN_H
14#define LLVM_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 hash, // #
40
41 kw_vscale,
42 kw_x,
43 kw_true,
44 kw_false,
45 kw_declare,
46 kw_define,
47 kw_global,
48 kw_constant,
49
50 kw_dso_local,
51 kw_dso_preemptable,
52
53 kw_private,
54 kw_internal,
55 kw_linkonce,
56 kw_linkonce_odr,
57 kw_weak, // Used as a linkage, and a modifier for "cmpxchg".
58 kw_weak_odr,
59 kw_appending,
60 kw_dllimport,
61 kw_dllexport,
62 kw_common,
63 kw_available_externally,
64 kw_default,
65 kw_hidden,
66 kw_protected,
67 kw_unnamed_addr,
68 kw_local_unnamed_addr,
69 kw_externally_initialized,
70 kw_extern_weak,
71 kw_external,
72 kw_thread_local,
73 kw_localdynamic,
74 kw_initialexec,
75 kw_localexec,
76 kw_zeroinitializer,
77 kw_undef,
78 kw_poison,
79 kw_null,
80 kw_none,
81 kw_to,
82 kw_caller,
83 kw_within,
84 kw_from,
85 kw_tail,
86 kw_musttail,
87 kw_notail,
88 kw_target,
89 kw_triple,
90 kw_source_filename,
91 kw_unwind,
92 kw_datalayout,
93 kw_volatile,
94 kw_atomic,
95 kw_unordered,
96 kw_monotonic,
97 kw_acquire,
98 kw_release,
99 kw_acq_rel,
100 kw_seq_cst,
101 kw_syncscope,
102 kw_nnan,
103 kw_ninf,
104 kw_nsz,
105 kw_arcp,
106 kw_contract,
107 kw_reassoc,
108 kw_afn,
109 kw_fast,
110 kw_nuw,
111 kw_nsw,
112 kw_exact,
113 kw_disjoint,
114 kw_inbounds,
115 kw_nneg,
116 kw_inrange,
117 kw_addrspace,
118 kw_section,
119 kw_partition,
120 kw_code_model,
121 kw_alias,
122 kw_ifunc,
123 kw_module,
124 kw_asm,
125 kw_sideeffect,
126 kw_inteldialect,
127 kw_gc,
128 kw_prefix,
129 kw_prologue,
130 kw_c,
131
132 kw_cc,
133 kw_ccc,
134 kw_fastcc,
135 kw_coldcc,
136 kw_intel_ocl_bicc,
137 kw_cfguard_checkcc,
138 kw_x86_stdcallcc,
139 kw_x86_fastcallcc,
140 kw_x86_thiscallcc,
141 kw_x86_vectorcallcc,
142 kw_x86_regcallcc,
143 kw_arm_apcscc,
144 kw_arm_aapcscc,
145 kw_arm_aapcs_vfpcc,
146 kw_aarch64_vector_pcs,
147 kw_aarch64_sve_vector_pcs,
148 kw_aarch64_sme_preservemost_from_x0,
149 kw_aarch64_sme_preservemost_from_x2,
150 kw_msp430_intrcc,
151 kw_avr_intrcc,
152 kw_avr_signalcc,
153 kw_ptx_kernel,
154 kw_ptx_device,
155 kw_spir_kernel,
156 kw_spir_func,
157 kw_x86_64_sysvcc,
158 kw_win64cc,
159 kw_anyregcc,
160 kw_swiftcc,
161 kw_swifttailcc,
162 kw_preserve_mostcc,
163 kw_preserve_allcc,
164 kw_preserve_nonecc,
165 kw_ghccc,
166 kw_x86_intrcc,
167 kw_hhvmcc,
168 kw_hhvm_ccc,
169 kw_cxx_fast_tlscc,
170 kw_amdgpu_vs,
171 kw_amdgpu_ls,
172 kw_amdgpu_hs,
173 kw_amdgpu_es,
174 kw_amdgpu_gs,
175 kw_amdgpu_ps,
176 kw_amdgpu_cs,
177 kw_amdgpu_cs_chain,
178 kw_amdgpu_cs_chain_preserve,
179 kw_amdgpu_kernel,
180 kw_amdgpu_gfx,
181 kw_tailcc,
182 kw_m68k_rtdcc,
183 kw_graalcc,
184 kw_riscv_vector_cc,
185
186 // Attributes:
187 kw_attributes,
188 kw_sync,
189 kw_async,
190#define GET_ATTR_NAMES
191#define ATTRIBUTE_ENUM(ENUM_NAME, DISPLAY_NAME) \
192 kw_##DISPLAY_NAME,
193#include "llvm/IR/Attributes.inc"
194
195 // Memory attribute:
196 kw_read,
197 kw_write,
198 kw_readwrite,
199 kw_argmem,
200 kw_inaccessiblemem,
201
202 // Legacy memory attributes:
203 kw_argmemonly,
204 kw_inaccessiblememonly,
205 kw_inaccessiblemem_or_argmemonly,
206
207 // nofpclass attribute:
208 kw_all,
209 kw_nan,
210 kw_snan,
211 kw_qnan,
212 kw_inf,
213 // kw_ninf, - already an fmf
214 kw_pinf,
215 kw_norm,
216 kw_nnorm,
217 kw_pnorm,
218 // kw_sub, - already an instruction
219 kw_nsub,
220 kw_psub,
221 kw_zero,
222 kw_nzero,
223 kw_pzero,
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_nodeduplicate,
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 kw_fmax,
266 kw_fmin,
267 kw_uinc_wrap,
268 kw_udec_wrap,
269
270 // Instruction Opcodes (Opcode in UIntVal).
271 kw_fneg,
272 kw_add,
273 kw_fadd,
274 kw_sub,
275 kw_fsub,
276 kw_mul,
277 kw_fmul,
278 kw_udiv,
279 kw_sdiv,
280 kw_fdiv,
281 kw_urem,
282 kw_srem,
283 kw_frem,
284 kw_shl,
285 kw_lshr,
286 kw_ashr,
287 kw_and,
288 kw_or,
289 kw_xor,
290 kw_icmp,
291 kw_fcmp,
292
293 kw_phi,
294 kw_call,
295 kw_trunc,
296 kw_zext,
297 kw_sext,
298 kw_fptrunc,
299 kw_fpext,
300 kw_uitofp,
301 kw_sitofp,
302 kw_fptoui,
303 kw_fptosi,
304 kw_inttoptr,
305 kw_ptrtoint,
306 kw_bitcast,
307 kw_addrspacecast,
308 kw_select,
309 kw_va_arg,
310
311 kw_landingpad,
312 kw_personality,
313 kw_cleanup,
314 kw_catch,
315 kw_filter,
316
317 kw_ret,
318 kw_br,
319 kw_switch,
320 kw_indirectbr,
321 kw_invoke,
322 kw_resume,
323 kw_unreachable,
324 kw_cleanupret,
325 kw_catchswitch,
326 kw_catchret,
327 kw_catchpad,
328 kw_cleanuppad,
329 kw_callbr,
330
331 kw_alloca,
332 kw_load,
333 kw_store,
334 kw_fence,
335 kw_cmpxchg,
336 kw_atomicrmw,
337 kw_getelementptr,
338
339 kw_extractelement,
340 kw_insertelement,
341 kw_shufflevector,
342 kw_splat,
343 kw_extractvalue,
344 kw_insertvalue,
345 kw_blockaddress,
346 kw_dso_local_equivalent,
347 kw_no_cfi,
348
349 kw_freeze,
350
351 // Metadata types.
352 kw_distinct,
353
354 // Use-list order directives.
355 kw_uselistorder,
356 kw_uselistorder_bb,
357
358 // Summary index keywords
359 kw_path,
360 kw_hash,
361 kw_gv,
362 kw_guid,
363 kw_name,
364 kw_summaries,
365 kw_flags,
366 kw_blockcount,
367 kw_linkage,
368 kw_visibility,
369 kw_notEligibleToImport,
370 kw_live,
371 kw_dsoLocal,
372 kw_canAutoHide,
373 kw_importType,
374 kw_definition,
375 kw_declaration,
376 kw_function,
377 kw_insts,
378 kw_funcFlags,
379 kw_readNone,
380 kw_readOnly,
381 kw_noRecurse,
382 kw_returnDoesNotAlias,
383 kw_noInline,
384 kw_alwaysInline,
385 kw_noUnwind,
386 kw_mayThrow,
387 kw_hasUnknownCall,
388 kw_mustBeUnreachable,
389 kw_calls,
390 kw_callee,
391 kw_params,
392 kw_param,
393 kw_hotness,
394 kw_unknown,
395 kw_critical,
396 kw_relbf,
397 kw_variable,
398 kw_vTableFuncs,
399 kw_virtFunc,
400 kw_aliasee,
401 kw_refs,
402 kw_typeIdInfo,
403 kw_typeTests,
404 kw_typeTestAssumeVCalls,
405 kw_typeCheckedLoadVCalls,
406 kw_typeTestAssumeConstVCalls,
407 kw_typeCheckedLoadConstVCalls,
408 kw_vFuncId,
409 kw_offset,
410 kw_args,
411 kw_typeid,
412 kw_typeidCompatibleVTable,
413 kw_summary,
414 kw_typeTestRes,
415 kw_kind,
416 kw_unsat,
417 kw_byteArray,
418 kw_inline,
419 kw_single,
420 kw_allOnes,
421 kw_sizeM1BitWidth,
422 kw_alignLog2,
423 kw_sizeM1,
424 kw_bitMask,
425 kw_inlineBits,
426 kw_vcall_visibility,
427 kw_wpdResolutions,
428 kw_wpdRes,
429 kw_indir,
430 kw_singleImpl,
431 kw_branchFunnel,
432 kw_singleImplName,
433 kw_resByArg,
434 kw_byArg,
435 kw_uniformRetVal,
436 kw_uniqueRetVal,
437 kw_virtualConstProp,
438 kw_info,
439 kw_byte,
440 kw_bit,
441 kw_varFlags,
442 // The following are used by MemProf summary info.
443 kw_callsites,
444 kw_clones,
445 kw_stackIds,
446 kw_allocs,
447 kw_versions,
448 kw_memProf,
449 kw_notcold,
450
451 // GV's with __attribute__((no_sanitize("address"))), or things in
452 // -fsanitize-ignorelist when built with ASan.
453 kw_no_sanitize_address,
454 // GV's with __attribute__((no_sanitize("hwaddress"))), or things in
455 // -fsanitize-ignorelist when built with HWASan.
456 kw_no_sanitize_hwaddress,
457 // GV's where the clang++ frontend (when ASan is used) notes that this is
458 // dynamically initialized, and thus needs ODR detection.
459 kw_sanitize_address_dyninit,
460
461 // Unsigned Valued tokens (UIntVal).
462 LabelID, // 42:
463 GlobalID, // @42
464 LocalVarID, // %42
465 AttrGrpID, // #42
466 SummaryID, // ^42
467
468 // String valued tokens (StrVal).
469 LabelStr, // foo:
470 GlobalVar, // @foo @"foo"
471 ComdatVar, // $foo
472 LocalVar, // %foo %"foo"
473 MetadataVar, // !foo
474 StringConstant, // "foo"
475 DwarfTag, // DW_TAG_foo
476 DwarfAttEncoding, // DW_ATE_foo
477 DwarfVirtuality, // DW_VIRTUALITY_foo
478 DwarfLang, // DW_LANG_foo
479 DwarfCC, // DW_CC_foo
480 EmissionKind, // lineTablesOnly
481 NameTableKind, // GNU
482 DwarfOp, // DW_OP_foo
483 DIFlag, // DIFlagFoo
484 DISPFlag, // DISPFlagFoo
485 DwarfMacinfo, // DW_MACINFO_foo
486 ChecksumKind, // CSK_foo
487 DbgRecordType, // dbg_foo
488
489 // Type valued tokens (TyVal).
490 Type,
491
492 APFloat, // APFloatVal
493 APSInt // APSInt
494};
495} // end namespace lltok
496} // end namespace llvm
497
498#endif
499

source code of llvm/include/llvm/AsmParser/LLToken.h