mirror of
https://github.com/RPCSX/llvm.git
synced 2025-03-02 18:06:17 +00:00
Add invariant start call creation in IRBuilder.NFC
Differential Revision: https://reviews.llvm.org/D22700 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@276471 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2b421e1c7e
commit
3b6613c9db
@ -446,6 +446,11 @@ public:
|
||||
/// If the pointer isn't i8* it will be converted.
|
||||
CallInst *CreateLifetimeEnd(Value *Ptr, ConstantInt *Size = nullptr);
|
||||
|
||||
/// Create a call to invariant.start intrinsic.
|
||||
///
|
||||
/// If the pointer isn't i8* it will be converted.
|
||||
CallInst *CreateInvariantStart(Value *Ptr, ConstantInt *Size = nullptr);
|
||||
|
||||
/// \brief Create a call to Masked Load intrinsic
|
||||
CallInst *CreateMaskedLoad(Value *Ptr, unsigned Align, Value *Mask,
|
||||
Value *PassThru = nullptr, const Twine &Name = "");
|
||||
|
@ -191,6 +191,26 @@ CallInst *IRBuilderBase::CreateLifetimeEnd(Value *Ptr, ConstantInt *Size) {
|
||||
return createCallHelper(TheFn, Ops, this);
|
||||
}
|
||||
|
||||
CallInst *IRBuilderBase::CreateInvariantStart(Value *Ptr, ConstantInt *Size) {
|
||||
|
||||
assert(isa<PointerType>(Ptr->getType()) &&
|
||||
"invariant.start only applies to pointers.");
|
||||
Ptr = getCastedInt8PtrValue(Ptr);
|
||||
if (!Size)
|
||||
Size = getInt64(-1);
|
||||
else
|
||||
assert(Size->getType() == getInt64Ty() &&
|
||||
"invariant.start requires the size to be an i64");
|
||||
|
||||
Value *Ops[] = {Size, Ptr};
|
||||
// Fill in the single overloaded type: memory object type.
|
||||
Type *ObjectPtr[1] = {Ptr->getType()};
|
||||
Module *M = BB->getParent()->getParent();
|
||||
Value *TheFn =
|
||||
Intrinsic::getDeclaration(M, Intrinsic::invariant_start, ObjectPtr);
|
||||
return createCallHelper(TheFn, Ops, this);
|
||||
}
|
||||
|
||||
CallInst *IRBuilderBase::CreateAssumption(Value *Cond) {
|
||||
assert(Cond->getType() == getInt1Ty() &&
|
||||
"an assumption condition must be of type i1");
|
||||
|
Loading…
x
Reference in New Issue
Block a user