diff options
author | 2017-04-03 15:59:09 +0000 | |
---|---|---|
committer | 2017-04-03 15:59:14 +0000 | |
commit | 0d9ec0535c938d6411ed36a8ac434586e8d986ac (patch) | |
tree | 134a17aaedf1e48ab183571e0a29f000cc8e77ea /disassembler/disassembler_x86.cc | |
parent | fcab6513b5e635f3fbf4f875b9530086371f5dac (diff) | |
parent | 67d3fd77d1572e46f537dea2fd4ded3ecfd7c202 (diff) |
Merge "SIMD pavgb,w for x86/x86_64"
Diffstat (limited to 'disassembler/disassembler_x86.cc')
-rw-r--r-- | disassembler/disassembler_x86.cc | 16 |
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; |