add 'ADC 32bit and Overflow' test
This commit is contained in:
parent
eafc58c9f2
commit
df8fbd77f2
1 changed files with 30 additions and 6 deletions
|
@ -5,13 +5,37 @@ namespace Ryujinx.Tests.Cpu
|
||||||
{
|
{
|
||||||
public class CpuTestAlu : CpuTest
|
public class CpuTestAlu : CpuTest
|
||||||
{
|
{
|
||||||
[TestCase(2u, 3u, 6ul, true)]
|
public void Adc()
|
||||||
[TestCase(2u, 3u, 5ul, false)]
|
|
||||||
public void Adc(uint A, uint B, ulong Result, bool CarryTest)
|
|
||||||
{
|
{
|
||||||
// ADC X0, X1, X2
|
// ADC X0, X1, X2 64bit
|
||||||
AThreadState ThreadState = SingleOpcode(0x9A020020, X1: A, X2: B, Carry: CarryTest);
|
AThreadState ThreadState = SingleOpcode(0x9A020020, X1: 2, X2: 3, Carry: true);
|
||||||
Assert.AreEqual(Result, ThreadState.X0);
|
Assert.AreEqual(6, ThreadState.X0);
|
||||||
|
|
||||||
|
Reset();
|
||||||
|
|
||||||
|
ThreadState = SingleOpcode(0x9A020020, X1: 2, X2: 3, Carry: false);
|
||||||
|
Assert.AreEqual(5, ThreadState.X0);
|
||||||
|
|
||||||
|
Reset();
|
||||||
|
|
||||||
|
// ADC W0, W1, W2 32bit
|
||||||
|
ThreadState = SingleOpcode(0x1A020020, X1: 2, X2: 3, Carry: true);
|
||||||
|
Assert.AreEqual(6, ThreadState.X0);
|
||||||
|
|
||||||
|
Reset();
|
||||||
|
|
||||||
|
ThreadState = SingleOpcode(0x1A020020, X1: 2, X2: 3, Carry: false);
|
||||||
|
Assert.AreEqual(5, ThreadState.X0);
|
||||||
|
|
||||||
|
Reset();
|
||||||
|
|
||||||
|
// ADC Overflow
|
||||||
|
ThreadState = SingleOpcode(0x1A020020, X1: 0xFFFFFFFF, X2: 0x2, Carry: false);
|
||||||
|
Assert.AreEqual(0x1, ThreadState.X0);
|
||||||
|
Assert.AreEqual(true, ThreadState.Carry);
|
||||||
|
|
||||||
|
Reset();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue