• 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
instruction-selector-arm.cc 67.1 KB