summaryrefslogtreecommitdiffstats
path: root/disassembler/disassembler_x86.cc
diff options
context:
space:
mode:
authorMark Mendell <mark.p.mendell@intel.com>2014-01-23 12:13:40 -0800
committerMark Mendell <mark.p.mendell@intel.com>2014-01-24 10:01:41 -0800
commit2bf31e67694da24a19fc1f328285cebb1a4b9964 (patch)
treee24b7ec3569ea26e91f1a10179b7d1912f594d7e /disassembler/disassembler_x86.cc
parent3f5b42f1d31c877abca2571a51dd0a5055a9b94c (diff)
downloadandroid_art-2bf31e67694da24a19fc1f328285cebb1a4b9964.tar.gz
android_art-2bf31e67694da24a19fc1f328285cebb1a4b9964.tar.bz2
android_art-2bf31e67694da24a19fc1f328285cebb1a4b9964.zip
Improve x86 long divide
Implement inline division for literal and variable divisors. Use the general case for dividing by a literal by using a double length multiply by the appropriate constant with fixups. This is the Hacker's Delight algorithm. Change-Id: I563c250f99d89fca5ff8bcbf13de74de13815cfe Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
Diffstat (limited to 'disassembler/disassembler_x86.cc')
-rw-r--r--disassembler/disassembler_x86.cc3
1 files changed, 3 insertions, 0 deletions
diff --git a/disassembler/disassembler_x86.cc b/disassembler/disassembler_x86.cc
index c51ea7b8a4..6d82f0a882 100644
--- a/disassembler/disassembler_x86.cc
+++ b/disassembler/disassembler_x86.cc
@@ -571,6 +571,9 @@ DISASSEMBLER_ENTRY(cmp,
reg_is_opcode = true;
store = true;
break;
+ case 0x99:
+ opcode << "cdq";
+ break;
case 0xB0: case 0xB1: case 0xB2: case 0xB3: case 0xB4: case 0xB5: case 0xB6: case 0xB7:
opcode << "mov";
immediate_bytes = 1;