| Index: src/ia32/disasm-ia32.cc
|
| diff --git a/src/ia32/disasm-ia32.cc b/src/ia32/disasm-ia32.cc
|
| index 9140d5782158485429354b66aae5272ac6c396e9..36acd1e05d5f6e73a2c88c28ef798eee5c52cb82 100644
|
| --- a/src/ia32/disasm-ia32.cc
|
| +++ b/src/ia32/disasm-ia32.cc
|
| @@ -868,6 +868,10 @@ int DisassemblerIA32::AVXInstruction(byte* data) {
|
| NameOfXMMRegister(vvvv));
|
| current += PrintRightXMMOperand(current);
|
| break;
|
| + case 0x5b:
|
| + AppendToBuffer("vcvttps2dq %s,", NameOfXMMRegister(regop));
|
| + current += PrintRightXMMOperand(current);
|
| + break;
|
| case 0x5c:
|
| AppendToBuffer("vsubss %s,%s,", NameOfXMMRegister(regop),
|
| NameOfXMMRegister(vvvv));
|
| @@ -988,6 +992,14 @@ int DisassemblerIA32::AVXInstruction(byte* data) {
|
| int mod, regop, rm, vvvv = vex_vreg();
|
| get_modrm(*current, &mod, ®op, &rm);
|
| switch (opcode) {
|
| + case 0x52:
|
| + AppendToBuffer("vrsqrtps %s,", NameOfXMMRegister(regop));
|
| + current += PrintRightXMMOperand(current);
|
| + break;
|
| + case 0x53:
|
| + AppendToBuffer("vrcpps %s,", NameOfXMMRegister(regop));
|
| + current += PrintRightXMMOperand(current);
|
| + break;
|
| case 0x54:
|
| AppendToBuffer("vandps %s,%s,", NameOfXMMRegister(regop),
|
| NameOfXMMRegister(vvvv));
|
| @@ -1008,6 +1020,10 @@ int DisassemblerIA32::AVXInstruction(byte* data) {
|
| NameOfXMMRegister(vvvv));
|
| current += PrintRightXMMOperand(current);
|
| break;
|
| + case 0x5B:
|
| + AppendToBuffer("vcvtdq2ps %s,", NameOfXMMRegister(regop));
|
| + current += PrintRightXMMOperand(current);
|
| + break;
|
| case 0x5C:
|
| AppendToBuffer("vsubps %s,%s,", NameOfXMMRegister(regop),
|
| NameOfXMMRegister(vvvv));
|
| @@ -1547,28 +1563,17 @@ int DisassemblerIA32::InstructionDecode(v8::internal::Vector<char> out_buffer,
|
| get_modrm(*data, &mod, ®op, &rm);
|
| AppendToBuffer("ucomiss %s,", NameOfXMMRegister(regop));
|
| data += PrintRightXMMOperand(data);
|
| - } else if (f0byte >= 0x53 && f0byte <= 0x5F) {
|
| + } else if (f0byte >= 0x52 && f0byte <= 0x5F) {
|
| const char* const pseudo_op[] = {
|
| - "rcpps",
|
| - "andps",
|
| - "andnps",
|
| - "orps",
|
| - "xorps",
|
| - "addps",
|
| - "mulps",
|
| - "cvtps2pd",
|
| - "cvtdq2ps",
|
| - "subps",
|
| - "minps",
|
| - "divps",
|
| - "maxps",
|
| + "rsqrtps", "rcpps", "andps", "andnps", "orps",
|
| + "xorps", "addps", "mulps", "cvtps2pd", "cvtdq2ps",
|
| + "subps", "minps", "divps", "maxps",
|
| };
|
|
|
| data += 2;
|
| int mod, regop, rm;
|
| get_modrm(*data, &mod, ®op, &rm);
|
| - AppendToBuffer("%s %s,",
|
| - pseudo_op[f0byte - 0x53],
|
| + AppendToBuffer("%s %s,", pseudo_op[f0byte - 0x52],
|
| NameOfXMMRegister(regop));
|
| data += PrintRightXMMOperand(data);
|
| } else if (f0byte == 0x50) {
|
| @@ -2266,6 +2271,9 @@ int DisassemblerIA32::InstructionDecode(v8::internal::Vector<char> out_buffer,
|
| case 0x59:
|
| mnem = "mulss";
|
| break;
|
| + case 0x5B:
|
| + mnem = "cvttps2dq";
|
| + break;
|
| case 0x5C:
|
| mnem = "subss";
|
| break;
|
|
|