LLVM 22.0.0git
|
#include "llvm/CodeGen/PreISelIntrinsicLowering.h"
#include "llvm/Analysis/ObjCARCInstKind.h"
#include "llvm/Analysis/ObjCARCUtil.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/CodeGen/ExpandVectorPredication.h"
#include "llvm/CodeGen/Passes.h"
#include "llvm/CodeGen/TargetLowering.h"
#include "llvm/CodeGen/TargetPassConfig.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/RuntimeLibcalls.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/Use.h"
#include "llvm/InitializePasses.h"
#include "llvm/Pass.h"
#include "llvm/Support/Casting.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Transforms/Scalar/LowerConstantIntrinsics.h"
#include "llvm/Transforms/Utils/BuildLibCalls.h"
#include "llvm/Transforms/Utils/LowerMemIntrinsics.h"
#include "llvm/Transforms/Utils/LowerVectorIntrinsics.h"
#include "llvm/IR/VPIntrinsics.def"
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 TargetMachine *TM, Function *F, RTLIB::Libcall LC) |
static bool | canEmitMemcpy (const TargetMachine *TM, Function *F) |
static Constant * | getMemSetPattern16Value (MemSetPatternInst *Inst, const TargetLibraryInfo &TLI) |
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 |
#define BEGIN_REGISTER_VP_INTRINSIC | ( | VPID, | |
MASKPOS, | |||
VLENPOS ) |
|
static |
Definition at line 233 of file PreISelIntrinsicLowering.cpp.
References F, and llvm::TargetLoweringBase::getLibcallName().
|
static |
Definition at line 242 of file PreISelIntrinsicLowering.cpp.
References F, and llvm::TargetLoweringBase::getMemcpyName().
Definition at line 80 of file PreISelIntrinsicLowering.cpp.
References Changed, llvm::dyn_cast(), T, llvm::Value::use_begin(), and llvm::Value::use_empty().
|
static |
Definition at line 253 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.
|
static |
Definition at line 130 of file PreISelIntrinsicLowering.cpp.
References F, llvm::objcarc::GetFunctionClass(), llvm::objcarc::IsAlwaysTail(), llvm::objcarc::IsNeverTail(), llvm::CallInst::TCK_None, llvm::CallInst::TCK_NoTail, and llvm::CallInst::TCK_Tail.
Referenced by lowerObjCCall().
INITIALIZE_PASS_BEGIN | ( | PreISelIntrinsicLoweringLegacyPass | , |
"pre-isel-intrinsic-lowering" | , | ||
"Pre-ISel Intrinsic Lowering" | , | ||
false | , | ||
false | ) |
References INITIALIZE_PASS_DEPENDENCY, and INITIALIZE_PASS_END.
Definition at line 101 of file PreISelIntrinsicLowering.cpp.
References B(), Changed, llvm::dyn_cast(), F, llvm::Type::getInt32Ty(), llvm::Int32Ty, and llvm::make_early_inc_range().
Definition at line 139 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().
pre isel intrinsic Pre ISel Intrinsic false |
Definition at line 651 of file PreISelIntrinsicLowering.cpp.
pre isel intrinsic Pre ISel Intrinsic Lowering |
Definition at line 651 of file PreISelIntrinsicLowering.cpp.
Referenced by EnsureStackAlignment(), and llvm::PreISelIntrinsicLoweringPass::run().
pre isel intrinsic lowering |
Definition at line 650 of file PreISelIntrinsicLowering.cpp.
|
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.