diff options
author | Mike Pall <mike> | 2011-06-05 18:59:35 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2011-06-05 18:59:35 +0200 |
commit | 7ad4908a4880523c5822d006055dc5d6db4556ea (patch) | |
tree | ed031bb0133708d1eae03720f28d02d293b95a9c /src/lj_crecord.c | |
parent | b88eaa11f351257612657352daa0a76e60e66a75 (diff) | |
download | luajit-7ad4908a4880523c5822d006055dc5d6db4556ea.tar.gz luajit-7ad4908a4880523c5822d006055dc5d6db4556ea.tar.bz2 luajit-7ad4908a4880523c5822d006055dc5d6db4556ea.zip |
ARM: Fuse XLOAD/XSTORE operands.
Diffstat (limited to '')
-rw-r--r-- | src/lj_crecord.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/lj_crecord.c b/src/lj_crecord.c index ed5e8272..8373faaa 100644 --- a/src/lj_crecord.c +++ b/src/lj_crecord.c | |||
@@ -526,6 +526,13 @@ again: | |||
526 | idx = emitir(IRT(IR_BAND, IRT_INTP), idx, lj_ir_kintp(J, 1)); | 526 | idx = emitir(IRT(IR_BAND, IRT_INTP), idx, lj_ir_kintp(J, 1)); |
527 | sz = lj_ctype_size(cts, (sid = ctype_cid(ct->info))); | 527 | sz = lj_ctype_size(cts, (sid = ctype_cid(ct->info))); |
528 | idx = crec_reassoc_ofs(J, idx, &ofs, sz); | 528 | idx = crec_reassoc_ofs(J, idx, &ofs, sz); |
529 | #if LJ_TARGET_ARM | ||
530 | /* Hoist base add to allow fusion of shifts into operands. */ | ||
531 | if (LJ_LIKELY(J->flags & JIT_F_OPT_LOOP) && ofs && (sz == 1 || sz == 4)) { | ||
532 | ptr = emitir(IRT(IR_ADD, IRT_PTR), ptr, lj_ir_kintp(J, ofs)); | ||
533 | ofs = 0; | ||
534 | } | ||
535 | #endif | ||
529 | idx = emitir(IRT(IR_MUL, IRT_INTP), idx, lj_ir_kintp(J, sz)); | 536 | idx = emitir(IRT(IR_MUL, IRT_INTP), idx, lj_ir_kintp(J, sz)); |
530 | ptr = emitir(IRT(IR_ADD, IRT_PTR), idx, ptr); | 537 | ptr = emitir(IRT(IR_ADD, IRT_PTR), idx, ptr); |
531 | } | 538 | } |