mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-18 18:42:46 +02:00
[Alignment][NFC] Use Align with CreateMaskedScatter/Gather
Summary: This is patch is part of a series to introduce an Alignment type. See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html See this patch for the introduction of the type: https://reviews.llvm.org/D64790 This patch shows that CreateMaskedScatter/CreateMaskedGather can only take positive non zero alignment values. Reviewers: courbet Subscribers: hiraditya, llvm-commits, delena Tags: #llvm Differential Revision: https://reviews.llvm.org/D73361
This commit is contained in:
parent
75e76863f0
commit
e18e01b543
@ -770,13 +770,30 @@ public:
|
||||
Value *Mask);
|
||||
|
||||
/// Create a call to Masked Gather intrinsic
|
||||
CallInst *CreateMaskedGather(Value *Ptrs, unsigned Align,
|
||||
Value *Mask = nullptr,
|
||||
Value *PassThru = nullptr,
|
||||
const Twine& Name = "");
|
||||
LLVM_ATTRIBUTE_DEPRECATED(
|
||||
CallInst *CreateMaskedGather(Value *Ptrs, unsigned Alignment,
|
||||
Value *Mask = nullptr,
|
||||
Value *PassThru = nullptr,
|
||||
const Twine &Name = ""),
|
||||
"Use the version that takes Align instead") {
|
||||
return CreateMaskedGather(Ptrs, Align(Alignment), Mask, PassThru, Name);
|
||||
}
|
||||
|
||||
/// Create a call to Masked Gather intrinsic
|
||||
CallInst *CreateMaskedGather(Value *Ptrs, Align Alignment,
|
||||
Value *Mask = nullptr, Value *PassThru = nullptr,
|
||||
const Twine &Name = "");
|
||||
|
||||
/// Create a call to Masked Scatter intrinsic
|
||||
CallInst *CreateMaskedScatter(Value *Val, Value *Ptrs, unsigned Align,
|
||||
LLVM_ATTRIBUTE_DEPRECATED(
|
||||
CallInst *CreateMaskedScatter(Value *Val, Value *Ptrs, unsigned Alignment,
|
||||
Value *Mask = nullptr),
|
||||
"Use the version that takes Align instead") {
|
||||
return CreateMaskedScatter(Val, Ptrs, Align(Alignment), Mask);
|
||||
}
|
||||
|
||||
/// Create a call to Masked Scatter intrinsic
|
||||
CallInst *CreateMaskedScatter(Value *Val, Value *Ptrs, Align Alignment,
|
||||
Value *Mask = nullptr);
|
||||
|
||||
/// Create an assume intrinsic call that allows the optimizer to
|
||||
|
@ -523,9 +523,9 @@ CallInst *IRBuilderBase::CreateMaskedIntrinsic(Intrinsic::ID Id,
|
||||
/// \p PassThru - pass-through value that is used to fill the masked-off lanes
|
||||
/// of the result
|
||||
/// \p Name - name of the result variable
|
||||
CallInst *IRBuilderBase::CreateMaskedGather(Value *Ptrs, unsigned Align,
|
||||
Value *Mask, Value *PassThru,
|
||||
const Twine& Name) {
|
||||
CallInst *IRBuilderBase::CreateMaskedGather(Value *Ptrs, Align Alignment,
|
||||
Value *Mask, Value *PassThru,
|
||||
const Twine &Name) {
|
||||
auto PtrsTy = cast<VectorType>(Ptrs->getType());
|
||||
auto PtrTy = cast<PointerType>(PtrsTy->getElementType());
|
||||
unsigned NumElts = PtrsTy->getVectorNumElements();
|
||||
@ -539,7 +539,7 @@ CallInst *IRBuilderBase::CreateMaskedGather(Value *Ptrs, unsigned Align,
|
||||
PassThru = UndefValue::get(DataTy);
|
||||
|
||||
Type *OverloadedTypes[] = {DataTy, PtrsTy};
|
||||
Value * Ops[] = {Ptrs, getInt32(Align), Mask, PassThru};
|
||||
Value *Ops[] = {Ptrs, getInt32(Alignment.value()), Mask, PassThru};
|
||||
|
||||
// We specify only one type when we create this intrinsic. Types of other
|
||||
// arguments are derived from this type.
|
||||
@ -555,7 +555,7 @@ CallInst *IRBuilderBase::CreateMaskedGather(Value *Ptrs, unsigned Align,
|
||||
/// \p Mask - vector of booleans which indicates what vector lanes should
|
||||
/// be accessed in memory
|
||||
CallInst *IRBuilderBase::CreateMaskedScatter(Value *Data, Value *Ptrs,
|
||||
unsigned Align, Value *Mask) {
|
||||
Align Alignment, Value *Mask) {
|
||||
auto PtrsTy = cast<VectorType>(Ptrs->getType());
|
||||
auto DataTy = cast<VectorType>(Data->getType());
|
||||
unsigned NumElts = PtrsTy->getVectorNumElements();
|
||||
@ -572,7 +572,7 @@ CallInst *IRBuilderBase::CreateMaskedScatter(Value *Data, Value *Ptrs,
|
||||
NumElts));
|
||||
|
||||
Type *OverloadedTypes[] = {DataTy, PtrsTy};
|
||||
Value * Ops[] = {Data, Ptrs, getInt32(Align), Mask};
|
||||
Value *Ops[] = {Data, Ptrs, getInt32(Alignment.value()), Mask};
|
||||
|
||||
// We specify only one type when we create this intrinsic. Types of other
|
||||
// arguments are derived from this type.
|
||||
|
@ -2437,8 +2437,8 @@ void InnerLoopVectorizer::vectorizeMemoryInstruction(Instruction *Instr,
|
||||
if (CreateGatherScatter) {
|
||||
Value *MaskPart = isMaskRequired ? BlockInMaskParts[Part] : nullptr;
|
||||
Value *VectorGep = State.get(Addr, Part);
|
||||
NewSI = Builder.CreateMaskedScatter(StoredVal, VectorGep,
|
||||
Alignment.value(), MaskPart);
|
||||
NewSI = Builder.CreateMaskedScatter(StoredVal, VectorGep, Alignment,
|
||||
MaskPart);
|
||||
} else {
|
||||
if (Reverse) {
|
||||
// If we store to reverse consecutive memory locations, then we need
|
||||
@ -2467,7 +2467,7 @@ void InnerLoopVectorizer::vectorizeMemoryInstruction(Instruction *Instr,
|
||||
if (CreateGatherScatter) {
|
||||
Value *MaskPart = isMaskRequired ? BlockInMaskParts[Part] : nullptr;
|
||||
Value *VectorGep = State.get(Addr, Part);
|
||||
NewLI = Builder.CreateMaskedGather(VectorGep, Alignment.value(), MaskPart,
|
||||
NewLI = Builder.CreateMaskedGather(VectorGep, Alignment, MaskPart,
|
||||
nullptr, "wide.masked.gather");
|
||||
addMetadata(NewLI, LI);
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user