From 76d26db4c23284fc491eec4b9f03febffbafdc10 Mon Sep 17 00:00:00 2001 From: dzaima Date: Fri, 3 Mar 2023 17:45:16 +0200 Subject: [PATCH] =?UTF-8?q?faster=20F=CB=98=C2=B4n=E2=80=BF2=E2=A5=8A?= =?UTF-8?q?=F0=9D=95=A9=20for=20pervasive=20F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/builtins/md1.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/builtins/md1.c b/src/builtins/md1.c index 730e6f53..9286a99e 100644 --- a/src/builtins/md1.c +++ b/src/builtins/md1.c @@ -315,6 +315,8 @@ static NOINLINE B match_cells(bool ne, B w, B x, ur wr, ur xr, usz len) { } B shape_c1(B, B); +B transp_c1(B, B); +B insert_c1(Md1D* d, B x); B cell_c1(Md1D* d, B x) { B f = d->f; if (isAtm(x) || RNK(x)==0) { B r = c1(f, x); @@ -355,7 +357,11 @@ B cell_c1(Md1D* d, B x) { B f = d->f; if (v(f)->type == t_md1D) { Md1D* fd = c(Md1D,f); u8 rtid = fd->m1->flags-1; - if (rtid == n_const) { f=fd->f; goto const_f; } + if (rtid==n_const) { f=fd->f; goto const_f; } + if ((rtid==n_fold || rtid==n_insert) && TI(x,elType)!=el_B && isPervasiveDy(fd->f) && RNK(x)==2 && SH(x)[1]==2) { + x = C1(transp, x); + return insert_c1(fd, x); + } } } } else if (!isMd(f)) {