|
LLVM 23.0.0git
|
#include "llvm/CodeGen/PreISelIntrinsicLowering.h"#include "llvm/ADT/STLExtras.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/LibcallLoweringInfo.h"#include "llvm/CodeGen/Passes.h"#include "llvm/CodeGen/TargetLowering.h"#include "llvm/CodeGen/TargetPassConfig.h"#include "llvm/IR/Function.h"#include "llvm/IR/GlobalValue.h"#include "llvm/IR/IRBuilder.h"#include "llvm/IR/Instructions.h"#include "llvm/IR/IntrinsicInst.h"#include "llvm/IR/Metadata.h"#include "llvm/IR/Module.h"#include "llvm/IR/ProfDataUtils.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/BasicBlockUtils.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 | DEBUG_TYPE "pre-isel-intrinsic-lowering" |
| #define | BEGIN_REGISTER_VP_INTRINSIC(VPID, MASKPOS, VLENPOS) |
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 ) |
| #define DEBUG_TYPE "pre-isel-intrinsic-lowering" |
Definition at line 48 of file PreISelIntrinsicLowering.cpp.
|
static |
Definition at line 245 of file PreISelIntrinsicLowering.cpp.
References F, llvm::LibcallLoweringModuleAnalysisResult::getLibcallLowering(), llvm::TargetMachine::getSubtargetImpl(), and Lowering.
|
static |
Definition at line 256 of file PreISelIntrinsicLowering.cpp.
References F, llvm::LibcallLoweringModuleAnalysisResult::getLibcallLowering(), llvm::TargetMachine::getSubtargetImpl(), and Lowering.
Definition at line 603 of file PreISelIntrinsicLowering.cpp.
References Call, llvm::cast(), DEBUG_TYPE, llvm::getExplicitlyUnknownBranchWeightsIfProfiled(), llvm::make_early_inc_range(), llvm::SplitBlockAndInsertIfThen(), and llvm::Value::users().
Definition at line 617 of file PreISelIntrinsicLowering.cpp.
References B(), Call, llvm::cast(), Cond, llvm::dyn_cast(), llvm::ConstantInt::getFalse(), llvm::ConstantInt::getTrue(), I, llvm::make_early_inc_range(), llvm::predecessors(), and llvm::Value::users().
Definition at line 531 of file PreISelIntrinsicLowering.cpp.
References Call, llvm::cast(), llvm::GlobalAlias::create(), llvm::dyn_cast(), llvm::SmallPtrSetImplBase::empty(), llvm::GlobalValue::ExternalLinkage, llvm::PointerType::get(), getDeactivationSymbol(), llvm::Type::getInt64Ty(), llvm::Type::getInt8Ty(), llvm::ConstantExpr::getIntToPtr(), llvm::User::getOperand(), llvm::GlobalValue::getParent(), llvm::GlobalValue::HiddenVisibility, llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::make_early_inc_range(), llvm::reportFatalUsageError(), llvm::User::setOperand(), and llvm::Value::users().
Definition at line 491 of file PreISelIntrinsicLowering.cpp.
References assert(), B(), Call, llvm::cast(), llvm::StringRef::contains(), llvm::dyn_cast(), F, llvm::FunctionType::get(), getDeactivationSymbol(), llvm::Type::getInt64Ty(), llvm::Function::getIntrinsicID(), llvm::GlobalValue::getParent(), llvm::Attribute::getValueAsString(), llvm::InnerAnalysisManagerProxy< AnalysisManagerT, IRUnitT, ExtraArgTs... >::Key, llvm::Triple::isArm64e(), llvm::Attribute::isValid(), llvm::make_early_inc_range(), and llvm::Value::users().
Definition at line 91 of file PreISelIntrinsicLowering.cpp.
References Changed, llvm::dyn_cast(), T, llvm::Value::use_begin(), and llvm::Value::use_empty().
|
static |
Definition at line 485 of file PreISelIntrinsicLowering.cpp.
References Call, llvm::cast(), and llvm::LLVMContext::OB_deactivation_symbol.
Referenced by expandProtectedFieldPtr(), expandPtrauthForEmuPAC(), and llvm::sandboxir::ConstantPtrAuth::getDeactivationSymbol().
|
static |
Definition at line 269 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 141 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 112 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 150 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 868 of file PreISelIntrinsicLowering.cpp.
| pre isel intrinsic Pre ISel Intrinsic Lowering |
Definition at line 868 of file PreISelIntrinsicLowering.cpp.
Referenced by canEmitLibcall(), canEmitMemcpy(), EnsureStackAlignment(), and llvm::PreISelIntrinsicLoweringPass::run().
| pre isel intrinsic lowering |
Definition at line 867 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.