summaryrefslogtreecommitdiffstats
path: root/compiler/utils/arm/assembler_arm.h
diff options
context:
space:
mode:
authorNicolas Geoffray <ngeoffray@google.com>2015-02-10 19:33:22 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2015-02-10 19:33:23 +0000
commit1d6957f0b9d560c75a1901a83a45b4f3510a1015 (patch)
tree36a174d4b12ef46744c5f3e80f8afeb46809a2e6 /compiler/utils/arm/assembler_arm.h
parent0525d6aa15cb9db70e26c01f7e7a695bae377268 (diff)
parentf7a0c4e421b5edaad5b7a15bfff687da28d0b287 (diff)
downloadandroid_art-1d6957f0b9d560c75a1901a83a45b4f3510a1015.tar.gz
android_art-1d6957f0b9d560c75a1901a83a45b4f3510a1015.tar.bz2
android_art-1d6957f0b9d560c75a1901a83a45b4f3510a1015.zip
Merge "Improve ParallelMoveResolver to work with pairs."
Diffstat (limited to 'compiler/utils/arm/assembler_arm.h')
-rw-r--r--compiler/utils/arm/assembler_arm.h10
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,