From 9b3d96a8aecd0d1a1deacfda16b7c0b582df07c3 Mon Sep 17 00:00:00 2001 From: Ben Vanik Date: Fri, 25 Jan 2013 23:45:13 -0800 Subject: [PATCH] Cleaning up instruction decoding names to match the docs better. --- include/xenia/cpu/ppc/instr.h | 52 +++++------ src/cpu/codegen/emit_alu.cc | 120 ++++++++++++------------- src/cpu/codegen/emit_control.cc | 4 +- src/cpu/codegen/emit_memory.cc | 152 ++++++++++++++++---------------- 4 files changed, 160 insertions(+), 168 deletions(-) diff --git a/include/xenia/cpu/ppc/instr.h b/include/xenia/cpu/ppc/instr.h index 065a8d8ab..ebdacc1e0 100644 --- a/include/xenia/cpu/ppc/instr.h +++ b/include/xenia/cpu/ppc/instr.h @@ -73,82 +73,74 @@ typedef struct { // kXEPPCInstrFormatI struct { - // TODO(benvanik): doc format update uint32_t LK : 1; uint32_t AA : 1; uint32_t LI : 24; - uint32_t OPCD : 6; + uint32_t : 6; } I; // kXEPPCInstrFormatB struct { - // TODO(benvanik): doc format update uint32_t LK : 1; uint32_t AA : 1; uint32_t BD : 14; uint32_t BI : 5; uint32_t BO : 5; - uint32_t OPCD : 6; + uint32_t : 6; } B; // kXEPPCInstrFormatSC // kXEPPCInstrFormatD struct { - // TODO(benvanik): doc format update - uint32_t SIMM : 16; - uint32_t A : 5; - uint32_t D : 5; - uint32_t OPCD : 6; + uint32_t DS : 16; + uint32_t RA : 5; + uint32_t RT : 5; + uint32_t : 6; } D; // kXEPPCInstrFormatDS struct { - // TODO(benvanik): doc format update uint32_t : 2; - uint32_t ds : 14; - uint32_t A : 5; - uint32_t S : 5; - uint32_t OPCD : 6; + uint32_t DS : 14; + uint32_t RA : 5; + uint32_t RT : 5; + uint32_t : 6; } DS; // kXEPPCInstrFormatX struct { - // TODO(benvanik): doc format update uint32_t Rc : 1; uint32_t : 10; - uint32_t B : 5; - uint32_t A : 5; - uint32_t D : 5; - uint32_t OPCD : 6; + uint32_t RB : 5; + uint32_t RA : 5; + uint32_t RT : 5; + uint32_t : 6; } X; // kXEPPCInstrFormatXL struct { - // TODO(benvanik): doc format update uint32_t LK : 1; uint32_t : 10; uint32_t BB : 5; uint32_t BI : 5; uint32_t BO : 5; - uint32_t OPCD : 6; + uint32_t : 6; } XL; // kXEPPCInstrFormatXFX struct { - // TODO(benvanik): doc format update uint32_t : 1; uint32_t : 10; uint32_t spr : 10; - uint32_t D : 5; - uint32_t OPCD : 6; + uint32_t RT : 5; + uint32_t : 6; } XFX; // kXEPPCInstrFormatXFL // kXEPPCInstrFormatXS // kXEPPCInstrFormatXO struct { - // TODO(benvanik): doc format update uint32_t Rc : 1; uint32_t : 8; uint32_t OE : 1; - uint32_t B : 5; - uint32_t A : 5; - uint32_t D : 5; - uint32_t OPCD : 6; + uint32_t RB : 5; + uint32_t RA : 5; + uint32_t RT : 5; + uint32_t : 6; } XO; // kXEPPCInstrFormatA // kXEPPCInstrFormatM @@ -159,7 +151,7 @@ typedef struct { uint32_t SH : 5; uint32_t RA : 5; uint32_t RS : 5; - uint32_t OPCD : 6; + uint32_t : 6; } M; // kXEPPCInstrFormatMD // kXEPPCInstrFormatMDS diff --git a/src/cpu/codegen/emit_alu.cc b/src/cpu/codegen/emit_alu.cc index c4973f3fc..d70e88b07 100644 --- a/src/cpu/codegen/emit_alu.cc +++ b/src/cpu/codegen/emit_alu.cc @@ -40,8 +40,8 @@ XEEMITTER(addx, 0x7C000214, XO )(FunctionGenerator& g, IRBuilder<>& b, I return 1; } - Value* v = b.CreateAdd(g.gpr_value(i.XO.A), g.gpr_value(i.XO.B)); - g.update_gpr_value(i.XO.D, v); + Value* v = b.CreateAdd(g.gpr_value(i.XO.RA), g.gpr_value(i.XO.RB)); + g.update_gpr_value(i.XO.RT, v); return 0; } @@ -60,11 +60,11 @@ XEEMITTER(addi, 0x38000000, D )(FunctionGenerator& g, IRBuilder<>& b, I // if RA = 0 then RT <- EXTS(SI) // else RT <- (RA) + EXTS(SI) - Value* v = b.getInt64(XEEXTS16(i.D.SIMM)); - if (i.D.A) { - v = b.CreateAdd(g.gpr_value(i.D.A), v); + Value* v = b.getInt64(XEEXTS16(i.D.DS)); + if (i.D.RA) { + v = b.CreateAdd(g.gpr_value(i.D.RA), v); } - g.update_gpr_value(i.D.D, v); + g.update_gpr_value(i.D.RT, v); return 0; } @@ -83,11 +83,11 @@ XEEMITTER(addis, 0x3C000000, D )(FunctionGenerator& g, IRBuilder<>& b, I // if RA = 0 then RT <- EXTS(SI) || i16.0 // else RT <- (RA) + EXTS(SI) || i16.0 - Value* v = b.getInt64(XEEXTS16(i.D.SIMM) << 16); - if (i.D.A) { - v = b.CreateAdd(g.gpr_value(i.D.A), v); + Value* v = b.getInt64(XEEXTS16(i.D.DS) << 16); + if (i.D.RA) { + v = b.CreateAdd(g.gpr_value(i.D.RA), v); } - g.update_gpr_value(i.D.D, v); + g.update_gpr_value(i.D.RT, v); return 0; } @@ -134,8 +134,8 @@ XEEMITTER(divwux, 0x7C000396, XO )(FunctionGenerator& g, IRBuilder<>& b, I return 1; } - Value* dividend = b.CreateTrunc(g.gpr_value(i.XO.A), b.getInt32Ty()); - Value* divisor = b.CreateTrunc(g.gpr_value(i.XO.B), b.getInt32Ty()); + Value* dividend = b.CreateTrunc(g.gpr_value(i.XO.RA), b.getInt32Ty()); + Value* divisor = b.CreateTrunc(g.gpr_value(i.XO.RB), b.getInt32Ty()); Value* v = b.CreateUDiv(dividend, divisor); v = b.CreateZExt(v, b.getInt64Ty()); @@ -175,8 +175,8 @@ XEEMITTER(mulli, 0x1C000000, D )(FunctionGenerator& g, IRBuilder<>& b, I // overflows. It should be truncating the result, but I'm not sure what LLVM // does. - Value* v = b.CreateMul(g.gpr_value(i.D.A), b.getInt64(XEEXTS16(i.D.SIMM))); - g.update_gpr_value(i.D.D, b.CreateTrunc(v, b.getInt64Ty())); + Value* v = b.CreateMul(g.gpr_value(i.D.RA), b.getInt64(XEEXTS16(i.D.DS))); + g.update_gpr_value(i.D.RT, b.CreateTrunc(v, b.getInt64Ty())); return 0; } @@ -195,9 +195,9 @@ XEEMITTER(mullwx, 0x7C0001D6, XO )(FunctionGenerator& g, IRBuilder<>& b, I return 1; } - Value* v = b.CreateMul(b.CreateSExt(g.gpr_value(i.XO.A), b.getInt64Ty()), - b.CreateSExt(g.gpr_value(i.XO.B), b.getInt64Ty())); - g.update_gpr_value(i.XO.D, v); + Value* v = b.CreateMul(b.CreateSExt(g.gpr_value(i.XO.RA), b.getInt64Ty()), + b.CreateSExt(g.gpr_value(i.XO.RB), b.getInt64Ty())); + g.update_gpr_value(i.XO.RT, v); return 0; } @@ -276,11 +276,11 @@ XEEMITTER(cmp, 0x7C000000, X )(FunctionGenerator& g, IRBuilder<>& b, I // c <- 0b001 // CR[4×BF+32:4×BF+35] <- c || XER[SO] - uint32_t BF = i.X.D >> 2; - uint32_t L = i.X.D & 1; + uint32_t BF = i.X.RT >> 2; + uint32_t L = i.X.RT & 1; - Value* lhs = g.gpr_value(i.X.A); - Value* rhs = g.gpr_value(i.X.B); + Value* lhs = g.gpr_value(i.X.RA); + Value* rhs = g.gpr_value(i.X.RB); if (!L) { // 32-bit - truncate and sign extend. lhs = b.CreateTrunc(lhs, b.getInt32Ty()); @@ -307,17 +307,17 @@ XEEMITTER(cmpi, 0x2C000000, D )(FunctionGenerator& g, IRBuilder<>& b, I // c <- 0b001 // CR[4×BF+32:4×BF+35] <- c || XER[SO] - uint32_t BF = i.D.D >> 2; - uint32_t L = i.D.D & 1; + uint32_t BF = i.D.RT >> 2; + uint32_t L = i.D.RT & 1; - Value* lhs = g.gpr_value(i.D.A); + Value* lhs = g.gpr_value(i.D.RA); if (!L) { // 32-bit - truncate and sign extend. lhs = b.CreateTrunc(lhs, b.getInt32Ty()); lhs = b.CreateSExt(lhs, b.getInt64Ty()); } - Value* rhs = b.getInt64(XEEXTS16(i.D.SIMM)); + Value* rhs = b.getInt64(XEEXTS16(i.D.DS)); XeEmitCompareCore(g, b, lhs, rhs, BF, true); return 0; @@ -338,11 +338,11 @@ XEEMITTER(cmpl, 0x7C000040, X )(FunctionGenerator& g, IRBuilder<>& b, I // c <- 0b001 // CR[4×BF+32:4×BF+35] <- c || XER[SO] - uint32_t BF = i.X.D >> 2; - uint32_t L = i.X.D & 1; + uint32_t BF = i.X.RT >> 2; + uint32_t L = i.X.RT & 1; - Value* lhs = g.gpr_value(i.X.A); - Value* rhs = g.gpr_value(i.X.B); + Value* lhs = g.gpr_value(i.X.RA); + Value* rhs = g.gpr_value(i.X.RB); if (!L) { // 32-bit - truncate and zero extend. lhs = b.CreateTrunc(lhs, b.getInt32Ty()); @@ -369,17 +369,17 @@ XEEMITTER(cmpli, 0x28000000, D )(FunctionGenerator& g, IRBuilder<>& b, I // c <- 0b001 // CR[4×BF+32:4×BF+35] <- c || XER[SO] - uint32_t BF = i.D.D >> 2; - uint32_t L = i.D.D & 1; + uint32_t BF = i.D.RT >> 2; + uint32_t L = i.D.RT & 1; - Value* lhs = g.gpr_value(i.D.A); + Value* lhs = g.gpr_value(i.D.RA); if (!L) { // 32-bit - truncate and zero extend. lhs = b.CreateTrunc(lhs, b.getInt32Ty()); lhs = b.CreateZExt(lhs, b.getInt64Ty()); } - Value* rhs = b.getInt64(i.D.SIMM); + Value* rhs = b.getInt64(i.D.DS); XeEmitCompareCore(g, b, lhs, rhs, BF, false); return 0; @@ -397,8 +397,8 @@ XEEMITTER(andx, 0x7C000038, X )(FunctionGenerator& g, IRBuilder<>& b, I return 1; } - Value* v = b.CreateAnd(g.gpr_value(i.X.D), g.gpr_value(i.X.B)); - g.update_gpr_value(i.X.A, v); + Value* v = b.CreateAnd(g.gpr_value(i.X.RT), g.gpr_value(i.X.RB)); + g.update_gpr_value(i.X.RA, v); return 0; } @@ -412,9 +412,9 @@ XEEMITTER(andcx, 0x7C000078, X )(FunctionGenerator& g, IRBuilder<>& b, I return 1; } - Value* v = b.CreateXor(g.gpr_value(i.X.B), -1); - v = b.CreateAnd(g.gpr_value(i.X.D), v); - g.update_gpr_value(i.X.A, v); + Value* v = b.CreateXor(g.gpr_value(i.X.RB), -1); + v = b.CreateAnd(g.gpr_value(i.X.RT), v); + g.update_gpr_value(i.X.RA, v); return 0; } @@ -422,8 +422,8 @@ XEEMITTER(andcx, 0x7C000078, X )(FunctionGenerator& g, IRBuilder<>& b, I XEEMITTER(andix, 0x70000000, D )(FunctionGenerator& g, IRBuilder<>& b, InstrData& i) { // RA <- (RS) & (i48.0 || UI) - Value* v = b.CreateAnd(g.gpr_value(i.D.D), (uint64_t)i.D.SIMM); - g.update_gpr_value(i.D.A, v); + Value* v = b.CreateAnd(g.gpr_value(i.D.RT), (uint64_t)i.D.DS); + g.update_gpr_value(i.D.RA, v); // TODO(benvanik): update cr0 XEINSTRNOTIMPLEMENTED(); @@ -434,8 +434,8 @@ XEEMITTER(andix, 0x70000000, D )(FunctionGenerator& g, IRBuilder<>& b, I XEEMITTER(andisx, 0x74000000, D )(FunctionGenerator& g, IRBuilder<>& b, InstrData& i) { // RA <- (RS) & (i32.0 || UI || i16.0) - Value* v = b.CreateAnd(g.gpr_value(i.D.D), ((uint64_t)i.D.SIMM) << 16); - g.update_gpr_value(i.D.A, v); + Value* v = b.CreateAnd(g.gpr_value(i.D.RT), ((uint64_t)i.D.DS) << 16); + g.update_gpr_value(i.D.RA, v); // TODO(benvanik): update cr0 XEINSTRNOTIMPLEMENTED(); @@ -460,7 +460,7 @@ XEEMITTER(cntlzwx, 0x7C000034, X )(FunctionGenerator& g, IRBuilder<>& b, I return 1; } - Value* v = g.gpr_value(i.X.D); + Value* v = g.gpr_value(i.X.RT); v = b.CreateTrunc(v, b.getInt32Ty()); std::vector arg_types; @@ -470,7 +470,7 @@ XEEMITTER(cntlzwx, 0x7C000034, X )(FunctionGenerator& g, IRBuilder<>& b, I Value* count = b.CreateCall2(ctlz, v, b.getInt1(1)); count = b.CreateZExt(count, b.getInt64Ty()); - g.update_gpr_value(i.X.A, count); + g.update_gpr_value(i.X.RA, count); return 0; } @@ -490,10 +490,10 @@ XEEMITTER(extsbx, 0x7C000774, X )(FunctionGenerator& g, IRBuilder<>& b, I return 1; } - Value* v = g.gpr_value(i.X.D); + Value* v = g.gpr_value(i.X.RT); v = b.CreateTrunc(v, b.getInt8Ty()); v = b.CreateSExt(v, b.getInt64Ty()); - g.update_gpr_value(i.X.A, v); + g.update_gpr_value(i.X.RA, v); return 0; } @@ -522,9 +522,9 @@ XEEMITTER(norx, 0x7C0000F8, X )(FunctionGenerator& g, IRBuilder<>& b, I return 1; } - Value* v = b.CreateOr(g.gpr_value(i.X.D), g.gpr_value(i.X.B)); + Value* v = b.CreateOr(g.gpr_value(i.X.RT), g.gpr_value(i.X.RB)); v = b.CreateXor(v, -1); - g.update_gpr_value(i.X.A, v); + g.update_gpr_value(i.X.RA, v); return 0; } @@ -538,8 +538,8 @@ XEEMITTER(orx, 0x7C000378, X )(FunctionGenerator& g, IRBuilder<>& b, I return 1; } - Value* v = b.CreateOr(g.gpr_value(i.X.D), g.gpr_value(i.X.B)); - g.update_gpr_value(i.X.A, v); + Value* v = b.CreateOr(g.gpr_value(i.X.RT), g.gpr_value(i.X.RB)); + g.update_gpr_value(i.X.RA, v); return 0; } @@ -552,8 +552,8 @@ XEEMITTER(orcx, 0x7C000338, X )(FunctionGenerator& g, IRBuilder<>& b, I XEEMITTER(ori, 0x60000000, D )(FunctionGenerator& g, IRBuilder<>& b, InstrData& i) { // RA <- (RS) | (i48.0 || UI) - Value* v = b.CreateOr(g.gpr_value(i.D.D), (uint64_t)i.D.SIMM); - g.update_gpr_value(i.D.A, v); + Value* v = b.CreateOr(g.gpr_value(i.D.RT), (uint64_t)i.D.DS); + g.update_gpr_value(i.D.RA, v); return 0; } @@ -561,8 +561,8 @@ XEEMITTER(ori, 0x60000000, D )(FunctionGenerator& g, IRBuilder<>& b, I XEEMITTER(oris, 0x64000000, D )(FunctionGenerator& g, IRBuilder<>& b, InstrData& i) { // RA <- (RS) | (i32.0 || UI || i16.0) - Value* v = b.CreateOr(g.gpr_value(i.D.D), ((uint64_t)i.D.SIMM) << 16); - g.update_gpr_value(i.D.A, v); + Value* v = b.CreateOr(g.gpr_value(i.D.RT), ((uint64_t)i.D.DS) << 16); + g.update_gpr_value(i.D.RA, v); return 0; } @@ -576,8 +576,8 @@ XEEMITTER(xorx, 0x7C000278, X )(FunctionGenerator& g, IRBuilder<>& b, I return 1; } - Value* v = b.CreateXor(g.gpr_value(i.X.D), g.gpr_value(i.X.B)); - g.update_gpr_value(i.X.A, v); + Value* v = b.CreateXor(g.gpr_value(i.X.RT), g.gpr_value(i.X.RB)); + g.update_gpr_value(i.X.RA, v); return 0; } @@ -585,8 +585,8 @@ XEEMITTER(xorx, 0x7C000278, X )(FunctionGenerator& g, IRBuilder<>& b, I XEEMITTER(xori, 0x68000000, D )(FunctionGenerator& g, IRBuilder<>& b, InstrData& i) { // RA <- (RS) XOR (i48.0 || UI) - Value* v = b.CreateXor(g.gpr_value(i.D.D), (uint64_t)i.D.SIMM); - g.update_gpr_value(i.D.A, v); + Value* v = b.CreateXor(g.gpr_value(i.D.RT), (uint64_t)i.D.DS); + g.update_gpr_value(i.D.RA, v); return 0; } @@ -594,8 +594,8 @@ XEEMITTER(xori, 0x68000000, D )(FunctionGenerator& g, IRBuilder<>& b, I XEEMITTER(xoris, 0x6C000000, D )(FunctionGenerator& g, IRBuilder<>& b, InstrData& i) { // RA <- (RS) XOR (i32.0 || UI || i16.0) - Value* v = b.CreateXor(g.gpr_value(i.D.D), ((uint64_t)i.D.SIMM) << 16); - g.update_gpr_value(i.D.A, v); + Value* v = b.CreateXor(g.gpr_value(i.D.RT), ((uint64_t)i.D.DS) << 16); + g.update_gpr_value(i.D.RA, v); return 0; } diff --git a/src/cpu/codegen/emit_control.cc b/src/cpu/codegen/emit_control.cc index fa72a6eed..0f2ca1882 100644 --- a/src/cpu/codegen/emit_control.cc +++ b/src/cpu/codegen/emit_control.cc @@ -493,7 +493,7 @@ XEEMITTER(mfspr, 0x7C0002A6, XFX)(FunctionGenerator& g, IRBuilder<>& b, I return 1; } - g.update_gpr_value(i.XFX.D, v); + g.update_gpr_value(i.XFX.RT, v); return 0; } @@ -515,7 +515,7 @@ XEEMITTER(mtspr, 0x7C0003A6, XFX)(FunctionGenerator& g, IRBuilder<>& b, I // else // SPR(n) <- (RS)[32:63] - Value* v = g.gpr_value(i.XFX.D); + Value* v = g.gpr_value(i.XFX.RT); const uint32_t n = ((i.XFX.spr & 0x1F) << 5) | ((i.XFX.spr >> 5) & 0x1F); switch (n) { diff --git a/src/cpu/codegen/emit_memory.cc b/src/cpu/codegen/emit_memory.cc index eef8d1b28..adba42036 100644 --- a/src/cpu/codegen/emit_memory.cc +++ b/src/cpu/codegen/emit_memory.cc @@ -32,12 +32,12 @@ XEEMITTER(lbz, 0x88000000, D )(FunctionGenerator& g, IRBuilder<>& b, I // EA <- b + EXTS(D) // RT <- i56.0 || MEM(EA, 1) - Value* ea = b.getInt64(XEEXTS16(i.D.SIMM)); - if (i.D.A) { - ea = b.CreateAdd(g.gpr_value(i.D.A), ea); + Value* ea = b.getInt64(XEEXTS16(i.D.DS)); + if (i.D.RA) { + ea = b.CreateAdd(g.gpr_value(i.D.RA), ea); } Value* v = g.ReadMemory(ea, 1, false); - g.update_gpr_value(i.D.D, v); + g.update_gpr_value(i.D.RT, v); return 0; } @@ -47,10 +47,10 @@ XEEMITTER(lbzu, 0x8C000000, D )(FunctionGenerator& g, IRBuilder<>& b, I // RT <- i56.0 || MEM(EA, 1) // RA <- EA - Value* ea = b.CreateAdd(g.gpr_value(i.D.A), b.getInt64(XEEXTS16(i.D.SIMM))); + Value* ea = b.CreateAdd(g.gpr_value(i.D.RA), b.getInt64(XEEXTS16(i.D.DS))); Value* v = g.ReadMemory(ea, 1, false); - g.update_gpr_value(i.D.D, v); - g.update_gpr_value(i.D.A, ea); + g.update_gpr_value(i.D.RT, v); + g.update_gpr_value(i.D.RA, ea); return 0; } @@ -60,10 +60,10 @@ XEEMITTER(lbzux, 0x7C0000EE, X )(FunctionGenerator& g, IRBuilder<>& b, I // RT <- i56.0 || MEM(EA, 1) // RA <- EA - Value* ea = b.CreateAdd(g.gpr_value(i.X.A), g.gpr_value(i.X.B)); + Value* ea = b.CreateAdd(g.gpr_value(i.X.RA), g.gpr_value(i.X.RB)); Value* v = g.ReadMemory(ea, 1, false); - g.update_gpr_value(i.X.D, v); - g.update_gpr_value(i.X.A, ea); + g.update_gpr_value(i.X.RT, v); + g.update_gpr_value(i.X.RA, ea); return 0; } @@ -76,12 +76,12 @@ XEEMITTER(lbzx, 0x7C0000AE, X )(FunctionGenerator& g, IRBuilder<>& b, I // EA <- b + (RB) // RT <- i56.0 || MEM(EA, 1) - Value* ea = g.gpr_value(i.X.B); - if (i.X.A) { - ea = b.CreateAdd(g.gpr_value(i.X.A), ea); + Value* ea = g.gpr_value(i.X.RB); + if (i.X.RA) { + ea = b.CreateAdd(g.gpr_value(i.X.RA), ea); } Value* v = g.ReadMemory(ea, 1, false); - g.update_gpr_value(i.X.D, v); + g.update_gpr_value(i.X.RT, v); return 0; } @@ -94,12 +94,12 @@ XEEMITTER(ld, 0xE8000000, DS )(FunctionGenerator& g, IRBuilder<>& b, I // EA <- b + EXTS(DS || 0b00) // RT <- MEM(EA, 8) - Value* ea = b.getInt64(XEEXTS16(i.DS.ds << 2)); - if (i.DS.A) { - ea = b.CreateAdd(g.gpr_value(i.DS.A), ea); + Value* ea = b.getInt64(XEEXTS16(i.DS.DS << 2)); + if (i.DS.RA) { + ea = b.CreateAdd(g.gpr_value(i.DS.RA), ea); } Value* v = g.ReadMemory(ea, 8, false); - g.update_gpr_value(i.DS.S, v); + g.update_gpr_value(i.DS.RT, v); return 0; } @@ -109,11 +109,11 @@ XEEMITTER(ldu, 0xE8000001, DS )(FunctionGenerator& g, IRBuilder<>& b, I // RT <- MEM(EA, 8) // RA <- EA - Value* ea = b.CreateAdd(g.gpr_value(i.DS.A), - b.getInt64(XEEXTS16(i.DS.ds << 2))); + Value* ea = b.CreateAdd(g.gpr_value(i.DS.RA), + b.getInt64(XEEXTS16(i.DS.DS << 2))); Value* v = g.ReadMemory(ea, 8, false); - g.update_gpr_value(i.DS.S, v); - g.update_gpr_value(i.DS.A, ea); + g.update_gpr_value(i.DS.RT, v); + g.update_gpr_value(i.DS.RA, ea); return 0; } @@ -156,12 +156,12 @@ XEEMITTER(lhz, 0xA0000000, D )(FunctionGenerator& g, IRBuilder<>& b, I // EA <- b + EXTS(D) // RT <- i48.0 || MEM(EA, 2) - Value* ea = b.getInt64(XEEXTS16(i.D.SIMM)); - if (i.D.A) { - ea = b.CreateAdd(g.gpr_value(i.D.A), ea); + Value* ea = b.getInt64(XEEXTS16(i.D.DS)); + if (i.D.RA) { + ea = b.CreateAdd(g.gpr_value(i.D.RA), ea); } Value* v = g.ReadMemory(ea, 2, false); - g.update_gpr_value(i.D.D, v); + g.update_gpr_value(i.D.RT, v); return 0; } @@ -204,12 +204,12 @@ XEEMITTER(lwz, 0x80000000, D )(FunctionGenerator& g, IRBuilder<>& b, I // EA <- b + EXTS(D) // RT <- i32.0 || MEM(EA, 4) - Value* ea = b.getInt64(XEEXTS16(i.D.SIMM)); - if (i.D.A) { - ea = b.CreateAdd(g.gpr_value(i.D.A), ea); + Value* ea = b.getInt64(XEEXTS16(i.D.DS)); + if (i.D.RA) { + ea = b.CreateAdd(g.gpr_value(i.D.RA), ea); } Value* v = g.ReadMemory(ea, 4, false); - g.update_gpr_value(i.D.D, v); + g.update_gpr_value(i.D.RT, v); return 0; } @@ -219,10 +219,10 @@ XEEMITTER(lwzu, 0x84000000, D )(FunctionGenerator& g, IRBuilder<>& b, I // RT <- i32.0 || MEM(EA, 4) // RA <- EA - Value* ea = b.CreateAdd(g.gpr_value(i.D.A), b.getInt64(XEEXTS16(i.D.SIMM))); + Value* ea = b.CreateAdd(g.gpr_value(i.D.RA), b.getInt64(XEEXTS16(i.D.DS))); Value* v = g.ReadMemory(ea, 4, false); - g.update_gpr_value(i.D.D, v); - g.update_gpr_value(i.D.A, ea); + g.update_gpr_value(i.D.RT, v); + g.update_gpr_value(i.D.RA, ea); return 0; } @@ -240,12 +240,12 @@ XEEMITTER(lwzx, 0x7C00002E, X )(FunctionGenerator& g, IRBuilder<>& b, I // EA <- b + (RB) // RT <- i32.0 || MEM(EA, 4) - Value* ea = g.gpr_value(i.X.B); - if (i.X.A) { - ea = b.CreateAdd(g.gpr_value(i.X.A), ea); + Value* ea = g.gpr_value(i.X.RB); + if (i.X.RA) { + ea = b.CreateAdd(g.gpr_value(i.X.RA), ea); } Value* v = g.ReadMemory(ea, 4, false); - g.update_gpr_value(i.X.D, v); + g.update_gpr_value(i.X.RT, v); return 0; } @@ -261,11 +261,11 @@ XEEMITTER(stb, 0x98000000, D )(FunctionGenerator& g, IRBuilder<>& b, I // EA <- b + EXTS(D) // MEM(EA, 1) <- (RS)[56:63] - Value* ea = b.getInt64(XEEXTS16(i.D.SIMM)); - if (i.D.A) { - ea = b.CreateAdd(g.gpr_value(i.D.A), ea); + Value* ea = b.getInt64(XEEXTS16(i.D.DS)); + if (i.D.RA) { + ea = b.CreateAdd(g.gpr_value(i.D.RA), ea); } - Value* v = g.gpr_value(i.D.D); + Value* v = g.gpr_value(i.D.RT); g.WriteMemory(ea, 1, v); return 0; @@ -276,10 +276,10 @@ XEEMITTER(stbu, 0x9C000000, D )(FunctionGenerator& g, IRBuilder<>& b, I // MEM(EA, 1) <- (RS)[56:63] // RA <- EA - Value* ea = b.CreateAdd(g.gpr_value(i.D.A), b.getInt64(XEEXTS16(i.D.SIMM))); - Value* v = g.gpr_value(i.D.D); + Value* ea = b.CreateAdd(g.gpr_value(i.D.RA), b.getInt64(XEEXTS16(i.D.DS))); + Value* v = g.gpr_value(i.D.RT); g.WriteMemory(ea, 1, v); - g.update_gpr_value(i.D.A, ea); + g.update_gpr_value(i.D.RA, ea); return 0; } @@ -302,11 +302,11 @@ XEEMITTER(std, 0xF8000000, DS )(FunctionGenerator& g, IRBuilder<>& b, I // EA <- b + EXTS(DS || 0b00) // MEM(EA, 8) <- (RS) - Value* ea = b.getInt64(XEEXTS16(i.DS.ds << 2)); - if (i.DS.A) { - ea = b.CreateAdd(g.gpr_value(i.DS.A), ea); + Value* ea = b.getInt64(XEEXTS16(i.DS.DS << 2)); + if (i.DS.RA) { + ea = b.CreateAdd(g.gpr_value(i.DS.RA), ea); } - Value* v = g.gpr_value(i.DS.S); + Value* v = g.gpr_value(i.DS.RT); g.WriteMemory(ea, 8, v); return 0; @@ -317,11 +317,11 @@ XEEMITTER(stdu, 0xF8000001, DS )(FunctionGenerator& g, IRBuilder<>& b, I // MEM(EA, 8) <- (RS) // RA <- EA - Value* ea = b.CreateAdd(g.gpr_value(i.DS.A), - b.getInt64(XEEXTS16(i.DS.ds << 2))); - Value* v = g.gpr_value(i.DS.S); + Value* ea = b.CreateAdd(g.gpr_value(i.DS.RA), + b.getInt64(XEEXTS16(i.DS.DS << 2))); + Value* v = g.gpr_value(i.DS.RT); g.WriteMemory(ea, 8, v); - g.update_gpr_value(i.DS.A, ea); + g.update_gpr_value(i.DS.RA, ea); return 0; } @@ -344,11 +344,11 @@ XEEMITTER(sth, 0xB0000000, D )(FunctionGenerator& g, IRBuilder<>& b, I // EA <- b + EXTS(D) // MEM(EA, 2) <- (RS)[48:63] - Value* ea = b.getInt64(XEEXTS16(i.D.SIMM)); - if (i.D.A) { - ea = b.CreateAdd(g.gpr_value(i.D.A), ea); + Value* ea = b.getInt64(XEEXTS16(i.D.DS)); + if (i.D.RA) { + ea = b.CreateAdd(g.gpr_value(i.D.RA), ea); } - Value* v = g.gpr_value(i.D.D); + Value* v = g.gpr_value(i.D.RT); g.WriteMemory(ea, 2, v); return 0; @@ -359,11 +359,11 @@ XEEMITTER(sthu, 0xB4000000, D )(FunctionGenerator& g, IRBuilder<>& b, I // MEM(EA, 2) <- (RS)[48:63] // RA <- EA - Value* ea = b.CreateAdd(g.gpr_value(i.D.A), - b.getInt64(XEEXTS16(i.D.SIMM))); - Value* v = g.gpr_value(i.D.D); + Value* ea = b.CreateAdd(g.gpr_value(i.D.RA), + b.getInt64(XEEXTS16(i.D.DS))); + Value* v = g.gpr_value(i.D.RT); g.WriteMemory(ea, 2, v); - g.update_gpr_value(i.D.A, ea); + g.update_gpr_value(i.D.RA, ea); return 0; } @@ -381,11 +381,11 @@ XEEMITTER(sthx, 0x7C00032E, X )(FunctionGenerator& g, IRBuilder<>& b, I // EA <- b + (RB) // MEM(EA, 2) <- (RS)[48:63] - Value* ea = g.gpr_value(i.X.B); - if (i.D.A) { - ea = b.CreateAdd(g.gpr_value(i.X.A), ea); + Value* ea = g.gpr_value(i.X.RB); + if (i.D.RA) { + ea = b.CreateAdd(g.gpr_value(i.X.RA), ea); } - Value* v = g.gpr_value(i.X.D); + Value* v = g.gpr_value(i.X.RT); g.WriteMemory(ea, 2, v); return 0; @@ -399,11 +399,11 @@ XEEMITTER(stw, 0x90000000, D )(FunctionGenerator& g, IRBuilder<>& b, I // EA <- b + EXTS(D) // MEM(EA, 4) <- (RS)[32:63] - Value* ea = b.getInt64(XEEXTS16(i.D.SIMM)); - if (i.D.A) { - ea = b.CreateAdd(g.gpr_value(i.D.A), ea); + Value* ea = b.getInt64(XEEXTS16(i.D.DS)); + if (i.D.RA) { + ea = b.CreateAdd(g.gpr_value(i.D.RA), ea); } - Value* v = g.gpr_value(i.D.D); + Value* v = g.gpr_value(i.D.RT); g.WriteMemory(ea, 4, v); return 0; @@ -414,11 +414,11 @@ XEEMITTER(stwu, 0x94000000, D )(FunctionGenerator& g, IRBuilder<>& b, I // MEM(EA, 4) <- (RS)[32:63] // RA <- EA - Value* ea = b.CreateAdd(g.gpr_value(i.D.A), - b.getInt64(XEEXTS16(i.D.SIMM))); - Value* v = g.gpr_value(i.D.D); + Value* ea = b.CreateAdd(g.gpr_value(i.D.RA), + b.getInt64(XEEXTS16(i.D.DS))); + Value* v = g.gpr_value(i.D.RT); g.WriteMemory(ea, 4, v); - g.update_gpr_value(i.D.A, ea); + g.update_gpr_value(i.D.RA, ea); return 0; } @@ -436,11 +436,11 @@ XEEMITTER(stwx, 0x7C00012E, X )(FunctionGenerator& g, IRBuilder<>& b, I // EA <- b + (RB) // MEM(EA, 4) <- (RS)[32:63] - Value* ea = g.gpr_value(i.X.B); - if (i.X.A) { - ea = b.CreateAdd(g.gpr_value(i.X.A), ea); + Value* ea = g.gpr_value(i.X.RB); + if (i.X.RA) { + ea = b.CreateAdd(g.gpr_value(i.X.RA), ea); } - Value* v = g.gpr_value(i.X.D); + Value* v = g.gpr_value(i.X.RT); g.WriteMemory(ea, 4, v); return 0;