From e27fae22d842402d56dd986a9e15b64079324520 Mon Sep 17 00:00:00 2001 From: Tillmann Karras Date: Thu, 5 Mar 2015 16:46:35 +0100 Subject: [PATCH 1/2] Jit64: drop a FIXME that has been fixed for years See 6cdb40a19420807268c1c962ef673cb297a3e72e. --- Source/Core/Core/PowerPC/Jit64/Jit_LoadStorePaired.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Source/Core/Core/PowerPC/Jit64/Jit_LoadStorePaired.cpp b/Source/Core/Core/PowerPC/Jit64/Jit_LoadStorePaired.cpp index 275c0b70fc..0aa5402cea 100644 --- a/Source/Core/Core/PowerPC/Jit64/Jit_LoadStorePaired.cpp +++ b/Source/Core/Core/PowerPC/Jit64/Jit_LoadStorePaired.cpp @@ -128,7 +128,6 @@ void Jit64::psq_stXX(UGeckoInstruction inst) AND(32, R(RSCRATCH2), PPCSTATE(spr[SPR_GQR0 + i])); MOVZX(32, 8, RSCRATCH, R(RSCRATCH2)); - // FIXME: Fix ModR/M encoding to allow [RSCRATCH2*8+disp32] without a base register! if (w) { // One value From 45dbcf0ed20219f77d2cece9ba5c48ceba23fe2d Mon Sep 17 00:00:00 2001 From: Tillmann Karras Date: Thu, 5 Mar 2015 19:20:50 +0100 Subject: [PATCH 2/2] Jit64: use MRegSum where appropriate --- Source/Core/Core/PowerPC/Jit64/JitAsm.cpp | 10 +++++----- Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp | 2 +- Source/Core/Core/PowerPC/Jit64/Jit_LoadStore.cpp | 4 ++-- .../Core/Core/PowerPC/Jit64/Jit_LoadStoreFloating.cpp | 4 ++-- Source/Core/Core/PowerPC/Jit64/Jit_LoadStorePaired.cpp | 8 ++++---- .../Core/Core/PowerPC/Jit64Common/Jit64AsmCommon.cpp | 8 ++++---- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/Source/Core/Core/PowerPC/Jit64/JitAsm.cpp b/Source/Core/Core/PowerPC/Jit64/JitAsm.cpp index a8d2445eb2..9b64e433ba 100644 --- a/Source/Core/Core/PowerPC/Jit64/JitAsm.cpp +++ b/Source/Core/Core/PowerPC/Jit64/JitAsm.cpp @@ -124,7 +124,7 @@ void Jit64AsmRoutineManager::Generate() else { MOV(64, R(RSCRATCH2), Imm64(icache)); - MOV(32, R(RSCRATCH), MComplex(RSCRATCH2, RSCRATCH, SCALE_1, 0)); + MOV(32, R(RSCRATCH), MRegSum(RSCRATCH2, RSCRATCH)); } exit_mem = J(); @@ -139,7 +139,7 @@ void Jit64AsmRoutineManager::Generate() else { MOV(64, R(RSCRATCH2), Imm64(icacheVmem)); - MOV(32, R(RSCRATCH), MComplex(RSCRATCH2, RSCRATCH, SCALE_1, 0)); + MOV(32, R(RSCRATCH), MRegSum(RSCRATCH2, RSCRATCH)); } if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) exit_vmem = J(); @@ -157,7 +157,7 @@ void Jit64AsmRoutineManager::Generate() else { MOV(64, R(RSCRATCH2), Imm64(icacheEx)); - MOV(32, R(RSCRATCH), MComplex(RSCRATCH2, RSCRATCH, SCALE_1, 0)); + MOV(32, R(RSCRATCH), MRegSum(RSCRATCH2, RSCRATCH)); } SetJumpTarget(no_exram); @@ -172,12 +172,12 @@ void Jit64AsmRoutineManager::Generate() u64 codePointers = (u64)jit->GetBlockCache()->GetCodePointers(); if (codePointers <= INT_MAX) { - JMPptr(MScaled(RSCRATCH, 8, (s32)codePointers)); + JMPptr(MScaled(RSCRATCH, SCALE_8, (s32)codePointers)); } else { MOV(64, R(RSCRATCH2), Imm64(codePointers)); - JMPptr(MComplex(RSCRATCH2, RSCRATCH, 8, 0)); + JMPptr(MComplex(RSCRATCH2, RSCRATCH, SCALE_8, 0)); } SetJumpTarget(notfound); diff --git a/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp b/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp index 0131ef89ac..014cd133eb 100644 --- a/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp +++ b/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp @@ -1273,7 +1273,7 @@ void Jit64::addx(UGeckoInstruction inst) { gpr.Lock(a, b, d); gpr.BindToRegister(d, false); - LEA(32, gpr.RX(d), MComplex(gpr.RX(a), gpr.RX(b), 1, 0)); + LEA(32, gpr.RX(d), MRegSum(gpr.RX(a), gpr.RX(b))); needs_test = true; } else diff --git a/Source/Core/Core/PowerPC/Jit64/Jit_LoadStore.cpp b/Source/Core/Core/PowerPC/Jit64/Jit_LoadStore.cpp index 53c2479729..d1f6d9f62e 100644 --- a/Source/Core/Core/PowerPC/Jit64/Jit_LoadStore.cpp +++ b/Source/Core/Core/PowerPC/Jit64/Jit_LoadStore.cpp @@ -234,7 +234,7 @@ void Jit64::lXXx(UGeckoInstruction inst) } else if (gpr.R(a).IsSimpleReg() && gpr.R(b).IsSimpleReg()) { - LEA(32, RSCRATCH2, MComplex(gpr.RX(a), gpr.RX(b), SCALE_1, 0)); + LEA(32, RSCRATCH2, MRegSum(gpr.RX(a), gpr.RX(b))); } else { @@ -451,7 +451,7 @@ void Jit64::stXx(UGeckoInstruction inst) if (gpr.R(a).IsSimpleReg() && gpr.R(b).IsSimpleReg()) { - LEA(32, RSCRATCH2, MComplex(gpr.RX(a), gpr.RX(b), SCALE_1, 0)); + LEA(32, RSCRATCH2, MRegSum(gpr.RX(a), gpr.RX(b))); } else { diff --git a/Source/Core/Core/PowerPC/Jit64/Jit_LoadStoreFloating.cpp b/Source/Core/Core/PowerPC/Jit64/Jit_LoadStoreFloating.cpp index bc61136a6c..e1a90b62bf 100644 --- a/Source/Core/Core/PowerPC/Jit64/Jit_LoadStoreFloating.cpp +++ b/Source/Core/Core/PowerPC/Jit64/Jit_LoadStoreFloating.cpp @@ -48,7 +48,7 @@ void Jit64::lfXXX(UGeckoInstruction inst) { addr = R(RSCRATCH2); if (a && gpr.R(a).IsSimpleReg() && gpr.R(b).IsSimpleReg()) - LEA(32, RSCRATCH2, MComplex(gpr.RX(a), gpr.RX(b), SCALE_1, 0)); + LEA(32, RSCRATCH2, MRegSum(gpr.RX(a), gpr.RX(b))); else { MOV(32, addr, gpr.R(b)); @@ -160,7 +160,7 @@ void Jit64::stfXXX(UGeckoInstruction inst) if (indexed) { if (a && gpr.R(a).IsSimpleReg() && gpr.R(b).IsSimpleReg()) - LEA(32, RSCRATCH2, MComplex(gpr.RX(a), gpr.RX(b), SCALE_1, 0)); + LEA(32, RSCRATCH2, MRegSum(gpr.RX(a), gpr.RX(b))); else { MOV(32, R(RSCRATCH2), gpr.R(b)); diff --git a/Source/Core/Core/PowerPC/Jit64/Jit_LoadStorePaired.cpp b/Source/Core/Core/PowerPC/Jit64/Jit_LoadStorePaired.cpp index 0aa5402cea..689ffb289c 100644 --- a/Source/Core/Core/PowerPC/Jit64/Jit_LoadStorePaired.cpp +++ b/Source/Core/Core/PowerPC/Jit64/Jit_LoadStorePaired.cpp @@ -57,7 +57,7 @@ void Jit64::psq_stXX(UGeckoInstruction inst) addr = RSCRATCH2; if (a && gpr.R(a).IsSimpleReg() && gpr.R(b).IsSimpleReg()) { - LEA(32, addr, MComplex(gpr.RX(a), gpr.RX(b), SCALE_1, 0)); + LEA(32, addr, MRegSum(gpr.RX(a), gpr.RX(b))); } else { @@ -105,7 +105,7 @@ void Jit64::psq_stXX(UGeckoInstruction inst) if (gpr.R(a).IsSimpleReg() && gpr.R(b).IsSimpleReg() && (indexed || offset)) { if (indexed) - LEA(32, RSCRATCH_EXTRA, MComplex(gpr.RX(a), gpr.RX(b), SCALE_1, 0)); + LEA(32, RSCRATCH_EXTRA, MRegSum(gpr.RX(a), gpr.RX(b))); else LEA(32, RSCRATCH_EXTRA, MDisp(gpr.RX(a), offset)); } @@ -190,7 +190,7 @@ void Jit64::psq_lXX(UGeckoInstruction inst) addr = RSCRATCH2; if (a && gpr.R(a).IsSimpleReg() && gpr.R(b).IsSimpleReg()) { - LEA(32, addr, MComplex(gpr.RX(a), gpr.RX(b), SCALE_1, 0)); + LEA(32, addr, MRegSum(gpr.RX(a), gpr.RX(b))); } else { @@ -282,7 +282,7 @@ void Jit64::psq_lXX(UGeckoInstruction inst) if (gpr.R(a).IsSimpleReg() && gpr.R(b).IsSimpleReg() && (indexed || offset)) { if (indexed) - LEA(32, RSCRATCH_EXTRA, MComplex(gpr.RX(a), gpr.RX(b), SCALE_1, 0)); + LEA(32, RSCRATCH_EXTRA, MRegSum(gpr.RX(a), gpr.RX(b))); else LEA(32, RSCRATCH_EXTRA, MDisp(gpr.RX(a), offset)); } diff --git a/Source/Core/Core/PowerPC/Jit64Common/Jit64AsmCommon.cpp b/Source/Core/Core/PowerPC/Jit64Common/Jit64AsmCommon.cpp index c714067b8f..d62b68d92a 100644 --- a/Source/Core/Core/PowerPC/Jit64Common/Jit64AsmCommon.cpp +++ b/Source/Core/Core/PowerPC/Jit64Common/Jit64AsmCommon.cpp @@ -428,12 +428,12 @@ void CommonAsmRoutines::GenQuantizedLoads() } else if (cpu_info.bSSSE3) { - MOVQ_xmm(XMM0, MComplex(RMEM, RSCRATCH_EXTRA, 1, 0)); + MOVQ_xmm(XMM0, MRegSum(RMEM, RSCRATCH_EXTRA)); PSHUFB(XMM0, M(pbswapShuffle2x4)); } else { - LoadAndSwap(64, RSCRATCH_EXTRA, MComplex(RMEM, RSCRATCH_EXTRA, 1, 0)); + LoadAndSwap(64, RSCRATCH_EXTRA, MRegSum(RMEM, RSCRATCH_EXTRA)); ROL(64, R(RSCRATCH_EXTRA), Imm8(32)); MOVQ_xmm(XMM0, R(RSCRATCH_EXTRA)); } @@ -448,13 +448,13 @@ void CommonAsmRoutines::GenQuantizedLoads() } else if (cpu_info.bSSSE3) { - MOVD_xmm(XMM0, MComplex(RMEM, RSCRATCH_EXTRA, 1, 0)); + MOVD_xmm(XMM0, MRegSum(RMEM, RSCRATCH_EXTRA)); PSHUFB(XMM0, M(pbswapShuffle1x4)); UNPCKLPS(XMM0, M(m_one)); } else { - LoadAndSwap(32, RSCRATCH_EXTRA, MComplex(RMEM, RSCRATCH_EXTRA, 1, 0)); + LoadAndSwap(32, RSCRATCH_EXTRA, MRegSum(RMEM, RSCRATCH_EXTRA)); MOVD_xmm(XMM0, R(RSCRATCH_EXTRA)); UNPCKLPS(XMM0, M(m_one)); }