//===- LLToken.h - Token Codes for LLVM Assembly Files ----------*- C++ -*-===//
 
//
 
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 
// See https://llvm.org/LICENSE.txt for license information.
 
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 
//
 
//===----------------------------------------------------------------------===//
 
//
 
// This file defines the enums for the .ll lexer.
 
//
 
//===----------------------------------------------------------------------===//
 
 
 
#ifndef LLVM_ASMPARSER_LLTOKEN_H
 
#define LLVM_ASMPARSER_LLTOKEN_H
 
 
 
namespace llvm {
 
namespace lltok {
 
enum Kind {
 
  // Markers
 
  Eof,
 
  Error,
 
 
 
  // Tokens with no info.
 
  dotdotdot, // ...
 
  equal,
 
  comma, // =  ,
 
  star,  // *
 
  lsquare,
 
  rsquare, // [  ]
 
  lbrace,
 
  rbrace, // {  }
 
  less,
 
  greater, // <  >
 
  lparen,
 
  rparen,  // (  )
 
  exclaim, // !
 
  bar,     // |
 
  colon,   // :
 
 
 
  kw_vscale,
 
  kw_x,
 
  kw_true,
 
  kw_false,
 
  kw_declare,
 
  kw_define,
 
  kw_global,
 
  kw_constant,
 
 
 
  kw_dso_local,
 
  kw_dso_preemptable,
 
 
 
  kw_private,
 
  kw_internal,
 
  kw_linkonce,
 
  kw_linkonce_odr,
 
  kw_weak, // Used as a linkage, and a modifier for "cmpxchg".
 
  kw_weak_odr,
 
  kw_appending,
 
  kw_dllimport,
 
  kw_dllexport,
 
  kw_common,
 
  kw_available_externally,
 
  kw_default,
 
  kw_hidden,
 
  kw_protected,
 
  kw_unnamed_addr,
 
  kw_local_unnamed_addr,
 
  kw_externally_initialized,
 
  kw_extern_weak,
 
  kw_external,
 
  kw_thread_local,
 
  kw_localdynamic,
 
  kw_initialexec,
 
  kw_localexec,
 
  kw_zeroinitializer,
 
  kw_undef,
 
  kw_poison,
 
  kw_null,
 
  kw_none,
 
  kw_to,
 
  kw_caller,
 
  kw_within,
 
  kw_from,
 
  kw_tail,
 
  kw_musttail,
 
  kw_notail,
 
  kw_target,
 
  kw_triple,
 
  kw_source_filename,
 
  kw_unwind,
 
  kw_datalayout,
 
  kw_volatile,
 
  kw_atomic,
 
  kw_unordered,
 
  kw_monotonic,
 
  kw_acquire,
 
  kw_release,
 
  kw_acq_rel,
 
  kw_seq_cst,
 
  kw_syncscope,
 
  kw_nnan,
 
  kw_ninf,
 
  kw_nsz,
 
  kw_arcp,
 
  kw_contract,
 
  kw_reassoc,
 
  kw_afn,
 
  kw_fast,
 
  kw_nuw,
 
  kw_nsw,
 
  kw_exact,
 
  kw_inbounds,
 
  kw_inrange,
 
  kw_addrspace,
 
  kw_section,
 
  kw_partition,
 
  kw_alias,
 
  kw_ifunc,
 
  kw_module,
 
  kw_asm,
 
  kw_sideeffect,
 
  kw_inteldialect,
 
  kw_gc,
 
  kw_prefix,
 
  kw_prologue,
 
  kw_c,
 
 
 
  kw_cc,
 
  kw_ccc,
 
  kw_fastcc,
 
  kw_coldcc,
 
  kw_intel_ocl_bicc,
 
  kw_cfguard_checkcc,
 
  kw_x86_stdcallcc,
 
  kw_x86_fastcallcc,
 
  kw_x86_thiscallcc,
 
  kw_x86_vectorcallcc,
 
  kw_x86_regcallcc,
 
  kw_arm_apcscc,
 
  kw_arm_aapcscc,
 
  kw_arm_aapcs_vfpcc,
 
  kw_aarch64_vector_pcs,
 
  kw_aarch64_sve_vector_pcs,
 
  kw_aarch64_sme_preservemost_from_x0,
 
  kw_aarch64_sme_preservemost_from_x2,
 
  kw_msp430_intrcc,
 
  kw_avr_intrcc,
 
  kw_avr_signalcc,
 
  kw_ptx_kernel,
 
  kw_ptx_device,
 
  kw_spir_kernel,
 
  kw_spir_func,
 
  kw_x86_64_sysvcc,
 
  kw_win64cc,
 
  kw_webkit_jscc,
 
  kw_anyregcc,
 
  kw_swiftcc,
 
  kw_swifttailcc,
 
  kw_preserve_mostcc,
 
  kw_preserve_allcc,
 
