diff options
| author | Nicolas Geoffray <ngeoffray@google.com> | 2014-10-15 18:31:05 +0100 |
|---|---|---|
| committer | Nicolas Geoffray <ngeoffray@google.com> | 2014-10-21 16:03:51 +0100 |
| commit | 102cbed1e52b7c5f09458b44903fe97bb3e14d5f (patch) | |
| tree | cb0a433c8f284021298c8a0c4dd0da97ca9d198a /compiler/optimizing/register_allocator.h | |
| parent | 07f5c5edb7ef24ac35364e6ef9a8107a44e6564e (diff) | |
| download | art-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.h | 8 |
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_; |
