• Clemens Hammacher's avatar
    [Liftoff][ia32] Avoid register overwrite on 64 bit shift · c83af36f
    Clemens Hammacher authored
    On ia32, the implementation of 64-bit shifts first moved {src} into
    {dst}, then {amount} into {ecx}. This fails if {dst} overlaps {amount},
    because {amount} would be overwritten before being used. Just changing
    the order to these two moves would also not be correct, since {src} can
    contain {ecx}.
    Thus, implement this via a general parallel register move, which
    resolves cycles automatically.
    
    R=titzer@chromium.org
    
    Bug: v8:7589, v8:6600
    Change-Id: I2556b9aa66a89a067372b7713dbbb3d71d2f923f
    Reviewed-on: https://chromium-review.googlesource.com/981134
    Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
    Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#52327}
    c83af36f
Name
Last commit
Last update
..
arm Loading commit data...
arm64 Loading commit data...
ia32 Loading commit data...
mips Loading commit data...
mips64 Loading commit data...
ppc Loading commit data...
s390 Loading commit data...
x64 Loading commit data...
DEPS Loading commit data...
liftoff-assembler-defs.h Loading commit data...
liftoff-assembler.cc Loading commit data...
liftoff-assembler.h Loading commit data...
liftoff-compiler.cc Loading commit data...
liftoff-register.h Loading commit data...