T32: Implement load/store single (immediate) (#3186)
* T32: Implement load/store single (immediate) * tests * tidy formatting * address comments
This commit is contained in:
parent
13f5294aa3
commit
6a1a03566a
6 changed files with 644 additions and 1 deletions
|
@ -286,6 +286,35 @@ namespace Ryujinx.Tests.Cpu
|
|||
Assert.That(GetContext().Pstate, Is.EqualTo(finalCpsr));
|
||||
}
|
||||
|
||||
public void RunPrecomputedTestCase(PrecomputedMemoryThumbTestCase test)
|
||||
{
|
||||
byte[] testMem = new byte[Size];
|
||||
|
||||
for (ulong i = 0; i < Size; i += 2)
|
||||
{
|
||||
testMem[i + 0] = (byte)((i + DataBaseAddress) >> 0);
|
||||
testMem[i + 1] = (byte)((i + DataBaseAddress) >> 8);
|
||||
}
|
||||
|
||||
SetWorkingMemory(0, testMem);
|
||||
|
||||
RunPrecomputedTestCase(new PrecomputedThumbTestCase(){
|
||||
Instructions = test.Instructions,
|
||||
StartRegs = test.StartRegs,
|
||||
FinalRegs = test.FinalRegs,
|
||||
});
|
||||
|
||||
foreach (var delta in test.MemoryDelta)
|
||||
{
|
||||
testMem[delta.Address - DataBaseAddress + 0] = (byte)(delta.Value >> 0);
|
||||
testMem[delta.Address - DataBaseAddress + 1] = (byte)(delta.Value >> 8);
|
||||
}
|
||||
|
||||
byte[] mem = _memory.GetSpan(DataBaseAddress, (int)Size).ToArray();
|
||||
|
||||
Assert.That(mem, Is.EqualTo(testMem), "testmem");
|
||||
}
|
||||
|
||||
protected void SetWorkingMemory(uint offset, byte[] data)
|
||||
{
|
||||
_memory.Write(DataBaseAddress + offset, data);
|
||||
|
@ -641,4 +670,4 @@ namespace Ryujinx.Tests.Cpu
|
|||
_context.SetFPstateFlag(FPState.VFlag, (fpscr & (1u << (int)FPState.VFlag)) != 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue