summaryrefslogtreecommitdiff
path: root/compiler/optimizing/locations.h
diff options
context:
space:
mode:
author Mark Mendell <mark.p.mendell@intel.com> 2015-10-22 17:35:49 -0400
committer Mark Mendell <mark.p.mendell@intel.com> 2015-11-05 10:56:59 -0500
commitea5af68d6dda832bdfb5978a0c5d6f86a3f67e80 (patch)
tree01fbfdc1b686cafad2d545815980e3d0b0451e0a /compiler/optimizing/locations.h
parentb24301b06b31b463f7e92ebc9a8f75839e54b746 (diff)
X86-64: Split long/double constant array/field set
A long constant needs to be in a register to store to memory. By allowing stores of constants that are outside of the range of int32_t, we reduce register usage. Also support sets of float/double constants by using integer stores. Rename RegisterOrInt32LongConstant to RegisterOrInt32Constant as it now handles any type of constant. Change-Id: I025d9ef889a5a433e45aa03b376bae40f14197d2 Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
Diffstat (limited to 'compiler/optimizing/locations.h')
-rw-r--r--compiler/optimizing/locations.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/compiler/optimizing/locations.h b/compiler/optimizing/locations.h
index d014379bca..1181007666 100644
--- a/compiler/optimizing/locations.h
+++ b/compiler/optimizing/locations.h
@@ -354,8 +354,10 @@ class Location : public ValueObject {
}
static Location RegisterOrConstant(HInstruction* instruction);
- static Location RegisterOrInt32LongConstant(HInstruction* instruction);
+ static Location RegisterOrInt32Constant(HInstruction* instruction);
static Location ByteRegisterOrConstant(int reg, HInstruction* instruction);
+ static Location FpuRegisterOrConstant(HInstruction* instruction);
+ static Location FpuRegisterOrInt32Constant(HInstruction* instruction);
// The location of the first input to the instruction will be
// used to replace this unallocated location.