From 48557643450049310e3b1e71b5b074bce0450390 Mon Sep 17 00:00:00 2001 From: degasus Date: Sun, 22 Jan 2017 20:40:17 +0100 Subject: [PATCH] JitArm64: Implement leaf inlining. There is no BLR stack, so this is quite trivial. --- Source/Core/Core/PowerPC/JitArm64/Jit.cpp | 1 + Source/Core/Core/PowerPC/JitArm64/JitArm64_Branch.cpp | 11 ++++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Source/Core/Core/PowerPC/JitArm64/Jit.cpp b/Source/Core/Core/PowerPC/JitArm64/Jit.cpp index 7ccdb00614..d12c542399 100644 --- a/Source/Core/Core/PowerPC/JitArm64/Jit.cpp +++ b/Source/Core/Core/PowerPC/JitArm64/Jit.cpp @@ -55,6 +55,7 @@ void JitArm64::Init() code_block.m_fpa = &js.fpa; analyzer.SetOption(PPCAnalyst::PPCAnalyzer::OPTION_CONDITIONAL_CONTINUE); analyzer.SetOption(PPCAnalyst::PPCAnalyzer::OPTION_CARRY_MERGE); + analyzer.SetOption(PPCAnalyst::PPCAnalyzer::OPTION_BRANCH_FOLLOW); m_supports_cycle_counter = HasCycleCounters(); } diff --git a/Source/Core/Core/PowerPC/JitArm64/JitArm64_Branch.cpp b/Source/Core/Core/PowerPC/JitArm64/JitArm64_Branch.cpp index 4ba851d603..4d1142a184 100644 --- a/Source/Core/Core/PowerPC/JitArm64/JitArm64_Branch.cpp +++ b/Source/Core/Core/PowerPC/JitArm64/JitArm64_Branch.cpp @@ -76,9 +76,6 @@ void JitArm64::bx(UGeckoInstruction inst) INSTRUCTION_START JITDISABLE(bJITBranchOff); - gpr.Flush(FlushMode::FLUSH_ALL); - fpr.Flush(FlushMode::FLUSH_ALL); - u32 destination; if (inst.AA) destination = SignExt26(inst.LI << 2); @@ -93,6 +90,14 @@ void JitArm64::bx(UGeckoInstruction inst) gpr.Unlock(WA); } + if (!js.isLastInstruction) + { + return; + } + + gpr.Flush(FlushMode::FLUSH_ALL); + fpr.Flush(FlushMode::FLUSH_ALL); + if (destination == js.compilerPC) { // make idle loops go faster