Revert "Avoid scratch register exhaustion during ARM64 stack slot moves."
Checker test fails.
Bug: 32545705
This reverts commit 4ec76d28f0f808117272134347abf828eea80b91.
Change-Id: Ief14978596341399404c504ec4ca6b68c54fd63c
diff --git a/compiler/optimizing/code_generator_arm64.cc b/compiler/optimizing/code_generator_arm64.cc
index 5c33fe1..13616db 100644
--- a/compiler/optimizing/code_generator_arm64.cc
+++ b/compiler/optimizing/code_generator_arm64.cc
@@ -1533,17 +1533,8 @@
DCHECK(source.IsStackSlot() || source.IsDoubleStackSlot());
DCHECK(source.IsDoubleStackSlot() == destination.IsDoubleStackSlot());
UseScratchRegisterScope temps(GetVIXLAssembler());
- // Use any scratch register (a core or a floating-point one)
- // from VIXL scratch register pools as a temporary.
- //
- // We used to only use the FP scratch register pool, but in some
- // rare cases the only register from this pool (D31) would
- // already be used (e.g. within a ParallelMove instruction, when
- // a move is blocked by a another move requiring a scratch FP
- // register, which would reserve D31). To prevent this issue, we
- // ask for a scratch register of any type (core or FP).
- CPURegister temp =
- temps.AcquireCPURegisterOfSize(destination.IsDoubleStackSlot() ? kXRegSize : kWRegSize);
+ // There is generally less pressure on FP registers.
+ FPRegister temp = destination.IsDoubleStackSlot() ? temps.AcquireD() : temps.AcquireS();
__ Ldr(temp, StackOperandFrom(source));
__ Str(temp, StackOperandFrom(destination));
}