LLVM
8.0.1
|
#include "llvm/IR/Function.h"
#include "SymbolTableListTraitsImpl.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/None.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/IR/Argument.h"
#include "llvm/IR/Attributes.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/Constant.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/GlobalValue.h"
#include "llvm/IR/InstIterator.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/MDBuilder.h"
#include "llvm/IR/Metadata.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/SymbolTableListTraits.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/Use.h"
#include "llvm/IR/User.h"
#include "llvm/IR/Value.h"
#include "llvm/IR/ValueSymbolTable.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/ErrorHandling.h"
#include <algorithm>
#include <cassert>
#include <cstddef>
#include <cstdint>
#include <cstring>
#include <string>
#include "llvm/IR/IntrinsicImpl.inc"
Go to the source code of this file.
Macros | |
#define | GET_INTRINSIC_NAME_TABLE |
#define | GET_INTRINSIC_TARGET_DATA |
Table of per-target intrinsic name tables. More... | |
#define | GET_INTRINSIC_GENERATOR_GLOBAL |
#define | GET_INTRINSIC_OVERLOAD_TABLE |
#define | GET_INTRINSIC_ATTRIBUTES |
This defines the "Intrinsic::getAttributes(ID id)" method. More... | |
#define | GET_LLVM_INTRINSIC_FOR_GCC_BUILTIN |
#define | GET_LLVM_INTRINSIC_FOR_MS_BUILTIN |
Typedefs | |
using | ProfileCount = Function::ProfileCount |
Enumerations | |
enum | IIT_Info { IIT_Done = 0, IIT_I1 = 1, IIT_I8 = 2, IIT_I16 = 3, IIT_I32 = 4, IIT_I64 = 5, IIT_F16 = 6, IIT_F32 = 7, IIT_F64 = 8, IIT_V2 = 9, IIT_V4 = 10, IIT_V8 = 11, IIT_V16 = 12, IIT_V32 = 13, IIT_PTR = 14, IIT_ARG = 15, IIT_V64 = 16, IIT_MMX = 17, IIT_TOKEN = 18, IIT_METADATA = 19, IIT_EMPTYSTRUCT = 20, IIT_STRUCT2 = 21, IIT_STRUCT3 = 22, IIT_STRUCT4 = 23, IIT_STRUCT5 = 24, IIT_EXTEND_ARG = 25, IIT_TRUNC_ARG = 26, IIT_ANYPTR = 27, IIT_V1 = 28, IIT_VARARG = 29, IIT_HALF_VEC_ARG = 30, IIT_SAME_VEC_WIDTH_ARG = 31, IIT_PTR_TO_ARG = 32, IIT_PTR_TO_ELT = 33, IIT_VEC_OF_ANYPTRS_TO_ELT = 34, IIT_I128 = 35, IIT_V512 = 36, IIT_V1024 = 37, IIT_STRUCT6 = 38, IIT_STRUCT7 = 39, IIT_STRUCT8 = 40, IIT_F128 = 41 } |
IIT_Info - These are enumerators that describe the entries returned by the getIntrinsicInfoTableEntries function. More... | |
Functions | |
static unsigned | computeAddrSpace (unsigned AddrSpace, Module *M) |
static MutableArrayRef< Argument > | makeArgArray (Argument *Args, size_t Count) |
static ArrayRef< const char * > | findTargetSubtable (StringRef Name) |
Find the segment of IntrinsicNameTable for intrinsics with the same target as Name , or the generic table if Name is not target specific. More... | |
static std::string | getMangledTypeStr (Type *Ty) |
Returns a stable mangling for the type specified for use in the name mangling scheme used by 'any' types in intrinsic signatures. More... | |
static void | DecodeIITType (unsigned &NextElt, ArrayRef< unsigned char > Infos, SmallVectorImpl< Intrinsic::IITDescriptor > &OutputTable) |
static Type * | DecodeFixedType (ArrayRef< Intrinsic::IITDescriptor > &Infos, ArrayRef< Type *> Tys, LLVMContext &Context) |
Variables | |
static const char *const | IntrinsicNameTable [] |
Table of string intrinsic names indexed by enum value. More... | |
#define GET_INTRINSIC_ATTRIBUTES |
This defines the "Intrinsic::getAttributes(ID id)" method.
Definition at line 1016 of file Function.cpp.
#define GET_INTRINSIC_GENERATOR_GLOBAL |
Definition at line 860 of file Function.cpp.
#define GET_INTRINSIC_NAME_TABLE |
#define GET_INTRINSIC_OVERLOAD_TABLE |
#define GET_INTRINSIC_TARGET_DATA |
Table of per-target intrinsic name tables.
Definition at line 509 of file Function.cpp.
#define GET_LLVM_INTRINSIC_FOR_GCC_BUILTIN |
Definition at line 1029 of file Function.cpp.
#define GET_LLVM_INTRINSIC_FOR_MS_BUILTIN |
Definition at line 1034 of file Function.cpp.
using ProfileCount = Function::ProfileCount |
Definition at line 57 of file Function.cpp.
enum IIT_Info |
IIT_Info - These are enumerators that describe the entries returned by the getIntrinsicInfoTableEntries function.
NOTE: This must be kept in synch with the copy in TblGen/IntrinsicEmitter!
Definition at line 646 of file Function.cpp.
Definition at line 222 of file Function.cpp.
References assert(), llvm::Intrinsic::getAttributes(), llvm::Value::getContext(), llvm::Module::getDataLayout(), llvm::Module::getFunctionList(), llvm::Value::getName(), llvm::FunctionType::getNumParams(), llvm::DataLayout::getProgramAddressSpace(), llvm::FunctionType::isValidReturnType(), name, llvm::iplist_impl< IntrusiveListT, TraitsT >::push_back(), llvm::Value::setValueSubclassData(), and llvm::StringRef::startswith().
|
static |
Definition at line 897 of file Function.cpp.
References assert(), D, llvm::pdb::Double, llvm::dyn_cast(), llvm::NVPTX::PTXLdStInstCode::Float, llvm::ArrayRef< T >::front(), llvm::IntegerType::get(), llvm::StructType::get(), llvm::VectorType::get(), llvm::PointerType::get(), llvm::IntegerType::getBitWidth(), getBitWidth(), llvm::Type::getDoubleTy(), llvm::VectorType::getExtendedElementVectorType(), llvm::Type::getFloatTy(), llvm::Type::getFP128Ty(), llvm::VectorType::getHalfElementsVectorType(), llvm::Type::getHalfTy(), llvm::Type::getMetadataTy(), llvm::Type::getTokenTy(), llvm::VectorType::getTruncatedElementVectorType(), llvm::PointerType::getUnqual(), llvm::Type::getVectorElementType(), llvm::Type::getVoidTy(), llvm::Type::getX86_MMXTy(), llvm::Integer, llvm_unreachable, llvm::SmallVectorTemplateBase< T >::push_back(), and llvm::ArrayRef< T >::slice().
Referenced by llvm::Intrinsic::getType().
|
static |
Definition at line 694 of file Function.cpp.
References llvm::pdb::Double, llvm::NVPTX::PTXLdStInstCode::Float, IIT_ANYPTR, IIT_ARG, IIT_Done, IIT_EMPTYSTRUCT, IIT_EXTEND_ARG, IIT_F128, IIT_F16, IIT_F32, IIT_F64, IIT_HALF_VEC_ARG, IIT_I1, IIT_I128, IIT_I16, IIT_I32, IIT_I64, IIT_I8, IIT_METADATA, IIT_MMX, IIT_PTR, IIT_PTR_TO_ARG, IIT_PTR_TO_ELT, IIT_SAME_VEC_WIDTH_ARG, IIT_STRUCT2, IIT_STRUCT3, IIT_STRUCT4, IIT_STRUCT5, IIT_STRUCT6, IIT_STRUCT7, IIT_STRUCT8, IIT_TOKEN, IIT_TRUNC_ARG, IIT_V1, IIT_V1024, IIT_V16, IIT_V2, IIT_V32, IIT_V4, IIT_V512, IIT_V64, IIT_V8, IIT_VARARG, IIT_VEC_OF_ANYPTRS_TO_ELT, Info, llvm::Integer, LLVM_FALLTHROUGH, llvm_unreachable, llvm::SmallVectorTemplateBase< T >::push_back(), and llvm::ArrayRef< T >::size().
Referenced by llvm::Intrinsic::getIntrinsicInfoTableEntries().
Find the segment of IntrinsicNameTable
for intrinsics with the same target as Name
, or the generic table if Name
is not target specific.
Returns the relevant slice of IntrinsicNameTable
Definition at line 517 of file Function.cpp.
References assert(), llvm::StringRef::drop_front(), llvm::lower_bound(), llvm::makeArrayRef(), llvm::StringRef::split(), and llvm::StringRef::startswith().
Referenced by llvm::Function::lookupIntrinsicID().
|
static |
Returns a stable mangling for the type specified for use in the name mangling scheme used by 'any' types in intrinsic signatures.
The mangling of named types is simply their name. Manglings for unnamed types consist of a prefix ('p' for pointers, 'a' for arrays, 'f_' for functions) combined with the mangling of their component types. A vararg function type will have a suffix of 'vararg'. Since function types can contain other function types, we close a function type mangling with suffix 'f' which can't be confused with it's prefix. This ensures we don't have collisions between two unrelated function types. Otherwise, you might parse ffXX as f(fXX) or f(fX)X. (X is a placeholder for any other type.)
Definition at line 576 of file Function.cpp.
References llvm::Type::DoubleTyID, llvm::Type::FloatTyID, llvm::Type::FP128TyID, getBitWidth(), llvm::Type::getTypeID(), llvm::Type::getVectorElementType(), llvm::Type::getVectorNumElements(), llvm::Type::HalfTyID, llvm::Type::IntegerTyID, llvm_unreachable, llvm::Type::MetadataTyID, llvm::Type::PPC_FP128TyID, llvm::utostr(), llvm::Type::VoidTyID, llvm::Type::X86_FP80TyID, and llvm::Type::X86_MMXTyID.
Referenced by llvm::Intrinsic::getName().
|
static |
Definition at line 288 of file Function.cpp.
References llvm::AMDGPU::HSAMD::Kernel::Key::Args, and Arguments.
Referenced by llvm::Function::stealArgumentListFrom().
Table of string intrinsic names indexed by enum value.
Definition at line 501 of file Function.cpp.
Referenced by llvm::Function::lookupIntrinsicID().