Home | History | Annotate | Download | only in AsmParser
      1 //===- LLToken.h - Token Codes for LLVM Assembly Files ----------*- C++ -*-===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 //
     10 // This file defines the enums for the .ll lexer.
     11 //
     12 //===----------------------------------------------------------------------===//
     13 
     14 #ifndef LLVM_LIB_ASMPARSER_LLTOKEN_H
     15 #define LLVM_LIB_ASMPARSER_LLTOKEN_H
     16 
     17 namespace llvm {
     18 namespace lltok {
     19 enum Kind {
     20   // Markers
     21   Eof,
     22   Error,
     23 
     24   // Tokens with no info.
     25   dotdotdot, // ...
     26   equal,
     27   comma, // =  ,
     28   star,  // *
     29   lsquare,
     30   rsquare, // [  ]
     31   lbrace,
     32   rbrace, // {  }
     33   less,
     34   greater, // <  >
     35   lparen,
     36   rparen,  // (  )
     37   exclaim, // !
     38   bar,     // |
     39 
     40   kw_x,
     41   kw_true,
     42   kw_false,
     43   kw_declare,
     44   kw_define,
     45   kw_global,
     46   kw_constant,
     47 
     48   kw_private,
     49   kw_internal,
     50   kw_linkonce,
     51   kw_linkonce_odr,
     52   kw_weak, // Used as a linkage, and a modifier for "cmpxchg".
     53   kw_weak_odr,
     54   kw_appending,
     55   kw_dllimport,
     56   kw_dllexport,
     57   kw_common,
     58   kw_available_externally,
     59   kw_default,
     60   kw_hidden,
     61   kw_protected,
     62   kw_unnamed_addr,
     63   kw_local_unnamed_addr,
     64   kw_externally_initialized,
     65   kw_extern_weak,
     66   kw_external,
     67   kw_thread_local,
     68   kw_localdynamic,
     69   kw_initialexec,
     70   kw_localexec,
     71   kw_zeroinitializer,
     72   kw_undef,
     73   kw_null,
     74   kw_none,
     75   kw_to,
     76   kw_caller,
     77   kw_within,
     78   kw_from,
     79   kw_tail,
     80   kw_musttail,
     81   kw_notail,
     82   kw_target,
     83   kw_triple,
     84   kw_source_filename,
     85   kw_unwind,
     86   kw_deplibs, // FIXME: Remove in 4.0
     87   kw_datalayout,
     88   kw_volatile,
     89   kw_atomic,
     90   kw_unordered,
     91   kw_monotonic,
     92   kw_acquire,
     93   kw_release,
     94   kw_acq_rel,
     95   kw_seq_cst,
     96   kw_singlethread,
     97   kw_nnan,
     98   kw_ninf,
     99   kw_nsz,
    100   kw_arcp,
    101   kw_fast,
    102   kw_nuw,
    103   kw_nsw,
    104   kw_exact,
    105   kw_inbounds,
    106   kw_align,
    107   kw_addrspace,
    108   kw_section,
    109   kw_alias,
    110   kw_ifunc,
    111   kw_module,
    112   kw_asm,
    113   kw_sideeffect,
    114   kw_alignstack,
    115   kw_inteldialect,
    116   kw_gc,
    117   kw_prefix,
    118   kw_prologue,
    119   kw_c,
    120 
    121   kw_cc,
    122   kw_ccc,
    123   kw_fastcc,
    124   kw_coldcc,
    125   kw_intel_ocl_bicc,
    126   kw_x86_stdcallcc,
    127   kw_x86_fastcallcc,
    128   kw_x86_thiscallcc,
    129   kw_x86_vectorcallcc,
    130   kw_arm_apcscc,
    131   kw_arm_aapcscc,
    132   kw_arm_aapcs_vfpcc,
    133   kw_msp430_intrcc,
    134   kw_avr_intrcc,
    135   kw_avr_signalcc,
    136   kw_ptx_kernel,
    137   kw_ptx_device,
    138   kw_spir_kernel,
    139   kw_spir_func,
    140   kw_x86_64_sysvcc,
    141   kw_x86_64_win64cc,
    142   kw_webkit_jscc,
    143   kw_anyregcc,
    144   kw_swiftcc,
    145   kw_preserve_mostcc,
    146   kw_preserve_allcc,
    147   kw_ghccc,
    148   kw_x86_intrcc,
    149   kw_hhvmcc,
    150   kw_hhvm_ccc,
    151   kw_cxx_fast_tlscc,
    152   kw_amdgpu_vs,
    153   kw_amdgpu_gs,
    154   kw_amdgpu_ps,
    155   kw_amdgpu_cs,
    156   kw_amdgpu_kernel,
    157 
    158   // Attributes:
    159   kw_attributes,
    160   kw_allocsize,
    161   kw_alwaysinline,
    162   kw_argmemonly,
    163   kw_sanitize_address,
    164   kw_builtin,
    165   kw_byval,
    166   kw_inalloca,
    167   kw_cold,
    168   kw_convergent,
    169   kw_dereferenceable,
    170   kw_dereferenceable_or_null,
    171   kw_inaccessiblememonly,
    172   kw_inaccessiblemem_or_argmemonly,
    173   kw_inlinehint,
    174   kw_inreg,
    175   kw_jumptable,
    176   kw_minsize,
    177   kw_naked,
    178   kw_nest,
    179   kw_noalias,
    180   kw_nobuiltin,
    181   kw_nocapture,
    182   kw_noduplicate,
    183   kw_noimplicitfloat,
    184   kw_noinline,
    185   kw_norecurse,
    186   kw_nonlazybind,
    187   kw_nonnull,
    188   kw_noredzone,
    189   kw_noreturn,
    190   kw_nounwind,
    191   kw_optnone,
    192   kw_optsize,
    193   kw_readnone,
    194   kw_readonly,
    195   kw_returned,
    196   kw_returns_twice,
    197   kw_signext,
    198   kw_ssp,
    199   kw_sspreq,
    200   kw_sspstrong,
    201   kw_safestack,
    202   kw_sret,
    203   kw_sanitize_thread,
    204   kw_sanitize_memory,
    205   kw_swifterror,
    206   kw_swiftself,
    207   kw_uwtable,
    208   kw_writeonly,
    209   kw_zeroext,
    210 
    211   kw_type,
    212   kw_opaque,
    213 
    214   kw_comdat,
    215 
    216   // Comdat types
    217   kw_any,
    218   kw_exactmatch,
    219   kw_largest,
    220   kw_noduplicates,
    221   kw_samesize,
    222 
    223   kw_eq,
    224   kw_ne,
    225   kw_slt,
    226   kw_sgt,
    227   kw_sle,
    228   kw_sge,
    229   kw_ult,
    230   kw_ugt,
    231   kw_ule,
    232   kw_uge,
    233   kw_oeq,
    234   kw_one,
    235   kw_olt,
    236   kw_ogt,
    237   kw_ole,
    238   kw_oge,
    239   kw_ord,
    240   kw_uno,
    241   kw_ueq,
    242   kw_une,
    243 
    244   // atomicrmw operations that aren't also instruction keywords.
    245   kw_xchg,
    246   kw_nand,
    247   kw_max,
    248   kw_min,
    249   kw_umax,
    250   kw_umin,
    251 
    252   // Instruction Opcodes (Opcode in UIntVal).
    253   kw_add,
    254   kw_fadd,
    255   kw_sub,
    256   kw_fsub,
    257   kw_mul,
    258   kw_fmul,
    259   kw_udiv,
    260   kw_sdiv,
    261   kw_fdiv,
    262   kw_urem,
    263   kw_srem,
    264   kw_frem,
    265   kw_shl,
    266   kw_lshr,
    267   kw_ashr,
    268   kw_and,
    269   kw_or,
    270   kw_xor,
    271   kw_icmp,
    272   kw_fcmp,
    273 
    274   kw_phi,
    275   kw_call,
    276   kw_trunc,
    277   kw_zext,
    278   kw_sext,
    279   kw_fptrunc,
    280   kw_fpext,
    281   kw_uitofp,
    282   kw_sitofp,
    283   kw_fptoui,
    284   kw_fptosi,
    285   kw_inttoptr,
    286   kw_ptrtoint,
    287   kw_bitcast,
    288   kw_addrspacecast,
    289   kw_select,
    290   kw_va_arg,
    291 
    292   kw_landingpad,
    293   kw_personality,
    294   kw_cleanup,
    295   kw_catch,
    296   kw_filter,
    297 
    298   kw_ret,
    299   kw_br,
    300   kw_switch,
    301   kw_indirectbr,
    302   kw_invoke,
    303   kw_resume,
    304   kw_unreachable,
    305   kw_cleanupret,
    306   kw_catchswitch,
    307   kw_catchret,
    308   kw_catchpad,
    309   kw_cleanuppad,
    310 
    311   kw_alloca,
    312   kw_load,
    313   kw_store,
    314   kw_fence,
    315   kw_cmpxchg,
    316   kw_atomicrmw,
    317   kw_getelementptr,
    318 
    319   kw_extractelement,
    320   kw_insertelement,
    321   kw_shufflevector,
    322   kw_extractvalue,
    323   kw_insertvalue,
    324   kw_blockaddress,
    325 
    326   // Metadata types.
    327   kw_distinct,
    328 
    329   // Use-list order directives.
    330   kw_uselistorder,
    331   kw_uselistorder_bb,
    332 
    333   // Unsigned Valued tokens (UIntVal).
    334   GlobalID,   // @42
    335   LocalVarID, // %42
    336   AttrGrpID,  // #42
    337 
    338   // String valued tokens (StrVal).
    339   LabelStr,         // foo:
    340   GlobalVar,        // @foo @"foo"
    341   ComdatVar,        // $foo
    342   LocalVar,         // %foo %"foo"
    343   MetadataVar,      // !foo
    344   StringConstant,   // "foo"
    345   DwarfTag,         // DW_TAG_foo
    346   DwarfAttEncoding, // DW_ATE_foo
    347   DwarfVirtuality,  // DW_VIRTUALITY_foo
    348   DwarfLang,        // DW_LANG_foo
    349   DwarfCC,          // DW_CC_foo
    350   EmissionKind,     // lineTablesOnly
    351   DwarfOp,          // DW_OP_foo
    352   DIFlag,           // DIFlagFoo
    353   DwarfMacinfo,     // DW_MACINFO_foo
    354 
    355   // Type valued tokens (TyVal).
    356   Type,
    357 
    358   APFloat, // APFloatVal
    359   APSInt   // APSInt
    360 };
    361 } // end namespace lltok
    362 } // end namespace llvm
    363 
    364 #endif
    365