From 242a61db11194f5a932a5537a57355a2af738fd1 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Tue, 18 Feb 2025 16:29:49 -0500 Subject: [PATCH] Faster <`, adding instructions to cut dependency chains --- src/builtins/scan.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/builtins/scan.c b/src/builtins/scan.c index 8b8402f6..c1425741 100644 --- a/src/builtins/scan.c +++ b/src/builtins/scan.c @@ -192,11 +192,12 @@ SHOULD_INLINE B scan2_max_num(B w, B x, u8 xe, usz ia) { MINMAX2(max,>,MIN,or ,0 static B scan_lt(B x, u64 p, usz ia) { u64* xp = bitany_ptr(x); u64* rp; B r=m_bitarrv(&rp,ia); usz n=BIT_N(ia); - u64 m10 = 0x5555555555555555; + u64 m = 0x5555555555555555; for (usz i=0; i>63); - rp[i] = p = x & (m10 ^ (x + c)); + u64 u = -(p>>63) &~ (x+1); + u64 c = ((x<<1) | m) - x; + rp[i] = p = x & (m ^ c ^ u); } decG(x); return r; }