Fix usz=32 build

This commit is contained in:
Marshall Lochbaum 2025-03-02 14:16:07 -05:00
parent d3b4c3cc26
commit b03b26656d
2 changed files with 6 additions and 5 deletions

View File

@ -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
def for_masked{bulk, i0}{vars,begin==0,end,iter} = {
l:u64 = end
l:u64 = promote{u64, end}
m:u64 = l / bulk
@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
# index given is a tuple of batch indexes to process
def for_mu{bulk, unr, fromunr}{vars,begin==0,end,iter} = {
l:u64 = end
l:u64 = promote{u64, end}
m:u64 = l / bulk
if (unr==1) {

View File

@ -358,10 +358,11 @@ def loose_mask_gen{V=[vl]T, l} = { # Slow, for ≠` only
}
def has_vecshift = hasarch{'AVX2'} or hasarch{'AARCH64'}
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
def q_mod{} = { q+= V**l & -(q>>63) }
def q_mod{if hasarch{'SSE4.1'}} = { q = blend_top{q,q+V**l, q} }
o:u64 = width{V}; while (o>l) { o-=l; q_mod{} }
def q_mod{} = { q+= V**l64 & -(q>>63) }
def q_mod{if hasarch{'SSE4.1'}} = { q = blend_top{q,q+V**l64, q} }
o:u64 = width{V}; while (o>l64) { o-=l64; q_mod{} }
{} => {
m:= V**1 << q; if (not hasarch{'AVX2'}) m&= q < V**64
q-= V**o; q_mod{}