summaryrefslogtreecommitdiffstats
path: root/disassembler/disassembler_x86.cc
diff options
context:
space:
mode:
authorIan Rogers <irogers@google.com>2014-07-09 07:44:21 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2014-07-08 22:56:31 +0000
commit2cfe30bd592cb6ae63bb4c28ccaf4b069d6ab565 (patch)
tree3eb01d4c9f9a36985f70450822c0bb3f4065db02 /disassembler/disassembler_x86.cc
parent7b68fb3b9b421d4b20c1993704986d637f1cab91 (diff)
parent60bfe7b3e8f00f0a8ef3f5d8716adfdf86b71f43 (diff)
downloadart-2cfe30bd592cb6ae63bb4c28ccaf4b069d6ab565.tar.gz
art-2cfe30bd592cb6ae63bb4c28ccaf4b069d6ab565.tar.bz2
art-2cfe30bd592cb6ae63bb4c28ccaf4b069d6ab565.zip
Merge "X86 Backend support for vectorized float and byte 16x16 operations"
Diffstat (limited to 'disassembler/disassembler_x86.cc')
-rw-r--r--disassembler/disassembler_x86.cc20
1 files changed, 17 insertions, 3 deletions
diff --git a/disassembler/disassembler_x86.cc b/disassembler/disassembler_x86.cc
index 61d5c81837..a6f9a8a22b 100644
--- a/disassembler/disassembler_x86.cc
+++ b/disassembler/disassembler_x86.cc
@@ -427,6 +427,20 @@ DISASSEMBLER_ENTRY(cmp,
instr++;
if (prefix[2] == 0x66) {
switch (*instr) {
+ case 0x01:
+ opcode << "phaddw";
+ prefix[2] = 0;
+ has_modrm = true;
+ load = true;
+ src_reg_file = dst_reg_file = SSE;
+ break;
+ case 0x02:
+ opcode << "phaddd";
+ prefix[2] = 0;
+ has_modrm = true;
+ load = true;
+ src_reg_file = dst_reg_file = SSE;
+ break;
case 0x40:
opcode << "pmulld";
prefix[2] = 0;
@@ -450,7 +464,7 @@ DISASSEMBLER_ENTRY(cmp,
prefix[2] = 0;
has_modrm = true;
store = true;
- dst_reg_file = SSE;
+ src_reg_file = SSE;
immediate_bytes = 1;
break;
case 0x16:
@@ -458,7 +472,7 @@ DISASSEMBLER_ENTRY(cmp,
prefix[2] = 0;
has_modrm = true;
store = true;
- dst_reg_file = SSE;
+ src_reg_file = SSE;
immediate_bytes = 1;
break;
default:
@@ -743,7 +757,7 @@ DISASSEMBLER_ENTRY(cmp,
prefix[2] = 0;
has_modrm = true;
store = true;
- src_reg_file = dst_reg_file = SSE;
+ src_reg_file = SSE;
immediate_bytes = 1;
} else {
opcode << StringPrintf("unknown opcode '0F %02X'", *instr);