this it should work
This commit is contained in:
parent
d2acceb367
commit
262dc7ad00
|
@ -95,6 +95,20 @@ public:
|
||||||
LiteralsLoaded = 0;
|
LiteralsLoaded = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BitSet32 GetPushRegs()
|
||||||
|
{
|
||||||
|
BitSet16 used;
|
||||||
|
for (int i = 0; i < InstrsCount; i++)
|
||||||
|
used |= BitSet16(Instrs[i].Info.SrcRegs | Instrs[i].Info.DstRegs);
|
||||||
|
|
||||||
|
BitSet32 res;
|
||||||
|
u32 registersMax = std::min((int)used.Count(), NativeRegsAvailable);
|
||||||
|
for (int i = 0; i < registersMax; i++)
|
||||||
|
res |= BitSet32(1 << (int)NativeRegAllocOrder[i]);
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
void Prepare(bool thumb, int i)
|
void Prepare(bool thumb, int i)
|
||||||
{
|
{
|
||||||
FetchedInstr instr = Instrs[i];
|
FetchedInstr instr = Instrs[i];
|
||||||
|
@ -111,7 +125,7 @@ public:
|
||||||
for (int j = 0; j < 16; j++)
|
for (int j = 0; j < 16; j++)
|
||||||
ranking[j] = 0;
|
ranking[j] = 0;
|
||||||
for (int j = i; j < InstrsCount; j++)
|
for (int j = i; j < InstrsCount; j++)
|
||||||
{
|
{s
|
||||||
BitSet16 regsNeeded((Instrs[j].Info.SrcRegs & ~(1 << 15)) | Instrs[j].Info.DstRegs);
|
BitSet16 regsNeeded((Instrs[j].Info.SrcRegs & ~(1 << 15)) | Instrs[j].Info.DstRegs);
|
||||||
futureNeeded |= regsNeeded.m_val;
|
futureNeeded |= regsNeeded.m_val;
|
||||||
regsNeeded &= BitSet16(~Instrs[j].Info.NotStrictlyNeeded);
|
regsNeeded &= BitSet16(~Instrs[j].Info.NotStrictlyNeeded);
|
||||||
|
|
Loading…
Reference in New Issue