diff options
Diffstat (limited to 'src/3rdparty/v8/src/ia32/disasm-ia32.cc')
-rw-r--r-- | src/3rdparty/v8/src/ia32/disasm-ia32.cc | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/3rdparty/v8/src/ia32/disasm-ia32.cc b/src/3rdparty/v8/src/ia32/disasm-ia32.cc index b5ddcca..dd07deb 100644 --- a/src/3rdparty/v8/src/ia32/disasm-ia32.cc +++ b/src/3rdparty/v8/src/ia32/disasm-ia32.cc @@ -31,6 +31,8 @@ #include "v8.h" +#undef CONST + #if defined(V8_TARGET_ARCH_IA32) #include "disasm.h" @@ -553,6 +555,7 @@ int DisassemblerIA32::F7Instruction(byte* data) { case 2: mnem = "not"; break; case 3: mnem = "neg"; break; case 4: mnem = "mul"; break; + case 5: mnem = "imul"; break; case 7: mnem = "idiv"; break; default: UnimplementedInstruction(); } @@ -1266,6 +1269,14 @@ int DisassemblerIA32::InstructionDecode(v8::internal::Vector<char> out_buffer, NameOfXMMRegister(regop), NameOfXMMRegister(rm)); data++; + } else if (*data == 0x56) { + data++; + int mod, regop, rm; + get_modrm(*data, &mod, ®op, &rm); + AppendToBuffer("orpd %s,%s", + NameOfXMMRegister(regop), + NameOfXMMRegister(rm)); + data++; } else if (*data == 0x57) { data++; int mod, regop, rm; @@ -1296,6 +1307,14 @@ int DisassemblerIA32::InstructionDecode(v8::internal::Vector<char> out_buffer, NameOfXMMRegister(rm), static_cast<int>(imm8)); data += 2; + } else if (*data == 0x76) { + data++; + int mod, regop, rm; + get_modrm(*data, &mod, ®op, &rm); + AppendToBuffer("pcmpeqd %s,%s", + NameOfXMMRegister(regop), + NameOfXMMRegister(rm)); + data++; } else if (*data == 0x90) { data++; AppendToBuffer("nop"); // 2 byte nop. @@ -1463,6 +1482,7 @@ int DisassemblerIA32::InstructionDecode(v8::internal::Vector<char> out_buffer, switch (b2) { case 0x2A: mnem = "cvtsi2sd"; break; case 0x2C: mnem = "cvttsd2si"; break; + case 0x2D: mnem = "cvtsd2si"; break; case 0x51: mnem = "sqrtsd"; break; case 0x58: mnem = "addsd"; break; case 0x59: mnem = "mulsd"; break; @@ -1475,7 +1495,7 @@ int DisassemblerIA32::InstructionDecode(v8::internal::Vector<char> out_buffer, if (b2 == 0x2A) { AppendToBuffer("%s %s,", mnem, NameOfXMMRegister(regop)); data += PrintRightOperand(data); - } else if (b2 == 0x2C) { + } else if (b2 == 0x2C || b2 == 0x2D) { AppendToBuffer("%s %s,", mnem, NameOfCPURegister(regop)); data += PrintRightXMMOperand(data); } else if (b2 == 0xC2) { |