use maskedLoop in dyarith
This commit is contained in:
parent
113f72e86d
commit
4c03520a07
@ -79,17 +79,11 @@ def arithChk3{F, M, w:T, x:T, i} = {
|
|||||||
def arithChk3{F, M, w:T, x:T, i & f64==rootty{T}} = F{w,x}
|
def arithChk3{F, M, w:T, x:T, i & f64==rootty{T}} = F{w,x}
|
||||||
|
|
||||||
def arithAny{VT, F, W, X, r, len} = {
|
def arithAny{VT, F, W, X, r, len} = {
|
||||||
def bam = vcount{VT}
|
def bulk = vcount{VT}
|
||||||
def vv = len/bam
|
maskedLoop{bulk, len, {i, M} => {
|
||||||
@forv{VT} (r over i from 0 to vv) r = arithChk3{F, {x}=>x, W{i}, X{i}, i*bam}
|
rv:= arithChk3{F, M, W{i}, X{i}, i*bulk}
|
||||||
left:= len&(bam-1)
|
storeBatch{r, i, rv, M}
|
||||||
if (left!=0) {
|
}}
|
||||||
m:= maskOf{VT, left}
|
|
||||||
def mask{x:X} = x&cast_v{X,m}
|
|
||||||
def mask{x==0} = 1
|
|
||||||
rv:= arithChk3{F, maskAfter{left}, W{vv}, X{vv}, vv*bam}
|
|
||||||
maskstoreF{cast_p{VT,r}, m, vv, rv}
|
|
||||||
}
|
|
||||||
len
|
len
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user