diff --git a/basis/math/vectors/simd/intrinsics/intrinsics.factor b/basis/math/vectors/simd/intrinsics/intrinsics.factor index b8dbe6d1bd..28bd2f8f83 100644 --- a/basis/math/vectors/simd/intrinsics/intrinsics.factor +++ b/basis/math/vectors/simd/intrinsics/intrinsics.factor @@ -266,8 +266,8 @@ SIMD-INTRINSIC: (simd-vany?) ( a rep -- ? ) [ bitor ] bitwise-com SIMD-INTRINSIC: (simd-vall?) ( a rep -- ? ) [ bitand ] bitwise-components-reduce zero? not ; SIMD-INTRINSIC: (simd-vnone?) ( a rep -- ? ) [ bitor ] bitwise-components-reduce zero? ; SIMD-INTRINSIC: (simd-vgetmask) ( a rep -- n ) - dup { float-4-rep double-2-rep } member? - [ ((vgetmask)) ] [ drop uchar-16-rep ((vgetmask)) ] if ; + { float-4-rep double-2-rep } member? + [ uint-4-rep ((vgetmask)) ] [ uchar-16-rep ((vgetmask)) ] if ; SIMD-INTRINSIC: (simd-v>float) ( a rep -- c ) [ [ >rep-array ] [ rep-length ] bi [ >float ] ] [ >float-vector-rep ] bi unrolled-map-as-unsafe underlying>> ; diff --git a/basis/math/vectors/simd/simd.factor b/basis/math/vectors/simd/simd.factor index a277c651a3..432cca0718 100644 --- a/basis/math/vectors/simd/simd.factor +++ b/basis/math/vectors/simd/simd.factor @@ -113,7 +113,7 @@ DEFER: simd-construct-op : mask>count ( n rep -- n' ) [ bit-count ] dip { { float-4-rep [ ] } - { double-2-rep [ ] } + { double-2-rep [ -1 shift ] } { uchar-16-rep [ ] } { char-16-rep [ ] } { ushort-8-rep [ -1 shift ] }