mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-23 14:00:47 +02:00
TestHarnessRunner: Reconverge YMM registers if AVX is supported
The TestHarness infrastructure doesn't understand the difference between converged versus split view. So fetch the split view immediately and reconverge the view manually inside of the state object so it continues working with the split ymm view.
This commit is contained in:
1 parent
f5fea8af96
commit
d0852cf1bb
1 file changed
+11
@@ -323,6 +323,17 @@ int main(int argc, char** argv, char** const envp) {
|
||||
FEX::HLE::_SyscallHandler->TM.DestroyThread(ParentThread, true);
|
||||
|
||||
SyscallHandler.reset();
|
||||
|
||||
if (SupportsAVX) {
|
||||
///< Reconstruct the XMM registers even if they are in split view, then remerge them.
|
||||
__uint128_t XMM_Low[FEXCore::Core::CPUState::NUM_XMMS];
|
||||
__uint128_t YMM_High[FEXCore::Core::CPUState::NUM_XMMS];
|
||||
CTX->ReconstructXMMRegisters(ParentThread->Thread, XMM_Low, YMM_High);
|
||||
for (size_t i = 0; i < FEXCore::Core::CPUState::NUM_XMMS; ++i) {
|
||||
memcpy(&State.xmm.avx.data[i][0], &XMM_Low[i], sizeof(__uint128_t));
|
||||
memcpy(&State.xmm.avx.data[i][2], &YMM_High[i], sizeof(__uint128_t));
|
||||
}
|
||||
}
|
||||
}
|
||||
#ifndef _WIN32
|
||||
else {
|
||||
|
||||
Reference in new issue
Block a user