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.

Reply via email to