From 7d07720de13ca0463377d8549181db438ae65c65 Mon Sep 17 00:00:00 2001 From: gibbed Date: Fri, 23 Nov 2018 08:02:09 -0600 Subject: [PATCH] [JIT] Zero constant propagation for OPCODE_SHL/OPCODE_SHR. --- .../cpu/compiler/passes/constant_propagation_pass.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/xenia/cpu/compiler/passes/constant_propagation_pass.cc b/src/xenia/cpu/compiler/passes/constant_propagation_pass.cc index e44fce425..3db8e99d6 100644 --- a/src/xenia/cpu/compiler/passes/constant_propagation_pass.cc +++ b/src/xenia/cpu/compiler/passes/constant_propagation_pass.cc @@ -618,6 +618,10 @@ bool ConstantPropagationPass::Run(HIRBuilder* builder) { v->set_from(i->src1.value); v->Shl(i->src2.value); i->Remove(); + } else if (i->src2.value->IsConstantZero()) { + auto src1 = i->src1.value; + i->Replace(&OPCODE_ASSIGN_info, 0); + i->set_src1(src1); } break; case OPCODE_SHR: @@ -625,6 +629,10 @@ bool ConstantPropagationPass::Run(HIRBuilder* builder) { v->set_from(i->src1.value); v->Shr(i->src2.value); i->Remove(); + } else if (i->src2.value->IsConstantZero()) { + auto src1 = i->src1.value; + i->Replace(&OPCODE_ASSIGN_info, 0); + i->set_src1(src1); } break; case OPCODE_SHA: