OSDN Git Service

[optimizing compiler] x86 goodness
authorMark Mendell <mark.p.mendell@intel.com>
Fri, 13 Feb 2015 22:48:38 +0000 (17:48 -0500)
committerMark Mendell <mark.p.mendell@intel.com>
Mon, 2 Mar 2015 16:27:05 +0000 (11:27 -0500)
commit09b8463493aeb6ea2bce05f67d3457d5fcc8a7d9
treebc1b2eddb27143144c2ca1a7ac4a811cfaf42232
parent4ab52e75c782abf19ff9ebff8d19c87ec4ec97b6
[optimizing compiler] x86 goodness

Implement the x86 version of
https://android-review.googlesource.com/#/c/129560/, which made some
enhancements to x86_64 code.
- Use leal to implement 3 operand adds
- Use testl rather than cmpl to 0 for registers
- Use leaq for x86_64 for adds with constant in int32_t range

Note:
- The range and register allocator tests seem quite fragile.  I had to
  change ADD_INT_LIT8 to XOR_INT_LIT8 for the register allocator test to
  get the code to run.  It seems like this is a bit hard-coded to
  expected code generation sequences.  I also changes BuildTwoAdds to
  BuildTwoSubs for the same reason.
- For the live range test, I just changed the expected output, as the
  Locations were different.

Change-Id: I402f2e95ddc8be4eb0befb3dae1b29feadfa29ab
Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
compiler/optimizing/code_generator_x86.cc
compiler/optimizing/code_generator_x86_64.cc
compiler/optimizing/live_ranges_test.cc
compiler/optimizing/register_allocator_test.cc