• Pierre Langlois's avatar
    [arm] Support splitting add with immediate instructions · d5b29f43
    Pierre Langlois authored
    When an immediate does not fit an add instruction we use a temporary register to
    hold the value, using movw/movt to encode it. However, in order to remove a use
    of r9 in TurboFan's code generator, we need to cope with no scratch registers
    being available. That is to say that the destination and source registers are
    the same, and `ip` is not available to use.
    
    In this case, we can split an add instruction into a sequence of additions:
    ```
    UseScratchRegisterScope temps(...);
    Register my_scratch = temps.Acquire();
    __ add(r0, r0, Operand(0xabcd); // add r0, r0, #0xcd
                                    // add r0, r0, #0xab00
    ```
    
    As a drive-by fix, make the disassembler test fail if we expected a different
    number of instructions generated.
    
    Bug: v8:6553
    Change-Id: Ib7fcc765d28bccafe39257f47cd73f922c5873bf
    Reviewed-on: https://chromium-review.googlesource.com/685014Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
    Commit-Queue: Pierre Langlois <pierre.langlois@arm.com>
    Cr-Commit-Position: refs/heads/master@{#48491}
    d5b29f43
Name
Last commit
Last update
benchmarks Loading commit data...
build_overrides Loading commit data...
docs Loading commit data...
gni Loading commit data...
gypfiles Loading commit data...
include Loading commit data...
infra Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
third_party Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.editorconfig Loading commit data...
.git-blame-ignore-revs Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
ChangeLog Loading commit data...
DEPS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind Loading commit data...
Makefile Loading commit data...
Makefile.android Loading commit data...
OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...
snapshot_toolchain.gni Loading commit data...