  kw_ghccc,
 
  kw_x86_intrcc,
 
  kw_hhvmcc,
 
  kw_hhvm_ccc,
 
  kw_cxx_fast_tlscc,
 
  kw_amdgpu_vs,
 
  kw_amdgpu_ls,
 
  kw_amdgpu_hs,
 
  kw_amdgpu_es,
 
  kw_amdgpu_gs,
 
  kw_amdgpu_ps,
 
  kw_amdgpu_cs,
 
  kw_amdgpu_kernel,
 
  kw_amdgpu_gfx,
 
  kw_tailcc,
 
 
 
  // Attributes:
 
  kw_attributes,
 
  kw_sync,
 
  kw_async,
 
#define GET_ATTR_NAMES
 
#define ATTRIBUTE_ENUM(ENUM_NAME, DISPLAY_NAME) \
 
  kw_##DISPLAY_NAME,
 
#include "llvm/IR/Attributes.inc"
 
 
 
  // Memory attribute:
 
  kw_read,
 
  kw_write,
 
  kw_readwrite,
 
  kw_argmem,
 
  kw_inaccessiblemem,
 
 
 
  // Legacy memory attributes:
 
  kw_argmemonly,
 
  kw_inaccessiblememonly,
 
  kw_inaccessiblemem_or_argmemonly,
 
 
 
  kw_type,
 
  kw_opaque,
 
 
 
  kw_comdat,
 
 
 
  // Comdat types
 
  kw_any,
 
  kw_exactmatch,
 
  kw_largest,
 
  kw_nodeduplicate,
 
  kw_samesize,
 
 
 
  kw_eq,
 
  kw_ne,
 
  kw_slt,
 
  kw_sgt,
 
  kw_sle,
 
  kw_sge,
 
  kw_ult,
 
  kw_ugt,
 
  kw_ule,
 
  kw_uge,
 
  kw_oeq,
 
  kw_one,
 
  kw_olt,
 
  kw_ogt,
 
  kw_ole,
 
  kw_oge,
 
  kw_ord,
 
  kw_uno,
 
  kw_ueq,
 
  kw_une,
 
 
 
  // atomicrmw operations that aren't also instruction keywords.
 
  kw_xchg,
 
  kw_nand,
 
  kw_max,
 
  kw_min,
 
  kw_umax,
 
  kw_umin,
 
  kw_fmax,
 
  kw_fmin,
 
  kw_uinc_wrap,
 
  kw_udec_wrap,
 
 
 
  // Instruction Opcodes (Opcode in UIntVal).
 
  kw_fneg,
 
  kw_add,
 
  kw_fadd,
 
  kw_sub,
 
  kw_fsub,
 
  kw_mul,
 
  kw_fmul,
 
  kw_udiv,
 
  kw_sdiv,
 
  kw_fdiv,
 
  kw_urem,
 
  kw_srem,
 
  kw_frem,
 
  kw_shl,
 
  kw_lshr,
 
  kw_ashr,
 
  kw_and,
 
  kw_or,
 
  kw_xor,
 
  kw_icmp,
 
  kw_fcmp,
 
 
 
  kw_phi,
 
  kw_call,
 
  kw_trunc,
 
  kw_zext,
 
  kw_sext,
 
  kw_fptrunc,
 
  kw_fpext,
 
  kw_uitofp,
 
  kw_sitofp,
 
  kw_fptoui,
 
  kw_fptosi,
 
  kw_inttoptr,
 
  kw_ptrtoint,
 
  kw_bitcast,
 
  kw_addrspacecast,
 
  kw_select,
 
  kw_va_arg,
 
 
 
  kw_landingpad,
 
  kw_personality,
 
  kw_cleanup,
 
  kw_catch,
 
  kw_filter,
 
 
 
  kw_ret,
 
  kw_br,
 
  kw_switch,
 
  kw_indirectbr,
 
  kw_invoke,
 
  kw_resume,
 
  kw_unreachable,
 
  kw_cleanupret,
 
  kw_catchswitch,
 
  kw_catchret,
 
  kw_catchpad,
 
  kw_cleanuppad,
 
  kw_callbr,
 
 
 
  kw_alloca,
 
  kw_load,
 
  kw_store,
 
  kw_fence,
 
  kw_cmpxchg,
 
  kw_atomicrmw,
 
  kw_getelementptr,
 
 
 
  kw_extractelement,
 
  kw_insertelement,
 
  kw_shufflevector,
 
  kw_extractvalue,
 
  kw_insertvalue,
 
  kw_blockaddress,
 
  kw_dso_local_equivalent,
 
  kw_no_cfi,
 
 
 
  kw_freeze,
 
 
 
  // Metadata types.
 
  kw_distinct,
 
 
 
  // Use-list order directives.
 
  kw_uselistorder,
 
  kw_uselistorder_bb,
 
 
 
