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 
16 namespace llvm {
17 namespace lltok {
18 enum 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_poison,
78   kw_null,
79   kw_none,
80   kw_to,
81   kw_caller,
82   kw_within,
83   kw_from,
84   kw_tail,
85   kw_musttail,
86   kw_notail,
87   kw_target,
88   kw_triple,
89   kw_source_filename,
90   kw_unwind,
91   kw_deplibs, // FIXME: Remove in 4.0
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_inbounds,
114   kw_inrange,
115   kw_align,
116   kw_addrspace,
117   kw_section,
118   kw_partition,
119   kw_alias,
120   kw_ifunc,
121   kw_module,
122   kw_asm,
123   kw_sideeffect,
124   kw_alignstack,
125   kw_inteldialect,
126   kw_gc,
127   kw_prefix,
128   kw_prologue,
129   kw_c,
130 
131   kw_cc,
132   kw_ccc,
133   kw_fastcc,
134   kw_coldcc,
135   kw_intel_ocl_bicc,
136   kw_cfguard_checkcc,
137   kw_x86_stdcallcc,
138   kw_x86_fastcallcc,
139   kw_x86_thiscallcc,
140   kw_x86_vectorcallcc,
141   kw_x86_regcallcc,
142   kw_arm_apcscc,
143   kw_arm_aapcscc,
144   kw_arm_aapcs_vfpcc,
145   kw_aarch64_vector_pcs,
146   kw_aarch64_sve_vector_pcs,
147   kw_msp430_intrcc,
148   kw_avr_intrcc,
149   kw_avr_signalcc,
150   kw_ptx_kernel,
151   kw_ptx_device,
152   kw_spir_kernel,
153   kw_spir_func,
154   kw_x86_64_sysvcc,
155   kw_win64cc,
156   kw_webkit_jscc,
157   kw_anyregcc,
158   kw_swiftcc,
159   kw_swifttailcc,
160   kw_preserve_mostcc,
161   kw_preserve_allcc,
162   kw_ghccc,
163   kw_x86_intrcc,
164   kw_hhvmcc,
165   kw_hhvm_ccc,
166   kw_cxx_fast_tlscc,
167   kw_amdgpu_vs,
168   kw_amdgpu_ls,
169   kw_amdgpu_hs,
170   kw_amdgpu_es,
171   kw_amdgpu_gs,
172   kw_amdgpu_ps,
173   kw_amdgpu_cs,
174   kw_amdgpu_kernel,
175   kw_amdgpu_gfx,
176   kw_tailcc,
177 
178   // Attributes:
179   kw_attributes,
180   kw_allocsize,
181   kw_alwaysinline,
182   kw_argmemonly,
183   kw_sanitize_address,
184   kw_sanitize_hwaddress,
185   kw_sanitize_memtag,
186   kw_builtin,
187   kw_byval,
188   kw_inalloca,
189   kw_cold,
190   kw_convergent,
191   kw_dereferenceable,
192   kw_dereferenceable_or_null,
193   kw_disable_sanitizer_instrumentation,
194   kw_elementtype,
195   kw_inaccessiblememonly,
196   kw_inaccessiblemem_or_argmemonly,
197   kw_inlinehint,
198   kw_inreg,
199   kw_jumptable,
200   kw_minsize,
201   kw_naked,
202   kw_nest,
203   kw_noalias,
204   kw_noundef,
205   kw_nobuiltin,
206   kw_nocallback,
207   kw_nocapture,
208   kw_noduplicate,
209   kw_nofree,
210   kw_noimplicitfloat,
211   kw_noinline,
212   kw_norecurse,
213   kw_nonlazybind,
214   kw_nomerge,
215   kw_nonnull,
216   kw_noprofile,
217   kw_noredzone,
218   kw_noreturn,
219   kw_nosync,
220   kw_nocf_check,
221   kw_nounwind,
222   kw_nosanitize_coverage,
223   kw_null_pointer_is_valid,
224   kw_optforfuzzing,
225   kw_optnone,
226   kw_optsize,
227   kw_preallocated,
228   kw_readnone,
229   kw_readonly,
230   kw_returned,
231   kw_returns_twice,
232   kw_signext,
233   kw_speculatable,
234   kw_ssp,
235   kw_sspreq,
236   kw_sspstrong,
237   kw_safestack,
238   kw_shadowcallstack,
239   kw_sret,
240   kw_sanitize_thread,
241   kw_sanitize_memory,
242   kw_speculative_load_hardening,
243   kw_strictfp,
244   kw_swifterror,
245   kw_swiftself,
246   kw_swiftasync,
247   kw_uwtable,
248   kw_vscale_range,
249   kw_willreturn,
250   kw_writeonly,
251   kw_zeroext,
252   kw_immarg,
253   kw_byref,
254   kw_mustprogress,
255 
256   kw_type,
257   kw_opaque,
258 
259   kw_comdat,
260 
261   // Comdat types
262   kw_any,
263   kw_exactmatch,
264   kw_largest,
265   kw_nodeduplicate,
266   kw_samesize,
267 
268   kw_eq,
269   kw_ne,
270   kw_slt,
271   kw_sgt,
272   kw_sle,
273   kw_sge,
274   kw_ult,
275   kw_ugt,
276   kw_ule,
277   kw_uge,
278   kw_oeq,
279   kw_one,
280   kw_olt,
281   kw_ogt,
282   kw_ole,
283   kw_oge,
284   kw_ord,
285   kw_uno,
286   kw_ueq,
287   kw_une,
288 
289   // atomicrmw operations that aren't also instruction keywords.
290   kw_xchg,
291   kw_nand,
292   kw_max,
293   kw_min,
294   kw_umax,
295   kw_umin,
296 
297   // Instruction Opcodes (Opcode in UIntVal).
298   kw_fneg,
299   kw_add,
300   kw_fadd,
301   kw_sub,
302   kw_fsub,
303   kw_mul,
304   kw_fmul,
305   kw_udiv,
306   kw_sdiv,
307   kw_fdiv,
308   kw_urem,
309   kw_srem,
310   kw_frem,
311   kw_shl,
312   kw_lshr,
313   kw_ashr,
314   kw_and,
315   kw_or,
316   kw_xor,
317   kw_icmp,
318   kw_fcmp,
319 
320   kw_phi,
321   kw_call,
322   kw_trunc,
323   kw_zext,
324   kw_sext,
325   kw_fptrunc,
326   kw_fpext,
327   kw_uitofp,
328   kw_sitofp,
329   kw_fptoui,
330   kw_fptosi,
331   kw_inttoptr,
332   kw_ptrtoint,
333   kw_bitcast,
334   kw_addrspacecast,
335   kw_select,
336   kw_va_arg,
337 
338   kw_landingpad,
339   kw_personality,
340   kw_cleanup,
341   kw_catch,
342   kw_filter,
343 
344   kw_ret,
345   kw_br,
346   kw_switch,
347   kw_indirectbr,
348   kw_invoke,
349   kw_resume,
350   kw_unreachable,
351   kw_cleanupret,
352   kw_catchswitch,
353   kw_catchret,
354   kw_catchpad,
355   kw_cleanuppad,
356   kw_callbr,
357 
358   kw_alloca,
359   kw_load,
360   kw_store,
361   kw_fence,
362   kw_cmpxchg,
363   kw_atomicrmw,
364   kw_getelementptr,
365 
366   kw_extractelement,
367   kw_insertelement,
368   kw_shufflevector,
369   kw_extractvalue,
370   kw_insertvalue,
371   kw_blockaddress,
372   kw_dso_local_equivalent,
373   kw_no_cfi,
374 
375   kw_freeze,
376 
377   // Metadata types.
378   kw_distinct,
379 
380   // Use-list order directives.
381   kw_uselistorder,
382   kw_uselistorder_bb,
383 
384   // Summary index keywords
385   kw_path,
386   kw_hash,
387   kw_gv,
388   kw_guid,
389   kw_name,
390   kw_summaries,
391   kw_flags,
392   kw_blockcount,
393   kw_linkage,
394   kw_visibility,
395   kw_notEligibleToImport,
396   kw_live,
397   kw_dsoLocal,
398   kw_canAutoHide,
399   kw_function,
400   kw_insts,
401   kw_funcFlags,
402   kw_readNone,
403   kw_readOnly,
404   kw_noRecurse,
405   kw_returnDoesNotAlias,
406   kw_noInline,
407   kw_alwaysInline,
408   kw_noUnwind,
409   kw_mayThrow,
410   kw_hasUnknownCall,
411   kw_mustBeUnreachable,
412   kw_calls,
413   kw_callee,
414   kw_params,
415   kw_param,
416   kw_hotness,
417   kw_unknown,
418   kw_hot,
419   kw_critical,
420   kw_relbf,
421   kw_variable,
422   kw_vTableFuncs,
423   kw_virtFunc,
424   kw_aliasee,
425   kw_refs,
426   kw_typeIdInfo,
427   kw_typeTests,
428   kw_typeTestAssumeVCalls,
429   kw_typeCheckedLoadVCalls,
430   kw_typeTestAssumeConstVCalls,
431   kw_typeCheckedLoadConstVCalls,
432   kw_vFuncId,
433   kw_offset,
434   kw_args,
435   kw_typeid,
436   kw_typeidCompatibleVTable,
437   kw_summary,
438   kw_typeTestRes,
439   kw_kind,
440   kw_unsat,
441   kw_byteArray,
442   kw_inline,
443   kw_single,
444   kw_allOnes,
445   kw_sizeM1BitWidth,
446   kw_alignLog2,
447   kw_sizeM1,
448   kw_bitMask,
449   kw_inlineBits,
450   kw_vcall_visibility,
451   kw_wpdResolutions,
452   kw_wpdRes,
453   kw_indir,
454   kw_singleImpl,
455   kw_branchFunnel,
456   kw_singleImplName,
457   kw_resByArg,
458   kw_byArg,
459   kw_uniformRetVal,
460   kw_uniqueRetVal,
461   kw_virtualConstProp,
462   kw_info,
463   kw_byte,
464   kw_bit,
465   kw_varFlags,
466 
467   // Unsigned Valued tokens (UIntVal).
468   LabelID,    // 42:
469   GlobalID,   // @42
470   LocalVarID, // %42
471   AttrGrpID,  // #42
472   SummaryID,  // ^42
473 
474   // String valued tokens (StrVal).
475   LabelStr,         // foo:
476   GlobalVar,        // @foo @"foo"
477   ComdatVar,        // $foo
478   LocalVar,         // %foo %"foo"
479   MetadataVar,      // !foo
480   StringConstant,   // "foo"
481   DwarfTag,         // DW_TAG_foo
482   DwarfAttEncoding, // DW_ATE_foo
483   DwarfVirtuality,  // DW_VIRTUALITY_foo
484   DwarfLang,        // DW_LANG_foo
485   DwarfCC,          // DW_CC_foo
486   EmissionKind,     // lineTablesOnly
487   NameTableKind,    // GNU
488   DwarfOp,          // DW_OP_foo
489   DIFlag,           // DIFlagFoo
490   DISPFlag,         // DISPFlagFoo
491   DwarfMacinfo,     // DW_MACINFO_foo
492   ChecksumKind,     // CSK_foo
493 
494   // Type valued tokens (TyVal).
495   Type,
496 
497   APFloat, // APFloatVal
498   APSInt   // APSInt
499 };
500 } // end namespace lltok
501 } // end namespace llvm
502 
503 #endif
504