| Index: src/mips/assembler-mips.cc
|
| diff --git a/src/mips/assembler-mips.cc b/src/mips/assembler-mips.cc
|
| index 96750225f4bf834c7f13f488e78af562330414ac..c507432a5827345a183b1480b25ad517e78e438b 100644
|
| --- a/src/mips/assembler-mips.cc
|
| +++ b/src/mips/assembler-mips.cc
|
| @@ -479,6 +479,29 @@ const int kEndOfChain = -4;
|
| // Determines the end of the Jump chain (a subset of the label link chain).
|
| const int kEndOfJumpChain = 0;
|
|
|
| +bool Assembler::IsMsaBranch(Instr instr) {
|
| + uint32_t opcode = GetOpcodeField(instr);
|
| + uint32_t rs_field = GetRsField(instr);
|
| + if (opcode == COP1) {
|
| + switch (rs_field) {
|
| + case BZ_V:
|
| + case BZ_B:
|
| + case BZ_H:
|
| + case BZ_W:
|
| + case BZ_D:
|
| + case BNZ_V:
|
| + case BNZ_B:
|
| + case BNZ_H:
|
| + case BNZ_W:
|
| + case BNZ_D:
|
| + return true;
|
| + default:
|
| + return false;
|
| + }
|
| + } else {
|
| + return false;
|
| + }
|
| +}
|
|
|
| bool Assembler::IsBranch(Instr instr) {
|
| uint32_t opcode = GetOpcodeField(instr);
|
| @@ -492,7 +515,7 @@ bool Assembler::IsBranch(Instr instr) {
|
| rt_field == BLTZAL || rt_field == BGEZAL)) ||
|
| (opcode == COP1 && rs_field == BC1) || // Coprocessor branch.
|
| (opcode == COP1 && rs_field == BC1EQZ) ||
|
| - (opcode == COP1 && rs_field == BC1NEZ);
|
| + (opcode == COP1 && rs_field == BC1NEZ) || IsMsaBranch(instr);
|
| if (!isBranch && IsMipsArchVariant(kMips32r6)) {
|
| // All the 3 variants of POP10 (BOVC, BEQC, BEQZALC) and
|
| // POP30 (BNVC, BNEC, BNEZALC) are branch ops.
|
|
|