Index: src/mips/macro-assembler-mips.cc |
diff --git a/src/mips/macro-assembler-mips.cc b/src/mips/macro-assembler-mips.cc |
index 14d8ed8e1e024289391ec97f4d0ad98ab8e96072..272f8147b94185aac05ed5dd75d18940e2fb7e03 100644 |
--- a/src/mips/macro-assembler-mips.cc |
+++ b/src/mips/macro-assembler-mips.cc |
@@ -2374,121 +2374,122 @@ bool MacroAssembler::BranchShortHelper(int16_t offset, Label* L, Condition cond, |
// Be careful to always use shifted_branch_offset only just before the |
// branch instruction, as the location will be remember for patching the |
// target. |
- BlockTrampolinePoolScope block_trampoline_pool(this); |
- switch (cond) { |
- case cc_always: |
- offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
- b(offset32); |
- break; |
- case eq: |
- if (IsZero(rt)) { |
- offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
- beq(rs, zero_reg, offset32); |
- } else { |
- // We don't want any other register but scratch clobbered. |
- scratch = GetRtAsRegisterHelper(rt, scratch); |
- offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
- beq(rs, scratch, offset32); |
- } |
- break; |
- case ne: |
- if (IsZero(rt)) { |
- offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
- bne(rs, zero_reg, offset32); |
- } else { |
- // We don't want any other register but scratch clobbered. |
- scratch = GetRtAsRegisterHelper(rt, scratch); |
+ { |
+ BlockTrampolinePoolScope block_trampoline_pool(this); |
+ switch (cond) { |
+ case cc_always: |
offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
- bne(rs, scratch, offset32); |
- } |
- break; |
+ b(offset32); |
+ break; |
+ case eq: |
+ if (IsZero(rt)) { |
+ offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
+ beq(rs, zero_reg, offset32); |
+ } else { |
+ // We don't want any other register but scratch clobbered. |
+ scratch = GetRtAsRegisterHelper(rt, scratch); |
+ offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
+ beq(rs, scratch, offset32); |
+ } |
+ break; |
+ case ne: |
+ if (IsZero(rt)) { |
+ offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
+ bne(rs, zero_reg, offset32); |
+ } else { |
+ // We don't want any other register but scratch clobbered. |
+ scratch = GetRtAsRegisterHelper(rt, scratch); |
+ offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
+ bne(rs, scratch, offset32); |
+ } |
+ break; |
- // Signed comparison. |
- case greater: |
- if (IsZero(rt)) { |
- offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
- bgtz(rs, offset32); |
- } else { |
- Slt(scratch, GetRtAsRegisterHelper(rt, scratch), rs); |
- offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
- bne(scratch, zero_reg, offset32); |
- } |
- break; |
- case greater_equal: |
- if (IsZero(rt)) { |
- offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
- bgez(rs, offset32); |
- } else { |
- Slt(scratch, rs, rt); |
- offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
- beq(scratch, zero_reg, offset32); |
- } |
- break; |
- case less: |
- if (IsZero(rt)) { |
- offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
- bltz(rs, offset32); |
- } else { |
- Slt(scratch, rs, rt); |
- offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
- bne(scratch, zero_reg, offset32); |
- } |
- break; |
- case less_equal: |
- if (IsZero(rt)) { |
- offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
- blez(rs, offset32); |
- } else { |
- Slt(scratch, GetRtAsRegisterHelper(rt, scratch), rs); |
- offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
- beq(scratch, zero_reg, offset32); |
- } |
- break; |
+ // Signed comparison. |
+ case greater: |
+ if (IsZero(rt)) { |
+ offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
+ bgtz(rs, offset32); |
+ } else { |
+ Slt(scratch, GetRtAsRegisterHelper(rt, scratch), rs); |
+ offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
+ bne(scratch, zero_reg, offset32); |
+ } |
+ break; |
+ case greater_equal: |
+ if (IsZero(rt)) { |
+ offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
+ bgez(rs, offset32); |
+ } else { |
+ Slt(scratch, rs, rt); |
+ offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
+ beq(scratch, zero_reg, offset32); |
+ } |
+ break; |
+ case less: |
+ if (IsZero(rt)) { |
+ offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
+ bltz(rs, offset32); |
+ } else { |
+ Slt(scratch, rs, rt); |
+ offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
+ bne(scratch, zero_reg, offset32); |
+ } |
+ break; |
+ case less_equal: |
+ if (IsZero(rt)) { |
+ offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
+ blez(rs, offset32); |
+ } else { |
+ Slt(scratch, GetRtAsRegisterHelper(rt, scratch), rs); |
+ offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
+ beq(scratch, zero_reg, offset32); |
+ } |
+ break; |
- // Unsigned comparison. |
- case Ugreater: |
- if (IsZero(rt)) { |
- offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
- bne(rs, zero_reg, offset32); |
- } else { |
- Sltu(scratch, GetRtAsRegisterHelper(rt, scratch), rs); |
- offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
- bne(scratch, zero_reg, offset32); |
- } |
- break; |
- case Ugreater_equal: |
- if (IsZero(rt)) { |
- offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
- b(offset32); |
- } else { |
- Sltu(scratch, rs, rt); |
- offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
- beq(scratch, zero_reg, offset32); |
- } |
- break; |
- case Uless: |
- if (IsZero(rt)) { |
- return true; // No code needs to be emitted. |
- } else { |
- Sltu(scratch, rs, rt); |
- offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
- bne(scratch, zero_reg, offset32); |
- } |
- break; |
- case Uless_equal: |
- if (IsZero(rt)) { |
- offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
- beq(rs, zero_reg, offset32); |
- } else { |
- Sltu(scratch, GetRtAsRegisterHelper(rt, scratch), rs); |
- offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
- beq(scratch, zero_reg, offset32); |
- } |
- break; |
- default: |
- UNREACHABLE(); |
+ // Unsigned comparison. |
+ case Ugreater: |
+ if (IsZero(rt)) { |
+ offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
+ bne(rs, zero_reg, offset32); |
+ } else { |
+ Sltu(scratch, GetRtAsRegisterHelper(rt, scratch), rs); |
+ offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
+ bne(scratch, zero_reg, offset32); |
+ } |
+ break; |
+ case Ugreater_equal: |
+ if (IsZero(rt)) { |
+ offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
+ b(offset32); |
+ } else { |
+ Sltu(scratch, rs, rt); |
+ offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
+ beq(scratch, zero_reg, offset32); |
+ } |
+ break; |
+ case Uless: |
+ if (IsZero(rt)) { |
+ return true; // No code needs to be emitted. |
+ } else { |
+ Sltu(scratch, rs, rt); |
+ offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
+ bne(scratch, zero_reg, offset32); |
+ } |
+ break; |
+ case Uless_equal: |
+ if (IsZero(rt)) { |
+ offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
+ beq(rs, zero_reg, offset32); |
+ } else { |
+ Sltu(scratch, GetRtAsRegisterHelper(rt, scratch), rs); |
+ offset32 = GetOffset(offset, L, OffsetSize::kOffset16); |
+ beq(scratch, zero_reg, offset32); |
+ } |
+ break; |
+ default: |
+ UNREACHABLE(); |
+ } |
} |
- |
// Emit a nop in the branch delay slot if required. |
if (bdslot == PROTECT) |
nop(); |