Disassemble saturation arithmetic x86/x86_64.
Rationale:
Saturation arithmetic? It is coming!
Bug: b/74026074
Test: visual inspection
Change-Id: I056a2f785b01f9d56749a9fca611846f871e253c
diff --git a/disassembler/disassembler_x86.cc b/disassembler/disassembler_x86.cc
index bbc8e37..dbdde64 100644
--- a/disassembler/disassembler_x86.cc
+++ b/disassembler/disassembler_x86.cc
@@ -1194,11 +1194,19 @@
opcode1 = opcode_tmp.c_str();
}
break;
+ case 0xD8:
+ case 0xD9:
case 0xDA:
+ case 0xDC:
+ case 0xDD:
case 0xDE:
case 0xE0:
case 0xE3:
+ case 0xE8:
+ case 0xE9:
case 0xEA:
+ case 0xEC:
+ case 0xED:
case 0xEE:
if (prefix[2] == 0x66) {
src_reg_file = dst_reg_file = SSE;
@@ -1207,11 +1215,19 @@
src_reg_file = dst_reg_file = MMX;
}
switch (*instr) {
+ case 0xD8: opcode1 = "psubusb"; break;
+ case 0xD9: opcode1 = "psubusw"; break;
case 0xDA: opcode1 = "pminub"; break;
+ case 0xDC: opcode1 = "paddusb"; break;
+ case 0xDD: opcode1 = "paddusw"; break;
case 0xDE: opcode1 = "pmaxub"; break;
case 0xE0: opcode1 = "pavgb"; break;
case 0xE3: opcode1 = "pavgw"; break;
+ case 0xE8: opcode1 = "psubsb"; break;
+ case 0xE9: opcode1 = "psubsw"; break;
case 0xEA: opcode1 = "pminsw"; break;
+ case 0xEC: opcode1 = "paddsb"; break;
+ case 0xED: opcode1 = "paddsw"; break;
case 0xEE: opcode1 = "pmaxsw"; break;
}
prefix[2] = 0;