mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-05-22 11:37:04 +02:00
mod6_table + mod8_table
This commit is contained in:
parent
7ec09305d0
commit
8d78acf8b6
1 changed files with 17 additions and 12 deletions
|
|
@ -153,26 +153,31 @@ uint ReplicateBitTo9(uint value) {
|
||||||
return value * 511;
|
return value * 511;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const uint mod6_table = 0
|
||||||
|
| ((6 % 1) << (2 * 1)) | ((6 % 2) << (2 * 2))
|
||||||
|
| ((6 % 3) << (2 * 3)) | ((6 % 4) << (2 * 4))
|
||||||
|
| ((6 % 5) << (2 * 5)) | ((6 % 6) << (2 * 6));
|
||||||
|
const uint mod8_table = 0
|
||||||
|
| ((8 % 1) << (2 * 1)) | ((8 % 2) << (2 * 2))
|
||||||
|
| ((8 % 3) << (2 * 3)) | ((8 % 4) << (2 * 4))
|
||||||
|
| ((8 % 5) << (2 * 5)) | ((8 % 6) << (2 * 6))
|
||||||
|
| ((8 % 7) << (2 * 7)) | ((8 % 8) << (2 * 8));
|
||||||
// Assumes num_bits < to_bit, num_bits and to_bit != 0
|
// Assumes num_bits < to_bit, num_bits and to_bit != 0
|
||||||
uint ReplicateBits(uint value, uint num_bits, uint to_bit) {
|
uint ReplicateBits(uint value, uint num_bits, uint to_bit, uint table) {
|
||||||
const uint repl = value & ((1 << num_bits) - 1);
|
const uint repl = value & ((1 << num_bits) - 1);
|
||||||
|
const uint shift = (table >> (num_bits * 2)) & 3;
|
||||||
uint v = repl;
|
uint v = repl;
|
||||||
v |= v << (num_bits << 0); // [ xxxx xxxr ]
|
v |= v << (num_bits << 0); // [ xxxx xxrr ]
|
||||||
v |= v << (num_bits << 1); // [ xxxx xxrr ]
|
v |= v << (num_bits << 1); // [ xxxx rrrr ]
|
||||||
v |= v << (num_bits << 2); // [ xxxx rrrr ]
|
v |= v << (num_bits << 2); // [ rrrr rrrr ]
|
||||||
v |= v << (num_bits << 3); // [ rrrr rrrr ]
|
v = (v << shift) | repl >> (num_bits - shift);
|
||||||
const uint shift = (to_bit % num_bits);
|
|
||||||
v <<= shift;
|
|
||||||
v |= repl >> (num_bits - shift);
|
|
||||||
return v & ((1 << to_bit) - 1);
|
return v & ((1 << to_bit) - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint FastReplicateTo8(uint value, uint num_bits) {
|
uint FastReplicateTo8(uint value, uint num_bits) {
|
||||||
return ReplicateBits(value, num_bits, 8);
|
return ReplicateBits(value, num_bits, 8, mod8_table);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint FastReplicateTo6(uint value, uint num_bits) {
|
uint FastReplicateTo6(uint value, uint num_bits) {
|
||||||
return ReplicateBits(value, num_bits, 6);
|
return ReplicateBits(value, num_bits, 6, mod6_table);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint Hash52(uint p) {
|
uint Hash52(uint p) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue