From 1f42af9da3cb87a9b52461a5c7a098153ea5a6dd Mon Sep 17 00:00:00 2001 From: lizzie Date: Tue, 4 Nov 2025 05:14:24 +0000 Subject: [PATCH] let type deduction do its thing Signed-off-by: lizzie --- .../src/dynarmic/backend/ppc64/emit_ppc64.cpp | 6 +- .../dynarmic/backend/ppc64/emit_ppc64_a32.cpp | 8 +- .../dynarmic/backend/ppc64/emit_ppc64_a64.cpp | 12 +- .../ppc64/emit_ppc64_data_processing.cpp | 380 +++++++++--------- 4 files changed, 203 insertions(+), 203 deletions(-) diff --git a/src/dynarmic/src/dynarmic/backend/ppc64/emit_ppc64.cpp b/src/dynarmic/src/dynarmic/backend/ppc64/emit_ppc64.cpp index 20c95a62ec..c71b0c1a5a 100644 --- a/src/dynarmic/src/dynarmic/backend/ppc64/emit_ppc64.cpp +++ b/src/dynarmic/src/dynarmic/backend/ppc64/emit_ppc64.cpp @@ -25,8 +25,8 @@ void EmitIR(powah::Context&, EmitContext&, IR::Inst*) {} template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.MR(result, source); ctx.reg_alloc.DefineValue(inst, result); } @@ -101,7 +101,7 @@ void EmitTerminal(powah::Context& code, EmitContext& ctx, IR::Term::ReturnToDisp } void EmitTerminal(powah::Context& code, EmitContext& ctx, IR::Term::LinkBlock terminal, IR::LocationDescriptor initial_location, bool) { - powah::GPR const tmp = ctx.reg_alloc.ScratchGpr(); + auto const tmp = ctx.reg_alloc.ScratchGpr(); if (ctx.emit_conf.a64_variant) { code.LI(tmp, terminal.next.Value()); code.STD(tmp, PPC64::RJIT, offsetof(A64JitState, pc)); diff --git a/src/dynarmic/src/dynarmic/backend/ppc64/emit_ppc64_a32.cpp b/src/dynarmic/src/dynarmic/backend/ppc64/emit_ppc64_a32.cpp index 6b8d1997fe..2b9c77f95c 100644 --- a/src/dynarmic/src/dynarmic/backend/ppc64/emit_ppc64_a32.cpp +++ b/src/dynarmic/src/dynarmic/backend/ppc64/emit_ppc64_a32.cpp @@ -24,7 +24,7 @@ void EmitIR(powah::Context&, EmitContext&, IR::Inst* template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { if (inst->GetArg(0).GetType() == IR::Type::A32Reg) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); + auto const result = ctx.reg_alloc.ScratchGpr(); code.ADDI(result, PPC64::RJIT, A32::RegNumber(inst->GetArg(0).GetA32RegRef()) * sizeof(u32)); code.LWZ(result, result, offsetof(A32JitState, regs)); ctx.reg_alloc.DefineValue(inst, result); @@ -50,9 +50,9 @@ void EmitIR(powah::Context&, EmitContext&, IR::Inst*) template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const value = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const value = ctx.reg_alloc.UseGpr(inst->GetArg(1)); if (inst->GetArg(0).GetType() == IR::Type::A32Reg) { - powah::GPR const addr = ctx.reg_alloc.ScratchGpr(); + auto const addr = ctx.reg_alloc.ScratchGpr(); code.ADDI(addr, PPC64::RJIT, A32::RegNumber(inst->GetArg(0).GetA32RegRef()) * sizeof(u32)); code.STW(value, addr, offsetof(A32JitState, regs)); } else { @@ -112,7 +112,7 @@ void EmitIR(powah::Context& code, EmitContext& ctx, I template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); + auto const result = ctx.reg_alloc.ScratchGpr(); code.LD(result, PPC64::RJIT, offsetof(A32JitState, cpsr_nzcv)); code.RLWINM(result, result, 31, 31, 31); ctx.reg_alloc.DefineValue(inst, result); diff --git a/src/dynarmic/src/dynarmic/backend/ppc64/emit_ppc64_a64.cpp b/src/dynarmic/src/dynarmic/backend/ppc64/emit_ppc64_a64.cpp index 9e2c80c7a1..fef31c9de6 100644 --- a/src/dynarmic/src/dynarmic/backend/ppc64/emit_ppc64_a64.cpp +++ b/src/dynarmic/src/dynarmic/backend/ppc64/emit_ppc64_a64.cpp @@ -44,7 +44,7 @@ void EmitIR(powah::Context& code, EmitContext& ctx, IR:: template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { if (inst->GetArg(0).GetType() == IR::Type::A64Reg) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); + auto const result = ctx.reg_alloc.ScratchGpr(); auto const offs = offsetof(A64JitState, regs) + A64::RegNumber(inst->GetArg(0).GetA64RegRef()) * sizeof(u64); code.LWZ(result, PPC64::RJIT, offs); @@ -57,7 +57,7 @@ void EmitIR(powah::Context& code, EmitContext& ctx, IR::Ins template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { if (inst->GetArg(0).GetType() == IR::Type::A64Reg) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); + auto const result = ctx.reg_alloc.ScratchGpr(); auto const offs = offsetof(A64JitState, regs) + A64::RegNumber(inst->GetArg(0).GetA64RegRef()) * sizeof(u64); code.LD(result, PPC64::RJIT, offs); @@ -99,9 +99,9 @@ void EmitIR(powah::Context& code, EmitContext& ctx, IR:: template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const value = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const value = ctx.reg_alloc.UseGpr(inst->GetArg(1)); if (inst->GetArg(0).GetType() == IR::Type::A64Reg) { - powah::GPR const addr = ctx.reg_alloc.ScratchGpr(); + auto const addr = ctx.reg_alloc.ScratchGpr(); code.ADDI(addr, PPC64::RJIT, A64::RegNumber(inst->GetArg(0).GetA64RegRef()) * sizeof(u64)); code.STD(value, addr, offsetof(A64JitState, regs)); } else { @@ -111,9 +111,9 @@ void EmitIR(powah::Context& code, EmitContext& ctx, IR::Ins template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const value = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const value = ctx.reg_alloc.UseGpr(inst->GetArg(1)); if (inst->GetArg(0).GetType() == IR::Type::A64Reg) { - powah::GPR const addr = ctx.reg_alloc.ScratchGpr(); + auto const addr = ctx.reg_alloc.ScratchGpr(); code.ADDI(addr, PPC64::RJIT, A64::RegNumber(inst->GetArg(0).GetA64RegRef()) * sizeof(u64)); code.STD(value, addr, offsetof(A64JitState, regs)); } else { diff --git a/src/dynarmic/src/dynarmic/backend/ppc64/emit_ppc64_data_processing.cpp b/src/dynarmic/src/dynarmic/backend/ppc64/emit_ppc64_data_processing.cpp index 242ae03ff1..5c34ff9961 100644 --- a/src/dynarmic/src/dynarmic/backend/ppc64/emit_ppc64_data_processing.cpp +++ b/src/dynarmic/src/dynarmic/backend/ppc64/emit_ppc64_data_processing.cpp @@ -36,8 +36,8 @@ uint64_t f(uint64_t a) { return (uint16_t)a; } */ template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.RLWINM(result, source, 0, 0xffff); ctx.reg_alloc.DefineValue(inst, result); } @@ -47,8 +47,8 @@ uint64_t f(uint64_t a) { return (uint8_t)a; } */ template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.RLWINM(result, source, 0, 0xff); ctx.reg_alloc.DefineValue(inst, result); } @@ -58,8 +58,8 @@ uint64_t f(uint64_t a) { return (uint32_t)(a >> 32); } */ template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.SRDI(result, source, 32); ctx.reg_alloc.DefineValue(inst, result); } @@ -69,8 +69,8 @@ uint64_t f(uint64_t a) { return ((uint32_t)a) >> 31; } */ template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.RLWINM(result, source, 1, 31, 31); ctx.reg_alloc.DefineValue(inst, result); } @@ -80,8 +80,8 @@ uint64_t f(uint64_t a) { return a == 0; } */ template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.CNTLZD(result, source); code.SRDI(result, result, 6); ctx.reg_alloc.DefineValue(inst, result); @@ -92,8 +92,8 @@ uint64_t f(uint64_t a) { return (uint32_t)a == 0; } */ template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.CNTLZW(result, source); code.SRWI(result, result, 5); ctx.reg_alloc.DefineValue(inst, result); @@ -104,8 +104,8 @@ uint64_t f(uint64_t a) { return (a & 1) != 0; } */ template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); if (inst->GetArg(1).IsImmediate()) { auto const shift = inst->GetArg(1).GetImmediateAsU64(); if (shift > 0) { @@ -131,9 +131,9 @@ uint64_t f(jit *p, uint64_t a, uint64_t b) { } */ static powah::GPR EmitConditionalSelectX(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const nzcv = ctx.reg_alloc.ScratchGpr(); - powah::GPR const then_ = ctx.reg_alloc.UseGpr(inst->GetArg(1)); - powah::GPR const else_ = ctx.reg_alloc.UseGpr(inst->GetArg(2)); + auto const nzcv = ctx.reg_alloc.ScratchGpr(); + auto const then_ = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const else_ = ctx.reg_alloc.UseGpr(inst->GetArg(2)); switch (inst->GetArg(0).GetCond()) { case IR::Cond::EQ: // Z == 1 code.LD(nzcv, PPC64::RJIT, offsetof(A32JitState, cpsr_nzcv)); @@ -188,7 +188,7 @@ static powah::GPR EmitConditionalSelectX(powah::Context& code, EmitContext& ctx, code.ISELEQ(nzcv, else_, then_); break; case IR::Cond::GE: { // N == V - powah::GPR const tmp = ctx.reg_alloc.ScratchGpr(); + auto const tmp = ctx.reg_alloc.ScratchGpr(); code.LWZ(nzcv, PPC64::RJIT, offsetof(A32JitState, cpsr_nzcv)); code.SRWI(tmp, nzcv, 3); code.XOR(nzcv, tmp, nzcv); @@ -196,7 +196,7 @@ static powah::GPR EmitConditionalSelectX(powah::Context& code, EmitContext& ctx, code.ISELGT(nzcv, else_, then_); } break; case IR::Cond::LT: { // N != V - powah::GPR const tmp = ctx.reg_alloc.ScratchGpr(); + auto const tmp = ctx.reg_alloc.ScratchGpr(); code.LWZ(nzcv, PPC64::RJIT, offsetof(A32JitState, cpsr_nzcv)); code.SRWI(tmp, nzcv, 3); code.XOR(nzcv, tmp, nzcv); @@ -204,7 +204,7 @@ static powah::GPR EmitConditionalSelectX(powah::Context& code, EmitContext& ctx, code.ISELGT(nzcv, then_, else_); } break; case IR::Cond::GT: { // Z == 0 && N == V - powah::GPR const tmp = ctx.reg_alloc.ScratchGpr(); + auto const tmp = ctx.reg_alloc.ScratchGpr(); powah::Label const l_ne = code.DefineLabel(); powah::Label const l_cc = code.DefineLabel(); powah::Label const l_fi = code.DefineLabel(); @@ -223,8 +223,8 @@ static powah::GPR EmitConditionalSelectX(powah::Context& code, EmitContext& ctx, code.LABEL(l_fi); } break; case IR::Cond::LE: { // Z == 1 || N != V - powah::GPR const tmp = ctx.reg_alloc.ScratchGpr(); - powah::GPR const tmp2 = ctx.reg_alloc.ScratchGpr(); + auto const tmp = ctx.reg_alloc.ScratchGpr(); + auto const tmp2 = ctx.reg_alloc.ScratchGpr(); powah::Label const l_ne = code.DefineLabel(); code.MR(tmp2, then_); code.LD(nzcv, PPC64::RJIT, offsetof(A32JitState, cpsr_nzcv)); @@ -245,29 +245,29 @@ static powah::GPR EmitConditionalSelectX(powah::Context& code, EmitContext& ctx, template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = EmitConditionalSelectX(code, ctx, inst); + auto const result = EmitConditionalSelectX(code, ctx, inst); code.RLDICL(result, result, 0, 32); ctx.reg_alloc.DefineValue(inst, result); } template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = EmitConditionalSelectX(code, ctx, inst); + auto const result = EmitConditionalSelectX(code, ctx, inst); ctx.reg_alloc.DefineValue(inst, result); } template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = EmitConditionalSelectX(code, ctx, inst); + auto const result = EmitConditionalSelectX(code, ctx, inst); code.RLDICL(result, result, 0, 32); ctx.reg_alloc.DefineValue(inst, result); } template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const shift = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const shift = ctx.reg_alloc.UseGpr(inst->GetArg(1)); code.SLW(result, source, shift); code.RLDICL(result, result, 0, 32); ctx.reg_alloc.DefineValue(inst, result); @@ -275,18 +275,18 @@ void EmitIR(powah::Context& code, EmitContext& c template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const shift = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const shift = ctx.reg_alloc.UseGpr(inst->GetArg(1)); code.SLD(result, source, shift); ctx.reg_alloc.DefineValue(inst, result); } template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const shift = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const shift = ctx.reg_alloc.UseGpr(inst->GetArg(1)); code.SRW(result, source, shift); code.RLDICL(result, result, 0, 32); ctx.reg_alloc.DefineValue(inst, result); @@ -297,18 +297,18 @@ uint64_t f(uint64_t a, uint64_t s) { return a >> s; } */ template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const shift = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const shift = ctx.reg_alloc.UseGpr(inst->GetArg(1)); code.SRD(result, source, shift); ctx.reg_alloc.DefineValue(inst, result); } template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const shift = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const shift = ctx.reg_alloc.UseGpr(inst->GetArg(1)); code.SRAW(result, source, shift); code.RLDICL(result, result, 0, 32); ctx.reg_alloc.DefineValue(inst, result); @@ -316,9 +316,9 @@ void EmitIR(powah::Context& code, EmitContex template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const shift = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const shift = ctx.reg_alloc.UseGpr(inst->GetArg(1)); code.SRAD(result, source, shift); ctx.reg_alloc.DefineValue(inst, result); } @@ -326,9 +326,9 @@ void EmitIR(powah::Context& code, EmitContex // __builtin_rotateright32 template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.NEG(result, src_a, powah::R0); code.ROTLW(result, result, src_b); code.RLDICL(result, result, 0, 32); @@ -337,9 +337,9 @@ void EmitIR(powah::Context& code, EmitContext& ctx, I template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.NEG(result, src_a, powah::R0); code.ROTLD(result, result, src_b); ctx.reg_alloc.DefineValue(inst, result); @@ -347,9 +347,9 @@ void EmitIR(powah::Context& code, EmitContext& ctx, I template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.NEG(result, src_a, powah::R0); code.ROTLD(result, result, src_b); ctx.reg_alloc.DefineValue(inst, result); @@ -357,8 +357,8 @@ void EmitIR(powah::Context& code, EmitContext& template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.SLW(result, source, source); code.RLDICL(result, result, 0, 32); ctx.reg_alloc.DefineValue(inst, result); @@ -366,16 +366,16 @@ void EmitIR(powah::Context& code, EmitCont template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.SLD(result, source, source); ctx.reg_alloc.DefineValue(inst, result); } template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.SRW(result, source, source); code.RLDICL(result, result, 0, 32); ctx.reg_alloc.DefineValue(inst, result); @@ -383,16 +383,16 @@ void EmitIR(powah::Context& code, EmitCon template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.SRD(result, source, source); ctx.reg_alloc.DefineValue(inst, result); } template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.SRAW(result, source, source); code.RLDICL(result, result, 0, 32); ctx.reg_alloc.DefineValue(inst, result); @@ -400,17 +400,17 @@ void EmitIR(powah::Context& code, Emit template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.SRAD(result, source, source); ctx.reg_alloc.DefineValue(inst, result); } template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.NEG(result, src_a, powah::R0); code.ROTLD(result, result, src_b); code.RLDICL(result, result, 0, 32); @@ -419,9 +419,9 @@ void EmitIR(powah::Context& code, EmitContext& template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.NEG(result, src_a, powah::R0); code.ROTLD(result, result, src_b); ctx.reg_alloc.DefineValue(inst, result); @@ -429,9 +429,9 @@ void EmitIR(powah::Context& code, EmitContext& template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); code.ADD(result, src_a, src_b); code.RLDICL(result, result, 0, 32); ctx.reg_alloc.DefineValue(inst, result); @@ -439,18 +439,18 @@ void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); code.ADD(result, src_a, src_b); ctx.reg_alloc.DefineValue(inst, result); } template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); code.SUBF(result, src_b, src_a); code.RLDICL(result, result, 0, 32); ctx.reg_alloc.DefineValue(inst, result); @@ -458,18 +458,18 @@ void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); code.SUBF(result, src_b, src_a); ctx.reg_alloc.DefineValue(inst, result); } template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); code.MULLW(result, src_a, src_b); code.RLDICL(result, result, 0, 32); ctx.reg_alloc.DefineValue(inst, result); @@ -477,36 +477,36 @@ void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); code.MULLD(result, src_a, src_b); ctx.reg_alloc.DefineValue(inst, result); } template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); code.MULLD(result, src_a, src_b); ctx.reg_alloc.DefineValue(inst, result); } template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); code.MULLD(result, src_a, src_b); ctx.reg_alloc.DefineValue(inst, result); } template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); code.DIVDU(result, src_a, src_b); code.RLDICL(result, result, 0, 32); ctx.reg_alloc.DefineValue(inst, result); @@ -514,18 +514,18 @@ void EmitIR(powah::Context& code, EmitContext& ctx, I template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); code.DIVDU(result, src_a, src_b); ctx.reg_alloc.DefineValue(inst, result); } template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); code.DIVW(result, src_a, src_b); code.EXTSW(result, result); ctx.reg_alloc.DefineValue(inst, result); @@ -533,36 +533,36 @@ void EmitIR(powah::Context& code, EmitContext& ctx, IR: template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); code.DIVD(result, src_a, src_b); ctx.reg_alloc.DefineValue(inst, result); } template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); code.AND(result, src_a, src_b); ctx.reg_alloc.DefineValue(inst, result); } template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); code.AND(result, src_a, src_b); ctx.reg_alloc.DefineValue(inst, result); } template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); code.NAND(result, src_a, src_b); code.RLDICL(result, result, 0, 32); ctx.reg_alloc.DefineValue(inst, result); @@ -570,18 +570,18 @@ void EmitIR(powah::Context& code, EmitContext& ctx, IR::In template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); code.NAND(result, src_a, src_b); ctx.reg_alloc.DefineValue(inst, result); } template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); code.XOR(result, src_a, src_b); code.RLDICL(result, result, 0, 32); ctx.reg_alloc.DefineValue(inst, result); @@ -589,18 +589,18 @@ void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); code.XOR(result, src_a, src_b); ctx.reg_alloc.DefineValue(inst, result); } template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); code.OR(result, src_a, src_b); code.RLDICL(result, result, 0, 32); ctx.reg_alloc.DefineValue(inst, result); @@ -608,17 +608,17 @@ void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(1)); code.OR(result, src_a, src_b); ctx.reg_alloc.DefineValue(inst, result); } template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.NOT(result, source); code.RLDICL(result, result, 0, 32); ctx.reg_alloc.DefineValue(inst, result); @@ -626,16 +626,16 @@ void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.NOT(result, source); ctx.reg_alloc.DefineValue(inst, result); } template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.EXTSB(result, source); code.RLDICL(result, result, 0, 32); ctx.reg_alloc.DefineValue(inst, result); @@ -643,8 +643,8 @@ void EmitIR(powah::Context& code, EmitContext& template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.EXTSH(result, source); code.RLDICL(result, result, 0, 32); ctx.reg_alloc.DefineValue(inst, result); @@ -652,32 +652,32 @@ void EmitIR(powah::Context& code, EmitContext& template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.EXTSH(result, source); ctx.reg_alloc.DefineValue(inst, result); } template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.EXTSB(result, source); ctx.reg_alloc.DefineValue(inst, result); } template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.EXTSW(result, source); ctx.reg_alloc.DefineValue(inst, result); } template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.RLWINM(result, source, 0, 0xff); code.RLDICL(result, result, 0, 32); ctx.reg_alloc.DefineValue(inst, result); @@ -685,8 +685,8 @@ void EmitIR(powah::Context& code, EmitContext& template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.RLWINM(result, source, 0, 0xffff); code.RLDICL(result, result, 0, 32); ctx.reg_alloc.DefineValue(inst, result); @@ -694,24 +694,24 @@ void EmitIR(powah::Context& code, EmitContext& template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.RLWINM(result, source, 0, 0xff); ctx.reg_alloc.DefineValue(inst, result); } template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.RLWINM(result, source, 0, 0xffff); ctx.reg_alloc.DefineValue(inst, result); } template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.RLDICL(result, source, 0, 32); ctx.reg_alloc.DefineValue(inst, result); } @@ -724,8 +724,8 @@ void EmitIR(powah::Context& code, EmitContext& // __builtin_bswap32 template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); if (false) { //code.BRW(result, source); code.RLDICL(result, result, 0, 32); @@ -739,8 +739,8 @@ void EmitIR(powah::Context& code, EmitContext& ctx, template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); if (false) { //code.BRH(result, source); code.RLWINM(result, source, 0, 0xff); @@ -754,13 +754,13 @@ void EmitIR(powah::Context& code, EmitContext& ctx, template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); if (false) { //code.BRD(result, source); } else { - powah::GPR const tmp10 = ctx.reg_alloc.ScratchGpr(); - powah::GPR const tmp9 = ctx.reg_alloc.ScratchGpr(); - powah::GPR const tmp3 = ctx.reg_alloc.ScratchGpr(); + auto const tmp10 = ctx.reg_alloc.ScratchGpr(); + auto const tmp9 = ctx.reg_alloc.ScratchGpr(); + auto const tmp3 = ctx.reg_alloc.ScratchGpr(); code.MR(tmp3, source); code.ROTLWI(tmp10, tmp3, 24); code.SRDI(tmp9, tmp3, 32); @@ -777,8 +777,8 @@ void EmitIR(powah::Context& code, EmitContext& ctx, // __builtin_clz template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.CNTLZW(result, source); ctx.reg_alloc.DefineValue(inst, result); } @@ -786,8 +786,8 @@ void EmitIR(powah::Context& code, EmitContext& // __builtin_clz template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const source = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.CNTLZD(result, source); ctx.reg_alloc.DefineValue(inst, result); } @@ -814,9 +814,9 @@ void EmitIR(powah::Context& code, EmitContext& ctx, template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.CMPD(powah::CR0, result, src_a); code.ISELGT(result, result, src_b); code.RLDICL(result, result, 0, 32); @@ -825,9 +825,9 @@ void EmitIR(powah::Context& code, EmitContext& ctx, IR: template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.CMPD(powah::CR0, result, src_a); code.ISELGT(result, result, src_b); ctx.reg_alloc.DefineValue(inst, result); @@ -835,9 +835,9 @@ void EmitIR(powah::Context& code, EmitContext& ctx, IR: template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.CMPLW(result, src_a); code.ISELGT(result, result, src_b); code.RLDICL(result, result, 0, 32); @@ -846,9 +846,9 @@ void EmitIR(powah::Context& code, EmitContext& ctx, I template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.CMPLD(result, src_a); code.ISELGT(result, result, src_b); ctx.reg_alloc.DefineValue(inst, result); @@ -856,9 +856,9 @@ void EmitIR(powah::Context& code, EmitContext& ctx, I template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.CMPW(powah::CR0, result, src_a); code.ISELGT(result, result, src_b); code.RLDICL(result, result, 0, 32); @@ -867,9 +867,9 @@ void EmitIR(powah::Context& code, EmitContext& ctx, IR: template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.CMPD(powah::CR0, result, src_a); code.ISELGT(result, result, src_b); ctx.reg_alloc.DefineValue(inst, result); @@ -877,9 +877,9 @@ void EmitIR(powah::Context& code, EmitContext& ctx, IR: template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.CMPLW(result, src_a); code.ISELGT(result, result, src_b); code.RLDICL(result, result, 0, 32); @@ -888,9 +888,9 @@ void EmitIR(powah::Context& code, EmitContext& ctx, I template<> void EmitIR(powah::Context& code, EmitContext& ctx, IR::Inst* inst) { - powah::GPR const result = ctx.reg_alloc.ScratchGpr(); - powah::GPR const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); - powah::GPR const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const result = ctx.reg_alloc.ScratchGpr(); + auto const src_a = ctx.reg_alloc.UseGpr(inst->GetArg(0)); + auto const src_b = ctx.reg_alloc.UseGpr(inst->GetArg(0)); code.CMPLD(result, src_a); code.ISELGT(result, result, src_b); ctx.reg_alloc.DefineValue(inst, result);