forked from OSchip/llvm-project
[Alignment][NFC] Use more Align versions of various functions
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 Reviewers: courbet Subscribers: MatzeB, qcolombet, arsenm, sdardis, jvesely, nhaehnle, hiraditya, jrtc27, atanasyan, kerbowa, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D77291
This commit is contained in:
parent
550ab58bc1
commit
189d2e215f
|
@ -255,8 +255,8 @@ int RegAllocFast::getStackSpaceFor(Register VirtReg) {
|
||||||
// Allocate a new stack object for this spill location...
|
// Allocate a new stack object for this spill location...
|
||||||
const TargetRegisterClass &RC = *MRI->getRegClass(VirtReg);
|
const TargetRegisterClass &RC = *MRI->getRegClass(VirtReg);
|
||||||
unsigned Size = TRI->getSpillSize(RC);
|
unsigned Size = TRI->getSpillSize(RC);
|
||||||
unsigned Align = TRI->getSpillAlignment(RC);
|
Align Alignment = TRI->getSpillAlign(RC);
|
||||||
int FrameIdx = MFI->CreateSpillStackObject(Size, Align);
|
int FrameIdx = MFI->CreateSpillStackObject(Size, Alignment);
|
||||||
|
|
||||||
// Assign the slot.
|
// Assign the slot.
|
||||||
StackSlotForVirtReg[VirtReg] = FrameIdx;
|
StackSlotForVirtReg[VirtReg] = FrameIdx;
|
||||||
|
|
|
@ -1530,7 +1530,7 @@ void llvm::GetReturnInfo(CallingConv::ID CC, Type *ReturnType,
|
||||||
/// alignment, not its logarithm.
|
/// alignment, not its logarithm.
|
||||||
unsigned TargetLoweringBase::getByValTypeAlignment(Type *Ty,
|
unsigned TargetLoweringBase::getByValTypeAlignment(Type *Ty,
|
||||||
const DataLayout &DL) const {
|
const DataLayout &DL) const {
|
||||||
return DL.getABITypeAlignment(Ty);
|
return DL.getABITypeAlign(Ty).value();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TargetLoweringBase::allowsMemoryAccessForAlignment(
|
bool TargetLoweringBase::allowsMemoryAccessForAlignment(
|
||||||
|
@ -1542,7 +1542,7 @@ bool TargetLoweringBase::allowsMemoryAccessForAlignment(
|
||||||
// For example, the ABI alignment may change based on software platform while
|
// For example, the ABI alignment may change based on software platform while
|
||||||
// this function should only be affected by hardware implementation.
|
// this function should only be affected by hardware implementation.
|
||||||
Type *Ty = VT.getTypeForEVT(Context);
|
Type *Ty = VT.getTypeForEVT(Context);
|
||||||
if (Alignment >= DL.getABITypeAlignment(Ty)) {
|
if (Alignment >= DL.getABITypeAlign(Ty).value()) {
|
||||||
// Assume that an access that meets the ABI-specified alignment is fast.
|
// Assume that an access that meets the ABI-specified alignment is fast.
|
||||||
if (Fast != nullptr)
|
if (Fast != nullptr)
|
||||||
*Fast = true;
|
*Fast = true;
|
||||||
|
|
|
@ -92,8 +92,8 @@ void VirtRegMap::assignVirt2Phys(Register virtReg, MCPhysReg physReg) {
|
||||||
|
|
||||||
unsigned VirtRegMap::createSpillSlot(const TargetRegisterClass *RC) {
|
unsigned VirtRegMap::createSpillSlot(const TargetRegisterClass *RC) {
|
||||||
unsigned Size = TRI->getSpillSize(*RC);
|
unsigned Size = TRI->getSpillSize(*RC);
|
||||||
unsigned Align = TRI->getSpillAlignment(*RC);
|
Align Alignment = TRI->getSpillAlign(*RC);
|
||||||
int SS = MF->getFrameInfo().CreateSpillStackObject(Size, Align);
|
int SS = MF->getFrameInfo().CreateSpillStackObject(Size, Alignment);
|
||||||
++NumSpillSlots;
|
++NumSpillSlots;
|
||||||
return SS;
|
return SS;
|
||||||
}
|
}
|
||||||
|
|
|
@ -323,7 +323,7 @@ bool SIMachineFunctionInfo::allocateSGPRSpillToVGPR(MachineFunction &MF,
|
||||||
Optional<int> CSRSpillFI;
|
Optional<int> CSRSpillFI;
|
||||||
if ((FrameInfo.hasCalls() || !isEntryFunction()) && CSRegs &&
|
if ((FrameInfo.hasCalls() || !isEntryFunction()) && CSRegs &&
|
||||||
isCalleeSavedReg(CSRegs, LaneVGPR)) {
|
isCalleeSavedReg(CSRegs, LaneVGPR)) {
|
||||||
CSRSpillFI = FrameInfo.CreateSpillStackObject(4, 4);
|
CSRSpillFI = FrameInfo.CreateSpillStackObject(4, Align(4));
|
||||||
}
|
}
|
||||||
|
|
||||||
SpillVGPRs.push_back(SGPRSpillVGPRCSR(LaneVGPR, CSRSpillFI));
|
SpillVGPRs.push_back(SGPRSpillVGPRCSR(LaneVGPR, CSRSpillFI));
|
||||||
|
|
|
@ -17237,7 +17237,7 @@ bool ARMTargetLowering::getTgtMemIntrinsic(IntrinsicInfo &Info,
|
||||||
Info.memVT = MVT::getVT(PtrTy->getElementType());
|
Info.memVT = MVT::getVT(PtrTy->getElementType());
|
||||||
Info.ptrVal = I.getArgOperand(0);
|
Info.ptrVal = I.getArgOperand(0);
|
||||||
Info.offset = 0;
|
Info.offset = 0;
|
||||||
Info.align = MaybeAlign(DL.getABITypeAlignment(PtrTy->getElementType()));
|
Info.align = DL.getABITypeAlign(PtrTy->getElementType());
|
||||||
Info.flags = MachineMemOperand::MOLoad | MachineMemOperand::MOVolatile;
|
Info.flags = MachineMemOperand::MOLoad | MachineMemOperand::MOVolatile;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -17249,7 +17249,7 @@ bool ARMTargetLowering::getTgtMemIntrinsic(IntrinsicInfo &Info,
|
||||||
Info.memVT = MVT::getVT(PtrTy->getElementType());
|
Info.memVT = MVT::getVT(PtrTy->getElementType());
|
||||||
Info.ptrVal = I.getArgOperand(1);
|
Info.ptrVal = I.getArgOperand(1);
|
||||||
Info.offset = 0;
|
Info.offset = 0;
|
||||||
Info.align = MaybeAlign(DL.getABITypeAlignment(PtrTy->getElementType()));
|
Info.align = DL.getABITypeAlign(PtrTy->getElementType());
|
||||||
Info.flags = MachineMemOperand::MOStore | MachineMemOperand::MOVolatile;
|
Info.flags = MachineMemOperand::MOStore | MachineMemOperand::MOVolatile;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2163,7 +2163,8 @@ void HexagonFrameLowering::determineCalleeSaves(MachineFunction &MF,
|
||||||
Num = 2; // Vector predicate spills also need a vector register.
|
Num = 2; // Vector predicate spills also need a vector register.
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
unsigned S = HRI.getSpillSize(*RC), A = HRI.getSpillAlignment(*RC);
|
unsigned S = HRI.getSpillSize(*RC);
|
||||||
|
Align A = HRI.getSpillAlign(*RC);
|
||||||
for (unsigned i = 0; i < Num; i++) {
|
for (unsigned i = 0; i < Num; i++) {
|
||||||
int NewFI = MFI.CreateSpillStackObject(S, A);
|
int NewFI = MFI.CreateSpillStackObject(S, A);
|
||||||
RS->addScavengingFrameIndex(NewFI);
|
RS->addScavengingFrameIndex(NewFI);
|
||||||
|
|
|
@ -306,7 +306,7 @@ class TargetRegisterClass;
|
||||||
/// Return the correct alignment for the current calling convention.
|
/// Return the correct alignment for the current calling convention.
|
||||||
Align getABIAlignmentForCallingConv(Type *ArgTy,
|
Align getABIAlignmentForCallingConv(Type *ArgTy,
|
||||||
DataLayout DL) const override {
|
DataLayout DL) const override {
|
||||||
const Align ABIAlign(DL.getABITypeAlignment(ArgTy));
|
const Align ABIAlign = DL.getABITypeAlign(ArgTy);
|
||||||
if (ArgTy->isVectorTy())
|
if (ArgTy->isVectorTy())
|
||||||
return std::min(ABIAlign, Align(8));
|
return std::min(ABIAlign, Align(8));
|
||||||
return ABIAlign;
|
return ABIAlign;
|
||||||
|
|
|
@ -2177,7 +2177,7 @@ bool X86FrameLowering::assignCalleeSavedSpillSlots(
|
||||||
if (this->TRI->hasBasePointer(MF)) {
|
if (this->TRI->hasBasePointer(MF)) {
|
||||||
// Allocate a spill slot for EBP if we have a base pointer and EH funclets.
|
// Allocate a spill slot for EBP if we have a base pointer and EH funclets.
|
||||||
if (MF.hasEHFunclets()) {
|
if (MF.hasEHFunclets()) {
|
||||||
int FI = MFI.CreateSpillStackObject(SlotSize, SlotSize);
|
int FI = MFI.CreateSpillStackObject(SlotSize, Align(SlotSize));
|
||||||
X86FI->setHasSEHFramePtrSave(true);
|
X86FI->setHasSEHFramePtrSave(true);
|
||||||
X86FI->setSEHFramePtrSaveIndex(FI);
|
X86FI->setSEHFramePtrSaveIndex(FI);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue