Fix indexing on certain instructions

This commit is contained in:
DeaTh-G
2024-10-13 19:29:33 +02:00
committed by DeaTh-G
parent 847b750786
commit f23d22bc7f

View File

@@ -2338,13 +2338,13 @@ bool Recompiler::Recompile(
case PPC_INST_VSRAB: case PPC_INST_VSRAB:
// TODO: vectorize, ensure endianness is correct // TODO: vectorize, ensure endianness is correct
for (size_t i = 0; i < 16; i++) for (size_t i = 0; i < 16; i++)
println("\t{}.s8[{}] = {}.s8[{}] >> ({}.u8[{}] & 0x7);", v(insn.operands[0]), i, v(insn.operands[1]), i, v(insn.operands[2]), i * 4); println("\t{}.s8[{}] = {}.s8[{}] >> ({}.u8[{}] & 0x7);", v(insn.operands[0]), i, v(insn.operands[1]), i, v(insn.operands[2]), i);
break; break;
case PPC_INST_VSRAH: case PPC_INST_VSRAH:
// TODO: vectorize, ensure endianness is correct // TODO: vectorize, ensure endianness is correct
for (size_t i = 0; i < 8; i++) for (size_t i = 0; i < 8; i++)
println("\t{}.s16[{}] = {}.s16[{}] >> ({}.u8[{}] & 0xF);", v(insn.operands[0]), i, v(insn.operands[1]), i, v(insn.operands[2]), i * 4); println("\t{}.s16[{}] = {}.s16[{}] >> ({}.u8[{}] & 0xF);", v(insn.operands[0]), i, v(insn.operands[1]), i, v(insn.operands[2]), i * 2);
break; break;
case PPC_INST_VSRAW: case PPC_INST_VSRAW:
@@ -2357,7 +2357,7 @@ bool Recompiler::Recompile(
case PPC_INST_VSRH: case PPC_INST_VSRH:
// TODO: vectorize, ensure endianness is correct // TODO: vectorize, ensure endianness is correct
for (size_t i = 0; i < 8; i++) for (size_t i = 0; i < 8; i++)
println("\t{}.u16[{}] = {}.u16[{}] >> ({}.u8[{}] & 0xF);", v(insn.operands[0]), i, v(insn.operands[1]), i, v(insn.operands[2]), i * 4); println("\t{}.u16[{}] = {}.u16[{}] >> ({}.u8[{}] & 0xF);", v(insn.operands[0]), i, v(insn.operands[1]), i, v(insn.operands[2]), i * 2);
break; break;
case PPC_INST_VSRW: case PPC_INST_VSRW: