mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-11 05:00:21 +02:00
Merge pull request #3562 from Sonicadvance1/fix_rsp_store_tso
OpcodeDispatcher: Fixes disabling TSO access on RSP SIB stores
This commit is contained in:
1 file changed
+12
-7
@@ -4457,9 +4457,6 @@ OrderedNode *OpDispatchBuilder::LoadSource_WithOpSize(RegisterClassType Class, X
|
||||
auto Constant = _Constant(GPRSize * 8, Operand.Data.SIB.Scale);
|
||||
Tmp = _Mul(IR::SizeToOpSize(GPRSize), Tmp, Constant);
|
||||
}
|
||||
if (Operand.Data.SIB.Index == FEXCore::X86State::REG_RSP && AccessType == MemoryAccessType::DEFAULT) {
|
||||
AccessType = MemoryAccessType::NONTSO;
|
||||
}
|
||||
}
|
||||
|
||||
if (Operand.Data.SIB.Base != FEXCore::X86State::REG_INVALID) {
|
||||
@@ -4471,10 +4468,6 @@ OrderedNode *OpDispatchBuilder::LoadSource_WithOpSize(RegisterClassType Class, X
|
||||
else {
|
||||
Tmp = GPR;
|
||||
}
|
||||
|
||||
if (Operand.Data.SIB.Base == FEXCore::X86State::REG_RSP && AccessType == MemoryAccessType::DEFAULT) {
|
||||
AccessType = MemoryAccessType::NONTSO;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4495,6 +4488,12 @@ OrderedNode *OpDispatchBuilder::LoadSource_WithOpSize(RegisterClassType Class, X
|
||||
}
|
||||
}
|
||||
|
||||
if ((Operand.Data.SIB.Base == FEXCore::X86State::REG_RSP ||
|
||||
Operand.Data.SIB.Index == FEXCore::X86State::REG_RSP)
|
||||
&& AccessType == MemoryAccessType::DEFAULT) {
|
||||
AccessType = MemoryAccessType::NONTSO;
|
||||
}
|
||||
|
||||
LoadableType = true;
|
||||
}
|
||||
else {
|
||||
@@ -4744,6 +4743,12 @@ void OpDispatchBuilder::StoreResult_WithOpSize(FEXCore::IR::RegisterClassType Cl
|
||||
MemStoreDst = _Bfe(IR::SizeToOpSize(std::max<uint8_t>(4u, AddrSize)), AddrSize * 8, 0, MemStoreDst);
|
||||
}
|
||||
|
||||
if ((Operand.Data.SIB.Base == FEXCore::X86State::REG_RSP ||
|
||||
Operand.Data.SIB.Index == FEXCore::X86State::REG_RSP)
|
||||
&& AccessType == MemoryAccessType::DEFAULT) {
|
||||
AccessType = MemoryAccessType::NONTSO;
|
||||
}
|
||||
|
||||
MemStore = true;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user