• jacob.bramley@arm.com's avatar
    A64: Fix a few simulation inaccuracies. · cf43195d
    jacob.bramley@arm.com authored
      - 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=
    R=jochen@chromium.org
    
    Review URL: https://codereview.chromium.org/199083005
    
    git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19927 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
    cf43195d
Name
Last commit
Last update
..
OWNERS Loading commit data...
assembler-a64-inl.h Loading commit data...
assembler-a64.cc Loading commit data...
assembler-a64.h Loading commit data...
builtins-a64.cc Loading commit data...
code-stubs-a64.cc Loading commit data...
code-stubs-a64.h Loading commit data...
codegen-a64.cc Loading commit data...
codegen-a64.h Loading commit data...
constants-a64.h Loading commit data...
cpu-a64.cc Loading commit data...
cpu-a64.h Loading commit data...
debug-a64.cc Loading commit data...
decoder-a64-inl.h Loading commit data...
decoder-a64.cc Loading commit data...
decoder-a64.h Loading commit data...
deoptimizer-a64.cc Loading commit data...
disasm-a64.cc Loading commit data...
disasm-a64.h Loading commit data...
frames-a64.cc Loading commit data...
frames-a64.h Loading commit data...
full-codegen-a64.cc Loading commit data...
ic-a64.cc Loading commit data...
instructions-a64.cc Loading commit data...
instructions-a64.h Loading commit data...
instrument-a64.cc Loading commit data...
instrument-a64.h Loading commit data...
lithium-a64.cc Loading commit data...
lithium-a64.h Loading commit data...
lithium-codegen-a64.cc Loading commit data...
lithium-codegen-a64.h Loading commit data...
lithium-gap-resolver-a64.cc Loading commit data...
lithium-gap-resolver-a64.h Loading commit data...
macro-assembler-a64-inl.h Loading commit data...
macro-assembler-a64.cc Loading commit data...
macro-assembler-a64.h Loading commit data...
regexp-macro-assembler-a64.cc Loading commit data...
regexp-macro-assembler-a64.h Loading commit data...
simulator-a64.cc Loading commit data...
simulator-a64.h Loading commit data...
stub-cache-a64.cc Loading commit data...
utils-a64.cc Loading commit data...
utils-a64.h Loading commit data...