MIPS: Added ASSERTs to BranchShort to detect bad use of 'at' register.
Make sure 'at' and an immediate operand can't be used together in cases where 'at' would be overwritten by li. BUG= TEST= Review URL: http://codereview.chromium.org/7791019 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9072 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
65daf10c23
commit
3c04a9d71d
@ -1557,12 +1557,14 @@ void MacroAssembler::BranchShort(Label* L, Condition cond, Register rs,
|
||||
b(offset);
|
||||
break;
|
||||
case eq:
|
||||
ASSERT(!scratch.is(rs));
|
||||
r2 = scratch;
|
||||
li(r2, rt);
|
||||
offset = shifted_branch_offset(L, false);
|
||||
beq(rs, r2, offset);
|
||||
break;
|
||||
case ne:
|
||||
ASSERT(!scratch.is(rs));
|
||||
r2 = scratch;
|
||||
li(r2, rt);
|
||||
offset = shifted_branch_offset(L, false);
|
||||
@ -1574,6 +1576,7 @@ void MacroAssembler::BranchShort(Label* L, Condition cond, Register rs,
|
||||
offset = shifted_branch_offset(L, false);
|
||||
bgtz(rs, offset);
|
||||
} else {
|
||||
ASSERT(!scratch.is(rs));
|
||||
r2 = scratch;
|
||||
li(r2, rt);
|
||||
slt(scratch, r2, rs);
|
||||
@ -1590,6 +1593,7 @@ void MacroAssembler::BranchShort(Label* L, Condition cond, Register rs,
|
||||
offset = shifted_branch_offset(L, false);
|
||||
beq(scratch, zero_reg, offset);
|
||||
} else {
|
||||
ASSERT(!scratch.is(rs));
|
||||
r2 = scratch;
|
||||
li(r2, rt);
|
||||
slt(scratch, rs, r2);
|
||||
@ -1606,6 +1610,7 @@ void MacroAssembler::BranchShort(Label* L, Condition cond, Register rs,
|
||||
offset = shifted_branch_offset(L, false);
|
||||
bne(scratch, zero_reg, offset);
|
||||
} else {
|
||||
ASSERT(!scratch.is(rs));
|
||||
r2 = scratch;
|
||||
li(r2, rt);
|
||||
slt(scratch, rs, r2);
|
||||
@ -1618,6 +1623,7 @@ void MacroAssembler::BranchShort(Label* L, Condition cond, Register rs,
|
||||
offset = shifted_branch_offset(L, false);
|
||||
blez(rs, offset);
|
||||
} else {
|
||||
ASSERT(!scratch.is(rs));
|
||||
r2 = scratch;
|
||||
li(r2, rt);
|
||||
slt(scratch, r2, rs);
|
||||
@ -1631,6 +1637,7 @@ void MacroAssembler::BranchShort(Label* L, Condition cond, Register rs,
|
||||
offset = shifted_branch_offset(L, false);
|
||||
bgtz(rs, offset);
|
||||
} else {
|
||||
ASSERT(!scratch.is(rs));
|
||||
r2 = scratch;
|
||||
li(r2, rt);
|
||||
sltu(scratch, r2, rs);
|
||||
@ -1647,6 +1654,7 @@ void MacroAssembler::BranchShort(Label* L, Condition cond, Register rs,
|
||||
offset = shifted_branch_offset(L, false);
|
||||
beq(scratch, zero_reg, offset);
|
||||
} else {
|
||||
ASSERT(!scratch.is(rs));
|
||||
r2 = scratch;
|
||||
li(r2, rt);
|
||||
sltu(scratch, rs, r2);
|
||||
@ -1663,6 +1671,7 @@ void MacroAssembler::BranchShort(Label* L, Condition cond, Register rs,
|
||||
offset = shifted_branch_offset(L, false);
|
||||
bne(scratch, zero_reg, offset);
|
||||
} else {
|
||||
ASSERT(!scratch.is(rs));
|
||||
r2 = scratch;
|
||||
li(r2, rt);
|
||||
sltu(scratch, rs, r2);
|
||||
@ -1675,6 +1684,7 @@ void MacroAssembler::BranchShort(Label* L, Condition cond, Register rs,
|
||||
offset = shifted_branch_offset(L, false);
|
||||
b(offset);
|
||||
} else {
|
||||
ASSERT(!scratch.is(rs));
|
||||
r2 = scratch;
|
||||
li(r2, rt);
|
||||
sltu(scratch, r2, rs);
|
||||
|
Loading…
Reference in New Issue
Block a user