mirror of
https://github.com/TomHarte/CLK.git
synced 2024-11-26 08:49:37 +00:00
Test subfcx, subfx; correct decoding of oe().
This commit is contained in:
parent
b9c8016aca
commit
99ad40f3e0
@ -540,7 +540,7 @@ struct Instruction {
|
|||||||
/// Whether to compare 32-bit or 64-bit numbers [for 64-bit implementations only]; @c 0 or @c non-0.
|
/// Whether to compare 32-bit or 64-bit numbers [for 64-bit implementations only]; @c 0 or @c non-0.
|
||||||
uint32_t l() const { return opcode & 0x200000; }
|
uint32_t l() const { return opcode & 0x200000; }
|
||||||
/// Enables setting of OV and SO in the XER; @c 0 or @c non-0.
|
/// Enables setting of OV and SO in the XER; @c 0 or @c non-0.
|
||||||
uint32_t oe() const { return opcode & 0x800; }
|
uint32_t oe() const { return opcode & 0x400; }
|
||||||
};
|
};
|
||||||
|
|
||||||
// Sanity check on Instruction size.
|
// Sanity check on Instruction size.
|
||||||
|
@ -25,6 +25,14 @@ void AssertEqualOperationName(NSString *lhs, NSString *rhs) {
|
|||||||
XCTAssertEqualObjects(lhsMapped, rhsMapped);
|
XCTAssertEqualObjects(lhsMapped, rhsMapped);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AssertEqualOperationNameOE(NSString *lhs, Instruction instruction, NSString *rhs) {
|
||||||
|
XCTAssert([lhs characterAtIndex:lhs.length - 1] == 'x');
|
||||||
|
lhs = [lhs substringToIndex:lhs.length - 1];
|
||||||
|
if(instruction.oe()) lhs = [lhs stringByAppendingString:@"o"];
|
||||||
|
if(instruction.rc()) lhs = [lhs stringByAppendingString:@"."];
|
||||||
|
XCTAssertEqualObjects(lhs, rhs);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@implementation DingusdevPowerPCTests
|
@implementation DingusdevPowerPCTests
|
||||||
@ -118,12 +126,12 @@ void AssertEqualOperationName(NSString *lhs, NSString *rhs) {
|
|||||||
|
|
||||||
#define ABD(x) \
|
#define ABD(x) \
|
||||||
case Operation::x: \
|
case Operation::x: \
|
||||||
AssertEqualOperationName(operation, @#x); \
|
AssertEqualOperationNameOE(@#x, instruction, operation); \
|
||||||
[self testABDInstruction:instruction columns:columns testZero:NO]; \
|
[self testABDInstruction:instruction columns:columns testZero:NO]; \
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// ABD(subfc);
|
ABD(subfcx);
|
||||||
// ABD(subfc_);
|
ABD(subfx);
|
||||||
|
|
||||||
#undef ABD
|
#undef ABD
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user