mirror of https://github.com/RPCS3/rpcs3.git
SPU LLVM: make LS loads/stores volatile
Fixes PS1 classics and possibly something else.
This commit is contained in:
parent
cd64990558
commit
f05e24e8e8
|
@ -7649,13 +7649,13 @@ public:
|
||||||
void make_store_ls(value_t<u64> addr, value_t<u8[16]> data)
|
void make_store_ls(value_t<u64> addr, value_t<u8[16]> data)
|
||||||
{
|
{
|
||||||
const auto bswapped = zshuffle(data, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0);
|
const auto bswapped = zshuffle(data, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0);
|
||||||
m_ir->CreateStore(bswapped.eval(m_ir), m_ir->CreateBitCast(m_ir->CreateGEP(m_lsptr, addr.value), get_type<u8(*)[16]>()));
|
m_ir->CreateStore(bswapped.eval(m_ir), m_ir->CreateBitCast(m_ir->CreateGEP(m_lsptr, addr.value), get_type<u8(*)[16]>()), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto make_load_ls(value_t<u64> addr)
|
auto make_load_ls(value_t<u64> addr)
|
||||||
{
|
{
|
||||||
value_t<u8[16]> data;
|
value_t<u8[16]> data;
|
||||||
data.value = m_ir->CreateLoad(m_ir->CreateBitCast(m_ir->CreateGEP(m_lsptr, addr.value), get_type<u8(*)[16]>()));
|
data.value = m_ir->CreateLoad(m_ir->CreateBitCast(m_ir->CreateGEP(m_lsptr, addr.value), get_type<u8(*)[16]>()), true);
|
||||||
return zshuffle(data, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0);
|
return zshuffle(data, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue