aboutsummaryrefslogtreecommitdiff
path: root/src/lj_crecord.c
diff options
context:
space:
mode:
authorMike Pall <mike>2011-06-05 18:59:35 +0200
committerMike Pall <mike>2011-06-05 18:59:35 +0200
commit7ad4908a4880523c5822d006055dc5d6db4556ea (patch)
treeed031bb0133708d1eae03720f28d02d293b95a9c /src/lj_crecord.c
parentb88eaa11f351257612657352daa0a76e60e66a75 (diff)
downloadluajit-7ad4908a4880523c5822d006055dc5d6db4556ea.tar.gz
luajit-7ad4908a4880523c5822d006055dc5d6db4556ea.tar.bz2
luajit-7ad4908a4880523c5822d006055dc5d6db4556ea.zip
ARM: Fuse XLOAD/XSTORE operands.
Diffstat (limited to '')
-rw-r--r--src/lj_crecord.c7
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 }