  // Summary index keywords
 
  kw_path,
 
  kw_hash,
 
  kw_gv,
 
  kw_guid,
 
  kw_name,
 
  kw_summaries,
 
  kw_flags,
 
  kw_blockcount,
 
  kw_linkage,
 
  kw_visibility,
 
  kw_notEligibleToImport,
 
  kw_live,
 
  kw_dsoLocal,
 
  kw_canAutoHide,
 
  kw_function,
 
  kw_insts,
 
  kw_funcFlags,
 
  kw_readNone,
 
  kw_readOnly,
 
  kw_noRecurse,
 
  kw_returnDoesNotAlias,
 
  kw_noInline,
 
  kw_alwaysInline,
 
  kw_noUnwind,
 
  kw_mayThrow,
 
  kw_hasUnknownCall,
 
  kw_mustBeUnreachable,
 
  kw_calls,
 
  kw_callee,
 
  kw_params,
 
  kw_param,
 
  kw_hotness,
 
  kw_unknown,
 
  kw_critical,
 
  kw_relbf,
 
  kw_variable,
 
  kw_vTableFuncs,
 
  kw_virtFunc,
 
  kw_aliasee,
 
  kw_refs,
 
  kw_typeIdInfo,
 
  kw_typeTests,
 
  kw_typeTestAssumeVCalls,
 
  kw_typeCheckedLoadVCalls,
 
  kw_typeTestAssumeConstVCalls,
 
  kw_typeCheckedLoadConstVCalls,
 
  kw_vFuncId,
 
  kw_offset,
 
  kw_args,
 
  kw_typeid,
 
  kw_typeidCompatibleVTable,
 
  kw_summary,
 
  kw_typeTestRes,
 
  kw_kind,
 
  kw_unsat,
 
  kw_byteArray,
 
  kw_inline,
 
  kw_single,
 
  kw_allOnes,
 
  kw_sizeM1BitWidth,
 
  kw_alignLog2,
 
  kw_sizeM1,
 
  kw_bitMask,
 
  kw_inlineBits,
 
  kw_vcall_visibility,
 
  kw_wpdResolutions,
 
  kw_wpdRes,
 
  kw_indir,
 
  kw_singleImpl,
 
  kw_branchFunnel,
 
  kw_singleImplName,
 
  kw_resByArg,
 
  kw_byArg,
 
  kw_uniformRetVal,
 
  kw_uniqueRetVal,
 
  kw_virtualConstProp,
 
  kw_info,
 
  kw_byte,
 
  kw_bit,
 
  kw_varFlags,
 
  // The following are used by MemProf summary info.
 
  kw_callsites,
 
  kw_clones,
 
  kw_stackIds,
 
  kw_allocs,
 
  kw_versions,
 
  kw_memProf,
 
  kw_notcold,
 
  kw_notcoldandcold,
 
 
 
  // GV's with __attribute__((no_sanitize("address"))), or things in
 
  // -fsanitize-ignorelist when built with ASan.
 
  kw_no_sanitize_address,
 
  // GV's with __attribute__((no_sanitize("hwaddress"))), or things in
 
  // -fsanitize-ignorelist when built with HWASan.
 
  kw_no_sanitize_hwaddress,
 
  // GV's where the clang++ frontend (when ASan is used) notes that this is
 
  // dynamically initialized, and thus needs ODR detection.
 
  kw_sanitize_address_dyninit,
 
 
 
  // Unsigned Valued tokens (UIntVal).
 
  LabelID,    // 42:
 
  GlobalID,   // @42
 
  LocalVarID, // %42
 
  AttrGrpID,  // #42
 
  SummaryID,  // ^42
 
 
 
  // String valued tokens (StrVal).
 
  LabelStr,         // foo:
 
  GlobalVar,        // @foo @"foo"
 
  ComdatVar,        // $foo
 
  LocalVar,         // %foo %"foo"
 
  MetadataVar,      // !foo
 
  StringConstant,   // "foo"
 
  DwarfTag,         // DW_TAG_foo
 
  DwarfAttEncoding, // DW_ATE_foo
 
  DwarfVirtuality,  // DW_VIRTUALITY_foo
 
  DwarfLang,        // DW_LANG_foo
 
  DwarfCC,          // DW_CC_foo
 
  EmissionKind,     // lineTablesOnly
 
  NameTableKind,    // GNU
 
  DwarfOp,          // DW_OP_foo
 
  DIFlag,           // DIFlagFoo
 
  DISPFlag,         // DISPFlagFoo
 
  DwarfMacinfo,     // DW_MACINFO_foo
 
  ChecksumKind,     // CSK_foo
 
 
 
  // Type valued tokens (TyVal).
 
  Type,
 
 
 
  APFloat, // APFloatVal
 
  APSInt   // APSInt
 
};
 
} // end namespace lltok
 
} // end namespace llvm
 
 
 
#endif