| Index: src/mips64/disasm-mips64.cc
|
| diff --git a/src/mips64/disasm-mips64.cc b/src/mips64/disasm-mips64.cc
|
| index 5485f3ee95ce37a3535e92696bbed6969d502e4c..4168183f2f7f002865ae2e87ab68867035f1a1f5 100644
|
| --- a/src/mips64/disasm-mips64.cc
|
| +++ b/src/mips64/disasm-mips64.cc
|
| @@ -959,6 +959,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;
|
| @@ -969,7 +975,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;
|
| + }
|
| }
|
| }
|
|
|
| @@ -1115,9 +1131,18 @@ void Decoder::DecodeTypeRegisterCOP1(Instruction* instr) {
|
|
|
| void Decoder::DecodeTypeRegisterCOP1X(Instruction* instr) {
|
| 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();
|
| }
|
|
|