mirror of
https://github.com/RPCS3/rpcs3.git
synced 2026-03-26 20:38:33 -06:00
SPU LLVM: Allow the reuse of address from LQX/STQX
This commit is contained in:
parent
9fb8ee7e2a
commit
af98aedce5
@ -8319,12 +8319,18 @@ public:
|
||||
{
|
||||
data._u32[3] %= SPU_LS_SIZE;
|
||||
|
||||
if (data._u32[3] % 0x10 == 0)
|
||||
if (const u32 remainder = data._u32[3] % 0x10; remainder == 0)
|
||||
{
|
||||
value_t<u64> addr = eval(splat<u64>(data._u32[3]) + zext<u64>(extract(pair.second, 3) & 0x3fff0));
|
||||
make_store_ls(addr, get_vr<u8[16]>(op.rt));
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
value_t<u64> addr = eval(splat<u64>(data._u32[3] - remainder) + zext<u64>((extract(pair.second, 3) + remainder) & 0x3fff0));
|
||||
make_store_ls(addr, get_vr<u8[16]>(op.rt));
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -8343,12 +8349,18 @@ public:
|
||||
{
|
||||
data._u32[3] %= SPU_LS_SIZE;
|
||||
|
||||
if (data._u32[3] % 0x10 == 0)
|
||||
if (const u32 remainder = data._u32[3] % 0x10; remainder == 0)
|
||||
{
|
||||
value_t<u64> addr = eval(splat<u64>(data._u32[3]) + zext<u64>(extract(pair.second, 3) & 0x3fff0));
|
||||
set_vr(op.rt, make_load_ls(addr));
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
value_t<u64> addr = eval(splat<u64>(data._u32[3] - remainder) + zext<u64>((extract(pair.second, 3) + remainder) & 0x3fff0));
|
||||
set_vr(op.rt, make_load_ls(addr));
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user