View Single Post
Old 01 May 2018, 23:41   #259
PeterK
Registered User
 
Join Date: Apr 2005
Location: digital hell, Germany, after 1984, but worse
Posts: 3,378
Quote:
Originally Posted by Toni Wilen View Post
Beta 7:
- UAEGFX RTG 15/16/24-bit graphics corruption fixed (b1).

Extended precision host FPU mode updates:
- Some FPU instructions used wrong precision.
- Supports divbyzero, underflow, overflow and inexact2 status bits and exceptions. Only in non-JIT FPU mode. (and no software really cares)
- FCMP uses softfloat comparison code if more compatible is enabled (FCMP can't be directly mapped to host FPU), if not, it uses simple and quick test. (Difference: infinities, nans etc.. special cases only work in more compatible mode. No normal programs care, as usual)
- Uses softfloat routines for rarely used functions (most trigometric, fexpman, fscale etc). Previously: extended to double conversion -> c-library math function -> double to extended conversion. Which probably wasn't noticeably faster.

I think this is good compromise between speed and accuracy, commonly used operations use native code (that native FPU supports directly, x86 FPU does not directly support all operations that 6888x supports), complex and rarely used operations use softfloat code.

NOTE: Host FPU extended precision FPU emulation is now enabled by default and always overrides config file saved 64-bit mode. If something works strangely, load your config, change FPU mode to 64-bit/softfloat and try again: if it fixes the problem -> report the problem immediately.
Thank you for the HiColor bug fix, Toni. That's ok now.

But there is a small bug in the 80 bit FPU code in non-Jit mode: all Tan() and ATan() results are just NaN. Jit is OK and 64 bit FPU is also OK.

Btw, it takes nearly 30 seconds in non-Jit mode to load my background JPG image and scale it from 1920x1200 to 1280x800. With Jit it comes immediately.

Update:
The FPU constants as generated by softfloat are 100 % identical to the 68881.

The 80 bit host results (Jit and non-Jit) are still ok, except for a wrong long double infinity number (highest bit in the mantissa).

The 64 bit FPU constants have several saturation bugs for the very large numbers, which was much better once in WinUAE 1.0 and still in v2.4.0, but I didn't check all versions to find out where the wrong large number handling starts.
Attached Files
File Type: lha FpuConstants.lha (1.0 KB, 98 views)

Last edited by PeterK; 02 May 2018 at 01:23.
PeterK is offline  
 
Page generated in 0.04367 seconds with 12 queries