| Index: src/mips/disasm-mips.cc
|
| diff --git a/src/mips/disasm-mips.cc b/src/mips/disasm-mips.cc
|
| index bd07874bd67de689859e7c8aa1c6420c92dfecba..afeb9a4c1770504f170fef9e8363f0479ab4f419 100644
|
| --- a/src/mips/disasm-mips.cc
|
| +++ b/src/mips/disasm-mips.cc
|
| @@ -918,6 +918,12 @@ void Decoder::DecodeTypeRegisterSRsType(Instruction* instr) {
|
| case CVT_D_S:
|
| Format(instr, "cvt.d.'t 'fd, 'fs");
|
| break;
|
| + case MADDF_S:
|
| + Format(instr, "maddf.s 'fd, 'fs, 'ft");
|
| + break;
|
| + case MSUBF_S:
|
| + Format(instr, "msubf.s 'fd, 'fs, 'ft");
|
| + break;
|
| default:
|
| Format(instr, "unknown.cop1.'t");
|
| break;
|
| @@ -928,7 +934,17 @@ void Decoder::DecodeTypeRegisterSRsType(Instruction* instr) {
|
|
|
| void Decoder::DecodeTypeRegisterDRsType(Instruction* instr) {
|
| if (!DecodeTypeRegisterRsType(instr)) {
|
| - Format(instr, "unknown.cop1.'t");
|
| + switch (instr->FunctionFieldRaw()) {
|
| + case MADDF_D:
|
| + Format(instr, "maddf.d 'fd, 'fs, 'ft");
|
| + break;
|
| + case MSUBF_D:
|
| + Format(instr, "msubf.d 'fd, 'fs, 'ft");
|
| + break;
|
| + default:
|
| + Format(instr, "unknown.cop1.'t");
|
| + break;
|
| + }
|
| }
|
| }
|
|
|
| @@ -1360,9 +1376,18 @@ void Decoder::DecodeTypeRegister(Instruction* instr) {
|
| break;
|
| case COP1X:
|
| switch (instr->FunctionFieldRaw()) {
|
| + case MADD_S:
|
| + Format(instr, "madd.s 'fd, 'fr, 'fs, 'ft");
|
| + break;
|
| case MADD_D:
|
| Format(instr, "madd.d 'fd, 'fr, 'fs, 'ft");
|
| break;
|
| + case MSUB_S:
|
| + Format(instr, "msub.s 'fd, 'fr, 'fs, 'ft");
|
| + break;
|
| + case MSUB_D:
|
| + Format(instr, "msub.d 'fd, 'fr, 'fs, 'ft");
|
| + break;
|
| default:
|
| UNREACHABLE();
|
| }
|
|
|