11b661f414
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} |
||
---|---|---|
.. | ||
arm | ||
arm64 | ||
ia32 | ||
mips | ||
mips64 | ||
ppc | ||
s390 | ||
x64 | ||
branch-elimination-unittest.cc | ||
coalesced-live-ranges-unittest.cc | ||
common-operator-reducer-unittest.cc | ||
common-operator-unittest.cc | ||
compiler-test-utils.h | ||
control-equivalence-unittest.cc | ||
control-flow-optimizer-unittest.cc | ||
dead-code-elimination-unittest.cc | ||
diamond-unittest.cc | ||
effect-control-linearizer-unittest.cc | ||
escape-analysis-unittest.cc | ||
graph-reducer-unittest.cc | ||
graph-reducer-unittest.h | ||
graph-trimmer-unittest.cc | ||
graph-unittest.cc | ||
graph-unittest.h | ||
instruction-selector-unittest.cc | ||
instruction-selector-unittest.h | ||
instruction-sequence-unittest.cc | ||
instruction-sequence-unittest.h | ||
int64-lowering-unittest.cc | ||
js-builtin-reducer-unittest.cc | ||
js-create-lowering-unittest.cc | ||
js-intrinsic-lowering-unittest.cc | ||
js-operator-unittest.cc | ||
js-type-feedback-unittest.cc | ||
js-typed-lowering-unittest.cc | ||
linkage-tail-call-unittest.cc | ||
live-range-builder.h | ||
live-range-unittest.cc | ||
liveness-analyzer-unittest.cc | ||
load-elimination-unittest.cc | ||
loop-peeling-unittest.cc | ||
machine-operator-reducer-unittest.cc | ||
machine-operator-unittest.cc | ||
move-optimizer-unittest.cc | ||
node-cache-unittest.cc | ||
node-matchers-unittest.cc | ||
node-properties-unittest.cc | ||
node-test-utils.cc | ||
node-test-utils.h | ||
node-unittest.cc | ||
opcodes-unittest.cc | ||
register-allocator-unittest.cc | ||
schedule-unittest.cc | ||
scheduler-rpo-unittest.cc | ||
scheduler-unittest.cc | ||
simplified-operator-reducer-unittest.cc | ||
simplified-operator-unittest.cc | ||
state-values-utils-unittest.cc | ||
tail-call-optimization-unittest.cc | ||
typer-unittest.cc | ||
value-numbering-reducer-unittest.cc | ||
zone-pool-unittest.cc |