mirror of
https://git.suyu.dev/suyu/suyu.git
synced 2024-11-22 14:52:45 +01:00
Merge pull request #263 from lioncash/sasx
Fix emulation of SASX and SSAX instructions.
This commit is contained in:
commit
f1ec1a0d2c
1 changed files with 4 additions and 4 deletions
|
@ -5724,7 +5724,7 @@ L_stm_s_takeabort:
|
|||
s16 a2 = ((state->Reg[src1] >> 0x10) & 0xFFFF);
|
||||
s16 b1 = (state->Reg[src2] & 0xFFFF);
|
||||
s16 b2 = ((state->Reg[src2] >> 0x10) & 0xFFFF);
|
||||
state->Reg[tar] = (a1 - a2)&0xFFFF | (((b1 - b2)&0xFFFF)<< 0x10);
|
||||
state->Reg[tar] = ((a1 - a2) & 0xFFFF) | (((b1 - b2)&0xFFFF)<< 0x10);
|
||||
return 1;
|
||||
}
|
||||
else if ((instr & 0xFF0) == 0xf10)//sadd16
|
||||
|
@ -5736,7 +5736,7 @@ L_stm_s_takeabort:
|
|||
s16 a2 = ((state->Reg[src1] >> 0x10) & 0xFFFF);
|
||||
s16 b1 = (state->Reg[src2] & 0xFFFF);
|
||||
s16 b2 = ((state->Reg[src2] >> 0x10) & 0xFFFF);
|
||||
state->Reg[tar] = (a1 + a2)&0xFFFF | (((b1 + b2)&0xFFFF)<< 0x10);
|
||||
state->Reg[tar] = ((a1 + a2) & 0xFFFF) | (((b1 + b2)&0xFFFF)<< 0x10);
|
||||
return 1;
|
||||
}
|
||||
else if ((instr & 0xFF0) == 0xf50)//ssax
|
||||
|
@ -5748,7 +5748,7 @@ L_stm_s_takeabort:
|
|||
s16 a2 = ((state->Reg[src1] >> 0x10) & 0xFFFF);
|
||||
s16 b1 = (state->Reg[src2] & 0xFFFF);
|
||||
s16 b2 = ((state->Reg[src2] >> 0x10) & 0xFFFF);
|
||||
state->Reg[tar] = (a1 - b2) & 0xFFFF | (((a2 + b1) & 0xFFFF) << 0x10);
|
||||
state->Reg[tar] = ((a1 + b2) & 0xFFFF) | (((a2 - b1) & 0xFFFF) << 0x10);
|
||||
return 1;
|
||||
}
|
||||
else if ((instr & 0xFF0) == 0xf30)//sasx
|
||||
|
@ -5760,7 +5760,7 @@ L_stm_s_takeabort:
|
|||
s16 a2 = ((state->Reg[src1] >> 0x10) & 0xFFFF);
|
||||
s16 b1 = (state->Reg[src2] & 0xFFFF);
|
||||
s16 b2 = ((state->Reg[src2] >> 0x10) & 0xFFFF);
|
||||
state->Reg[tar] = (a2 - b1) & 0xFFFF | (((a2 + b1) & 0xFFFF) << 0x10);
|
||||
state->Reg[tar] = ((a1 - b2) & 0xFFFF) | (((a2 + b1) & 0xFFFF) << 0x10);
|
||||
return 1;
|
||||
}
|
||||
else printf ("Unhandled v6 insn: sadd/ssub\n");
|
||||
|
|
Loading…
Reference in a new issue