mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
AMDGPU: Fix hardcoded alignment of spill.
Instead of forcing 4 alignment when spilled, set register class alignments. llvm-svn: 252322
This commit is contained in:
parent
368c08a19e
commit
a7afaaa71a
@ -567,8 +567,7 @@ void SIInstrInfo::loadRegFromStackSlot(MachineBasicBlock &MBB,
|
||||
}
|
||||
|
||||
if (Opcode != -1) {
|
||||
unsigned Align = 4;
|
||||
FrameInfo->setObjectAlignment(FrameIndex, Align);
|
||||
unsigned Align = FrameInfo->getObjectAlignment(FrameIndex);
|
||||
unsigned Size = FrameInfo->getObjectSize(FrameIndex);
|
||||
|
||||
MachinePointerInfo PtrInfo
|
||||
|
@ -187,50 +187,50 @@ def SReg_32 : RegisterClass<"AMDGPU", [i32, f32], 32,
|
||||
(add SGPR_32, M0, VCC_LO, VCC_HI, EXEC_LO, EXEC_HI, FLAT_SCR_LO, FLAT_SCR_HI)
|
||||
>;
|
||||
|
||||
def SGPR_64 : RegisterClass<"AMDGPU", [v2i32, i64, f64], 64, (add SGPR_64Regs)>;
|
||||
def SGPR_64 : RegisterClass<"AMDGPU", [v2i32, i64, f64], 32, (add SGPR_64Regs)>;
|
||||
|
||||
def SReg_64 : RegisterClass<"AMDGPU", [v2i32, i64, f64, i1], 64,
|
||||
def SReg_64 : RegisterClass<"AMDGPU", [v2i32, i64, f64, i1], 32,
|
||||
(add SGPR_64, VCC, EXEC, FLAT_SCR)
|
||||
>;
|
||||
|
||||
def SReg_128 : RegisterClass<"AMDGPU", [v4i32, v16i8], 128, (add SGPR_128)> {
|
||||
def SReg_128 : RegisterClass<"AMDGPU", [v4i32, v16i8], 32, (add SGPR_128)> {
|
||||
// Requires 2 s_mov_b64 to copy
|
||||
let CopyCost = 2;
|
||||
}
|
||||
|
||||
def SReg_256 : RegisterClass<"AMDGPU", [v32i8, v8i32, v8f32], 256, (add SGPR_256)> {
|
||||
def SReg_256 : RegisterClass<"AMDGPU", [v32i8, v8i32, v8f32], 32, (add SGPR_256)> {
|
||||
// Requires 4 s_mov_b64 to copy
|
||||
let CopyCost = 4;
|
||||
}
|
||||
|
||||
def SReg_512 : RegisterClass<"AMDGPU", [v64i8, v16i32], 512, (add SGPR_512)> {
|
||||
def SReg_512 : RegisterClass<"AMDGPU", [v64i8, v16i32], 32, (add SGPR_512)> {
|
||||
// Requires 8 s_mov_b64 to copy
|
||||
let CopyCost = 8;
|
||||
}
|
||||
|
||||
// Register class for all vector registers (VGPRs + Interploation Registers)
|
||||
def VReg_64 : RegisterClass<"AMDGPU", [i64, f64, v2i32, v2f32], 64, (add VGPR_64)> {
|
||||
def VReg_64 : RegisterClass<"AMDGPU", [i64, f64, v2i32, v2f32], 32, (add VGPR_64)> {
|
||||
// Requires 2 v_mov_b32 to copy
|
||||
let CopyCost = 2;
|
||||
}
|
||||
|
||||
def VReg_96 : RegisterClass<"AMDGPU", [untyped], 96, (add VGPR_96)> {
|
||||
def VReg_96 : RegisterClass<"AMDGPU", [untyped], 32, (add VGPR_96)> {
|
||||
let Size = 96;
|
||||
|
||||
// Requires 3 v_mov_b32 to copy
|
||||
let CopyCost = 3;
|
||||
}
|
||||
|
||||
def VReg_128 : RegisterClass<"AMDGPU", [v4i32, v4f32], 128, (add VGPR_128)> {
|
||||
def VReg_128 : RegisterClass<"AMDGPU", [v4i32, v4f32], 32, (add VGPR_128)> {
|
||||
// Requires 4 v_mov_b32 to copy
|
||||
let CopyCost = 4;
|
||||
}
|
||||
|
||||
def VReg_256 : RegisterClass<"AMDGPU", [v32i8, v8i32, v8f32], 256, (add VGPR_256)> {
|
||||
def VReg_256 : RegisterClass<"AMDGPU", [v32i8, v8i32, v8f32], 32, (add VGPR_256)> {
|
||||
let CopyCost = 8;
|
||||
}
|
||||
|
||||
def VReg_512 : RegisterClass<"AMDGPU", [v16i32, v16f32], 512, (add VGPR_512)> {
|
||||
def VReg_512 : RegisterClass<"AMDGPU", [v16i32, v16f32], 32, (add VGPR_512)> {
|
||||
let CopyCost = 16;
|
||||
}
|
||||
|
||||
@ -274,7 +274,7 @@ def SCSrc_32 : RegInlineOperand<SReg_32> {
|
||||
|
||||
def VS_32 : RegisterClass<"AMDGPU", [i32, f32], 32, (add VGPR_32, SReg_32)>;
|
||||
|
||||
def VS_64 : RegisterClass<"AMDGPU", [i64, f64], 64, (add VReg_64, SReg_64)> {
|
||||
def VS_64 : RegisterClass<"AMDGPU", [i64, f64], 32, (add VReg_64, SReg_64)> {
|
||||
let CopyCost = 2;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user