diff options
author | Artem Serov <artem.serov@linaro.org> | 2017-04-11 10:51:56 +0100 |
---|---|---|
committer | Artem Serov <artem.serov@linaro.org> | 2017-04-11 13:09:30 +0100 |
commit | 73d8387decc511b147888da15fe5128e47fe2f28 (patch) | |
tree | 212187a8ed696dffec0867dfd80a44c35a87cff6 | |
parent | 8e2049ccc3ab27d51eb54572d0b2874a95ff8c92 (diff) |
Fix release of a QRegisters within a ScratchRegisterScope.
Change-Id: I11107d3a7c19eaf31a1dd8ad512c67d4600b7930
-rw-r--r-- | src/aarch64/macro-assembler-aarch64.cc | 2 | ||||
-rw-r--r-- | test/aarch64/test-assembler-aarch64.cc | 19 |
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 |