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:
Gregory Hainaut committed 2017-01-30 17:54:29 +01:00
1 parent da054a2aab
commit cf71049bd4
4 files changed
+17 -17

No files matched your search

+2 -2
View File
@@ -125,9 +125,9 @@ void GSTextureCacheSW::RemoveAll()
m_textures.clear();
for(int i = 0; i < MAX_PAGES; i++)
for(auto& l : m_map)
{
m_map[i].clear();
l.clear();
}
}