| Index: src/mips64/disasm-mips64.cc
|
| diff --git a/src/mips64/disasm-mips64.cc b/src/mips64/disasm-mips64.cc
|
| index ffab261cd11f07c05cb280a95613ae816cd43228..a8fd48e6a204767eddfd2fc344d12ed1861d79ba 100644
|
| --- a/src/mips64/disasm-mips64.cc
|
| +++ b/src/mips64/disasm-mips64.cc
|
| @@ -1179,7 +1179,16 @@ void Decoder::DecodeTypeRegisterSPECIAL(Instruction* instr) {
|
| }
|
| break;
|
| case MFLO:
|
| - Format(instr, "mflo 'rd");
|
| + if (instr->Bits(25, 16) == 0) {
|
| + Format(instr, "mflo 'rd");
|
| + } else {
|
| + if ((instr->FunctionFieldRaw() == DCLZ_R6) && (instr->FdValue() == 1)) {
|
| + Format(instr, "dclz 'rd, 'rs");
|
| + } else if ((instr->FunctionFieldRaw() == DCLO_R6) &&
|
| + (instr->FdValue() == 1)) {
|
| + Format(instr, "dclo 'rd, 'rs");
|
| + }
|
| + }
|
| break;
|
| case D_MUL_MUH_U: // Equals to DMULTU.
|
| if (kArchVariant != kMips64r6) {
|
| @@ -1360,6 +1369,11 @@ void Decoder::DecodeTypeRegisterSPECIAL2(Instruction* instr) {
|
| Format(instr, "clz 'rd, 'rs");
|
| }
|
| break;
|
| + case DCLZ:
|
| + if (kArchVariant != kMips64r6) {
|
| + Format(instr, "dclz 'rd, 'rs");
|
| + }
|
| + break;
|
| default:
|
| UNREACHABLE();
|
| }
|
|
|