| Index: runtime/vm/disassembler_ia32.cc
|
| diff --git a/runtime/vm/disassembler_ia32.cc b/runtime/vm/disassembler_ia32.cc
|
| index 5f1131e3b046a4264752acee3920ca6f829c6be7..a4d6bc49fd7aba450f37e1b52e68557c31d16720 100644
|
| --- a/runtime/vm/disassembler_ia32.cc
|
| +++ b/runtime/vm/disassembler_ia32.cc
|
| @@ -1505,16 +1505,7 @@ int X86Decoder::InstructionDecode(uword pc) {
|
| PrintCPURegister(regop);
|
| } else if (*data == 0x0F) {
|
| data++;
|
| - if (*data == 0x2F) {
|
| - data++;
|
| - int mod, regop, rm;
|
| - GetModRm(*data, &mod, ®op, &rm);
|
| - Print("comisd ");
|
| - PrintXmmRegister(regop);
|
| - Print(",");
|
| - PrintXmmRegister(rm);
|
| - data++;
|
| - } else if (*data == 0X6E) {
|
| + if (*data == 0X6E) {
|
| data++;
|
| int mod, regop, rm;
|
| GetModRm(*data, &mod, ®op, &rm);
|
| @@ -1609,8 +1600,20 @@ int X86Decoder::InstructionDecode(uword pc) {
|
| Print(",");
|
| PrintXmmRegister(rm);
|
| data += 2;
|
| + } else if ((*data == 0xFE) || (*data == 0xFA) || (*data == 0x2F)) {
|
| + const char* mnemonic = NULL;
|
| + if (*data == 0xFE) mnemonic = "paddd ";
|
| + if (*data == 0xFA) mnemonic = "psubd ";
|
| + if (*data == 0x2F) mnemonic = "comisd ";
|
| + int mod, regop, rm;
|
| + GetModRm(*(data+1), &mod, ®op, &rm);
|
| + Print(mnemonic);
|
| + PrintXmmRegister(regop);
|
| + Print(",");
|
| + PrintXmmRegister(rm);
|
| + data += 2;
|
| } else {
|
| - UNIMPLEMENTED();
|
| + UNIMPLEMENTED();
|
| }
|
| } else if (*data == 0x90) {
|
| data++;
|
|
|