mirror of
https://github.com/PCSX2/pcsx2.git
synced 2026-11-13 09:40:13 +01:00
gsdx tc: use unsigned constant
Help the compiler to generate better code
C code:
uint32 addr = (i >> 3u) % MAX_BLOCKS;
uint32 row = addr >> 5u;
uint32 col = 1 << (addr & 31u);
ASM Before
f48: mov eax,esi
f4a: mov ecx,esi
f4c: mov edx,DWORD PTR [ebp+0x8]
f4f: sar eax,0x1f
f52: sar ecx,0x3
f55: shr eax,0x12
f58: add ecx,eax
f5a: and ecx,0x3fff
f60: sub ecx,eax
f62: mov eax,0x1
f67: shl eax,cl
f69: shr ecx,0x5
f6c: lea edx,[edx+ecx*4]
ASM After
f48: mov ecx,edi
f4a: mov eax,0x1
f4f: sar ecx,0x3
f52: shl eax,cl
f54: shr ecx,0x3
f57: and ecx,0x7fc
f5d: add ecx,DWORD PTR [ebp+0x8]
This commit is contained in:
1 parent
da054a2aab
commit
cf71049bd4
4 files changed
+17
-17
No files matched your search
@@ -1654,18 +1654,18 @@ void GSTextureCache::Source::Update(const GSVector4i& rect, int layer)
|
||||
{
|
||||
for(int y = r.top; y < r.bottom; y += bs.y)
|
||||
{
|
||||
uint32 base = off->block.row[y >> 3];
|
||||
uint32 base = off->block.row[y >> 3u];
|
||||
|
||||
for(int x = r.left, i = (y << 7) + x; x < r.right; x += bs.x, i += bs.x)
|
||||
{
|
||||
uint32 block = base + off->block.col[x >> 3];
|
||||
uint32 block = base + off->block.col[x >> 3u];
|
||||
|
||||
if(block < MAX_BLOCKS || m_wrap_gs_mem)
|
||||
{
|
||||
uint32 addr = (i >> 3) % MAX_BLOCKS;
|
||||
uint32 addr = (i >> 3u) % MAX_BLOCKS;
|
||||
|
||||
uint32 row = addr >> 5;
|
||||
uint32 col = 1 << (addr & 31);
|
||||
uint32 row = addr >> 5u;
|
||||
uint32 col = 1 << (addr & 31u);
|
||||
|
||||
if((m_valid[row] & col) == 0)
|
||||
{
|
||||
@@ -1683,18 +1683,18 @@ void GSTextureCache::Source::Update(const GSVector4i& rect, int layer)
|
||||
{
|
||||
for(int y = r.top; y < r.bottom; y += bs.y)
|
||||
{
|
||||
uint32 base = off->block.row[y >> 3];
|
||||
uint32 base = off->block.row[y >> 3u];
|
||||
|
||||
for(int x = r.left; x < r.right; x += bs.x)
|
||||
{
|
||||
uint32 block = base + off->block.col[x >> 3];
|
||||
uint32 block = base + off->block.col[x >> 3u];
|
||||
|
||||
if(block < MAX_BLOCKS || m_wrap_gs_mem)
|
||||
{
|
||||
block %= MAX_BLOCKS;
|
||||
|
||||
uint32 row = block >> 5;
|
||||
uint32 col = 1 << (block & 31);
|
||||
uint32 row = block >> 5u;
|
||||
uint32 col = 1 << (block & 31u);
|
||||
|
||||
if((m_valid[row] & col) == 0)
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user