| Index: src/mips/assembler-mips.cc
|
| diff --git a/src/mips/assembler-mips.cc b/src/mips/assembler-mips.cc
|
| index ed3f50a817d7d3315bbc44d200fc3f661fcce69a..24cdc1d8717db0daf85e91e48117c19f8d036228 100644
|
| --- a/src/mips/assembler-mips.cc
|
| +++ b/src/mips/assembler-mips.cc
|
| @@ -480,6 +480,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);
|
| @@ -493,7 +516,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.
|
|
|