ogl_beamforming

Ultrasound Beamforming Implemented with OpenGL
git clone anongit@rnpnr.xyz:ogl_beamforming.git
Log | Files | Refs | Feed | Submodules | README | LICENSE

Commit: e3269b53edcea93b8dffd45b7665d655ff35a372
Parent: f6e8bfbe3762c7ef10fe2c15b8970020fd18aa19
Author: Randy Palamar
Date:   Thu,  8 Oct 2026 20:22:57 -0700

base/intrinsics: change return type of clz/ctx to u32

GCC misbehaves when the return type is u64. Obviously the result
fits in a u32 so no problem to use that if it makes GCC happy.

Diffstat:
Mbase_intrinsics.h | 16+++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/base_intrinsics.h b/base_intrinsics.h @@ -151,7 +151,7 @@ #if COMPILER_MSVC -function force_inline u64 +function force_inline u32 clz_u64(u64 a) { u64 result = 64, index; @@ -162,7 +162,7 @@ clz_u64(u64 a) return result; } -function force_inline u64 +function force_inline u32 ctz_u64(u64 a) { u64 result = 64, index; @@ -175,19 +175,17 @@ ctz_u64(u64 a) #else /* !COMPILER_MSVC */ -function force_inline u64 -clz_u64(u32 a) +function force_inline u32 +clz_u64(u64 a) { - u64 result = 64; - if (a) result = (u64)__builtin_clzll(a); + u32 result = a ? __builtin_clzll(a) : 64; return result; } -function force_inline u64 +function force_inline u32 ctz_u64(u64 a) { - u64 result = 64; - if (a) result = (u64)__builtin_ctzll(a); + u32 result = a ? __builtin_ctzll(a) : 64; return result; }