summaryrefslogtreecommitdiffstats
path: root/vm/compiler/codegen/arm/Assemble.cpp
diff options
context:
space:
mode:
authorSerban Constantinescu <serban.constantinescu@arm.com>2013-06-17 16:54:53 +0100
committerDavid Butcher <david.butcher@arm.com>2013-12-19 18:32:01 +0000
commitdcac30c78f7edd865307a4e54c21a369503fff73 (patch)
tree956322c7888d372825222f837a1084d68c2ba685 /vm/compiler/codegen/arm/Assemble.cpp
parent673f4c40382532c3b00b86f9e89bfd088b495f43 (diff)
downloadandroid_dalvik-dcac30c78f7edd865307a4e54c21a369503fff73.tar.gz
android_dalvik-dcac30c78f7edd865307a4e54c21a369503fff73.tar.bz2
android_dalvik-dcac30c78f7edd865307a4e54c21a369503fff73.zip
Dalvik: Add hardware vfp support for OP_LONG_TO_DOUBLE in JIT
The following patch adds hardware vfp support for OP_LONG_TO_DOUBLE in the JIT. Previously this opcode was implemented using one of gcc's builtin helpers. Change-Id: I3c88b2a527dea99dcefdb34be6695e75993da73e Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
Diffstat (limited to 'vm/compiler/codegen/arm/Assemble.cpp')
-rw-r--r--vm/compiler/codegen/arm/Assemble.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/vm/compiler/codegen/arm/Assemble.cpp b/vm/compiler/codegen/arm/Assemble.cpp
index d4707867e..5f2de72d6 100644
--- a/vm/compiler/codegen/arm/Assemble.cpp
+++ b/vm/compiler/codegen/arm/Assemble.cpp
@@ -447,6 +447,10 @@ ArmEncodingMap EncodingMap[kArmLast] = {
kFmtDfp, 22, 12, kFmtDfp, 7, 16, kFmtDfp, 5, 0,
kFmtUnused, -1, -1, IS_TERTIARY_OP | REG_DEF0_USE12,
"vdivd", "!0S, !1S, !2S", 2),
+ ENCODING_MAP(kThumb2VmlaF64, 0xee000b00,
+ kFmtDfp, 22, 12, kFmtDfp, 7, 16, kFmtDfp, 5, 0,
+ kFmtUnused, -1, -1, IS_TERTIARY_OP | REG_DEF0 | REG_USE012,
+ "vmla", "!0S, !1S, !2S", 2),
ENCODING_MAP(kThumb2VcvtIF, 0xeeb80ac0,
kFmtSfp, 22, 12, kFmtSfp, 5, 0, kFmtUnused, -1, -1,
kFmtUnused, -1, -1, IS_BINARY_OP | REG_DEF0_USE1,
@@ -471,6 +475,14 @@ ArmEncodingMap EncodingMap[kArmLast] = {
kFmtSfp, 22, 12, kFmtDfp, 5, 0, kFmtUnused, -1, -1,
kFmtUnused, -1, -1, IS_BINARY_OP | REG_DEF0_USE1,
"vcvt.f32.f64 ", "!0s, !1S", 2),
+ ENCODING_MAP(kThumb2VcvtF64S32, 0xeeb80bc0,
+ kFmtDfp, 22, 12, kFmtSfp, 5, 0, kFmtUnused, -1, -1,
+ kFmtUnused, -1, -1, IS_BINARY_OP | REG_DEF0_USE1,
+ "vcvt.f64.s32 ", "!0S, !1s", 2),
+ ENCODING_MAP(kThumb2VcvtF64U32, 0xeeb80b40,
+ kFmtDfp, 22, 12, kFmtSfp, 5, 0, kFmtUnused, -1, -1,
+ kFmtUnused, -1, -1, IS_BINARY_OP | REG_DEF0_USE1,
+ "vcvt.f64.u32 ", "!0S, !1s", 2),
ENCODING_MAP(kThumb2Vsqrts, 0xeeb10ac0,
kFmtSfp, 22, 12, kFmtSfp, 5, 0, kFmtUnused, -1, -1,
kFmtUnused, -1, -1, IS_BINARY_OP | REG_DEF0_USE1,