Short-circuiting lvrx/stvrx. Should help bad accesses in many games.

Fixes #411.
This commit is contained in:
Ben Vanik
2015-08-30 16:38:01 -07:00
parent dfa5b90c36
commit 65812438c4
3 changed files with 58 additions and 2 deletions

View File

@@ -18,3 +18,23 @@ test_lvr_1_constant:
#_ REGISTER_OUT r4 0x100010B7
#_ REGISTER_OUT r5 0x10
#_ REGISTER_OUT v3 [00000000, 00000000, 000D0E10, 11121314]
test_lvr_2:
#_ REGISTER_IN r4 0x20000000
#_ REGISTER_IN r5 0x10
#_ REGISTER_IN v3 [FFFFFFFF, FFFFFFFF, FFFFFFFF, FFFFFFFF]
lvrx v3, r4, r5
blr
#_ REGISTER_OUT r4 0x20000000
#_ REGISTER_OUT r5 0x10
#_ REGISTER_OUT v3 [00000000, 00000000, 00000000, 00000000]
test_lvr_2_constant:
#_ REGISTER_IN v3 [FFFFFFFF, FFFFFFFF, FFFFFFFF, FFFFFFFF]
lis r4, 0x2000
li r5, 0x10
lvrx v3, r4, r5
blr
#_ REGISTER_OUT r4 0x20000000
#_ REGISTER_OUT r5 0x10
#_ REGISTER_OUT v3 [00000000, 00000000, 00000000, 00000000]

View File

@@ -47,3 +47,21 @@ test_stvr_2_constant:
#_ REGISTER_OUT r4 0x10001044
#_ REGISTER_OUT v3 [F0F1F2F3, F4F5F6F7, F8F9FAFB, FCFDFEFF]
#_ MEMORY_OUT 10001040 FCFDFEFF 04050607 08090A0B 0C0D0E0F
test_stvr_3:
#_ REGISTER_IN r4 0x10010000
#_ REGISTER_IN r5 0x0
#_ REGISTER_IN v3 [BE74FCBD, BD912ABA, BF317BBB, BF2D135F]
stvrx v3, r4, r5
blr
#_ REGISTER_OUT r4 0x10010000
#_ REGISTER_OUT r5 0x0
#_ REGISTER_OUT v3 [BE74FCBD, BD912ABA, BF317BBB, BF2D135F]
test_stvr_3_constant:
#_ REGISTER_IN v3 [BE74FCBD, BD912ABA, BF317BBB, BF2D135F]
lis r4, 0x1001
stvrx v3, r4, r0
blr
#_ REGISTER_OUT r4 0x10010000
#_ REGISTER_OUT v3 [BE74FCBD, BD912ABA, BF317BBB, BF2D135F]