//===- LLVMBitCodes.h - Enum values for the LLVM bitcode format -*- 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 header defines Bitcode enum values for LLVM IR bitcode files. // // The enum values defined in this file should be considered permanent. If // new features are added, they should have values added at the end of the // respective lists. // //===----------------------------------------------------------------------===// #ifndef LLVM_BITCODE_LLVMBITCODES_H #define LLVM_BITCODE_LLVMBITCODES_H // This is the only file included, and it, in turn, is a leaf header. // This allows external tools to dump the AST of this file and analyze it for // changes without needing to fully or partially build LLVM itself. #include "llvm/Bitstream/BitCodeEnums.h" namespace llvm { namespace bitc { // The only top-level block types are MODULE, IDENTIFICATION, STRTAB and SYMTAB. enum BlockIDs { … }; /// Identification block contains a string that describes the producer details, /// and an epoch that defines the auto-upgrade capability. enum IdentificationCodes { … }; /// The epoch that defines the auto-upgrade compatibility for the bitcode. /// /// LLVM guarantees in a major release that a minor release can read bitcode /// generated by previous minor releases. We translate this by making the reader /// accepting only bitcode with the same epoch, except for the X.0 release which /// also accepts N-1. enum { … }; /// MODULE blocks have a number of optional fields and subblocks. enum ModuleCodes { … }; /// PARAMATTR blocks have code for defining a parameter attribute set. enum AttributeCodes { … }; /// TYPE blocks have codes for each type primitive they use. enum TypeCodes { … }; enum OperandBundleTagCode { … }; enum SyncScopeNameCode { … }; // Value symbol table codes. enum ValueSymtabCodes { … }; // The module path symbol table only has one code (MST_CODE_ENTRY). enum ModulePathSymtabCodes { … }; // The summary section uses different codes in the per-module // and combined index cases. enum GlobalValueSummarySymtabCodes { … }; enum MetadataCodes { … }; // The constants block (CONSTANTS_BLOCK_ID) describes emission for each // constant and maintains an implicit current type value. enum ConstantsCodes { … }; /// CastOpcodes - These are values used in the bitcode files to encode which /// cast a CST_CODE_CE_CAST or a XXX refers to. The values of these enums /// have no fixed relation to the LLVM IR enum values. Changing these will /// break compatibility with old files. enum CastOpcodes { … }; /// UnaryOpcodes - These are values used in the bitcode files to encode which /// unop a CST_CODE_CE_UNOP or a XXX refers to. The values of these enums /// have no fixed relation to the LLVM IR enum values. Changing these will /// break compatibility with old files. enum UnaryOpcodes { … }; /// BinaryOpcodes - These are values used in the bitcode files to encode which /// binop a CST_CODE_CE_BINOP or a XXX refers to. The values of these enums /// have no fixed relation to the LLVM IR enum values. Changing these will /// break compatibility with old files. enum BinaryOpcodes { … }; /// These are values used in the bitcode files to encode AtomicRMW operations. /// The values of these enums have no fixed relation to the LLVM IR enum /// values. Changing these will break compatibility with old files. enum RMWOperations { … }; /// OverflowingBinaryOperatorOptionalFlags - Flags for serializing /// OverflowingBinaryOperator's SubclassOptionalData contents. enum OverflowingBinaryOperatorOptionalFlags { … }; /// TruncInstOptionalFlags - Flags for serializing /// TruncInstOptionalFlags's SubclassOptionalData contents. enum TruncInstOptionalFlags { … }; /// FastMath Flags /// This is a fixed layout derived from the bitcode emitted by LLVM 5.0 /// intended to decouple the in-memory representation from the serialization. enum FastMathMap { … }; /// Flags for serializing PossiblyNonNegInst's SubclassOptionalData contents. enum PossiblyNonNegInstOptionalFlags { … }; /// PossiblyExactOperatorOptionalFlags - Flags for serializing /// PossiblyExactOperator's SubclassOptionalData contents. enum PossiblyExactOperatorOptionalFlags { … }; /// PossiblyDisjointInstOptionalFlags - Flags for serializing /// PossiblyDisjointInst's SubclassOptionalData contents. enum PossiblyDisjointInstOptionalFlags { … }; /// GetElementPtrOptionalFlags - Flags for serializing /// GEPOperator's SubclassOptionalData contents. enum GetElementPtrOptionalFlags { … }; /// Encoded AtomicOrdering values. enum AtomicOrderingCodes { … }; /// Markers and flags for call instruction. enum CallMarkersFlags { … }; // The function body block (FUNCTION_BLOCK_ID) describes function bodies. It // can contain a constant block (CONSTANTS_BLOCK_ID). enum FunctionCodes { … }; enum UseListCodes { … }; enum AttributeKindCodes { … }; enum ComdatSelectionKindCodes { … }; enum StrtabCodes { … }; enum SymtabCodes { … }; } // End bitc namespace } // End llvm namespace #endif