emulator: Add log

This commit is contained in:
IndecisiveTurtle 2025-07-09 00:50:15 +03:00
parent 8d9383cf88
commit 6c0af8d21e
2 changed files with 9 additions and 4 deletions

View file

@ -133,6 +133,7 @@ void Emulator::Run(std::filesystem::path file, const std::vector<std::string> ar
LOG_INFO(Config, "General isNeo: {}", Config::isNeoModeConsole()); LOG_INFO(Config, "General isNeo: {}", Config::isNeoModeConsole());
LOG_INFO(Config, "GPU isNullGpu: {}", Config::nullGpu()); LOG_INFO(Config, "GPU isNullGpu: {}", Config::nullGpu());
LOG_INFO(Config, "GPU readbacks: {}", Config::readbacks()); LOG_INFO(Config, "GPU readbacks: {}", Config::readbacks());
LOG_INFO(Config, "GPU readbackLinearImages: {}", Config::readbackLinearImages());
LOG_INFO(Config, "GPU directMemoryAccess: {}", Config::directMemoryAccess()); LOG_INFO(Config, "GPU directMemoryAccess: {}", Config::directMemoryAccess());
LOG_INFO(Config, "GPU shouldDumpShaders: {}", Config::dumpShaders()); LOG_INFO(Config, "GPU shouldDumpShaders: {}", Config::dumpShaders());
LOG_INFO(Config, "GPU vblankDivider: {}", Config::vblankDiv()); LOG_INFO(Config, "GPU vblankDivider: {}", Config::vblankDiv());

View file

@ -586,10 +586,14 @@ void Translator::S_MOV(const GcnInst& inst) {
} }
void Translator::S_MOV_B64(const GcnInst& inst) { void Translator::S_MOV_B64(const GcnInst& inst) {
// Moving SGPR to SGPR is used for thread masks, like most operations, but it can also be used for moving sharps. // Moving SGPR to SGPR is used for thread masks, like most operations, but it can also be used
if (inst.dst[0].field == OperandField::ScalarGPR && inst.src[0].field == OperandField::ScalarGPR) { // for moving sharps.
ir.SetScalarReg(IR::ScalarReg(inst.dst[0].code), ir.GetScalarReg(IR::ScalarReg(inst.src[0].code))); if (inst.dst[0].field == OperandField::ScalarGPR &&
ir.SetScalarReg(IR::ScalarReg(inst.dst[0].code + 1), ir.GetScalarReg(IR::ScalarReg(inst.src[0].code + 1))); inst.src[0].field == OperandField::ScalarGPR) {
ir.SetScalarReg(IR::ScalarReg(inst.dst[0].code),
ir.GetScalarReg(IR::ScalarReg(inst.src[0].code)));
ir.SetScalarReg(IR::ScalarReg(inst.dst[0].code + 1),
ir.GetScalarReg(IR::ScalarReg(inst.src[0].code + 1)));
} }
const IR::U1 src = [&] { const IR::U1 src = [&] {
switch (inst.src[0].field) { switch (inst.src[0].field) {