diff options
author | Nicolas Geoffray <ngeoffray@google.com> | 2015-02-10 17:08:47 +0000 |
---|---|---|
committer | Nicolas Geoffray <ngeoffray@google.com> | 2015-02-10 19:12:59 +0000 |
commit | f7a0c4e421b5edaad5b7a15bfff687da28d0b287 (patch) | |
tree | 5423a2357661b80d75cb2e3a2b5395a3fe3cd9b5 /compiler/utils/arm/assembler_arm.h | |
parent | 0f2433bfcb02a662fe739e8e2b068abc2958e4c1 (diff) | |
download | android_art-f7a0c4e421b5edaad5b7a15bfff687da28d0b287.tar.gz android_art-f7a0c4e421b5edaad5b7a15bfff687da28d0b287.tar.bz2 android_art-f7a0c4e421b5edaad5b7a15bfff687da28d0b287.zip |
Improve ParallelMoveResolver to work with pairs.
Change-Id: Ie2a540ffdb78f7f15d69c16a08ca2d3e794f65b9
Diffstat (limited to 'compiler/utils/arm/assembler_arm.h')
-rw-r--r-- | compiler/utils/arm/assembler_arm.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/compiler/utils/arm/assembler_arm.h b/compiler/utils/arm/assembler_arm.h index d9122764d0..0d84ba7e0b 100644 --- a/compiler/utils/arm/assembler_arm.h +++ b/compiler/utils/arm/assembler_arm.h @@ -541,6 +541,16 @@ class ArmAssembler : public Assembler { } } + void LoadDImmediate(DRegister sd, double value, Condition cond = AL) { + if (!vmovd(sd, value, cond)) { + uint64_t int_value = bit_cast<uint64_t, double>(value); + LoadSImmediate( + static_cast<SRegister>(sd << 1), bit_cast<float, uint32_t>(Low32Bits(int_value))); + LoadSImmediate( + static_cast<SRegister>((sd << 1) + 1), bit_cast<float, uint32_t>(High32Bits(int_value))); + } + } + virtual void MarkExceptionHandler(Label* label) = 0; virtual void LoadFromOffset(LoadOperandType type, Register reg, |