diff options
author | Mark Mendell <mark.p.mendell@intel.com> | 2014-01-23 12:13:40 -0800 |
---|---|---|
committer | Mark Mendell <mark.p.mendell@intel.com> | 2014-01-24 10:01:41 -0800 |
commit | 2bf31e67694da24a19fc1f328285cebb1a4b9964 (patch) | |
tree | e24b7ec3569ea26e91f1a10179b7d1912f594d7e /disassembler/disassembler_x86.cc | |
parent | 3f5b42f1d31c877abca2571a51dd0a5055a9b94c (diff) | |
download | android_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.cc | 3 |
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; |