From c796670549fc21582c6755e9b0de89ca8e6ca1f9 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Sun, 11 Sep 2022 16:28:06 -0400 Subject: [PATCH] Faster trailing zero trim, and apply it to all cases in compress() --- src/builtins/slash.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/builtins/slash.c b/src/builtins/slash.c index bba78dd2..a0dc8ef2 100644 --- a/src/builtins/slash.c +++ b/src/builtins/slash.c @@ -264,9 +264,17 @@ static B where(B x, usz xia, u64 s) { static B compress(B w, B x, usz wia, B xf) { B r; u64* wp = bitarr_ptr(w); + u64 we = 0; + usz ie = wia/64; + usz q=wia%64; if (q) we = wp[ie] &= ((u64)1<ia = wsum; @@ -294,11 +302,6 @@ static B compress(B w, B x, usz wia, B xf) { } #endif - while (wia>0 && !bitp_get(wp,wia-1)) wia--; - #ifndef __BMI2__ - usz wsum = bit_sum(wp, wia); - #endif - if (wsum==0) { return q_N(xf)? emptyHVec() : isF64(xf)? emptyIVec() : isC32(xf)? emptyCVec() : m_emptyFVec(xf); } switch(xe) { default: UD; #if !SINGELI