aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2012-04-26 23:31:10 +0200
committerMike Pall <mike>2012-04-26 23:33:20 +0200
commit904cc1facb535b575d8d0c7b83732ce644f161fb (patch)
tree2a740dbb6bf0e4662dab3f9410460a286b5524b6 /src
parent543963146041b8383171fa267fab351acdf50d35 (diff)
downloadluajit-904cc1facb535b575d8d0c7b83732ce644f161fb.tar.gz
luajit-904cc1facb535b575d8d0c7b83732ce644f161fb.tar.bz2
luajit-904cc1facb535b575d8d0c7b83732ce644f161fb.zip
ARM: Reorder type/value tests to silence Valgrind.
Diffstat (limited to 'src')
-rw-r--r--src/buildvm_arm.dasc12
-rw-r--r--src/buildvm_arm.h12
-rw-r--r--src/lj_asm_arm.h9
3 files changed, 16 insertions, 17 deletions
diff --git a/src/buildvm_arm.dasc b/src/buildvm_arm.dasc
index 2e0914a1..dd4b7c89 100644
--- a/src/buildvm_arm.dasc
+++ b/src/buildvm_arm.dasc
@@ -935,8 +935,8 @@ static void build_subroutines(BuildCtx *ctx)
935 | ldrd CARG34, NODE:INS->key // STALL: early NODE:INS. 935 | ldrd CARG34, NODE:INS->key // STALL: early NODE:INS.
936 | ldrd CARG12, NODE:INS->val 936 | ldrd CARG12, NODE:INS->val
937 | ldr NODE:INS, NODE:INS->next 937 | ldr NODE:INS, NODE:INS->next
938 | cmp CARG3, STR:RC 938 | checktp CARG4, LJ_TSTR
939 | checktpeq CARG4, LJ_TSTR 939 | cmpeq CARG3, STR:RC
940 | beq >5 940 | beq >5
941 | cmp NODE:INS, #0 941 | cmp NODE:INS, #0
942 | bne <3 942 | bne <3
@@ -3111,8 +3111,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
3111 | ldrd CARG12, NODE:INS->key // STALL: early NODE:INS. 3111 | ldrd CARG12, NODE:INS->key // STALL: early NODE:INS.
3112 | ldrd CARG34, NODE:INS->val 3112 | ldrd CARG34, NODE:INS->val
3113 | ldr NODE:INS, NODE:INS->next 3113 | ldr NODE:INS, NODE:INS->next
3114 | cmp CARG1, STR:RC 3114 | checktp CARG2, LJ_TSTR
3115 | checktpeq CARG2, LJ_TSTR 3115 | cmpeq CARG1, STR:RC
3116 | bne >4 3116 | bne >4
3117 | checktp CARG4, LJ_TNIL 3117 | checktp CARG4, LJ_TNIL
3118 | beq >5 3118 | beq >5
@@ -3242,8 +3242,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
3242 | ldrd CARG12, NODE:INS->key 3242 | ldrd CARG12, NODE:INS->key
3243 | ldr CARG4, NODE:INS->val.it 3243 | ldr CARG4, NODE:INS->val.it
3244 | ldr NODE:CARG3, NODE:INS->next 3244 | ldr NODE:CARG3, NODE:INS->next
3245 | cmp CARG1, STR:RC 3245 | checktp CARG2, LJ_TSTR
3246 | checktpeq CARG2, LJ_TSTR 3246 | cmpeq CARG1, STR:RC
3247 | bne >5 3247 | bne >5
3248 | ldrb CARG2, TAB:RB->marked 3248 | ldrb CARG2, TAB:RB->marked
3249 | checktp CARG4, LJ_TNIL // Key found, but nil value? 3249 | checktp CARG4, LJ_TNIL // Key found, but nil value?
diff --git a/src/buildvm_arm.h b/src/buildvm_arm.h
index 2c97cee0..81229181 100644
--- a/src/buildvm_arm.h
+++ b/src/buildvm_arm.h
@@ -796,9 +796,9 @@ static const unsigned int build_actionlist[5777] = {
7960x000c8100, 7960x000c8100,
7970xe51ee000, 7970xe51ee000,
7980x000d8180, 7980x000d8180,
7990xe152000b, 7990xe3730000,
8000x03730000,
8010x000a0000, 8000x000a0000,
8010x0152000b,
8020x0a000000, 8020x0a000000,
8030x00050005, 8030x00050005,
8040xe35e0000, 8040xe35e0000,
@@ -4613,9 +4613,9 @@ static const unsigned int build_actionlist[5777] = {
46130x000c8100, 46130x000c8100,
46140xe51ee000, 46140xe51ee000,
46150x000d8180, 46150x000d8180,
46160xe150000b, 46160xe3710000,
46170x03710000,
46180x000a0000, 46170x000a0000,
46180x0150000b,
46190x1a000000, 46190x1a000000,
46200x00050004, 46200x00050004,
46210xe3730000, 46210xe3730000,
@@ -4807,9 +4807,9 @@ static const unsigned int build_actionlist[5777] = {
48070x000d8180, 48070x000d8180,
48080xe51e2000, 48080xe51e2000,
48090x000d8180, 48090x000d8180,
48100xe150000b, 48100xe3710000,
48110x03710000,
48120x000a0000, 48110x000a0000,
48120x0150000b,
48130x1a000000, 48130x1a000000,
48140x00050005, 48140x00050005,
48150xe55c1000, 48150xe55c1000,
diff --git a/src/lj_asm_arm.h b/src/lj_asm_arm.h
index a618c8a9..77751ca9 100644
--- a/src/lj_asm_arm.h
+++ b/src/lj_asm_arm.h
@@ -584,8 +584,8 @@ static void asm_href(ASMState *as, IRIns *ir, IROp merge)
584 else 584 else
585 emit_branch(as, ARMF_CC(ARMI_B, CC_EQ), l_end); 585 emit_branch(as, ARMF_CC(ARMI_B, CC_EQ), l_end);
586 if (!irt_ispri(kt)) { 586 if (!irt_ispri(kt)) {
587 emit_nm(as, ARMF_CC(ARMI_CMP, CC_EQ)^khi, tmp+1, keyhi); 587 emit_nm(as, ARMF_CC(ARMI_CMP, CC_EQ)^k, tmp, key);
588 emit_nm(as, ARMI_CMP^k, tmp, key); 588 emit_nm(as, ARMI_CMP^khi, tmp+1, keyhi);
589 emit_lsox(as, ARMI_LDRD, tmp, dest, (int32_t)offsetof(Node, key)); 589 emit_lsox(as, ARMI_LDRD, tmp, dest, (int32_t)offsetof(Node, key));
590 } else { 590 } else {
591 emit_n(as, ARMI_CMP^khi, tmp); 591 emit_n(as, ARMI_CMP^khi, tmp);
@@ -674,10 +674,9 @@ static void asm_hrefk(ASMState *as, IRIns *ir)
674 (int32_t)ir_knum(irkey)->u32.hi, allow); 674 (int32_t)ir_knum(irkey)->u32.hi, allow);
675 emit_opk(as, ARMI_CMP, 0, key, 675 emit_opk(as, ARMI_CMP, 0, key,
676 (int32_t)ir_knum(irkey)->u32.lo, allow); 676 (int32_t)ir_knum(irkey)->u32.lo, allow);
677 } else if (ra_hasreg(key)) {
678 emit_n(as, ARMF_CC(ARMI_CMN, CC_EQ)|ARMI_K12|-irt_toitype(irkey->t), type);
679 emit_opk(as, ARMI_CMP, 0, key, irkey->i, allow);
680 } else { 677 } else {
678 if (ra_hasreg(key))
679 emit_opk(as, ARMF_CC(ARMI_CMP, CC_EQ), 0, key, irkey->i, allow);
681 emit_n(as, ARMI_CMN|ARMI_K12|-irt_toitype(irkey->t), type); 680 emit_n(as, ARMI_CMN|ARMI_K12|-irt_toitype(irkey->t), type);
682 } 681 }
683 emit_lso(as, ARMI_LDR, type, idx, kofs+4); 682 emit_lso(as, ARMI_LDR, type, idx, kofs+4);