Remove register assignments for most used variables on the hybrid allocator
This commit is contained in:
parent
2fde9f96a4
commit
9c311d0c0a
1 changed files with 0 additions and 46 deletions
|
@ -153,52 +153,6 @@ namespace ARMeilleure.CodeGen.RegisterAllocators
|
||||||
blockInfo[block.Index] = new BlockInfo(hasCall, intFixedRegisters, vecFixedRegisters);
|
blockInfo[block.Index] = new BlockInfo(hasCall, intFixedRegisters, vecFixedRegisters);
|
||||||
}
|
}
|
||||||
|
|
||||||
int intReservedCount = 0;
|
|
||||||
int vecReservedCount = 0;
|
|
||||||
|
|
||||||
foreach (LocalInfo info in locInfo.OrderByDescending(x => x.Uses))
|
|
||||||
{
|
|
||||||
if (info.Type.IsInteger() && intReservedCount < 7)
|
|
||||||
{
|
|
||||||
int selectedReg = BitUtils.HighestBitSet(intFreeRegisters & ~regMasks.IntCallerSavedRegisters);
|
|
||||||
|
|
||||||
if (selectedReg >= 0)
|
|
||||||
{
|
|
||||||
int mask = 1 << selectedReg;
|
|
||||||
|
|
||||||
intFreeRegisters &= ~mask;
|
|
||||||
intUsedRegisters |= mask;
|
|
||||||
|
|
||||||
info.PreAllocated = true;
|
|
||||||
info.Register = selectedReg;
|
|
||||||
|
|
||||||
intReservedCount++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (!info.Type.IsInteger() && vecReservedCount < 7)
|
|
||||||
{
|
|
||||||
int selectedReg = BitUtils.HighestBitSet(vecFreeRegisters & ~regMasks.VecCallerSavedRegisters);
|
|
||||||
|
|
||||||
if (selectedReg >= 0)
|
|
||||||
{
|
|
||||||
int mask = 1 << selectedReg;
|
|
||||||
|
|
||||||
vecFreeRegisters &= ~mask;
|
|
||||||
vecUsedRegisters |= mask;
|
|
||||||
|
|
||||||
info.PreAllocated = true;
|
|
||||||
info.Register = selectedReg;
|
|
||||||
|
|
||||||
vecReservedCount++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (intReservedCount + vecReservedCount == 14)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int sequence = 0;
|
int sequence = 0;
|
||||||
|
|
||||||
for (int index = cfg.PostOrderBlocks.Length - 1; index >= 0; index--)
|
for (int index = cfg.PostOrderBlocks.Length - 1; index >= 0; index--)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue