mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-12 13:30:51 +00:00
Merging r181529:
------------------------------------------------------------------------ r181529 | void | 2013-05-09 11:21:45 -0700 (Thu, 09 May 2013) | 8 lines Simplify the code a bit. The compact unwind registers were defined in two different places. It's better just to place them in the function that uses them and specify that this is a 64-bit or 32-bit machine. No functionality change. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_33@181956 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2fc0483faf
commit
5b39b74a3f
@ -369,7 +369,14 @@ void X86FrameLowering::emitCalleeSavedFrameMoves(MachineFunction &MF,
|
||||
/// getCompactUnwindRegNum - Get the compact unwind number for a given
|
||||
/// register. The number corresponds to the enum lists in
|
||||
/// compact_unwind_encoding.h.
|
||||
static int getCompactUnwindRegNum(const uint16_t *CURegs, unsigned Reg) {
|
||||
static int getCompactUnwindRegNum(unsigned Reg, bool is64Bit) {
|
||||
static const uint16_t CU32BitRegs[] = {
|
||||
X86::EBX, X86::ECX, X86::EDX, X86::EDI, X86::ESI, X86::EBP, 0
|
||||
};
|
||||
static const uint16_t CU64BitRegs[] = {
|
||||
X86::RBX, X86::R12, X86::R13, X86::R14, X86::R15, X86::RBP, 0
|
||||
};
|
||||
const uint16_t *CURegs = is64Bit ? CU64BitRegs : CU32BitRegs;
|
||||
for (int Idx = 1; *CURegs; ++CURegs, ++Idx)
|
||||
if (*CURegs == Reg)
|
||||
return Idx;
|
||||
@ -398,16 +405,8 @@ encodeCompactUnwindRegistersWithoutFrame(unsigned SavedRegs[CU_NUM_SAVED_REGS],
|
||||
// 4 3
|
||||
// 5 3
|
||||
//
|
||||
static const uint16_t CU32BitRegs[] = {
|
||||
X86::EBX, X86::ECX, X86::EDX, X86::EDI, X86::ESI, X86::EBP, 0
|
||||
};
|
||||
static const uint16_t CU64BitRegs[] = {
|
||||
X86::RBX, X86::R12, X86::R13, X86::R14, X86::R15, X86::RBP, 0
|
||||
};
|
||||
const uint16_t *CURegs = (Is64Bit ? CU64BitRegs : CU32BitRegs);
|
||||
|
||||
for (unsigned i = 0; i != CU_NUM_SAVED_REGS; ++i) {
|
||||
int CUReg = getCompactUnwindRegNum(CURegs, SavedRegs[i]);
|
||||
int CUReg = getCompactUnwindRegNum(SavedRegs[i], Is64Bit);
|
||||
if (CUReg == -1) return ~0U;
|
||||
SavedRegs[i] = CUReg;
|
||||
}
|
||||
@ -466,14 +465,6 @@ encodeCompactUnwindRegistersWithoutFrame(unsigned SavedRegs[CU_NUM_SAVED_REGS],
|
||||
static uint32_t
|
||||
encodeCompactUnwindRegistersWithFrame(unsigned SavedRegs[CU_NUM_SAVED_REGS],
|
||||
bool Is64Bit) {
|
||||
static const uint16_t CU32BitRegs[] = {
|
||||
X86::EBX, X86::ECX, X86::EDX, X86::EDI, X86::ESI, X86::EBP, 0
|
||||
};
|
||||
static const uint16_t CU64BitRegs[] = {
|
||||
X86::RBX, X86::R12, X86::R13, X86::R14, X86::R15, X86::RBP, 0
|
||||
};
|
||||
const uint16_t *CURegs = (Is64Bit ? CU64BitRegs : CU32BitRegs);
|
||||
|
||||
// Encode the registers in the order they were saved, 3-bits per register. The
|
||||
// registers are numbered from 1 to CU_NUM_SAVED_REGS.
|
||||
uint32_t RegEnc = 0;
|
||||
@ -481,7 +472,7 @@ encodeCompactUnwindRegistersWithFrame(unsigned SavedRegs[CU_NUM_SAVED_REGS],
|
||||
unsigned Reg = SavedRegs[I];
|
||||
if (Reg == 0) continue;
|
||||
|
||||
int CURegNum = getCompactUnwindRegNum(CURegs, Reg);
|
||||
int CURegNum = getCompactUnwindRegNum(Reg, Is64Bit);
|
||||
if (CURegNum == -1) return ~0U;
|
||||
|
||||
// Encode the 3-bit register number in order, skipping over 3-bits for each
|
||||
|
Loading…
Reference in New Issue
Block a user