Description
Validation
- I've read the FAQ.
- The Xenia build used is from the master branch (not MLBS/AlexVS/Canary/pull requests, etc.)
- This issue isn't for tech support (help with Xenia).
- If this issue occurs in a specific game, I've done analysis to locate the faulty subsystem of the emulator and a potential reason in it.
- I've checked if this issue hasn't already been reported.
- My device meets the minimum requirements: https://github.com/xenia-project/xenia/wiki/Quickstart#system-requirements
- (If building) I have read the building doc: https://github.com/xenia-project/xenia/blob/master/docs/building.md
Describe what's going wrong
Opcodes lvebx/lvehx/lvewx seems to use wrong ea alignment. According to Altivec manual b/h/w should have ea byte/half/word alignment, while ppc_emit_altivec.cc align ea to quadword for them. Additionally i'm not really sure if whole implementation is correct at all, because it seems to load whole 128 bits from address instead of byte/half/word.
Sorry i'm not familiar with this emitter or with x360 cpu at all, so this issue could be invalid. But looking at store implementations of those opcodes, loads just seems to do wrong thing.
That also should explain #746 "V524 ppc_emit_altivec.cc 73,81 It is odd that the body of 'InstrEmit_lvehx' function is fully equivalent to the body of 'InstrEmit_lvebx' function".
Describe what should happen
Assuming that i'm correct, instructions should load byte/half/word integers from correctly aligned addresses.
If applicable, provide a callstack here, especially for crashes
No response
If applicable, upload a logfile and link it here
No response