Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  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_datalayout,
  92.   kw_volatile,
  93.   kw_atomic,
  94.   kw_unordered,
  95.   kw_monotonic,
  96.   kw_acquire,
  97.   kw_release,
  98.   kw_acq_rel,
  99.   kw_seq_cst,
  100.   kw_syncscope,
  101.   kw_nnan,
  102.   kw_ninf,
  103.   kw_nsz,
  104.   kw_arcp,
  105.   kw_contract,
  106.   kw_reassoc,
  107.   kw_afn,
  108.   kw_fast,
  109.   kw_nuw,
  110.   kw_nsw,
  111.   kw_exact,
  112.   kw_inbounds,
  113.   kw_inrange,
  114.   kw_addrspace,
  115.   kw_section,
  116.   kw_partition,
  117.   kw_alias,
  118.   kw_ifunc,
  119.   kw_module,
  120.   kw_asm,
  121.   kw_sideeffect,
  122.   kw_inteldialect,
  123.   kw_gc,
  124.   kw_prefix,
  125.   kw_prologue,
  126.   kw_c,
  127.  
  128.   kw_cc,
  129.   kw_ccc,
  130.   kw_fastcc,
  131.   kw_coldcc,
  132.   kw_intel_ocl_bicc,
  133.   kw_cfguard_checkcc,
  134.   kw_x86_stdcallcc,
  135.   kw_x86_fastcallcc,
  136.   kw_x86_thiscallcc,
  137.   kw_x86_vectorcallcc,
  138.   kw_x86_regcallcc,
  139.   kw_arm_apcscc,
  140.   kw_arm_aapcscc,
  141.   kw_arm_aapcs_vfpcc,
  142.   kw_aarch64_vector_pcs,
  143.   kw_aarch64_sve_vector_pcs,
  144.   kw_aarch64_sme_preservemost_from_x0,
  145.   kw_aarch64_sme_preservemost_from_x2,
  146.   kw_msp430_intrcc,
  147.   kw_avr_intrcc,
  148.   kw_avr_signalcc,
  149.   kw_ptx_kernel,
  150.   kw_ptx_device,
  151.   kw_spir_kernel,
  152.   kw_spir_func,
  153.   kw_x86_64_sysvcc,
  154.   kw_win64cc,
  155.   kw_webkit_jscc,
  156.   kw_anyregcc,
  157.   kw_swiftcc,
  158.   kw_swifttailcc,
  159.   kw_preserve_mostcc,
  160.   kw_preserve_allcc,
  161.   kw_ghccc,
  162.   kw_x86_intrcc,
  163.   kw_hhvmcc,
  164.   kw_hhvm_ccc,
  165.   kw_cxx_fast_tlscc,
  166.   kw_amdgpu_vs,
  167.   kw_amdgpu_ls,
  168.   kw_amdgpu_hs,
  169.   kw_amdgpu_es,
  170.   kw_amdgpu_gs,
  171.   kw_amdgpu_ps,
  172.   kw_amdgpu_cs,
  173.   kw_amdgpu_kernel,
  174.   kw_amdgpu_gfx,
  175.   kw_tailcc,
  176.  
  177.   // Attributes:
  178.   kw_attributes,
  179.   kw_sync,
  180.   kw_async,
  181. #define GET_ATTR_NAMES
  182. #define ATTRIBUTE_ENUM(ENUM_NAME, DISPLAY_NAME) \
  183.   kw_##DISPLAY_NAME,
  184. #include "llvm/IR/Attributes.inc"
  185.  
  186.   // Memory attribute:
  187.   kw_read,
  188.   kw_write,
  189.   kw_readwrite,
  190.   kw_argmem,
  191.   kw_inaccessiblemem,
  192.  
  193.   // Legacy memory attributes:
  194.   kw_argmemonly,
  195.   kw_inaccessiblememonly,
  196.   kw_inaccessiblemem_or_argmemonly,
  197.  
  198.   kw_type,
  199.   kw_opaque,
  200.  
  201.   kw_comdat,
  202.  
  203.   // Comdat types
  204.   kw_any,
  205.   kw_exactmatch,
  206.   kw_largest,
  207.   kw_nodeduplicate,
  208.   kw_samesize,
  209.  
  210.   kw_eq,
  211.   kw_ne,
  212.   kw_slt,
  213.   kw_sgt,
  214.   kw_sle,
  215.   kw_sge,
  216.   kw_ult,
  217.   kw_ugt,
  218.   kw_ule,
  219.   kw_uge,
  220.   kw_oeq,
  221.   kw_one,
  222.   kw_olt,
  223.   kw_ogt,
  224.   kw_ole,
  225.   kw_oge,
  226.   kw_ord,
  227.   kw_uno,
  228.   kw_ueq,
  229.   kw_une,
  230.  
  231.   // atomicrmw operations that aren't also instruction keywords.
  232.   kw_xchg,
  233.   kw_nand,
  234.   kw_max,
  235.   kw_min,
  236.   kw_umax,
  237.   kw_umin,
  238.   kw_fmax,
  239.   kw_fmin,
  240.   kw_uinc_wrap,
  241.   kw_udec_wrap,
  242.  
  243.   // Instruction Opcodes (Opcode in UIntVal).
  244.   kw_fneg,
  245.   kw_add,
  246.   kw_fadd,
  247.   kw_sub,
  248.   kw_fsub,
  249.   kw_mul,
  250.   kw_fmul,
  251.   kw_udiv,
  252.   kw_sdiv,
  253.   kw_fdiv,
  254.   kw_urem,
  255.   kw_srem,
  256.   kw_frem,
  257.   kw_shl,
  258.   kw_lshr,
  259.   kw_ashr,
  260.   kw_and,
  261.   kw_or,
  262.   kw_xor,
  263.   kw_icmp,
  264.   kw_fcmp,
  265.  
  266.   kw_phi,
  267.   kw_call,
  268.   kw_trunc,
  269.   kw_zext,
  270.   kw_sext,
  271.   kw_fptrunc,
  272.   kw_fpext,
  273.   kw_uitofp,
  274.   kw_sitofp,
  275.   kw_fptoui,
  276.   kw_fptosi,
  277.   kw_inttoptr,
  278.   kw_ptrtoint,
  279.   kw_bitcast,
  280.   kw_addrspacecast,
  281.   kw_select,
  282.   kw_va_arg,
  283.  
  284.   kw_landingpad,
  285.   kw_personality,
  286.   kw_cleanup,
  287.   kw_catch,
  288.   kw_filter,
  289.  
  290.   kw_ret,
  291.   kw_br,
  292.   kw_switch,
  293.   kw_indirectbr,
  294.   kw_invoke,
  295.   kw_resume,
  296.   kw_unreachable,
  297.   kw_cleanupret,
  298.   kw_catchswitch,
  299.   kw_catchret,
  300.   kw_catchpad,
  301.   kw_cleanuppad,
  302.   kw_callbr,
  303.  
  304.   kw_alloca,
  305.   kw_load,
  306.   kw_store,
  307.   kw_fence,
  308.   kw_cmpxchg,
  309.   kw_atomicrmw,
  310.   kw_getelementptr,
  311.  
  312.   kw_extractelement,
  313.   kw_insertelement,
  314.   kw_shufflevector,
  315.   kw_extractvalue,
  316.   kw_insertvalue,
  317.   kw_blockaddress,
  318.   kw_dso_local_equivalent,
  319.   kw_no_cfi,
  320.  
  321.   kw_freeze,
  322.  
  323.   // Metadata types.
  324.   kw_distinct,
  325.  
  326.   // Use-list order directives.
  327.   kw_uselistorder,
  328.   kw_uselistorder_bb,
  329.  
  330.   // Summary index keywords
  331.   kw_path,
  332.   kw_hash,
  333.   kw_gv,
  334.   kw_guid,
  335.   kw_name,
  336.   kw_summaries,
  337.   kw_flags,
  338.   kw_blockcount,
  339.   kw_linkage,
  340.   kw_visibility,
  341.   kw_notEligibleToImport,
  342.   kw_live,
  343.   kw_dsoLocal,
  344.   kw_canAutoHide,
  345.   kw_function,
  346.   kw_insts,
  347.   kw_funcFlags,
  348.   kw_readNone,
  349.   kw_readOnly,
  350.   kw_noRecurse,
  351.   kw_returnDoesNotAlias,
  352.   kw_noInline,
  353.   kw_alwaysInline,
  354.   kw_noUnwind,
  355.   kw_mayThrow,
  356.   kw_hasUnknownCall,
  357.   kw_mustBeUnreachable,
  358.   kw_calls,
  359.   kw_callee,
  360.   kw_params,
  361.   kw_param,
  362.   kw_hotness,
  363.   kw_unknown,
  364.   kw_critical,
  365.   kw_relbf,
  366.   kw_variable,
  367.   kw_vTableFuncs,
  368.   kw_virtFunc,
  369.   kw_aliasee,
  370.   kw_refs,
  371.   kw_typeIdInfo,
  372.   kw_typeTests,
  373.   kw_typeTestAssumeVCalls,
  374.   kw_typeCheckedLoadVCalls,
  375.   kw_typeTestAssumeConstVCalls,
  376.   kw_typeCheckedLoadConstVCalls,
  377.   kw_vFuncId,
  378.   kw_offset,
  379.   kw_args,
  380.   kw_typeid,
  381.   kw_typeidCompatibleVTable,
  382.   kw_summary,
  383.   kw_typeTestRes,
  384.   kw_kind,
  385.   kw_unsat,
  386.   kw_byteArray,
  387.   kw_inline,
  388.   kw_single,
  389.   kw_allOnes,
  390.   kw_sizeM1BitWidth,
  391.   kw_alignLog2,
  392.   kw_sizeM1,
  393.   kw_bitMask,
  394.   kw_inlineBits,
  395.   kw_vcall_visibility,
  396.   kw_wpdResolutions,
  397.   kw_wpdRes,
  398.   kw_indir,
  399.   kw_singleImpl,
  400.   kw_branchFunnel,
  401.   kw_singleImplName,
  402.   kw_resByArg,
  403.   kw_byArg,
  404.   kw_uniformRetVal,
  405.   kw_uniqueRetVal,
  406.   kw_virtualConstProp,
  407.   kw_info,
  408.   kw_byte,
  409.   kw_bit,
  410.   kw_varFlags,
  411.   // The following are used by MemProf summary info.
  412.   kw_callsites,
  413.   kw_clones,
  414.   kw_stackIds,
  415.   kw_allocs,
  416.   kw_versions,
  417.   kw_memProf,
  418.   kw_notcold,
  419.   kw_notcoldandcold,
  420.  
  421.   // GV's with __attribute__((no_sanitize("address"))), or things in
  422.   // -fsanitize-ignorelist when built with ASan.
  423.   kw_no_sanitize_address,
  424.   // GV's with __attribute__((no_sanitize("hwaddress"))), or things in
  425.   // -fsanitize-ignorelist when built with HWASan.
  426.   kw_no_sanitize_hwaddress,
  427.   // GV's where the clang++ frontend (when ASan is used) notes that this is
  428.   // dynamically initialized, and thus needs ODR detection.
  429.   kw_sanitize_address_dyninit,
  430.  
  431.   // Unsigned Valued tokens (UIntVal).
  432.   LabelID,    // 42:
  433.   GlobalID,   // @42
  434.   LocalVarID, // %42
  435.   AttrGrpID,  // #42
  436.   SummaryID,  // ^42
  437.  
  438.   // String valued tokens (StrVal).
  439.   LabelStr,         // foo:
  440.   GlobalVar,        // @foo @"foo"
  441.   ComdatVar,        // $foo
  442.   LocalVar,         // %foo %"foo"
  443.   MetadataVar,      // !foo
  444.   StringConstant,   // "foo"
  445.   DwarfTag,         // DW_TAG_foo
  446.   DwarfAttEncoding, // DW_ATE_foo
  447.   DwarfVirtuality,  // DW_VIRTUALITY_foo
  448.   DwarfLang,        // DW_LANG_foo
  449.   DwarfCC,          // DW_CC_foo
  450.   EmissionKind,     // lineTablesOnly
  451.   NameTableKind,    // GNU
  452.   DwarfOp,          // DW_OP_foo
  453.   DIFlag,           // DIFlagFoo
  454.   DISPFlag,         // DISPFlagFoo
  455.   DwarfMacinfo,     // DW_MACINFO_foo
  456.   ChecksumKind,     // CSK_foo
  457.  
  458.   // Type valued tokens (TyVal).
  459.   Type,
  460.  
  461.   APFloat, // APFloatVal
  462.   APSInt   // APSInt
  463. };
  464. } // end namespace lltok
  465. } // end namespace llvm
  466.  
  467. #endif
  468.