From e42273bfe894bacad9f472b92c2080b656fdfe7c Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Mon, 10 Mar 2025 12:50:54 -0400 Subject: [PATCH] =?UTF-8?q?Generic=20stride-1=20=F0=9D=94=BD`=CB=98=20impl?= =?UTF-8?q?ementation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/builtins/cells.c | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/builtins/cells.c b/src/builtins/cells.c index cf7934a6..6d3450b9 100644 --- a/src/builtins/cells.c +++ b/src/builtins/cells.c @@ -102,6 +102,21 @@ B select_cells_base(B inds, B x0, ux csz, ux cam) { // consumes inds,x0; Used by return taga(APD_SH_GET(r, '\0')); } +static B scan_cells_stride1(B f, B x, usz m) { + // m is cell size == scan axis length + B xf = getFillR(x); + HArr_p r = m_harr0c(x); + SGet(x) + FC2 fc2 = c2fn(f); + for (usz i=0, ia=IA(x); if)) break; - u8 frtid = RTID(fd->f); + B f = fd->f; + if (!isFun(f)) break; + u8 frtid = RTID(f); if (frtid==n_rtack) return x; - if (TI(x,elType)==el_bit && (isPervasiveDyExt(fd->f)||frtid==n_ltack) - && 1==shProd(xsh, k+1, xr)) { - B r = scan_rows_bit(frtid, x, m); if (!q_N(r)) return r; + if (1 == shProd(xsh, k+1, xr)) { + if (TI(x,elType)==el_bit && (isPervasiveDyExt(f)||frtid==n_ltack)) { + B r = scan_rows_bit(frtid, x, m); if (!q_N(r)) return r; + } + if (m <= 6) return scan_cells_stride1(f, x, m); } break; }