LLVM: lib/CodeGen/PreISelIntrinsicLowering.cpp File Reference (original) (raw)

Go to the source code of this file.

Macros
#define BEGIN_REGISTER_VP_INTRINSIC(VPID, MASKPOS, VLENPOS)
Functions
template<class T>
static bool forEachCall (Function &Intrin, T Callback)
static bool lowerLoadRelative (Function &F)
static CallInst::TailCallKind getOverridingTailCallKind (const Function &F)
static bool lowerObjCCall (Function &F, RTLIB::LibcallImpl NewFn, bool setNonLazyBind=false)
static bool canEmitLibcall (const LibcallLoweringModuleAnalysisResult &ModuleLowering, const TargetMachine *TM, Function *F, RTLIB::Libcall LC)
static bool canEmitMemcpy (const LibcallLoweringModuleAnalysisResult &ModuleLowering, const TargetMachine *TM, Function *F)
static Constant * getMemSetPattern16Value (MemSetPatternInst *Inst, const TargetLibraryInfo &TLI)
static bool expandProtectedFieldPtr (Function &Intr)
INITIALIZE_PASS_BEGIN (PreISelIntrinsicLoweringLegacyPass, "pre-isel-intrinsic-lowering", "Pre-ISel Intrinsic Lowering", false, false) INITIALIZE_PASS_END(PreISelIntrinsicLoweringLegacyPass
Variables
static cl::opt< int64_t > MemIntrinsicExpandSizeThresholdOpt ("mem-intrinsic-expand-size", cl::desc("Set minimum mem intrinsic size to expand in IR"), cl::init(-1), cl::Hidden)
Threshold to leave statically sized memory intrinsic calls.
pre isel intrinsic lowering
pre isel intrinsic Pre ISel Intrinsic Lowering
pre isel intrinsic Pre ISel Intrinsic false

BEGIN_REGISTER_VP_INTRINSIC

#define BEGIN_REGISTER_VP_INTRINSIC ( VPID,
MASKPOS,
VLENPOS )

canEmitLibcall()

canEmitMemcpy()

expandProtectedFieldPtr()

Definition at line 476 of file PreISelIntrinsicLowering.cpp.

References B(), Call, llvm::cast(), llvm::StringRef::contains(), llvm::GlobalAlias::create(), llvm::dyn_cast(), llvm::SmallPtrSetImplBase::empty(), llvm::GlobalValue::ExternalLinkage, F, llvm::FunctionType::get(), llvm::PointerType::get(), llvm::Type::getInt64Ty(), llvm::Type::getInt8Ty(), llvm::ConstantExpr::getIntToPtr(), llvm::User::getOperand(), llvm::Intrinsic::getOrInsertDeclaration(), llvm::GlobalValue::getParent(), llvm::Attribute::getValueAsString(), llvm::GlobalValue::HiddenVisibility, llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::isa(), llvm::Attribute::isValid(), llvm::make_early_inc_range(), llvm::LLVMContext::OB_deactivation_symbol, llvm::reportFatalUsageError(), llvm::User::setOperand(), and llvm::Value::users().

forEachCall()

getMemSetPattern16Value()

Definition at line 264 of file PreISelIntrinsicLowering.cpp.

References llvm::CallingConv::C, DL, llvm::dyn_cast(), llvm::ArrayType::get(), llvm::ConstantArray::get(), llvm::Instruction::getDataLayout(), llvm::Instruction::getModule(), llvm::Type::getPointerAddressSpace(), llvm::MemIntrinsicBase< Derived >::getRawDest(), llvm::Value::getType(), llvm::MemSetBase< BaseCL >::getValue(), llvm::isa(), llvm::isLibFuncEmittable(), llvm::isPowerOf2_64(), and Size.

getOverridingTailCallKind()

INITIALIZE_PASS_BEGIN()

INITIALIZE_PASS_BEGIN ( PreISelIntrinsicLoweringLegacyPass ,
"pre-isel-intrinsic-lowering" ,
"Pre-ISel Intrinsic Lowering" ,
false ,
false )

lowerLoadRelative()

lowerObjCCall()

bool lowerObjCCall ( Function & F, RTLIB::LibcallImpl NewFn, bool setNonLazyBind = false ) static

Definition at line 145 of file PreISelIntrinsicLowering.cpp.

References llvm::CallBase::addParamAttr(), assert(), llvm::cast(), llvm::dyn_cast(), F, llvm::objcarc::getAttachedARCFunction(), llvm::FunctionCallee::getCallee(), llvm::RTLIB::RuntimeLibcallsInfo::getLibcallImplName(), getOverridingTailCallKind(), llvm::make_early_inc_range(), llvm::IntrinsicInst::mayLowerToFunctionCall(), llvm::Value::setName(), setNonLazyBind(), and llvm::CallInst::setTailCallKind().

false

pre isel intrinsic Pre ISel Intrinsic false

Lowering

pre isel intrinsic Pre ISel Intrinsic Lowering

lowering

pre isel intrinsic lowering

MemIntrinsicExpandSizeThresholdOpt

cl::opt< int64_t > MemIntrinsicExpandSizeThresholdOpt("mem-intrinsic-expand-size", cl::desc("Set minimum mem intrinsic size to expand in IR"), cl::init(-1), cl::Hidden) ( "mem-intrinsic-expand-size" , cl::desc("Set minimum mem intrinsic size to expand in IR") , cl::init(-1) , cl::Hidden ) static

Threshold to leave statically sized memory intrinsic calls.

Calls of known size larger than this will be expanded by the pass. Calls of unknown or lower size will be left for expansion in codegen.