a64_jitstate: Have 128-bit wide spills

This commit is contained in:
MerryMage 2018-01-26 18:35:46 +00:00
parent b513b2ef05
commit d497464c9f
2 changed files with 3 additions and 3 deletions

View file

@ -42,10 +42,10 @@ struct A64JitState {
alignas(16) std::array<u64, 64> vec{}; // Extension registers. alignas(16) std::array<u64, 64> vec{}; // Extension registers.
static constexpr size_t SpillCount = 64; static constexpr size_t SpillCount = 64;
std::array<u64, SpillCount> spill{}; // Spill. alignas(16) std::array<std::array<u64, 2>, SpillCount> spill{}; // Spill.
static Xbyak::Address GetSpillLocationFromIndex(size_t i) { static Xbyak::Address GetSpillLocationFromIndex(size_t i) {
using namespace Xbyak::util; using namespace Xbyak::util;
return qword[r15 + offsetof(A64JitState, spill) + i * sizeof(u64)]; return xword[r15 + offsetof(A64JitState, spill) + i * sizeof(u64) * 2];
} }
// For internal use (See: BlockOfCode::RunCode) // For internal use (See: BlockOfCode::RunCode)

View file

@ -53,7 +53,7 @@ inline size_t HostLocBitWidth(HostLoc loc) {
if (HostLocIsXMM(loc)) if (HostLocIsXMM(loc))
return 128; return 128;
if (HostLocIsSpill(loc)) if (HostLocIsSpill(loc))
return 64; return 128;
if (HostLocIsFlag(loc)) if (HostLocIsFlag(loc))
return 1; return 1;
UNREACHABLE(); UNREACHABLE();