diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2010-04-14 10:34:17 -0700 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2010-04-14 10:34:27 -0700 |
commit | 41ef1717e096a9e1761efa0df97c395f59c51f16 (patch) | |
tree | 7e854284ef8ce5189a63074857a408b6eea5a9cb /deps/v8/src/x64/disasm-x64.cc | |
parent | 760bba55186eba039ca00e532f7813d2aea450a2 (diff) | |
download | node-new-41ef1717e096a9e1761efa0df97c395f59c51f16.tar.gz |
Upgrade V8 to 2.2.3.1
Diffstat (limited to 'deps/v8/src/x64/disasm-x64.cc')
-rw-r--r-- | deps/v8/src/x64/disasm-x64.cc | 47 |
1 files changed, 30 insertions, 17 deletions
diff --git a/deps/v8/src/x64/disasm-x64.cc b/deps/v8/src/x64/disasm-x64.cc index 9ba364a5f4..c44a3fcf25 100644 --- a/deps/v8/src/x64/disasm-x64.cc +++ b/deps/v8/src/x64/disasm-x64.cc @@ -997,18 +997,23 @@ int DisassemblerX64::TwoByteOpcodeInstruction(byte* data) { // 0x66 0x0F prefix. int mod, regop, rm; get_modrm(*current, &mod, ®op, &rm); - const char* mnemonic = "?"; - if (opcode == 0x57) { - mnemonic = "xorpd"; - } else if (opcode == 0x2E) { - mnemonic = "comisd"; - } else if (opcode == 0x2F) { - mnemonic = "ucomisd"; + if (opcode == 0x6E) { + AppendToBuffer("movd %s,", NameOfXMMRegister(regop)); + current += PrintRightOperand(current); } else { - UnimplementedInstruction(); + const char* mnemonic = "?"; + if (opcode == 0x57) { + mnemonic = "xorpd"; + } else if (opcode == 0x2E) { + mnemonic = "comisd"; + } else if (opcode == 0x2F) { + mnemonic = "ucomisd"; + } else { + UnimplementedInstruction(); + } + AppendToBuffer("%s %s,", mnemonic, NameOfXMMRegister(regop)); + current += PrintRightXMMOperand(current); } - AppendToBuffer("%s %s,", mnemonic, NameOfXMMRegister(regop)); - current += PrintRightXMMOperand(current); } else if (group_1_prefix_ == 0xF2) { // Beginning of instructions with prefix 0xF2. @@ -1039,13 +1044,21 @@ int DisassemblerX64::TwoByteOpcodeInstruction(byte* data) { } else { UnimplementedInstruction(); } - } else if (opcode == 0x2C && group_1_prefix_ == 0xF3) { - // Instruction with prefix 0xF3. - - // CVTTSS2SI: Convert scalar single-precision FP to dword integer. - // Assert that mod is not 3, so source is memory, not an XMM register. - ASSERT_NE(0xC0, *current & 0xC0); - current += PrintOperands("cvttss2si", REG_OPER_OP_ORDER, current); + } else if (group_1_prefix_ == 0xF3) { + // Instructions with prefix 0xF3. + if (opcode == 0x2C) { + // CVTTSS2SI: Convert scalar single-precision FP to dword integer. + // Assert that mod is not 3, so source is memory, not an XMM register. + ASSERT_NE(0xC0, *current & 0xC0); + current += PrintOperands("cvttss2si", REG_OPER_OP_ORDER, current); + } else if (opcode == 0x5A) { + int mod, regop, rm; + get_modrm(*current, &mod, ®op, &rm); + AppendToBuffer("cvtss2sd %s,", NameOfXMMRegister(regop)); + current += PrintRightXMMOperand(current); + } else { + UnimplementedInstruction(); + } } else if (opcode == 0x1F) { // NOP int mod, regop, rm; |