clean up squeeze.singeli

This commit is contained in:
dzaima 2022-11-25 19:32:46 +02:00
parent 0f3f91105e
commit b0fcc017ce

View File

@ -49,7 +49,7 @@ squeeze{vw, X, CHR, B}(x0:*void, len:Size) : u32 = {
# show{XV, EV, CHR, B} # show{XV, EV, CHR, B}
xp:= *X~~x0 xp:= *X~~x0
r1:= broadcast{EV, 0} r1:= broadcast{EV, 0}
if (CHR) { if (CHR) { # c8, c16, c32
def hw = width{E}/2 def hw = width{E}/2
maskedLoop{bulk, len, {i, M} => { maskedLoop{bulk, len, {i, M} => {
c:= EV~~loadBatch{xp, i, XV} c:= EV~~loadBatch{xp, i, XV}
@ -64,19 +64,16 @@ squeeze{vw, X, CHR, B}(x0:*void, len:Size) : u32 = {
if (X>u32 and r2>=65536) return{2} if (X>u32 and r2>=65536) return{2}
if (X>u16 and r2>=256) return{1} if (X>u16 and r2>=256) return{1}
0 0
} else { } else { # i8, i16, i32, f64
if (X==i8) { if (X==i8) { # i8
maskedLoop{bulk, len, {i, M} => { maskedLoop{bulk, len, {i, M} => {
v0:= loadBatch{xp, i, XV} v0:= loadBatch{xp, i, XV}
if (anynePositive{broadcast{EV, 0xfe} & EV~~v0, broadcast{EV, 0}, M}) return{2} if (anynePositive{broadcast{EV, 0xfe} & EV~~v0, broadcast{EV, 0}, M}) return{2}
}} }}
0 0
} else { } else { # i16, i32, f64
maskedLoop{bulk, len, {i, M} => { maskedLoop{bulk, len, {i, M} => {
v0:= loadBatch{xp, i, XV} v0:= loadBatch{xp, i, XV}
if (isunsigned{X}) {
r1|= EV~~v0
} else {
def toint{x:T & isint{eltype{T}}} = x def toint{x:T & isint{eltype{T}}} = x
def toint{flt:T & X==f64} = { def toint{flt:T & X==f64} = {
int:= cvt2{i32, flt} int:= cvt2{i32, flt}
@ -89,14 +86,12 @@ squeeze{vw, X, CHR, B}(x0:*void, len:Size) : u32 = {
v:= XU ~~ loadBatch{xp, i, XV} v:= XU ~~ loadBatch{xp, i, XV}
if (any{M{isSNaN{v}}}) return{0xffff_fffe} # not even a number if (any{M{isSNaN{v}}}) return{0xffff_fffe} # not even a number
}} }}
return{0xffff_ffff} # float return{0xffff_ffff} # float
} }
int int
} }
v1:= toint{v0} v1:= toint{v0}
r1|= M{(broadcast{EV, ~E~~1} & EV~~v1) ^ EV~~(v1 >> (width{X}-1))} r1|= M{(broadcast{EV, ~E~~1} & EV~~v1) ^ EV~~(v1 >> (width{X}-1))}
}
}} }}
promote{u32, fold{|, r1}} promote{u32, fold{|, r1}}