diff --git a/build/singeliSubmodule b/build/singeliSubmodule index b54e3a8e..642b1bc7 160000 --- a/build/singeliSubmodule +++ b/build/singeliSubmodule @@ -1 +1 @@ -Subproject commit b54e3a8e0ac55c92dd9fb0e14548e4b2d80b43c2 +Subproject commit 642b1bc73113a1c86480d1292f6a607858619972 diff --git a/src/singeli/src/base.singeli b/src/singeli/src/base.singeli index df6a79c6..c517d026 100644 --- a/src/singeli/src/base.singeli +++ b/src/singeli/src/base.singeli @@ -243,61 +243,61 @@ def tptr{l,s} = { # create "pointer" generator with given load & store definitio def r{i,x} = s{i,x} } -def unroll{vars,begin,end,block & knum{begin} & knum{end}} = { +def unroll{vars,begin,end,iter & knum{begin} & knum{end}} = { def f{i,l & i==l} = 0 def f{i,l & i!=l} = { - exec{i, vars, block} + iter{i, vars} f{i+1, l} } f{begin,end} } -def collect{vars,begin,end,block & knum{begin} & knum{end}} = { +def collect{vars,begin,end,iter & knum{begin} & knum{end}} = { def f{s,e & s==e} = tup{} def f{s,e & s>1) def r0 = f{s, m} merge{r0, f{m, e}} } - def f{s,e & s+1==e} = tup{exec{s, vars, block}} + def f{s,e & s+1==e} = tup{iter{s, vars}} f{begin,end} } -def for{vars,begin,end,block} = { +def for{vars,begin,end,iter} = { i:u64 = begin while (i < end) { - exec{i, vars, block} + iter{i, vars} ++i } } -def forNZ{vars,begin,end,block} = { +def forNZ{vars,begin,end,iter} = { i:u64 = begin assert{i!=end} while (i < end) { - exec{i, vars, block} + iter{i, vars} ++i } } -def forUnroll{exp,unr}{vars,begin,end,block} = { +def forUnroll{exp,unr}{vars,begin,end,iter} = { i:u64 = begin while ((i+unr) <= end) { - exec{each{{j}=>i+j, iota{unr}}, vars, block} + iter{each{{j}=>i+j, iota{unr}}, vars} i+= unr } - if (unr==2) { if (i!=end) exec{tup{i}, vars, block} } + if (unr==2) { if (i!=end) iter{tup{i}, vars} } else if (unr>1) { if (exp) { def stop = makelabel{} each{{j} => { if (i+j >= end) goto{stop} - exec{tup{i+j}, vars, block} + iter{tup{i+j}, vars} }, iota{unr}} setlabel{stop} } else { - @for(j from i to end) exec{tup{j}, vars, block} + @for(j from i to end) iter{tup{j}, vars} } } } -def forXUnroll{unr}{vars,begin,end,block} = { - @forUnroll{unr}(is from begin to end) each{{i} => exec{i, vars, block}, is} +def forXUnroll{unr}{vars,begin,end,iter} = { + @forUnroll{unr}(is from begin to end) each{{i} => iter{i, vars}, is} } diff --git a/src/singeli/src/mask.singeli b/src/singeli/src/mask.singeli index 0c46a163..95f48cd0 100644 --- a/src/singeli/src/mask.singeli +++ b/src/singeli/src/mask.singeli @@ -104,7 +104,7 @@ def mlExec{i, block, vars0, bulk, M} = { def vproc{S=='m'} = tptr{{_}=>M, '!'} def vproc{t & ktup{t}} = vproc2{...t} - exec{i, each{{c} => vproc{c}, vars0}, block} + block{i, each{vproc, vars0}} } # i0 - initial batch index; not used as begin because it's in a different scale compared to end diff --git a/src/singeli/src/transpose.singeli b/src/singeli/src/transpose.singeli index cdfef3bf..1091b0c6 100644 --- a/src/singeli/src/transpose.singeli +++ b/src/singeli/src/transpose.singeli @@ -54,14 +54,14 @@ def kernel{src:P, dst:P, kw, kh, w, h} = { } -def for_mult{k}{vars,begin,end,block} = { +def for_mult{k}{vars,begin,end,iter} = { assert{begin == 0} - @for (i to end/k) exec{k*i, vars, block} + @for (i to end/k) iter{k*i, vars} } -def for_mult_max{k, m}{vars,begin,end,block} = { +def for_mult_max{k, m}{vars,begin,end,iter} = { @for_mult{k} (i0 to end) { i:=i0; if (i>m) i = m - exec{i, vars, block} + iter{i, vars} } }