}
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))
{
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));
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;
one:
dd 1.0
pihalf:
- dd 0x2168c234,0xc90fdaa2,0x00003fff
+ dd 0x2168c235,0xc90fdaa2,0x00003fff
one:
dd 1.0
pihalf:
- dd 0x2168c234,0xc90fdaa2,0x00003fff
+ dd 0x2168c235,0xc90fdaa2,0x00003fff