Skip to content
Snippets Groups Projects
Commit d0504e01 authored by Akash Kothari's avatar Akash Kothari :speech_balloon:
Browse files

Update LLVM-9 LLVMBitCodes.h to add attribute kinds for in, out and inout

parent 88dc77ac
No related branches found
No related tags found
No related merge requests found
//===- LLVMBitCodes.h - Enum values for the LLVM bitcode format -*- C++ -*-===// //===- LLVMBitCodes.h - Enum values for the LLVM bitcode format -*- C++ -*-===//
// //
// The LLVM Compiler Infrastructure // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// // See https://llvm.org/LICENSE.txt for license information.
// This file is distributed under the University of Illinois Open Source // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
// License. See LICENSE.TXT for details.
// //
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
// //
...@@ -18,11 +17,11 @@ ...@@ -18,11 +17,11 @@
#ifndef LLVM_BITCODE_LLVMBITCODES_H #ifndef LLVM_BITCODE_LLVMBITCODES_H
#define LLVM_BITCODE_LLVMBITCODES_H #define LLVM_BITCODE_LLVMBITCODES_H
#include "llvm/Bitcode/BitCodes.h" #include "llvm/Bitstream/BitCodes.h"
namespace llvm { namespace llvm {
namespace bitc { namespace bitc {
// The only top-level block type defined is for a module. // The only top-level block types are MODULE, IDENTIFICATION, STRTAB and SYMTAB.
enum BlockIDs { enum BlockIDs {
// Blocks // Blocks
MODULE_BLOCK_ID = FIRST_APPLICATION_BLOCKID, MODULE_BLOCK_ID = FIRST_APPLICATION_BLOCKID,
...@@ -52,7 +51,15 @@ enum BlockIDs { ...@@ -52,7 +51,15 @@ enum BlockIDs {
OPERAND_BUNDLE_TAGS_BLOCK_ID, OPERAND_BUNDLE_TAGS_BLOCK_ID,
METADATA_KIND_BLOCK_ID METADATA_KIND_BLOCK_ID,
STRTAB_BLOCK_ID,
FULL_LTO_GLOBALVAL_SUMMARY_BLOCK_ID,
SYMTAB_BLOCK_ID,
SYNC_SCOPE_NAMES_BLOCK_ID,
}; };
/// Identification block contains a string that describes the producer details, /// Identification block contains a string that describes the producer details,
...@@ -92,9 +99,6 @@ enum ModuleCodes { ...@@ -92,9 +99,6 @@ enum ModuleCodes {
// ALIAS: [alias type, aliasee val#, linkage, visibility] // ALIAS: [alias type, aliasee val#, linkage, visibility]
MODULE_CODE_ALIAS_OLD = 9, MODULE_CODE_ALIAS_OLD = 9,
// MODULE_CODE_PURGEVALS: [numvals]
MODULE_CODE_PURGEVALS = 10,
MODULE_CODE_GCNAME = 11, // GCNAME: [strchr x N] MODULE_CODE_GCNAME = 11, // GCNAME: [strchr x N]
MODULE_CODE_COMDAT = 12, // COMDAT: [selection_kind, name] MODULE_CODE_COMDAT = 12, // COMDAT: [selection_kind, name]
...@@ -169,6 +173,10 @@ enum OperandBundleTagCode { ...@@ -169,6 +173,10 @@ enum OperandBundleTagCode {
OPERAND_BUNDLE_TAG = 1, // TAG: [strchr x N] OPERAND_BUNDLE_TAG = 1, // TAG: [strchr x N]
}; };
enum SyncScopeNameCode {
SYNC_SCOPE_NAME = 1,
};
// Value symbol table codes. // Value symbol table codes.
enum ValueSymtabCodes { enum ValueSymtabCodes {
VST_CODE_ENTRY = 1, // VST_ENTRY: [valueid, namechar x N] VST_CODE_ENTRY = 1, // VST_ENTRY: [valueid, namechar x N]
...@@ -213,8 +221,73 @@ enum GlobalValueSummarySymtabCodes { ...@@ -213,8 +221,73 @@ enum GlobalValueSummarySymtabCodes {
FS_COMBINED_ORIGINAL_NAME = 9, FS_COMBINED_ORIGINAL_NAME = 9,
// VERSION of the summary, bumped when adding flags for instance. // VERSION of the summary, bumped when adding flags for instance.
FS_VERSION = 10, FS_VERSION = 10,
// The list of llvm.type.test type identifiers used by the following function. // The list of llvm.type.test type identifiers used by the following function
// that are used other than by an llvm.assume.
// [n x typeid]
FS_TYPE_TESTS = 11, FS_TYPE_TESTS = 11,
// The list of virtual calls made by this function using
// llvm.assume(llvm.type.test) intrinsics that do not have all constant
// integer arguments.
// [n x (typeid, offset)]
FS_TYPE_TEST_ASSUME_VCALLS = 12,
// The list of virtual calls made by this function using
// llvm.type.checked.load intrinsics that do not have all constant integer
// arguments.
// [n x (typeid, offset)]
FS_TYPE_CHECKED_LOAD_VCALLS = 13,
// Identifies a virtual call made by this function using an
// llvm.assume(llvm.type.test) intrinsic with all constant integer arguments.
// [typeid, offset, n x arg]
FS_TYPE_TEST_ASSUME_CONST_VCALL = 14,
// Identifies a virtual call made by this function using an
// llvm.type.checked.load intrinsic with all constant integer arguments.
// [typeid, offset, n x arg]
FS_TYPE_CHECKED_LOAD_CONST_VCALL = 15,
// Assigns a GUID to a value ID. This normally appears only in combined
// summaries, but it can also appear in per-module summaries for PGO data.
// [valueid, guid]
FS_VALUE_GUID = 16,
// The list of local functions with CFI jump tables. Function names are
// strings in strtab.
// [n * name]
FS_CFI_FUNCTION_DEFS = 17,
// The list of external functions with CFI jump tables. Function names are
// strings in strtab.
// [n * name]
FS_CFI_FUNCTION_DECLS = 18,
// Per-module summary that also adds relative block frequency to callee info.
// PERMODULE_RELBF: [valueid, flags, instcount, numrefs,
// numrefs x valueid,
// n x (valueid, relblockfreq)]
FS_PERMODULE_RELBF = 19,
// Index-wide flags
FS_FLAGS = 20,
// Maps type identifier to summary information for that type identifier.
// Produced by the thin link (only lives in combined index).
// TYPE_ID: [typeid, kind, bitwidth, align, size, bitmask, inlinebits,
// n x (typeid, kind, name, numrba,
// numrba x (numarg, numarg x arg, kind, info, byte, bit))]
FS_TYPE_ID = 21,
// For background see overview at https://llvm.org/docs/TypeMetadata.html.
// The type metadata includes both the type identifier and the offset of
// the address point of the type (the address held by objects of that type
// which may not be the beginning of the virtual table). Vtable definitions
// are decorated with type metadata for the types they are compatible with.
//
// Maps type identifier to summary information for that type identifier
// computed from type metadata: the valueid of each vtable definition
// decorated with a type metadata for that identifier, and the offset from
// the corresponding type metadata.
// Exists in the per-module summary to provide information to thin link
// for index-based whole program devirtualization.
// TYPE_ID_METADATA: [typeid, n x (valueid, offset)]
FS_TYPE_ID_METADATA = 22,
// Summarizes vtable definition for use in index-based whole program
// devirtualization during the thin link.
// PERMODULE_VTABLE_GLOBALVAR_INIT_REFS: [valueid, flags, varflags,
// numrefs, numrefs x valueid,
// n x (valueid, offset)]
FS_PERMODULE_VTABLE_GLOBALVAR_INIT_REFS = 23,
}; };
enum MetadataCodes { enum MetadataCodes {
...@@ -231,7 +304,7 @@ enum MetadataCodes { ...@@ -231,7 +304,7 @@ enum MetadataCodes {
METADATA_ATTACHMENT = 11, // [m x [value, [n x [id, mdnode]]] METADATA_ATTACHMENT = 11, // [m x [value, [n x [id, mdnode]]]
METADATA_GENERIC_DEBUG = 12, // [distinct, tag, vers, header, n x md num] METADATA_GENERIC_DEBUG = 12, // [distinct, tag, vers, header, n x md num]
METADATA_SUBRANGE = 13, // [distinct, count, lo] METADATA_SUBRANGE = 13, // [distinct, count, lo]
METADATA_ENUMERATOR = 14, // [distinct, value, name] METADATA_ENUMERATOR = 14, // [isUnsigned|distinct, value, name]
METADATA_BASIC_TYPE = 15, // [distinct, tag, name, size, align, enc] METADATA_BASIC_TYPE = 15, // [distinct, tag, name, size, align, enc]
METADATA_FILE = 16, // [distinct, filename, directory, checksumkind, checksum] METADATA_FILE = 16, // [distinct, filename, directory, checksumkind, checksum]
METADATA_DERIVED_TYPE = 17, // [distinct, ...] METADATA_DERIVED_TYPE = 17, // [distinct, ...]
...@@ -257,6 +330,8 @@ enum MetadataCodes { ...@@ -257,6 +330,8 @@ enum MetadataCodes {
METADATA_GLOBAL_VAR_EXPR = 37, // [distinct, var, expr] METADATA_GLOBAL_VAR_EXPR = 37, // [distinct, var, expr]
METADATA_INDEX_OFFSET = 38, // [offset] METADATA_INDEX_OFFSET = 38, // [offset]
METADATA_INDEX = 39, // [bitpos] METADATA_INDEX = 39, // [bitpos]
METADATA_LABEL = 40, // [distinct, scope, name, file, line]
METADATA_COMMON_BLOCK = 44, // [distinct, scope, name, variable,...]
}; };
// The constants block (CONSTANTS_BLOCK_ID) describes emission for each // The constants block (CONSTANTS_BLOCK_ID) describes emission for each
...@@ -288,6 +363,7 @@ enum ConstantsCodes { ...@@ -288,6 +363,7 @@ enum ConstantsCodes {
CST_CODE_INLINEASM = 23, // INLINEASM: [sideeffect|alignstack| CST_CODE_INLINEASM = 23, // INLINEASM: [sideeffect|alignstack|
// asmdialect,asmstr,conststr] // asmdialect,asmstr,conststr]
CST_CODE_CE_GEP_WITH_INRANGE_INDEX = 24, // [opty, flags, n x operands] CST_CODE_CE_GEP_WITH_INRANGE_INDEX = 24, // [opty, flags, n x operands]
CST_CODE_CE_UNOP = 25, // CE_UNOP: [opcode, opval]
}; };
/// CastOpcodes - These are values used in the bitcode files to encode which /// CastOpcodes - These are values used in the bitcode files to encode which
...@@ -310,6 +386,14 @@ enum CastOpcodes { ...@@ -310,6 +386,14 @@ enum CastOpcodes {
CAST_ADDRSPACECAST = 12 CAST_ADDRSPACECAST = 12
}; };
/// 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 {
UNOP_NEG = 0
};
/// BinaryOpcodes - These are values used in the bitcode files to encode which /// 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 /// 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 /// have no fixed relation to the LLVM IR enum values. Changing these will
...@@ -344,7 +428,9 @@ enum RMWOperations { ...@@ -344,7 +428,9 @@ enum RMWOperations {
RMW_MAX = 7, RMW_MAX = 7,
RMW_MIN = 8, RMW_MIN = 8,
RMW_UMAX = 9, RMW_UMAX = 9,
RMW_UMIN = 10 RMW_UMIN = 10,
RMW_FADD = 11,
RMW_FSUB = 12
}; };
/// OverflowingBinaryOperatorOptionalFlags - Flags for serializing /// OverflowingBinaryOperatorOptionalFlags - Flags for serializing
...@@ -354,6 +440,20 @@ enum OverflowingBinaryOperatorOptionalFlags { ...@@ -354,6 +440,20 @@ enum OverflowingBinaryOperatorOptionalFlags {
OBO_NO_SIGNED_WRAP = 1 OBO_NO_SIGNED_WRAP = 1
}; };
/// 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 {
UnsafeAlgebra = (1 << 0), // Legacy
NoNaNs = (1 << 1),
NoInfs = (1 << 2),
NoSignedZeros = (1 << 3),
AllowReciprocal = (1 << 4),
AllowContract = (1 << 5),
ApproxFunc = (1 << 6),
AllowReassoc = (1 << 7)
};
/// PossiblyExactOperatorOptionalFlags - Flags for serializing /// PossiblyExactOperatorOptionalFlags - Flags for serializing
/// PossiblyExactOperator's SubclassOptionalData contents. /// PossiblyExactOperator's SubclassOptionalData contents.
enum PossiblyExactOperatorOptionalFlags { PEO_EXACT = 0 }; enum PossiblyExactOperatorOptionalFlags { PEO_EXACT = 0 };
...@@ -369,12 +469,6 @@ enum AtomicOrderingCodes { ...@@ -369,12 +469,6 @@ enum AtomicOrderingCodes {
ORDERING_SEQCST = 6 ORDERING_SEQCST = 6
}; };
/// Encoded SynchronizationScope values.
enum AtomicSynchScopeCodes {
SYNCHSCOPE_SINGLETHREAD = 0,
SYNCHSCOPE_CROSSTHREAD = 1
};
/// Markers and flags for call instruction. /// Markers and flags for call instruction.
enum CallMarkersFlags { enum CallMarkersFlags {
CALL_TAIL = 0, CALL_TAIL = 0,
...@@ -462,6 +556,9 @@ enum FunctionCodes { ...@@ -462,6 +556,9 @@ enum FunctionCodes {
// 53 is unused. // 53 is unused.
// 54 is unused. // 54 is unused.
FUNC_CODE_OPERAND_BUNDLE = 55, // OPERAND_BUNDLE: [tag#, value...] FUNC_CODE_OPERAND_BUNDLE = 55, // OPERAND_BUNDLE: [tag#, value...]
FUNC_CODE_INST_UNOP = 56, // UNOP: [opcode, ty, opval]
FUNC_CODE_INST_CALLBR = 57, // CALLBR: [attr, cc, norm, transfs,
// fnty, fnid, args...]
}; };
enum UseListCodes { enum UseListCodes {
...@@ -523,11 +620,21 @@ enum AttributeKindCodes { ...@@ -523,11 +620,21 @@ enum AttributeKindCodes {
ATTR_KIND_INACCESSIBLEMEM_OR_ARGMEMONLY = 50, ATTR_KIND_INACCESSIBLEMEM_OR_ARGMEMONLY = 50,
ATTR_KIND_ALLOC_SIZE = 51, ATTR_KIND_ALLOC_SIZE = 51,
ATTR_KIND_WRITEONLY = 52, ATTR_KIND_WRITEONLY = 52,
ATTR_KIND_SPECULATABLE = 53,
// VISC Attributes ATTR_KIND_STRICT_FP = 54,
ATTR_KIND_IN = 53, ATTR_KIND_SANITIZE_HWADDRESS = 55,
ATTR_KIND_OUT = 54, ATTR_KIND_NOCF_CHECK = 56,
ATTR_KIND_INOUT = 55 ATTR_KIND_OPT_FOR_FUZZING = 57,
ATTR_KIND_SHADOWCALLSTACK = 58,
ATTR_KIND_SPECULATIVE_LOAD_HARDENING = 59,
ATTR_KIND_IMMARG = 60,
ATTR_KIND_WILLRETURN = 61,
ATTR_KIND_NOFREE = 62,
ATTR_KIND_NOSYNC = 63,
ATTR_KIND_SANITIZE_MEMTAG = 64,
ATTR_KIND_IN = 65,
ATTR_KIND_OUT = 66,
ATTR_KIND_INOUT = 67,
}; };
enum ComdatSelectionKindCodes { enum ComdatSelectionKindCodes {
...@@ -538,6 +645,14 @@ enum ComdatSelectionKindCodes { ...@@ -538,6 +645,14 @@ enum ComdatSelectionKindCodes {
COMDAT_SELECTION_KIND_SAME_SIZE = 5, COMDAT_SELECTION_KIND_SAME_SIZE = 5,
}; };
enum StrtabCodes {
STRTAB_BLOB = 1,
};
enum SymtabCodes {
SYMTAB_BLOB = 1,
};
} // End bitc namespace } // End bitc namespace
} // End llvm namespace } // End llvm namespace
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment