mirror of
https://git.suyu.dev/suyu/dynarmic.git
synced 2026-01-05 22:18:16 +01:00
a32_emit_x64: Fix incorrect BMI2 implementation for SetCpsr
* The MSB for each byte in cpsr_ge were not being appropriately set. * We also expand test coverage to test this case. * We fix the disassembly of the MSR (imm) and MSR (reg) instructions as well.
This commit is contained in:
parent
3432a08e0a
commit
f73104633b
3 changed files with 22 additions and 15 deletions
|
|
@ -1062,7 +1062,7 @@ TEST_CASE("Test ARM misc instructions", "[JitX64][A32]") {
|
|||
|
||||
TEST_CASE("Test ARM MSR instructions", "[JitX64][A32]") {
|
||||
const auto is_msr_valid = [](u32 instr) -> bool {
|
||||
return Bits<18, 19>(instr) != 0;
|
||||
return Bits<16, 19>(instr) != 0;
|
||||
};
|
||||
|
||||
const auto is_msr_reg_valid = [&is_msr_valid](u32 instr) -> bool {
|
||||
|
|
@ -1074,8 +1074,8 @@ TEST_CASE("Test ARM MSR instructions", "[JitX64][A32]") {
|
|||
};
|
||||
|
||||
const std::array<InstructionGenerator, 3> instructions = {{
|
||||
InstructionGenerator("cccc00110010mm001111rrrrvvvvvvvv", is_msr_valid), // MSR (imm)
|
||||
InstructionGenerator("cccc00010010mm00111100000000nnnn", is_msr_reg_valid), // MSR (reg)
|
||||
InstructionGenerator("cccc00110010mmmm1111rrrrvvvvvvvv", is_msr_valid), // MSR (imm)
|
||||
InstructionGenerator("cccc00010010mmmm111100000000nnnn", is_msr_reg_valid), // MSR (reg)
|
||||
InstructionGenerator("cccc000100001111dddd000000000000", is_mrs_valid), // MRS
|
||||
}};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue