summaryrefslogtreecommitdiffstats
path: root/compiler/jni/quick/x86_64/calling_convention_x86_64.cc
diff options
context:
space:
mode:
authorSerguei Katkov <serguei.i.katkov@intel.com>2014-07-08 17:21:53 +0700
committerChao-ying Fu <chao-ying.fu@intel.com>2014-07-10 13:31:47 -0700
commitc380191f3048db2a3796d65db8e5d5a5e7b08c65 (patch)
tree56f7f5fc60f8445ead63cd43faf06b9e1dfda6b2 /compiler/jni/quick/x86_64/calling_convention_x86_64.cc
parentcba6b1fc88fd54c35211fd49a7a7501cfcdaa170 (diff)
downloadart-c380191f3048db2a3796d65db8e5d5a5e7b08c65.tar.gz
art-c380191f3048db2a3796d65db8e5d5a5e7b08c65.tar.bz2
art-c380191f3048db2a3796d65db8e5d5a5e7b08c65.zip
x86_64: Enable fp-reg promotion
Patch introduces 4 register XMM12-15 available for promotion of fp virtual registers. Change-Id: I3f89ad07fc8ae98b70f550eada09be7b693ffb67 Signed-off-by: Serguei Katkov <serguei.i.katkov@intel.com> Signed-off-by: Chao-ying Fu <chao-ying.fu@intel.com>
Diffstat (limited to 'compiler/jni/quick/x86_64/calling_convention_x86_64.cc')
-rw-r--r--compiler/jni/quick/x86_64/calling_convention_x86_64.cc8
1 files changed, 8 insertions, 0 deletions
diff --git a/compiler/jni/quick/x86_64/calling_convention_x86_64.cc b/compiler/jni/quick/x86_64/calling_convention_x86_64.cc
index 5febed24fe..525f05c522 100644
--- a/compiler/jni/quick/x86_64/calling_convention_x86_64.cc
+++ b/compiler/jni/quick/x86_64/calling_convention_x86_64.cc
@@ -130,6 +130,10 @@ X86_64JniCallingConvention::X86_64JniCallingConvention(bool is_static, bool is_s
callee_save_regs_.push_back(X86_64ManagedRegister::FromCpuRegister(R13));
callee_save_regs_.push_back(X86_64ManagedRegister::FromCpuRegister(R14));
callee_save_regs_.push_back(X86_64ManagedRegister::FromCpuRegister(R15));
+ callee_save_regs_.push_back(X86_64ManagedRegister::FromXmmRegister(XMM12));
+ callee_save_regs_.push_back(X86_64ManagedRegister::FromXmmRegister(XMM13));
+ callee_save_regs_.push_back(X86_64ManagedRegister::FromXmmRegister(XMM14));
+ callee_save_regs_.push_back(X86_64ManagedRegister::FromXmmRegister(XMM15));
}
uint32_t X86_64JniCallingConvention::CoreSpillMask() const {
@@ -137,6 +141,10 @@ uint32_t X86_64JniCallingConvention::CoreSpillMask() const {
1 << kNumberOfCpuRegisters;
}
+uint32_t X86_64JniCallingConvention::FpSpillMask() const {
+ return 1 << XMM12 | 1 << XMM13 | 1 << XMM14 | 1 << XMM15;
+}
+
size_t X86_64JniCallingConvention::FrameSize() {
// Method*, return address and callee save area size, local reference segment state
size_t frame_data_size = sizeof(StackReference<mirror::ArtMethod>) +