| Index: src/mips/constants-mips.h
|
| diff --git a/src/mips/constants-mips.h b/src/mips/constants-mips.h
|
| index 6a62787ef47ffd1269fa8c3a8c50a1503bffe1ad..3fd2da47d7ba7ecb44347904fc12e6a1d0fc7585 100644
|
| --- a/src/mips/constants-mips.h
|
| +++ b/src/mips/constants-mips.h
|
| @@ -1061,6 +1061,36 @@ inline Condition NegateFpuCondition(Condition cc) {
|
| }
|
| }
|
|
|
| +enum MSABranchCondition {
|
| + all_not_zero = 0, // Branch If All Elements Are Not Zero
|
| + one_elem_not_zero, // Branch If At Least One Element of Any Format Is Not
|
| + // Zero
|
| + one_elem_zero, // Branch If At Least One Element Is Zero
|
| + all_zero // Branch If All Elements of Any Format Are Zero
|
| +};
|
| +
|
| +inline MSABranchCondition NegateMSABranchCondition(MSABranchCondition cond) {
|
| + switch (cond) {
|
| + case all_not_zero:
|
| + return one_elem_zero;
|
| + case one_elem_not_zero:
|
| + return all_zero;
|
| + case one_elem_zero:
|
| + return all_not_zero;
|
| + case all_zero:
|
| + return one_elem_not_zero;
|
| + default:
|
| + return cond;
|
| + }
|
| +}
|
| +
|
| +enum MSABranchDF {
|
| + MSA_BRANCH_B = 0,
|
| + MSA_BRANCH_H,
|
| + MSA_BRANCH_W,
|
| + MSA_BRANCH_D,
|
| + MSA_BRANCH_V
|
| +};
|
|
|
| // Commute a condition such that {a cond b == b cond' a}.
|
| inline Condition CommuteCondition(Condition cc) {
|
| @@ -1840,6 +1870,16 @@ bool InstructionGetters<T>::IsForbiddenAfterBranchInstr(Instr instr) {
|
| case BC1:
|
| case BC1EQZ:
|
| case BC1NEZ:
|
| + 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;
|
| break;
|
| default:
|
|
|