Skip to content

Commit 538aeb1

Browse files
authored
[AMDGPU] Use a consistent DwarfEH register flavour (#84513)
Previously, we always used the wave64 encodings for EH registers regardless of whether we were compiling for wave32, which seems wrong. We don't seem to use the EH registers, so this commit is mostly just about papering over code that converts from non-EH dwarf registers to LLVM registers while claiming they are EH dwarf registers. That kind of code should be okay on any non-darwin target (since darwin is the only target that uses a different encoding for EH registers).
1 parent d0117b7 commit 538aeb1

File tree

4 files changed

+8
-3
lines changed

4 files changed

+8
-3
lines changed

llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCTargetDesc.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ static MCRegisterInfo *createAMDGPUMCRegisterInfo(const Triple &TT) {
7070

7171
MCRegisterInfo *llvm::createGCNMCRegisterInfo(AMDGPUDwarfFlavour DwarfFlavour) {
7272
MCRegisterInfo *X = new MCRegisterInfo();
73-
InitAMDGPUMCRegisterInfo(X, AMDGPU::PC_REG, DwarfFlavour);
73+
InitAMDGPUMCRegisterInfo(X, AMDGPU::PC_REG, DwarfFlavour, DwarfFlavour);
7474
return X;
7575
}
7676

llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -318,8 +318,9 @@ struct SGPRSpillBuilder {
318318
} // namespace llvm
319319

320320
SIRegisterInfo::SIRegisterInfo(const GCNSubtarget &ST)
321-
: AMDGPUGenRegisterInfo(AMDGPU::PC_REG, ST.getAMDGPUDwarfFlavour()), ST(ST),
322-
SpillSGPRToVGPR(EnableSpillSGPRToVGPR), isWave32(ST.isWave32()) {
321+
: AMDGPUGenRegisterInfo(AMDGPU::PC_REG, ST.getAMDGPUDwarfFlavour(),
322+
ST.getAMDGPUDwarfFlavour()),
323+
ST(ST), SpillSGPRToVGPR(EnableSpillSGPRToVGPR), isWave32(ST.isWave32()) {
323324

324325
assert(getSubRegIndexLaneMask(AMDGPU::sub0).getAsInteger() == 3 &&
325326
getSubRegIndexLaneMask(AMDGPU::sub31).getAsInteger() == (3ULL << 62) &&

llvm/unittests/MC/AMDGPU/DwarfRegMappings.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ TEST(AMDGPUDwarfRegMappingTests, TestWave64DwarfRegMapping) {
5555
for (int llvmReg : {16, 17, 32, 95, 1088, 1129, 2560, 2815, 3072, 3327}) {
5656
MCRegister PCReg(*MRI->getLLVMRegNum(llvmReg, false));
5757
EXPECT_EQ(llvmReg, MRI->getDwarfRegNum(PCReg, false));
58+
EXPECT_EQ(llvmReg, MRI->getDwarfRegNum(PCReg, true));
5859
}
5960
}
6061
}
@@ -73,6 +74,7 @@ TEST(AMDGPUDwarfRegMappingTests, TestWave32DwarfRegMapping) {
7374
for (int llvmReg : {16, 1, 32, 95, 1088, 1129, 1536, 1791, 2048, 2303}) {
7475
MCRegister PCReg(*MRI->getLLVMRegNum(llvmReg, false));
7576
EXPECT_EQ(llvmReg, MRI->getDwarfRegNum(PCReg, false));
77+
EXPECT_EQ(llvmReg, MRI->getDwarfRegNum(PCReg, true));
7678
}
7779
}
7880
}

llvm/unittests/Target/AMDGPU/DwarfRegMappings.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ TEST(AMDGPU, TestWave64DwarfRegMapping) {
2929
{16, 17, 32, 95, 1088, 1129, 2560, 2815, 3072, 3327}) {
3030
MCRegister PCReg(*MRI->getLLVMRegNum(llvmReg, false));
3131
EXPECT_EQ(llvmReg, MRI->getDwarfRegNum(PCReg, false));
32+
EXPECT_EQ(llvmReg, MRI->getDwarfRegNum(PCReg, true));
3233
}
3334
}
3435
}
@@ -52,6 +53,7 @@ TEST(AMDGPU, TestWave32DwarfRegMapping) {
5253
{16, 1, 32, 95, 1088, 1129, 1536, 1791, 2048, 2303}) {
5354
MCRegister PCReg(*MRI->getLLVMRegNum(llvmReg, false));
5455
EXPECT_EQ(llvmReg, MRI->getDwarfRegNum(PCReg, false));
56+
EXPECT_EQ(llvmReg, MRI->getDwarfRegNum(PCReg, true));
5557
}
5658
}
5759
}

0 commit comments

Comments
 (0)