Fix usz=32 build
This commit is contained in:
parent
d3b4c3cc26
commit
b03b26656d
@ -96,7 +96,7 @@ local def ml_exec{i, iter, vars0, bulk, M} = {
|
|||||||
|
|
||||||
# i0 - initial batch index; not used as begin because it's in a different scale compared to end
|
# i0 - initial batch index; not used as begin because it's in a different scale compared to end
|
||||||
def for_masked{bulk, i0}{vars,begin==0,end,iter} = {
|
def for_masked{bulk, i0}{vars,begin==0,end,iter} = {
|
||||||
l:u64 = end
|
l:u64 = promote{u64, end}
|
||||||
|
|
||||||
m:u64 = l / bulk
|
m:u64 = l / bulk
|
||||||
@for (i from i0 to m) ml_exec{i, iter, vars, bulk, mask_none}
|
@for (i from i0 to m) ml_exec{i, iter, vars, bulk, mask_none}
|
||||||
@ -128,7 +128,7 @@ def for_masked_pos{bulk}{vars,begin==0,end:L,iter} = {
|
|||||||
# end is scalar element count
|
# end is scalar element count
|
||||||
# index given is a tuple of batch indexes to process
|
# index given is a tuple of batch indexes to process
|
||||||
def for_mu{bulk, unr, fromunr}{vars,begin==0,end,iter} = {
|
def for_mu{bulk, unr, fromunr}{vars,begin==0,end,iter} = {
|
||||||
l:u64 = end
|
l:u64 = promote{u64, end}
|
||||||
|
|
||||||
m:u64 = l / bulk
|
m:u64 = l / bulk
|
||||||
if (unr==1) {
|
if (unr==1) {
|
||||||
|
|||||||
@ -358,10 +358,11 @@ def loose_mask_gen{V=[vl]T, l} = { # Slow, for ≠` only
|
|||||||
}
|
}
|
||||||
def has_vecshift = hasarch{'AVX2'} or hasarch{'AARCH64'}
|
def has_vecshift = hasarch{'AVX2'} or hasarch{'AARCH64'}
|
||||||
def loose_mask_gen{V=[vl](u64), l if has_vecshift} = {
|
def loose_mask_gen{V=[vl](u64), l if has_vecshift} = {
|
||||||
|
l64 := promote{u64, l}
|
||||||
q := -make{V, 64*iota{vl}} # distance to next row boundary
|
q := -make{V, 64*iota{vl}} # distance to next row boundary
|
||||||
def q_mod{} = { q+= V**l & -(q>>63) }
|
def q_mod{} = { q+= V**l64 & -(q>>63) }
|
||||||
def q_mod{if hasarch{'SSE4.1'}} = { q = blend_top{q,q+V**l, q} }
|
def q_mod{if hasarch{'SSE4.1'}} = { q = blend_top{q,q+V**l64, q} }
|
||||||
o:u64 = width{V}; while (o>l) { o-=l; q_mod{} }
|
o:u64 = width{V}; while (o>l64) { o-=l64; q_mod{} }
|
||||||
{} => {
|
{} => {
|
||||||
m:= V**1 << q; if (not hasarch{'AVX2'}) m&= q < V**64
|
m:= V**1 << q; if (not hasarch{'AVX2'}) m&= q < V**64
|
||||||
q-= V**o; q_mod{}
|
q-= V**o; q_mod{}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user