summaryrefslogtreecommitdiff
path: root/compiler/optimizing/locations.h
diff options
context:
space:
mode:
author Aart Bik <ajcbik@google.com> 2017-03-21 20:14:07 -0700
committer Aart Bik <ajcbik@google.com> 2017-03-22 20:11:05 +0000
commitb13c65bb46544821a84ff2106d0710d77b0fb463 (patch)
tree46ef54ce881e32c80901528cf21a7951cf219023 /compiler/optimizing/locations.h
parent2b864659d4399de6c17e93b8df8cdbf08c6a7ac9 (diff)
Saves full XMM state along suspend check's slow path.
Rationale: Break-out CL of ART Vectorizer. We need to save 128-bit of data (default ABI of ART runtime only saves 64-bit) Note that this is *only* done for xmm registers that are live, so overhead is not too big. Bug: 34083438 Test: test-art-host Change-Id: Ic89988b0acb0c104634271d0c6c3e29b6596d59b
Diffstat (limited to 'compiler/optimizing/locations.h')
-rw-r--r--compiler/optimizing/locations.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/compiler/optimizing/locations.h b/compiler/optimizing/locations.h
index 091b58a63d..d391f6913c 100644
--- a/compiler/optimizing/locations.h
+++ b/compiler/optimizing/locations.h
@@ -417,6 +417,7 @@ std::ostream& operator<<(std::ostream& os, const Location::Policy& rhs);
class RegisterSet : public ValueObject {
public:
static RegisterSet Empty() { return RegisterSet(); }
+ static RegisterSet AllFpu() { return RegisterSet(0, -1); }
void Add(Location loc) {
if (loc.IsRegister()) {
@@ -462,6 +463,7 @@ class RegisterSet : public ValueObject {
private:
RegisterSet() : core_registers_(0), floating_point_registers_(0) {}
+ RegisterSet(uint32_t core, uint32_t fp) : core_registers_(core), floating_point_registers_(fp) {}
uint32_t core_registers_;
uint32_t floating_point_registers_;