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 LIBS_ASMPARSER_LLTOKEN_H 15 #define LIBS_ASMPARSER_LLTOKEN_H 16 17 namespace llvm { 18 namespace lltok { 19 enum Kind { 20 // Markers 21 Eof, Error, 22 23 // Tokens with no info. 24 dotdotdot, // ... 25 equal, comma, // = , 26 star, // * 27 lsquare, rsquare, // [ ] 28 lbrace, rbrace, // { } 29 less, greater, // < > 30 lparen, rparen, // ( ) 31 backslash, // \ (not /) 32 exclaim, // ! 33 34 kw_x, 35 kw_true, kw_false, 36 kw_declare, kw_define, 37 kw_global, kw_constant, 38 39 kw_private, kw_linker_private, kw_linker_private_weak, 40 kw_linker_private_weak_def_auto, kw_internal, 41 kw_linkonce, kw_linkonce_odr, kw_weak, kw_weak_odr, kw_appending, 42 kw_dllimport, kw_dllexport, kw_common, kw_available_externally, 43 kw_default, kw_hidden, kw_protected, 44 kw_unnamed_addr, 45 kw_extern_weak, 46 kw_external, kw_thread_local, 47 kw_zeroinitializer, 48 kw_undef, kw_null, 49 kw_to, 50 kw_tail, 51 kw_target, 52 kw_triple, 53 kw_deplibs, 54 kw_datalayout, 55 kw_volatile, 56 kw_nuw, 57 kw_nsw, 58 kw_exact, 59 kw_inbounds, 60 kw_align, 61 kw_addrspace, 62 kw_section, 63 kw_alias, 64 kw_module, 65 kw_asm, 66 kw_sideeffect, 67 kw_alignstack, 68 kw_gc, 69 kw_c, 70 71 kw_cc, kw_ccc, kw_fastcc, kw_coldcc, 72 kw_x86_stdcallcc, kw_x86_fastcallcc, kw_x86_thiscallcc, 73 kw_arm_apcscc, kw_arm_aapcscc, kw_arm_aapcs_vfpcc, 74 kw_msp430_intrcc, 75 kw_ptx_kernel, kw_ptx_device, 76 77 kw_signext, 78 kw_zeroext, 79 kw_inreg, 80 kw_sret, 81 kw_nounwind, 82 kw_noreturn, 83 kw_noalias, 84 kw_nocapture, 85 kw_byval, 86 kw_nest, 87 kw_readnone, 88 kw_readonly, 89 kw_uwtable, 90 91 kw_inlinehint, 92 kw_noinline, 93 kw_alwaysinline, 94 kw_optsize, 95 kw_ssp, 96 kw_sspreq, 97 kw_noredzone, 98 kw_noimplicitfloat, 99 kw_naked, 100 kw_hotpatch, 101 kw_nonlazybind, 102 103 kw_type, 104 kw_opaque, 105 106 kw_eq, kw_ne, kw_slt, kw_sgt, kw_sle, kw_sge, kw_ult, kw_ugt, kw_ule, 107 kw_uge, kw_oeq, kw_one, kw_olt, kw_ogt, kw_ole, kw_oge, kw_ord, kw_uno, 108 kw_ueq, kw_une, 109 110 // Instruction Opcodes (Opcode in UIntVal). 111 kw_add, kw_fadd, kw_sub, kw_fsub, kw_mul, kw_fmul, 112 kw_udiv, kw_sdiv, kw_fdiv, 113 kw_urem, kw_srem, kw_frem, kw_shl, kw_lshr, kw_ashr, 114 kw_and, kw_or, kw_xor, kw_icmp, kw_fcmp, 115 116 kw_phi, kw_call, 117 kw_trunc, kw_zext, kw_sext, kw_fptrunc, kw_fpext, kw_uitofp, kw_sitofp, 118 kw_fptoui, kw_fptosi, kw_inttoptr, kw_ptrtoint, kw_bitcast, 119 kw_select, kw_va_arg, 120 121 kw_ret, kw_br, kw_switch, kw_indirectbr, kw_invoke, kw_unwind, 122 kw_unreachable, 123 124 kw_alloca, kw_load, kw_store, kw_getelementptr, 125 126 kw_extractelement, kw_insertelement, kw_shufflevector, 127 kw_extractvalue, kw_insertvalue, kw_blockaddress, 128 129 // Unsigned Valued tokens (UIntVal). 130 GlobalID, // @42 131 LocalVarID, // %42 132 133 // String valued tokens (StrVal). 134 LabelStr, // foo: 135 GlobalVar, // @foo @"foo" 136 LocalVar, // %foo %"foo" 137 MetadataVar, // !foo 138 StringConstant, // "foo" 139 140 // Type valued tokens (TyVal). 141 Type, 142 143 APFloat, // APFloatVal 144 APSInt // APSInt 145 }; 146 } // end namespace lltok 147 } // end namespace llvm 148 149 #endif 150