From: Toni Wilen Date: Tue, 3 Jul 2018 18:57:54 +0000 (+0300) Subject: FACOS fix. X-Git-Tag: 4010~33 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=10de141cb691fbdd3dd1b439819ea397d808bfe3;p=francis%2Fwinuae.git FACOS fix. --- diff --git a/jit/codegen_x86.cpp b/jit/codegen_x86.cpp index 5dffefaf..8bd53e85 100644 --- a/jit/codegen_x86.cpp +++ b/jit/codegen_x86.cpp @@ -4999,7 +4999,7 @@ LOWFUNC(NONE,NONE,2,raw_fasin_rr,(FW d, FR s)) } LENDFUNC(NONE,NONE,2,raw_fasin_rr,(FW d, FR s)) -static uae_u32 pihalf[] = {0x2168c234, 0xc90fdaa2, 0x3fff}; // LSB=0 to get acos(1)=0 +static uae_u32 pihalf[] = {0x2168c235, 0xc90fdaa2, 0x3fff}; LOWFUNC(NONE,NONE,2,raw_facos_rr,(FW d, FR s)) { diff --git a/jit/compemu_fpp.cpp b/jit/compemu_fpp.cpp index ebbaa6b2..e35de7a6 100644 --- a/jit/compemu_fpp.cpp +++ b/jit/compemu_fpp.cpp @@ -1186,7 +1186,7 @@ void comp_fpp_opp (uae_u32 opcode, uae_u16 extra) fneg_rr (dreg, sreg); break; case 0x1c: /* FACOS */ -#if USE_X86_FPUCW +#if 0 && USE_X86_FPUCW if ((regs.fpcr & 0x30) != 0x10) { /* use round to zero */ mov_l_ri (S1, (regs.fpcr & 0xC0) | 0x10); fldcw_m_indexed (S1, uae_p32(x86_fpucw)); diff --git a/od-win32/fpp_native_msvc_80bit.cpp b/od-win32/fpp_native_msvc_80bit.cpp index 80f3e075..80bfcc0f 100644 --- a/od-win32/fpp_native_msvc_80bit.cpp +++ b/od-win32/fpp_native_msvc_80bit.cpp @@ -345,11 +345,24 @@ static void xfp_resetnormal(fpdata *fp) fp_round_double(fp); } +// precision bits 8,9 +// +// 24-bit: 00 +// 32-bit: 10 +// 64-bit: 11 + +// rounding bits 10,11 +// +// nearest even: 00 +// down toward infinity: 01 +// up toward infinity 10 +// toward zero: 11 + static void xfp_setnormal(void) { uae_u16 v = fpx_mode; v |= 3 << 8; // extended - v &= ~(10 << 3); // round nearest + v &= ~(3 << 10); // round nearest if (v != fpx_mode) { xfp_fldcw(&v); xfp_swprec = fs.floatx80_rounding_precision; diff --git a/od-win32/fpux64_80.asm b/od-win32/fpux64_80.asm index 4397d51c..81e63eef 100644 --- a/od-win32/fpux64_80.asm +++ b/od-win32/fpux64_80.asm @@ -489,4 +489,4 @@ align 4 one: dd 1.0 pihalf: - dd 0x2168c234,0xc90fdaa2,0x00003fff + dd 0x2168c235,0xc90fdaa2,0x00003fff diff --git a/od-win32/fpux86_80.asm b/od-win32/fpux86_80.asm index ffe780ec..4549b820 100644 --- a/od-win32/fpux86_80.asm +++ b/od-win32/fpux86_80.asm @@ -512,4 +512,4 @@ align 4 one: dd 1.0 pihalf: - dd 0x2168c234,0xc90fdaa2,0x00003fff + dd 0x2168c235,0xc90fdaa2,0x00003fff