mirror of
https://github.com/yuzu-emu/FasTC
synced 2024-11-22 11:13:59 +00:00
Add a few assumptions for performance
This commit is contained in:
parent
d3f5eeab87
commit
77a78511c6
1 changed files with 13 additions and 4 deletions
|
@ -67,18 +67,27 @@ class Indexer {
|
|||
const uint32 m_Height;
|
||||
|
||||
uint32 Resolve(int32 i, uint32 limit) const {
|
||||
int32 l = static_cast<int32>(limit);
|
||||
|
||||
// Assumptions
|
||||
assert(i > -l);
|
||||
assert(i < 2*l);
|
||||
|
||||
int32 r;
|
||||
switch(m_WrapMode) {
|
||||
case eWrapMode_Clamp:
|
||||
r = static_cast<uint32>(std::max(0, std::min<int32>(i, limit)));
|
||||
r = static_cast<uint32>(std::max(0, std::min(i, l)));
|
||||
break;
|
||||
|
||||
case eWrapMode_Wrap:
|
||||
{
|
||||
r = i;
|
||||
int32 l = static_cast<int32>(limit);
|
||||
while (r >= l) { r -= l; }
|
||||
while (r < 0) { r += l; }
|
||||
if ((l & (l-1)) == 0) {
|
||||
r = (r + l) & (l - 1);
|
||||
} else {
|
||||
if (r >= l) { r -= l; }
|
||||
if (r < 0) { r += l; }
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue