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(); |
} |