diff --git a/src/singeli/src/avx2.singeli b/src/singeli/src/avx2.singeli index e7b4e03e..5be6a3d9 100644 --- a/src/singeli/src/avx2.singeli +++ b/src/singeli/src/avx2.singeli @@ -132,11 +132,15 @@ def topMask{x:T & w256{T, 16}} = { (msk&255) | (msk>>8) } -def homAny{x:T & w256i{T}} = homMask{[32]u8 ~~ x} != 0 +def homAny{x:T & w256i{T}} = ~emit{u1, '_mm256_testz_si256', v2i{x}, v2i{x}} def homAll{x:T & w256i{T}} = homMask{[32]u8 ~~ x} == 0xffff_ffff - def topAny{x:T & w256i{T}} = topMask{x} != 0 def topAll{x:T & w256i{T}} = topMask{x} == (1<=32} = topAny{x} + def topAny{x:T & w256i{T,16}} = homAny{[16]i16~~x < [16]i16**0} def topAll{x:T & w256i{T,16}} = homAll{[16]i16~~x < [16]i16**0}