[PATCH v3 13/19] RISC-V: Add the RV32 libm-test-ulps

Joseph Myers joseph@codesourcery.com
Mon Jul 13 21:59:20 GMT 2020


On Mon, 13 Jul 2020, Carlos O'Donell via Libc-alpha wrote:

> > If results on QEMU and on hardware (for the same binaries) don't match, 
> > that indicates a bug in one or the other, which you could find by 
> > identifying the exact instruction at which different floating-point values 
> > first appear.  (You can get different results from compilation with 
> > different options or compiler versions, however, without any such bug, 
> > because of e.g. changes in when the compiler chose to contract an 
> > expression to use fused multiply-add.)
> 
> Is it really a "bug?" QEMU as an emulator could be taking liberties that
> the hardware does not for the express purpose of improving emulated
> performance? Is it ever QEMU's contract that it will operate identically
> to hardware given the same software configuration?

I believe the semantics of the RISC-V floating-point instructions are 
fully specified (including details such as choice of NaN results) and so 
it's a bug for either hardware or emulator to produce results other than 
those in the architecture specification.

Sometimes architecture specifications do not fully specify results for all 
floating-point instructions.  For example, the Power instructions to 
estimate reciprocal or reciprocal square root have accuracy bounds in the 
architecture specification, but the exact result is not specified, so it 
would be legitimate for hardware and emulation to produce different 
results for those instructions.  But AArch64 has an instruction to 
estimate reciprocal square root whose exact semantics are fully specified 
in the architecture specification, meaning it's a bug if emulation fails 
to produce a result with exactly the same bit-pattern as hardware.  My 
understanding is that all the RISC-V floating-point instructions are fully 
specified, as on AArch64.

-- 
Joseph S. Myers
joseph@codesourcery.com


More information about the Libc-alpha mailing list