• pierre.langlois's avatar
    [turbofan] ARM: Support shifted indexes in loads and stores · 11b661f4
    pierre.langlois authored
    This patch is a follow up to https://codereview.chromium.org/1972103002/
    adding support for the `Operand_R_LSL_I` addressing mode to loads and
    stores for ARM.
    
    Just as the ARM64 implementation, the shift + load/store pattern is only
    really relevant to the interpreter. For this reason, this patch does not
    add support for the other addressing modes (`R_LSR_I`, `R_ASR_I` and
    `R_ROR_I`) as I haven't seen those pattern being generated. Additionally,
    the optimization is restricted 32 bit loads and stores.
    
    kind = BYTECODE_HANDLER
    name = Star
    compiler = turbofan
    Instructions (size = 40)
    0x22a5f860     0  e2851001       add r1, r5, #1
    0x22a5f864     4  e19610d1       ldrsb r1, [r6, +r1]
    0x22a5f868     8  e1a0200b       mov r2, fp
    0x22a5f86c    12  e7820101       str r0, [r2, +r1, lsl #2]
                                     ^^^^^^^^^^^^^^^^^^^^^^^^^
    0x22a5f870    16  e2855002       add r5, r5, #2
    0x22a5f874    20  e7d61005       ldrb r1, [r6, +r5]
    0x22a5f878    24  e7981101       ldr r1, [r8, +r1, lsl #2]
                                     ^^^^^^^^^^^^^^^^^^^^^^^^^
    0x22a5f87c    28  e12fff11       bx r1
    
    BUG=
    
    Review-Url: https://codereview.chromium.org/1974263002
    Cr-Commit-Position: refs/heads/master@{#36381}
    11b661f4
Name
Last commit
Last update
..
base Loading commit data...
compiler Loading commit data...
heap Loading commit data...
interpreter Loading commit data...
libplatform Loading commit data...
wasm Loading commit data...
DEPS Loading commit data...
cancelable-tasks-unittest.cc Loading commit data...
char-predicates-unittest.cc Loading commit data...
counters-unittest.cc Loading commit data...
locked-queue-unittest.cc Loading commit data...
run-all-unittests.cc Loading commit data...
test-utils.cc Loading commit data...
test-utils.h Loading commit data...
unittests.gyp Loading commit data...
unittests.isolate Loading commit data...
unittests.status Loading commit data...