From 486aa58b157c74d2d0623eecd08489fb520a5510 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Sun, 11 Jul 2021 21:58:59 +0200 Subject: Added 66 0F 3A 0A opcode (for #33) --- src/emu/x64run660f.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src') diff --git a/src/emu/x64run660f.c b/src/emu/x64run660f.c index c4fabf44..5eee4f56 100644 --- a/src/emu/x64run660f.c +++ b/src/emu/x64run660f.c @@ -373,6 +373,30 @@ int Run660F(x64emu_t *emu, rex_t rex) case 0x3A: // these are some SSE3 & SSE4.x opcodes opcode = F8; switch(opcode) { + case 0x0A: // ROUNDSS Gx, Ex, u8 + nextop = F8; + GETEX(1); + GETGX; + tmp8u = F8; // ignoring bit 3 interupt thingy + if(tmp8u&4) + tmp8u = (emu->mxcsr>>13)&3; + else + tmp8u &= 3; + switch(tmp8u) { + case ROUND_Nearest: + GX->f[0] = floor(EX->f[0]+0.5); + break; + case ROUND_Down: + GX->f[0] = floor(EX->f[0]); + break; + case ROUND_Up: + GX->f[0] = ceil(EX->f[0]); + break; + case ROUND_Chop: + GX->f[0] = EX->f[0]; + break; + } + break; case 0x0B: // ROUNDSD Gx, Ex, u8 nextop = F8; GETEX(1); -- cgit 1.4.1