Make typeid switches always use subtype matching. Update seeder mixing.

This commit is contained in:
Christoffer Lerno
2023-08-29 22:26:25 +02:00
committed by Christoffer Lerno
parent 7aca8a02cb
commit eac19814e1
14 changed files with 595 additions and 225 deletions

View File

@@ -27,6 +27,7 @@ fn void seeder(char[] input, char[] out_buffer)
{
ulong[] words = tmalloc(ulong, (out_chars + 7) / 8);
words[..] = ODD_PHI64;
usz words_len_2 = words.len * 2;
// Add word at a time
for (usz i = 0; i < input.len / 8; i++)
@@ -47,7 +48,7 @@ fn void seeder(char[] input, char[] out_buffer)
}
// Mix between words
for (isz i = words.len * 2 - 1; i >= 0; i--)
for (isz i = words_len_2 - 1; i >= 0; i--)
{
isz j = i % words.len;
words[j] -= words[(i + 1) % words.len] * MUL_LCG64;
@@ -55,7 +56,7 @@ fn void seeder(char[] input, char[] out_buffer)
}
// Mix within words
for (usz i = 0; i < 2; i++)
for (usz i = 0; i < words_len_2; i++)
{
usz j = i % words.len;
words[j] *= MUL_MCG64;