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