Reviewers: ulan, jochen,
Description:
A64: Fix a few simulation inaccuracies.
- Return the correct NaN when an invalid operation generates a NaN.
- When one or more operands are NaN, handle them as the processor
would, prioritising signalling NaNs and making them quiet.
- Fix fmadd and related instructions:
- Fnmadd is fma(-n, m, -a), not -fma(n, m, a).
- Some common libc implementations incorrectly implement fma for
zero results, so work around these cases.
- Replace some unreliable tests.
This patch also adds support for Default-NaN mode, since once all the
other work was done, it only required a couple of lines of code.
Default-NaN mode was used for an optimisation in ARM, and it should now
be possible to apply the same optimisation to A64.
BUG=
Please review this at https://codereview.chromium.org/199083005/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files (+1342, -367 lines):
M src/a64/constants-a64.h
M src/a64/instructions-a64.h
M src/a64/simulator-a64.h
M src/a64/simulator-a64.cc
M src/a64/utils-a64.h
M test/cctest/test-assembler-a64.cc
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.