diff options
Diffstat (limited to 'src/emu')
| -rw-r--r-- | src/emu/x64run660f.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/emu/x64run660f.c b/src/emu/x64run660f.c index f3679015..00a684e3 100644 --- a/src/emu/x64run660f.c +++ b/src/emu/x64run660f.c @@ -248,6 +248,27 @@ int Run660F(x64emu_t *emu, rex_t rex) } break; + case 0x08: /* PSIGNB Gx, Ex */ + nextop = F8; + GETEX(0); + GETGX; + for (int i=0; i<16; ++i) + GX->sb[i] *= (EX->sb[i]<0)?-1:((EX->sb[i]>0)?1:0); + break; + case 0x09: /* PSIGNW Gx, Ex */ + nextop = F8; + GETEX(0); + GETGX; + for (int i=0; i<8; ++i) + GX->sw[i] *= (EX->sw[i]<0)?-1:((EX->sw[i]>0)?1:0); + break; + case 0x0A: /* PSIGND Gx, Ex */ + nextop = F8; + GETEX(0); + GETGX; + for (int i=0; i<4; ++i) + GX->sd[i] *= (EX->sd[i]<0)?-1:((EX->sd[i]>0)?1:0); + break; case 0x0B: /* PMULHRSW Gx, Ex */ nextop = F8; GETEX(0); |