• Andreas Haas's avatar
    [arm] Pass float immediates to vmov as uint32_t · 08688b39
    Andreas Haas authored
    This CL changes for floats what https://chromium-review.googlesource.com/c/558964/
    changed for doubles.
    
    Original message:
    On x86, signalling NaNs get converted to quiet NaNs when they get push
    on the stack and popped again. This happens in the code generation for
    arm, specifically for the vmov instruction with the immediate parameter.
    This CL replaces the vmov function in assembler-arm to take the
    immediate as a uint64_t instead of a double, to guarantee that the bit
    pattern does not change even if the parameter is a signalling NaN.
    
    New in this CL:
    Although src/double.h existed already, src/float.h did not exist yet.
    I created the file in this CL, and moved the classes Float32 and
    Float64 there, which already existed in src/deoptimizer.h.
    
    R=titzer@chromium.org, martyn.capewell@arm.com, v8-arm-ports@googlegroups.com
    
    BUG=v8:6564
    
    Change-Id: I6a3f1f154af9c8cd4bb8e7e856235d3eee5e9edd
    Reviewed-on: https://chromium-review.googlesource.com/561009
    Commit-Queue: Andreas Haas <ahaas@chromium.org>
    Reviewed-by: 's avatarMartyn Capewell <martyn.capewell@arm.com>
    Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#46473}
    08688b39
test-disasm-arm.cc 61.6 KB