summaryrefslogtreecommitdiff
path: root/disassembler/disassembler_x86.cc
diff options
context:
space:
mode:
author Aart Bik <ajcbik@google.com> 2017-04-03 15:59:09 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2017-04-03 15:59:14 +0000
commit0d9ec0535c938d6411ed36a8ac434586e8d986ac (patch)
tree134a17aaedf1e48ab183571e0a29f000cc8e77ea /disassembler/disassembler_x86.cc
parentfcab6513b5e635f3fbf4f875b9530086371f5dac (diff)
parent67d3fd77d1572e46f537dea2fd4ded3ecfd7c202 (diff)
Merge "SIMD pavgb,w for x86/x86_64"
Diffstat (limited to 'disassembler/disassembler_x86.cc')
-rw-r--r--disassembler/disassembler_x86.cc16
1 files changed, 16 insertions, 0 deletions
diff --git a/disassembler/disassembler_x86.cc b/disassembler/disassembler_x86.cc
index 77ed3c6a22..f5c3ad20cc 100644
--- a/disassembler/disassembler_x86.cc
+++ b/disassembler/disassembler_x86.cc
@@ -1101,6 +1101,22 @@ DISASSEMBLER_ENTRY(cmp,
opcode1 = opcode_tmp.c_str();
}
break;
+ case 0xE0:
+ case 0xE3:
+ if (prefix[2] == 0x66) {
+ src_reg_file = dst_reg_file = SSE;
+ prefix[2] = 0; // clear prefix now it's served its purpose as part of the opcode
+ } else {
+ src_reg_file = dst_reg_file = MMX;
+ }
+ switch (*instr) {
+ case 0xE0: opcode1 = "pavgb"; break;
+ case 0xE3: opcode1 = "pavgw"; break;
+ }
+ prefix[2] = 0;
+ has_modrm = true;
+ load = true;
+ break;
case 0xEB:
if (prefix[2] == 0x66) {
src_reg_file = dst_reg_file = SSE;