From e40728618515a09cdf8df13c85a46743b124593a Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Wed, 28 Sep 2022 21:56:57 -0400 Subject: [PATCH] =?UTF-8?q?BMI2-based=20constant=20boolean=20Replicate=20f?= =?UTF-8?q?or=20=F0=9D=95=A8<=3D52?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/builtins/slash.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/builtins/slash.c b/src/builtins/slash.c index 9374d42d..55319646 100644 --- a/src/builtins/slash.c +++ b/src/builtins/slash.c @@ -713,6 +713,34 @@ B slash_c2(B t, B w, B x) { if (xl == 0) { u64* xp = bitarr_ptr(x); u64* rp; r = m_bitarrv(&rp, s); + #if __BMI2__ + if (wv <= 52) { + u64 m = (u64)-1 / (((u64)1<>= (64/wv); + if ((j&(wv-1))==0) xw = xp[++i]; + u64 rw = _pdep_u64(xw, m); + rp[j] = (rw<> (xi%8); + u64 ex = (xw&mt)<>o|(xw&1)); + o += q; + bool oo = o>=wv; xi+=d+oo; o-=wv&-oo; + } + } + } else + #endif if (wv <= 256) { BOOL_REP_XOR_SCAN(wv) } else { BOOL_REP_OVER(wv, xlen) } goto decX_ret;