singeli collect

This commit is contained in:
dzaima 2022-03-20 00:28:44 +02:00
parent ba6e2adb5d
commit 60d3ba8c64
2 changed files with 9 additions and 1 deletions

View File

@ -603,7 +603,7 @@ Nvm_res m_nvm(Body* body) {
if (sz==0 ) { TOPs; CCALL(i_ARR_0); } // unused with optimizations
else if (sz==1 && o) { TOPp; GET(R_A3,0,2); CCALL(m_vec1); } // (B a)
else if (sz==2 && o) { TOPpR(R_A1); GET(R_A0,1,1); CCALL(m_vec2); } // (B a, B b)
else { TOPp; IMM(R_A1, sz); lGPos=SPOSq(1-sz); INV(2,0,i_ARR_p); } // (B a, i64 sz, S)
else { TOPp; IMM(R_A1, sz); lGPos=SPOSq(1-sz); INV(2,0,i_ARR_p); } // (B a, i64 sz, S)
break;
case DFND0: case DFND1: case DFND2: TOPs; // (u32* bc, Scope* sc, Block* bl)
Block* bl = (Block*)L64;

View File

@ -39,6 +39,14 @@ def unroll{vars,begin,end,block & knum{begin} & knum{end}} = {
}
f{begin,end}
}
def collect{vars,begin,end,block & knum{begin} & knum{end}} = {
def f{i,l & i==l} = tup{}
def f{i,l & i!=l} = {
def r = exec{i, vars, block}
merge{tup{r}, f{i+1, l}}
}
f{begin,end}
}
def for{vars,begin,end,block} = {
i:u64 = begin
while (i < end) {