use new Singeli builtins
This commit is contained in:
parent
cdd3015940
commit
3946f2cc87
@ -241,8 +241,11 @@ def inRangeExcl{x:T, start, end} = inRangeLen{x, start, end-start} # ∊ [start;
|
|||||||
|
|
||||||
# tuple operations
|
# tuple operations
|
||||||
def broadcast{T, v & isprim{T}} = v
|
def broadcast{T, v & isprim{T}} = v
|
||||||
def iota{n & knum{n}} = @collect(i to n) i
|
def iota{n & knum{n}} = range{n}
|
||||||
def broadcast{n, v & knum{n}} = @collect(n) v
|
def collect{vars,begin,end,iter & knum{begin} & knum{end}} = {
|
||||||
|
each{{i} => iter{i, vars}, range{end-begin}+begin}
|
||||||
|
}
|
||||||
|
def broadcast{n, v & knum{n}} = each{{_}=>v, range{n}}
|
||||||
|
|
||||||
def arch_defvw = tern{hasarch{'AVX2'}, 256, 128}
|
def arch_defvw = tern{hasarch{'AVX2'}, 256, 128}
|
||||||
def has_simd = hasarch{'X86_64'} | hasarch{'AARCH64'}
|
def has_simd = hasarch{'X86_64'} | hasarch{'AARCH64'}
|
||||||
@ -263,16 +266,6 @@ def unroll{vars,begin,end,iter & knum{begin} & knum{end}} = {
|
|||||||
}
|
}
|
||||||
f{begin,end}
|
f{begin,end}
|
||||||
}
|
}
|
||||||
def collect{vars,begin,end,iter & knum{begin} & knum{end}} = {
|
|
||||||
def f{s,e & s==e} = tup{}
|
|
||||||
def f{s,e & s<e} = {
|
|
||||||
def m = s + ((e-s)>>1)
|
|
||||||
def r0 = f{s, m}
|
|
||||||
merge{r0, f{m, e}}
|
|
||||||
}
|
|
||||||
def f{s,e & s+1==e} = tup{iter{s, vars}}
|
|
||||||
f{begin,end}
|
|
||||||
}
|
|
||||||
def for{vars,begin,end,iter} = {
|
def for{vars,begin,end,iter} = {
|
||||||
i:u64 = begin
|
i:u64 = begin
|
||||||
while (i < end) {
|
while (i < end) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user