aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArtem Serov <artem.serov@linaro.org>2017-04-11 10:51:56 +0100
committerArtem Serov <artem.serov@linaro.org>2017-04-11 13:09:30 +0100
commit73d8387decc511b147888da15fe5128e47fe2f28 (patch)
tree212187a8ed696dffec0867dfd80a44c35a87cff6
parent8e2049ccc3ab27d51eb54572d0b2874a95ff8c92 (diff)
Fix release of a QRegisters within a ScratchRegisterScope.
Change-Id: I11107d3a7c19eaf31a1dd8ad512c67d4600b7930
-rw-r--r--src/aarch64/macro-assembler-aarch64.cc2
-rw-r--r--test/aarch64/test-assembler-aarch64.cc19
2 files changed, 20 insertions, 1 deletions
diff --git a/src/aarch64/macro-assembler-aarch64.cc b/src/aarch64/macro-assembler-aarch64.cc
index 69b689df..9eb40336 100644
--- a/src/aarch64/macro-assembler-aarch64.cc
+++ b/src/aarch64/macro-assembler-aarch64.cc
@@ -2737,7 +2737,7 @@ void UseScratchRegisterScope::Release(const CPURegister& reg) {
VIXL_ASSERT(masm_ != NULL);
if (reg.IsRegister()) {
ReleaseByCode(masm_->GetScratchRegisterList(), reg.GetCode());
- } else if (reg.IsFPRegister()) {
+ } else if (reg.IsVRegister()) {
ReleaseByCode(masm_->GetScratchFPRegisterList(), reg.GetCode());
} else {
VIXL_ASSERT(reg.IsNone());
diff --git a/test/aarch64/test-assembler-aarch64.cc b/test/aarch64/test-assembler-aarch64.cc
index ec861441..7096fce4 100644
--- a/test/aarch64/test-assembler-aarch64.cc
+++ b/test/aarch64/test-assembler-aarch64.cc
@@ -23144,6 +23144,25 @@ TEST(nop) {
masm.FinalizeCode();
}
+TEST(scratch_scope_basic_v) {
+ MacroAssembler masm;
+
+ {
+ UseScratchRegisterScope temps(&masm);
+ VRegister temp = temps.AcquireVRegisterOfSize(kQRegSize);
+ VIXL_CHECK(temp.Aliases(v31));
+ }
+ {
+ UseScratchRegisterScope temps(&masm);
+ VRegister temp = temps.AcquireVRegisterOfSize(kDRegSize);
+ VIXL_CHECK(temp.Aliases(v31));
+ }
+ {
+ UseScratchRegisterScope temps(&masm);
+ VRegister temp = temps.AcquireVRegisterOfSize(kSRegSize);
+ VIXL_CHECK(temp.Aliases(v31));
+ }
+}
} // namespace aarch64
} // namespace vixl