From 7fea4ca2adea1655041135364bbc2cff8b957019 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Tue, 28 Mar 2023 16:32:41 -0400 Subject: [PATCH] Combine transp_c2 temp allocations into one TALLOC --- src/builtins/transpose.c | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/src/builtins/transpose.c b/src/builtins/transpose.c index 57cb8f45..0390b2ce 100644 --- a/src/builtins/transpose.c +++ b/src/builtins/transpose.c @@ -166,7 +166,7 @@ B transp_c2(B t, B w, B x) { if (isAtm(x) || (xr=RNK(x))=xr) thrF("ā‰: Axis %s does not exist (%i≔=š•©)", a, xr); @@ -184,7 +184,7 @@ B transp_c2(B t, B w, B x) { // compute shape for the given axes usz* xsh = SH(x); - TALLOC(usz, rsh, xr); + usz *rsh = (usz*)(p + xr); // Length xr usz dup = 0, max = 0; usz no_sh = -(usz)1; for (usz j=0; j=1 */ \ ur a = a0; \ usz str = st[a]; \ - usz l = rsh[a]; \ for (usz k=0; k= (32*8) >> xlw) { // cell >= 32 bytes usz ria = csz * shProd(rsh, 0, na); - AXIS_LOOP(MAKE_MUT_INIT(rm, ria, xe); MUTG_INIT(rm); , - na, csz, mut_copyG(rm, i, x, j, csz)); + MAKE_MUT_INIT(rm, ria, xe); MUTG_INIT(rm); + AXIS_LOOP(na, csz, mut_copyG(rm, i, x, j, csz)); Arr* ra = mut_fp(rm); shSet_alloc(ra, rr, rsh); r = withFill(taga(ra), getFillQ(x)); - decG(x); goto ret_decst; + decG(x); goto ret; } if ((csz & (csz-1))==0 && csz<=64>>xlw && csz<=8 // CPU-sized cells && !dup && na>=2 && p[na-1]==ar-2 && p[na-2]==ar-1 // Last two axes transposed @@ -280,11 +278,11 @@ B transp_c2(B t, B w, B x) { csz = (csz<