Bug 1914979 - Don't mark v8-v15 arm64 SIMD registers as non-volatile. r=yury

Only the bottom 64 bits will be preserved by C++ code so we shouldn't treat the SIMD registers
as non-volatile.

The patch in bug 1919803 has a Wasm test for this.

Differential Revision: https://phabricator.services.mozilla.com/D225646
This commit is contained in:
Jan de Mooij
2024-10-16 10:02:50 +00:00
parent 5bf0e1a232
commit c552d6825c

View File

@@ -491,10 +491,10 @@ class FloatRegisters {
(1 << FloatRegisters::s12) | (1 << FloatRegisters::s13) | (1 << FloatRegisters::s12) | (1 << FloatRegisters::s13) |
(1 << FloatRegisters::s14) | (1 << FloatRegisters::s15)); (1 << FloatRegisters::s14) | (1 << FloatRegisters::s15));
// Note: only the bottom 64 bits of v8-v15 will be preserved.
static constexpr SetType NonVolatileMask = static constexpr SetType NonVolatileMask =
(NonVolatileSingleMask << ShiftSingle) | (NonVolatileSingleMask << ShiftSingle) |
(NonVolatileSingleMask << ShiftDouble) | (NonVolatileSingleMask << ShiftDouble);
(NonVolatileSingleMask << ShiftSimd128);
static constexpr SetType VolatileMask = AllMask & ~NonVolatileMask; static constexpr SetType VolatileMask = AllMask & ~NonVolatileMask;