Index: src/ia32/disasm-ia32.cc |
diff --git a/src/ia32/disasm-ia32.cc b/src/ia32/disasm-ia32.cc |
index 789e7ba9fe3bc739a47a774271521c8986cbc452..9140d5782158485429354b66aae5272ac6c396e9 100644 |
--- a/src/ia32/disasm-ia32.cc |
+++ b/src/ia32/disasm-ia32.cc |
@@ -1028,6 +1028,16 @@ int DisassemblerIA32::AVXInstruction(byte* data) { |
NameOfXMMRegister(vvvv)); |
current += PrintRightXMMOperand(current); |
break; |
+ case 0xC2: { |
+ const char* const pseudo_op[] = {"eq", "lt", "le", "unord", |
+ "neq", "nlt", "nle", "ord"}; |
+ AppendToBuffer("vcmpps %s,%s,", NameOfXMMRegister(regop), |
+ NameOfXMMRegister(vvvv)); |
+ current += PrintRightXMMOperand(current); |
+ AppendToBuffer(", (%s)", pseudo_op[*current]); |
+ current++; |
+ break; |
+ } |
default: |
UnimplementedInstruction(); |
} |
@@ -1569,6 +1579,16 @@ int DisassemblerIA32::InstructionDecode(v8::internal::Vector<char> out_buffer, |
NameOfCPURegister(regop), |
NameOfXMMRegister(rm)); |
data++; |
+ } else if (f0byte == 0xC2) { |
+ data += 2; |
+ int mod, regop, rm; |
+ get_modrm(*data, &mod, ®op, &rm); |
+ const char* const pseudo_op[] = {"eq", "lt", "le", "unord", |
+ "neq", "nlt", "nle", "ord"}; |
+ AppendToBuffer("cmpps %s, ", NameOfXMMRegister(regop)); |
+ data += PrintRightXMMOperand(data); |
+ AppendToBuffer(", (%s)", pseudo_op[*data]); |
+ data++; |
} else if (f0byte== 0xC6) { |
// shufps xmm, xmm/m128, imm8 |
data += 2; |