includes/std: Moved stdlib to std folder, added all builtin functions

This commit is contained in:
WerWolv
2022-01-30 17:53:48 +01:00
parent 00b7c912f2
commit 6325dbce0d
19 changed files with 190 additions and 19 deletions

37
includes/std/bit.pat Normal file
View File

@@ -0,0 +1,37 @@
#pragma once
namespace std::bit {
fn popcount(u128 x) {
x = (x & (std::limits::u128_max() / 3)) + ((x >> 1) & (std::limits::u128_max() / 3));
x = (x & (std::limits::u128_max() / 5)) + ((x >> 2) & (std::limits::u128_max() / 5));
x = (x & (std::limits::u128_max() / 17)) + ((x >> 4) & (std::limits::u128_max() / 17));
return x % 0xFF;
};
fn has_single_bit(u128 x) {
return x != 0 && (x & (x - 1)) == 0;
};
fn bit_ceil(u128 x) {
if (x == 0) return 0;
u8 i;
while ((1 << i) < x)
i = i + 1;
return 1 << i;
};
fn bit_floor(u128 x) {
if (x == 0) return 0;
u8 i;
while ((x >> i) > 0)
i = i + 1;
return 1 << (i - 1);
};
}