1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-07-04 18:29:40 +00:00

Test lbzx, lbzux.

This commit is contained in:
Thomas Harte 2022-03-26 08:45:07 -04:00
parent 3d48183753
commit 4f6a9917c6
2 changed files with 35 additions and 11 deletions

View File

@ -149,13 +149,33 @@ enum class Operation: uint8_t {
extsbx, extshx, fabsx, faddx, faddsx, fcmpo, fcmpu, fctiwx, fctiwzx,
fdivx, fdivsx, fmaddx, fmaddsx, fmrx, fmsubx, fmsubsx, fmulx, fmulsx,
fnabsx, fnegx, fnmaddx, fnmaddsx, fnmsubx, fnmsubsx, frspx, fsubx, fsubsx,
icbi, isync, lbz, lbzu, lbzux, lbzx, lfd, lfdu, lfdux, lfdx, lfs, lfsu,
icbi, isync, lbz, lbzu,
/// Load byte and zero with update indexed.
///
/// rD()[24, 31] = [ rA()|0 + rB() ]; and rA() is set to the calculated address
/// i.e. if rA() is 0 then the value 0 is used, not the contents of r0.
/// The rest of rD is set to 0.
///
/// PowerPC defines rA=0 and rA=rD to be invalid forms; the MPC601
/// will suppress the update if rA=0 or rA=rD.
lbzux,
/// Load byte and zero indexed.
///
/// rD[24, 31] = [ (rA()|0) + rB() ]
/// i.e. if rA() is 0 then the value 0 is used, not the contents of r0.
/// The rest of rD is set to 0.
lbzx,
lfd, lfdu, lfdux, lfdx, lfs, lfsu,
lfsux, lfsx, lha, lhau, lhaux, lhax, lhbrx, lhz, lhzu, lhzux, lhzx, lmw,
lswi, lswx, lwarx, lwbrx, lwz, lwzu,
/// Load word and zero with Update Indexed.
/// Load word and zero with update indexed.
///
/// rD() = [ rA()|0 + rB() ]; and rA() is set to the calculated address.
/// rD() = [ rA()|0 + rB() ]; and rA() is set to the calculated address
/// i.e. if rA() is 0 then the value 0 is used, not the contents of r0.
///
/// PowerPC defines rA=0 and rA=rD to be invalid forms; the MPC601
/// will suppress the update if rA=0 or rA=rD.
@ -163,7 +183,8 @@ enum class Operation: uint8_t {
/// Load word and zero indexed.
///
/// rD() = [ (rA()|0) + rB() ] i.e. if rA() is 0 then the value 0 is used, not the contents of r0.
/// rD() = [ (rA()|0) + rB() ]
/// i.e. if rA() is 0 then the value 0 is used, not the contents of r0.
lwzx,
mcrf, mcrfs, mcrxr,

View File

@ -62,15 +62,18 @@ using namespace InstructionSet::PowerPC;
NSAssert(FALSE, @"Didn't handle %@", line);
break;
case Operation::lwzux:
XCTAssertEqualObjects(operation, @"lwzux");
[self testABDInstruction:instruction columns:columns testZero:YES];
#define ABCz(x) \
case Operation::x: \
XCTAssertEqualObjects(operation, @#x); \
[self testABDInstruction:instruction columns:columns testZero:YES]; \
break;
case Operation::lwzx:
XCTAssertEqualObjects(operation, @"lwzx");
[self testABDInstruction:instruction columns:columns testZero:YES];
break;
ABCz(lwzux);
ABCz(lwzx);
ABCz(lbzx);
ABCz(lbzux);
#undef ABCz
case Operation::bcx:
case Operation::bclrx: