Home | History | Annotate | Line # | Download | only in AsmParser
      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 
     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_inaccessiblememonly,
    194   kw_inaccessiblemem_or_argmemonly,
    195   kw_inlinehint,
    196   kw_inreg,
    197   kw_jumptable,
    198   kw_minsize,
    199   kw_naked,
    200   kw_nest,
    201   kw_noalias,
    202   kw_noundef,
    203   kw_nobuiltin,
    204   kw_nocallback,
    205   kw_nocapture,
    206   kw_noduplicate,
    207   kw_nofree,
    208   kw_noimplicitfloat,
    209   kw_noinline,
    210   kw_norecurse,
    211   kw_nonlazybind,
    212   kw_nomerge,
    213   kw_nonnull,
    214   kw_noprofile,
    215   kw_noredzone,
    216   kw_noreturn,
    217   kw_nosync,
    218   kw_nocf_check,
    219   kw_nounwind,
    220   kw_null_pointer_is_valid,
    221   kw_optforfuzzing,
    222   kw_optnone,
    223   kw_optsize,
    224   kw_preallocated,
    225   kw_readnone,
    226   kw_readonly,
    227   kw_returned,
    228   kw_returns_twice,
    229   kw_signext,
    230   kw_speculatable,
    231   kw_ssp,
    232   kw_sspreq,
    233   kw_sspstrong,
    234   kw_safestack,
    235   kw_shadowcallstack,
    236   kw_sret,
    237   kw_sanitize_thread,
    238   kw_sanitize_memory,
    239   kw_speculative_load_hardening,
    240   kw_strictfp,
    241   kw_swifterror,
    242   kw_swiftself,
    243   kw_swiftasync,
    244   kw_uwtable,
    245   kw_vscale_range,
    246   kw_willreturn,
    247   kw_writeonly,
    248   kw_zeroext,
    249   kw_immarg,
    250   kw_byref,
    251   kw_mustprogress,
    252 
    253   kw_type,
    254   kw_opaque,
    255 
    256   kw_comdat,
    257 
    258   // Comdat types
    259   kw_any,
    260   kw_exactmatch,
    261   kw_largest,
    262   kw_noduplicates,
    263   kw_samesize,
    264 
    265   kw_eq,
    266   kw_ne,
    267   kw_slt,
    268   kw_sgt,
    269   kw_sle,
    270   kw_sge,
    271   kw_ult,
    272   kw_ugt,
    273   kw_ule,
    274   kw_uge,
    275   kw_oeq,
    276   kw_one,
    277   kw_olt,
    278   kw_ogt,
    279   kw_ole,
    280   kw_oge,
    281   kw_ord,
    282   kw_uno,
    283   kw_ueq,
    284   kw_une,
    285 
    286   // atomicrmw operations that aren't also instruction keywords.
    287   kw_xchg,
    288   kw_nand,
    289   kw_max,
    290   kw_min,
    291   kw_umax,
    292   kw_umin,
    293 
    294   // Instruction Opcodes (Opcode in UIntVal).
    295   kw_fneg,
    296   kw_add,
    297   kw_fadd,
    298   kw_sub,
    299   kw_fsub,
    300   kw_mul,
    301   kw_fmul,
    302   kw_udiv,
    303   kw_sdiv,
    304   kw_fdiv,
    305   kw_urem,
    306   kw_srem,
    307   kw_frem,
    308   kw_shl,
    309   kw_lshr,
    310   kw_ashr,
    311   kw_and,
    312   kw_or,
    313   kw_xor,
    314   kw_icmp,
    315   kw_fcmp,
    316 
    317   kw_phi,
    318   kw_call,
    319   kw_trunc,
    320   kw_zext,
    321   kw_sext,
    322   kw_fptrunc,
    323   kw_fpext,
    324   kw_uitofp,
    325   kw_sitofp,
    326   kw_fptoui,
    327   kw_fptosi,
    328   kw_inttoptr,
    329   kw_ptrtoint,
    330   kw_bitcast,
    331   kw_addrspacecast,
    332   kw_select,
    333   kw_va_arg,
    334 
    335   kw_landingpad,
    336   kw_personality,
    337   kw_cleanup,
    338   kw_catch,
    339   kw_filter,
    340 
    341   kw_ret,
    342   kw_br,
    343   kw_switch,
    344   kw_indirectbr,
    345   kw_invoke,
    346   kw_resume,
    347   kw_unreachable,
    348   kw_cleanupret,
    349   kw_catchswitch,
    350   kw_catchret,
    351   kw_catchpad,
    352   kw_cleanuppad,
    353   kw_callbr,
    354 
    355   kw_alloca,
    356   kw_load,
    357   kw_store,
    358   kw_fence,
    359   kw_cmpxchg,
    360   kw_atomicrmw,
    361   kw_getelementptr,
    362 
    363   kw_extractelement,
    364   kw_insertelement,
    365   kw_shufflevector,
    366   kw_extractvalue,
    367   kw_insertvalue,
    368   kw_blockaddress,
    369   kw_dso_local_equivalent,
    370 
    371   kw_freeze,
    372 
    373   // Metadata types.
    374   kw_distinct,
    375 
    376   // Use-list order directives.
    377   kw_uselistorder,
    378   kw_uselistorder_bb,
    379 
    380   // Summary index keywords
    381   kw_path,
    382   kw_hash,
    383   kw_gv,
    384   kw_guid,
    385   kw_name,
    386   kw_summaries,
    387   kw_flags,
    388   kw_blockcount,
    389   kw_linkage,
    390   kw_visibility,
    391   kw_notEligibleToImport,
    392   kw_live,
    393   kw_dsoLocal,
    394   kw_canAutoHide,
    395   kw_function,
    396   kw_insts,
    397   kw_funcFlags,
    398   kw_readNone,
    399   kw_readOnly,
    400   kw_noRecurse,
    401   kw_returnDoesNotAlias,
    402   kw_noInline,
    403   kw_alwaysInline,
    404   kw_calls,
    405   kw_callee,
    406   kw_params,
    407   kw_param,
    408   kw_hotness,
    409   kw_unknown,
    410   kw_hot,
    411   kw_critical,
    412   kw_relbf,
    413   kw_variable,
    414   kw_vTableFuncs,
    415   kw_virtFunc,
    416   kw_aliasee,
    417   kw_refs,
    418   kw_typeIdInfo,
    419   kw_typeTests,
    420   kw_typeTestAssumeVCalls,
    421   kw_typeCheckedLoadVCalls,
    422   kw_typeTestAssumeConstVCalls,
    423   kw_typeCheckedLoadConstVCalls,
    424   kw_vFuncId,
    425   kw_offset,
    426   kw_args,
    427   kw_typeid,
    428   kw_typeidCompatibleVTable,
    429   kw_summary,
    430   kw_typeTestRes,
    431   kw_kind,
    432   kw_unsat,
    433   kw_byteArray,
    434   kw_inline,
    435   kw_single,
    436   kw_allOnes,
    437   kw_sizeM1BitWidth,
    438   kw_alignLog2,
    439   kw_sizeM1,
    440   kw_bitMask,
    441   kw_inlineBits,
    442   kw_vcall_visibility,
    443   kw_wpdResolutions,
    444   kw_wpdRes,
    445   kw_indir,
    446   kw_singleImpl,
    447   kw_branchFunnel,
    448   kw_singleImplName,
    449   kw_resByArg,
    450   kw_byArg,
    451   kw_uniformRetVal,
    452   kw_uniqueRetVal,
    453   kw_virtualConstProp,
    454   kw_info,
    455   kw_byte,
    456   kw_bit,
    457   kw_varFlags,
    458 
    459   // Unsigned Valued tokens (UIntVal).
    460   LabelID,    // 42:
    461   GlobalID,   // @42
    462   LocalVarID, // %42
    463   AttrGrpID,  // #42
    464   SummaryID,  // ^42
    465 
    466   // String valued tokens (StrVal).
    467   LabelStr,         // foo:
    468   GlobalVar,        // @foo @"foo"
    469   ComdatVar,        // $foo
    470   LocalVar,         // %foo %"foo"
    471   MetadataVar,      // !foo
    472   StringConstant,   // "foo"
    473   DwarfTag,         // DW_TAG_foo
    474   DwarfAttEncoding, // DW_ATE_foo
    475   DwarfVirtuality,  // DW_VIRTUALITY_foo
    476   DwarfLang,        // DW_LANG_foo
    477   DwarfCC,          // DW_CC_foo
    478   EmissionKind,     // lineTablesOnly
    479   NameTableKind,    // GNU
    480   DwarfOp,          // DW_OP_foo
    481   DIFlag,           // DIFlagFoo
    482   DISPFlag,         // DISPFlagFoo
    483   DwarfMacinfo,     // DW_MACINFO_foo
    484   ChecksumKind,     // CSK_foo
    485 
    486   // Type valued tokens (TyVal).
    487   Type,
    488 
    489   APFloat, // APFloatVal
    490   APSInt   // APSInt
    491 };
    492 } // end namespace lltok
    493 } // end namespace llvm
    494 
    495 #endif
    496