diff --git a/core/mem/tlsf/tlsf_internal.odin b/core/mem/tlsf/tlsf_internal.odin index 9c8f5c6d8..6f33e516c 100644 --- a/core/mem/tlsf/tlsf_internal.odin +++ b/core/mem/tlsf/tlsf_internal.odin @@ -124,16 +124,14 @@ ffs :: proc "contextless" (word: u32) -> (bit: i32) { @(require_results) fls :: proc "contextless" (word: u32) -> (bit: i32) { - return i32(31 - intrinsics.count_leading_zeros(word)) + N :: (size_of(u32) * 8) - 1 + return i32(N - intrinsics.count_leading_zeros(word)) } -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) +fls_uint :: proc "contextless" (size: uint) -> (bit: i32) { + N :: (size_of(uint) * 8) - 1 + return i32(N - intrinsics.count_leading_zeros(size)) } @(require_results) diff --git a/tests/core/Makefile b/tests/core/Makefile index 85f3783b4..48683250f 100644 --- a/tests/core/Makefile +++ b/tests/core/Makefile @@ -19,6 +19,7 @@ all_bsd: download_test_assets \ linalg_glsl_math_test \ match_test \ math_test \ + mem_test \ noise_test \ odin_test \ os_exit_test \ @@ -80,6 +81,9 @@ linalg_glsl_math_test: noise_test: $(ODIN) test math/noise $(COMMON) -out:test_noise +mem_test: + $(ODIN) test mem $(COMMON) -out:test_core_mem + net_test: $(ODIN) test net $(COMMON) -out:test_core_net diff --git a/tests/core/build.bat b/tests/core/build.bat index 67ac10f86..aa68975f8 100644 --- a/tests/core/build.bat +++ b/tests/core/build.bat @@ -78,6 +78,11 @@ echo Running core:math/noise tests echo --- %PATH_TO_ODIN% test math/noise %COMMON% -out:test_noise.exe || exit /b +echo --- +echo Running core:mem tests +echo --- +%PATH_TO_ODIN% test mem %COMMON% -out:test_core_mem.exe || exit /b + echo --- echo Running core:net echo ---