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; |