summaryrefslogtreecommitdiffstats
path: root/compiler/optimizing/register_allocator.h
diff options
context:
space:
mode:
authorNicolas Geoffray <ngeoffray@google.com>2014-10-15 18:31:05 +0100
committerNicolas Geoffray <ngeoffray@google.com>2014-10-21 16:03:51 +0100
commit102cbed1e52b7c5f09458b44903fe97bb3e14d5f (patch)
treecb0a433c8f284021298c8a0c4dd0da97ca9d198a /compiler/optimizing/register_allocator.h
parent07f5c5edb7ef24ac35364e6ef9a8107a44e6564e (diff)
downloadart-102cbed1e52b7c5f09458b44903fe97bb3e14d5f.tar.gz
art-102cbed1e52b7c5f09458b44903fe97bb3e14d5f.tar.bz2
art-102cbed1e52b7c5f09458b44903fe97bb3e14d5f.zip
Implement register allocator for floating point registers.
Also: - Fix misuses of emitting the rex prefix in the x86_64 assembler. - Fix movaps code generation in the x86_64 assembler. Change-Id: Ib6dcf6e7c4a9c43368cfc46b02ba50f69ae69cbe
Diffstat (limited to 'compiler/optimizing/register_allocator.h')
-rw-r--r--compiler/optimizing/register_allocator.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/compiler/optimizing/register_allocator.h b/compiler/optimizing/register_allocator.h
index 0c3a9b3818..b88153969b 100644
--- a/compiler/optimizing/register_allocator.h
+++ b/compiler/optimizing/register_allocator.h
@@ -94,7 +94,7 @@ class RegisterAllocator {
bool IsBlocked(int reg) const;
// Update the interval for the register in `location` to cover [start, end).
- void BlockRegister(Location location, size_t start, size_t end, Primitive::Type type);
+ void BlockRegister(Location location, size_t start, size_t end);
// Allocate a spill slot for the given interval.
void AllocateSpillSlotFor(LiveInterval* interval);
@@ -156,7 +156,8 @@ class RegisterAllocator {
// Fixed intervals for physical registers. Such intervals cover the positions
// where an instruction requires a specific register.
- GrowableArray<LiveInterval*> physical_register_intervals_;
+ GrowableArray<LiveInterval*> physical_core_register_intervals_;
+ GrowableArray<LiveInterval*> physical_fp_register_intervals_;
// Intervals for temporaries. Such intervals cover the positions
// where an instruction requires a temporary.
@@ -179,7 +180,8 @@ class RegisterAllocator {
size_t* registers_array_;
// Blocked registers, as decided by the code generator.
- bool* const blocked_registers_;
+ bool* const blocked_core_registers_;
+ bool* const blocked_fp_registers_;
// Slots reserved for out arguments.
size_t reserved_out_slots_;