move maskedLoopPositive to @-based

This commit is contained in:
dzaima 2023-06-15 19:09:53 +03:00
parent dee29a1a02
commit 90e7537225
2 changed files with 14 additions and 14 deletions

View File

@ -34,7 +34,7 @@ fn equal{W, X}(w:*void, x:*void, l:u64, d:u64) : u1 = {
def TU = [vw/64]u64
f0:= TF**0.0
f1:= TF**1.0
maskedLoopPositive{bulk, l, {i, M} => {
@maskedLoopPositive{bulk}(M in 'm' over i to l) {
wu:= (if (hasarch{'AVX2'}) {
cw:= b_getBatchLo{bulk, *u64~~w, i}
topBlend{f0, f1, TU**cw << make{TU,63-iota{vcount{TU}}}}
@ -44,7 +44,7 @@ fn equal{W, X}(w:*void, x:*void, l:u64, d:u64) : u1 = {
})
cx:= load{*TF ~~ x, i}
if (anynePositive{wu, cx, M}) return{0}
}}
}
} else { # bitarr ≡ i8/i16/i32arr
def T = [bulk]X
def sh{c} = c << (width{X}-1)
@ -65,11 +65,11 @@ fn equal{W, X}(w:*void, x:*void, l:u64, d:u64) : u1 = {
def R = [bulk]X
maskedLoopPositive{bulk, l, {i, M} => {
@maskedLoopPositive{bulk}(M in 'm' over i to l) {
cw:= loadBatch{*W~~w, i, R}
cx:= loadBatch{*X~~x, i, R}
if (anynePositive{cw,cx,M}) return{0}
}}
}
}
1
}

View File

@ -68,16 +68,6 @@ def storeBatch{ptr:P, ns, xs, M & istup{ns}} = each{{n,x} => storeBatch{ptr, n,
def maskedLoopPositive{bulk, l:L, step} = {
i:L = 0
while(i < (l-1)/bulk) {
step{i, maskNone}
++i
}
step{i, maskAfter{l - i*bulk}}
}
# "harmless" pointer cast that'll only cast void*
def hCast{T,p} = assert{show{'expected pointer with element',T,'or void but got ',p}}
def hCast{T,p:P & match{T,eltype{P}}} = p
@ -120,6 +110,16 @@ def maskedLoop{bulk, i0}{vars,begin==0,end,iter} = {
def maskedLoop{bulk} = maskedLoop{bulk,0}
def maskedLoopPositive{bulk}{vars,begin==0,end:L,iter} = {
i:L = 0
while(i < (end-1)/bulk) {
mlExec{i, iter, vars, bulk, maskNone}
++i
}
mlExec{i, iter, vars, bulk, maskAfter{end - i*bulk}}
}
# masked unrolled loop
# bulk: vector count