| Index: src/ia32/disasm-ia32.cc
|
| diff --git a/src/ia32/disasm-ia32.cc b/src/ia32/disasm-ia32.cc
|
| index cc2f8495f7810810b58baa10a50100dce4f25c8d..d1c869a2c2352295b30c1d60515b45a087b90e6c 100644
|
| --- a/src/ia32/disasm-ia32.cc
|
| +++ b/src/ia32/disasm-ia32.cc
|
| @@ -1373,6 +1373,12 @@ int DisassemblerIA32::InstructionDecode(v8::internal::Vector<char> out_buffer,
|
| get_modrm(*data, &mod, ®op, &rm);
|
| AppendToBuffer("movsd %s,", NameOfXMMRegister(regop));
|
| data += PrintRightXMMOperand(data);
|
| + } else if (b2 == 0x5A) {
|
| + data += 3;
|
| + int mod, regop, rm;
|
| + get_modrm(*data, &mod, ®op, &rm);
|
| + AppendToBuffer("cvtsd2ss %s,", NameOfXMMRegister(regop));
|
| + data += PrintRightXMMOperand(data);
|
| } else {
|
| const char* mnem = "?";
|
| switch (b2) {
|
| @@ -1422,25 +1428,39 @@ int DisassemblerIA32::InstructionDecode(v8::internal::Vector<char> out_buffer,
|
|
|
| case 0xF3:
|
| if (*(data+1) == 0x0F) {
|
| - if (*(data+2) == 0x2C) {
|
| + byte b2 = *(data+2);
|
| + if (b2 == 0x11) {
|
| + AppendToBuffer("movss ");
|
| + data += 3;
|
| + int mod, regop, rm;
|
| + get_modrm(*data, &mod, ®op, &rm);
|
| + data += PrintRightXMMOperand(data);
|
| + AppendToBuffer(",%s", NameOfXMMRegister(regop));
|
| + } else if (b2 == 0x10) {
|
| + data += 3;
|
| + int mod, regop, rm;
|
| + get_modrm(*data, &mod, ®op, &rm);
|
| + AppendToBuffer("movss %s,", NameOfXMMRegister(regop));
|
| + data += PrintRightXMMOperand(data);
|
| + } else if (b2 == 0x2C) {
|
| data += 3;
|
| int mod, regop, rm;
|
| get_modrm(*data, &mod, ®op, &rm);
|
| AppendToBuffer("cvttss2si %s,", NameOfCPURegister(regop));
|
| data += PrintRightXMMOperand(data);
|
| - } else if (*(data+2) == 0x5A) {
|
| + } else if (b2 == 0x5A) {
|
| data += 3;
|
| int mod, regop, rm;
|
| get_modrm(*data, &mod, ®op, &rm);
|
| AppendToBuffer("cvtss2sd %s,", NameOfXMMRegister(regop));
|
| data += PrintRightXMMOperand(data);
|
| - } else if (*(data+2) == 0x6F) {
|
| + } else if (b2 == 0x6F) {
|
| data += 3;
|
| int mod, regop, rm;
|
| get_modrm(*data, &mod, ®op, &rm);
|
| AppendToBuffer("movdqu %s,", NameOfXMMRegister(regop));
|
| data += PrintRightXMMOperand(data);
|
| - } else if (*(data+2) == 0x7F) {
|
| + } else if (b2 == 0x7F) {
|
| AppendToBuffer("movdqu ");
|
| data += 3;
|
| int mod, regop, rm;
|
|
|