Fix fls_uint

This commit is contained in:
Jeroen van Rijn
2024-06-06 14:42:19 +02:00
parent 0b6d73c86e
commit 72f6b5479d
2 changed files with 49 additions and 4 deletions
+8 -4
View File
@@ -126,10 +126,14 @@ ffs :: proc "contextless" (word: u32) -> (bit: i32) {
fls :: proc "contextless" (word: u32) -> (bit: i32) {
return i32(31 - intrinsics.count_leading_zeros(word))
}
@(require_results)
fls_uint :: proc "contextless" (size: uint) -> (bit: i32) {
N :: size_of(uintptr)-1
return i32(N - intrinsics.count_leading_zeros(size))
when size_of(uintptr) == 8 {
@(require_results)
fls_uint :: proc "contextless" (size: uint) -> (bit: i32) {
return i32(63 - intrinsics.count_leading_zeros(size))
}
} else {
fls_uint :: fls_u32
}
@(require_results)