1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-07-12 11:29:08 +00:00

Focus on remaining files with issues.

This commit is contained in:
Thomas Harte 2023-10-23 10:02:13 -04:00
parent 817a30332c
commit 569cf8bf34

View File

@ -25,7 +25,7 @@ namespace {
// The tests themselves are not duplicated in this repository; // The tests themselves are not duplicated in this repository;
// provide their real path here. // provide their real path here.
constexpr char TestSuiteHome[] = "/Users/thomasharte/Projects/ProcessorTests/8088/v1"; constexpr char TestSuiteHome[] = "/Users/tharte/Projects/ProcessorTests/8088/v1";
using Status = InstructionSet::x86::Status; using Status = InstructionSet::x86::Status;
struct Registers { struct Registers {
@ -143,7 +143,7 @@ struct Memory {
// to a selector, they're just at an absolute location. // to a selector, they're just at an absolute location.
template <typename IntT> IntT &access(uint32_t address, Tag tag) { template <typename IntT> IntT &access(uint32_t address, Tag tag) {
if(tags.find(address) == tags.end()) { if(tags.find(address) == tags.end()) {
printf("Access to unexpected RAM address"); // printf("Access to unexpected RAM address");
} }
tags[address] = tag; tags[address] = tag;
return *reinterpret_cast<IntT *>(&memory[address]); return *reinterpret_cast<IntT *>(&memory[address]);
@ -299,6 +299,13 @@ struct FailedExecution {
- (NSArray<NSString *> *)testFiles { - (NSArray<NSString *> *)testFiles {
NSString *path = [NSString stringWithUTF8String:TestSuiteHome]; NSString *path = [NSString stringWithUTF8String:TestSuiteHome];
NSSet *allowList = [NSSet setWithArray:@[ NSSet *allowList = [NSSet setWithArray:@[
@"27.json.gz",
@"2F.json.gz",
@"AB.json.gz",
@"D4.json.gz",
@"EA.json.gz",
@"F6.7.json.gz",
@"F7.7.json.gz",
]]; ]];
NSSet *ignoreList = nil; NSSet *ignoreList = nil;
@ -497,10 +504,6 @@ struct FailedExecution {
execution_support.status = initial_status; execution_support.status = initial_status;
execution_support.registers = initial_registers; execution_support.registers = initial_registers;
if(decoded.second.operation != InstructionSet::x86::Operation::LEA) {
return;
}
// Execute instruction. // Execute instruction.
// //
// TODO: enquire of the actual mechanism of repetition; if it were stateful as below then // TODO: enquire of the actual mechanism of repetition; if it were stateful as below then
@ -619,8 +622,11 @@ struct FailedExecution {
- (void)testExecution { - (void)testExecution {
NSDictionary *metadata = [self metadata]; NSDictionary *metadata = [self metadata];
NSMutableArray<NSString *> *failures = [[NSMutableArray alloc] init];
for(NSString *file in [self testFiles]) @autoreleasepool { for(NSString *file in [self testFiles]) @autoreleasepool {
const auto failures_before = execution_failures.size();
// Determine the metadata key. // Determine the metadata key.
NSString *const name = [file lastPathComponent]; NSString *const name = [file lastPathComponent];
NSRange first_dot = [name rangeOfString:@"."]; NSRange first_dot = [name rangeOfString:@"."];
@ -634,12 +640,13 @@ struct FailedExecution {
int index = 0; int index = 0;
for(NSDictionary *test in [self testsInFile:file]) { for(NSDictionary *test in [self testsInFile:file]) {
if(index == 10) {
printf("");
}
[self applyExecutionTest:test metadata:test_metadata]; [self applyExecutionTest:test metadata:test_metadata];
++index; ++index;
} }
if (execution_failures.size() != failures_before) {
[failures addObject:file];
}
} }
XCTAssertEqual(execution_failures.size(), 0); XCTAssertEqual(execution_failures.size(), 0);
@ -647,6 +654,8 @@ struct FailedExecution {
for(const auto &failure: execution_failures) { for(const auto &failure: execution_failures) {
NSLog(@"Failed %s — %s", failure.test_name.c_str(), failure.reason.c_str()); NSLog(@"Failed %s — %s", failure.test_name.c_str(), failure.reason.c_str());
} }
NSLog(@"Files with failures were: %@", failures);
} }
@end @end