OSDN Git Service

Implement double and float support for arm in register allocator.
authorNicolas Geoffray <ngeoffray@google.com>
Wed, 7 Jan 2015 16:01:24 +0000 (16:01 +0000)
committerNicolas Geoffray <ngeoffray@google.com>
Thu, 8 Jan 2015 13:57:51 +0000 (13:57 +0000)
commit840e5461a85f8908f51e7f6cd562a9129ff0e7ce
treeea8b4cbc5a0e3dea96fefcd9247e6c06b17ac518
parent893e8881e31180721512c1b9e5ffacb03aad2e45
Implement double and float support for arm in register allocator.

The basic approach is:
- An instruction that needs two registers gets two intervals.
- When allocating the low part, we also allocate the high part.
- When splitting a low (or high) interval, we also split the high
  (or low) equivalent.
- Allocation follows the (S/D register) requirement that low
  registers are always even and the high equivalent is low + 1.

Change-Id: I06a5148e05a2ffc7e7555d08e871ed007b4c2797
15 files changed:
compiler/optimizing/code_generator.cc
compiler/optimizing/code_generator.h
compiler/optimizing/code_generator_arm.cc
compiler/optimizing/code_generator_arm.h
compiler/optimizing/code_generator_arm64.h
compiler/optimizing/code_generator_x86.h
compiler/optimizing/code_generator_x86_64.h
compiler/optimizing/graph_visualizer.cc
compiler/optimizing/locations.h
compiler/optimizing/nodes.h
compiler/optimizing/register_allocator.cc
compiler/optimizing/register_allocator.h
compiler/optimizing/ssa_liveness_analysis.cc
compiler/optimizing/ssa_liveness_analysis.h
compiler/utils/arm/assembler_arm.h