diff options
Diffstat (limited to 'deps/v8/src/mips/disasm-mips.cc')
-rw-r--r-- | deps/v8/src/mips/disasm-mips.cc | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/deps/v8/src/mips/disasm-mips.cc b/deps/v8/src/mips/disasm-mips.cc index bd07874bd6..f541e9143f 100644 --- a/deps/v8/src/mips/disasm-mips.cc +++ b/deps/v8/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(); } @@ -1687,7 +1712,7 @@ int Decoder::InstructionDecode(byte* instr_ptr) { out_buffer_pos_ += SNPrintF(out_buffer_ + out_buffer_pos_, "%08x ", instr->InstructionBits()); - switch (instr->InstructionType(Instruction::EXTRA)) { + switch (instr->InstructionType()) { case Instruction::kRegisterType: { DecodeTypeRegister(instr); break; |