A64/fuzz_with_unicorn: Avoid repeated unnecessary library calls in RunTestInstance()
Repeatedly retrieving the vectors and registers from unicorn involves copying the entire set of registers and vectors by value instead of simply retrieving a reference to them. Instead, we can just do the work once and print out the values. While we're at it, also make our bracing consistent.
This commit is contained in:
parent
55254968fc
commit
b50114ae70
1 changed files with 14 additions and 7 deletions
|
@ -199,15 +199,18 @@ static void RunTestInstance(Dynarmic::A64::Jit& jit, A64Unicorn& uni, A64TestEnv
|
||||||
|
|
||||||
SCOPE_FAIL {
|
SCOPE_FAIL {
|
||||||
fmt::print("Instruction Listing:\n");
|
fmt::print("Instruction Listing:\n");
|
||||||
for (u32 instruction : instructions)
|
for (u32 instruction : instructions) {
|
||||||
fmt::print("{:08x} {}\n", instruction, Common::DisassembleAArch64(instruction));
|
fmt::print("{:08x} {}\n", instruction, Common::DisassembleAArch64(instruction));
|
||||||
|
}
|
||||||
fmt::print("\n");
|
fmt::print("\n");
|
||||||
|
|
||||||
fmt::print("Initial register listing:\n");
|
fmt::print("Initial register listing:\n");
|
||||||
for (size_t i = 0; i < regs.size(); ++i)
|
for (size_t i = 0; i < regs.size(); ++i) {
|
||||||
fmt::print("{:3s}: {:016x}\n", static_cast<A64::Reg>(i), regs[i]);
|
fmt::print("{:3s}: {:016x}\n", static_cast<A64::Reg>(i), regs[i]);
|
||||||
for (size_t i = 0; i < vecs.size(); ++i)
|
}
|
||||||
|
for (size_t i = 0; i < vecs.size(); ++i) {
|
||||||
fmt::print("{:3s}: {}\n", static_cast<A64::Vec>(i), vecs[i]);
|
fmt::print("{:3s}: {}\n", static_cast<A64::Vec>(i), vecs[i]);
|
||||||
|
}
|
||||||
fmt::print("sp : {:016x}\n", initial_sp);
|
fmt::print("sp : {:016x}\n", initial_sp);
|
||||||
fmt::print("pc : {:016x}\n", instructions_start);
|
fmt::print("pc : {:016x}\n", instructions_start);
|
||||||
fmt::print("p : {:08x}\n", pstate);
|
fmt::print("p : {:08x}\n", pstate);
|
||||||
|
@ -221,10 +224,14 @@ static void RunTestInstance(Dynarmic::A64::Jit& jit, A64Unicorn& uni, A64TestEnv
|
||||||
|
|
||||||
fmt::print("Final register listing:\n");
|
fmt::print("Final register listing:\n");
|
||||||
fmt::print(" unicorn dynarmic\n");
|
fmt::print(" unicorn dynarmic\n");
|
||||||
for (size_t i = 0; i < regs.size(); ++i)
|
const auto uni_regs = uni.GetRegisters();
|
||||||
fmt::print("{:3s}: {:016x} {:016x} {}\n", static_cast<A64::Reg>(i), uni.GetRegisters()[i], jit.GetRegisters()[i], uni.GetRegisters()[i] != jit.GetRegisters()[i] ? "*" : "");
|
for (size_t i = 0; i < regs.size(); ++i) {
|
||||||
for (size_t i = 0; i < vecs.size(); ++i)
|
fmt::print("{:3s}: {:016x} {:016x} {}\n", static_cast<A64::Reg>(i), uni_regs[i], jit.GetRegisters()[i], uni_regs[i] != jit.GetRegisters()[i] ? "*" : "");
|
||||||
fmt::print("{:3s}: {} {} {}\n", static_cast<A64::Vec>(i), uni.GetVectors()[i], jit.GetVectors()[i], uni.GetVectors()[i] != jit.GetVectors()[i] ? "*" : "");
|
}
|
||||||
|
const auto uni_vecs = uni.GetVectors();
|
||||||
|
for (size_t i = 0; i < vecs.size(); ++i) {
|
||||||
|
fmt::print("{:3s}: {} {} {}\n", static_cast<A64::Vec>(i), uni_vecs[i], jit.GetVectors()[i], uni_vecs[i] != jit.GetVectors()[i] ? "*" : "");
|
||||||
|
}
|
||||||
fmt::print("sp : {:016x} {:016x} {}\n", uni.GetSP(), jit.GetSP(), uni.GetSP() != jit.GetSP() ? "*" : "");
|
fmt::print("sp : {:016x} {:016x} {}\n", uni.GetSP(), jit.GetSP(), uni.GetSP() != jit.GetSP() ? "*" : "");
|
||||||
fmt::print("pc : {:016x} {:016x} {}\n", uni.GetPC(), jit.GetPC(), uni.GetPC() != jit.GetPC() ? "*" : "");
|
fmt::print("pc : {:016x} {:016x} {}\n", uni.GetPC(), jit.GetPC(), uni.GetPC() != jit.GetPC() ? "*" : "");
|
||||||
fmt::print("p : {:08x} {:08x} {}\n", uni.GetPstate(), jit.GetPstate(), (uni.GetPstate() & 0xF0000000) != (jit.GetPstate() & 0xF0000000) ? "*" : "");
|
fmt::print("p : {:08x} {:08x} {}\n", uni.GetPstate(), jit.GetPstate(), (uni.GetPstate() & 0xF0000000) != (jit.GetPstate() & 0xF0000000) ? "*" : "");
|
||||||
|
|
Loading…
Reference in a new issue