diff options
| author | gibbed <rick@gibbed.us> | 2018-11-23 08:02:09 -0600 |
|---|---|---|
| committer | gibbed <rick@gibbed.us> | 2018-11-23 08:02:09 -0600 |
| commit | 7d07720de13ca0463377d8549181db438ae65c65 (patch) | |
| tree | 758f5e493991cf5712920aca2e843f7367d67718 | |
| parent | 4c04a9383a2815c71c9dcd92838acdc1f97ecaa1 (diff) | |
[JIT] Zero constant propagation for OPCODE_SHL/OPCODE_SHR.
| -rw-r--r-- | src/xenia/cpu/compiler/passes/constant_propagation_pass.cc | 8 |
1 files changed, 8 insertions, 0 deletions
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: |
