math.vectors.simd.intrinsics: fix double-2 vcount
Turns out we use MOVMSKPS for double vectors too. Gotta save that extra instruction byte!db4
parent
9a19f82470
commit
32b7dc116f
|
@ -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-vall?) ( a rep -- ? ) [ bitand ] bitwise-components-reduce zero? not ;
|
||||||
SIMD-INTRINSIC: (simd-vnone?) ( a rep -- ? ) [ bitor ] bitwise-components-reduce zero? ;
|
SIMD-INTRINSIC: (simd-vnone?) ( a rep -- ? ) [ bitor ] bitwise-components-reduce zero? ;
|
||||||
SIMD-INTRINSIC: (simd-vgetmask) ( a rep -- n )
|
SIMD-INTRINSIC: (simd-vgetmask) ( a rep -- n )
|
||||||
dup { float-4-rep double-2-rep } member?
|
{ float-4-rep double-2-rep } member?
|
||||||
[ ((vgetmask)) ] [ drop uchar-16-rep ((vgetmask)) ] if ;
|
[ uint-4-rep ((vgetmask)) ] [ uchar-16-rep ((vgetmask)) ] if ;
|
||||||
SIMD-INTRINSIC: (simd-v>float) ( a rep -- c )
|
SIMD-INTRINSIC: (simd-v>float) ( a rep -- c )
|
||||||
[ [ >rep-array ] [ rep-length ] bi [ >float ] ]
|
[ [ >rep-array ] [ rep-length ] bi [ >float ] ]
|
||||||
[ >float-vector-rep <rep-array> ] bi unrolled-map-as-unsafe underlying>> ;
|
[ >float-vector-rep <rep-array> ] bi unrolled-map-as-unsafe underlying>> ;
|
||||||
|
|
|
@ -113,7 +113,7 @@ DEFER: simd-construct-op
|
||||||
: mask>count ( n rep -- n' )
|
: mask>count ( n rep -- n' )
|
||||||
[ bit-count ] dip {
|
[ bit-count ] dip {
|
||||||
{ float-4-rep [ ] }
|
{ float-4-rep [ ] }
|
||||||
{ double-2-rep [ ] }
|
{ double-2-rep [ -1 shift ] }
|
||||||
{ uchar-16-rep [ ] }
|
{ uchar-16-rep [ ] }
|
||||||
{ char-16-rep [ ] }
|
{ char-16-rep [ ] }
|
||||||
{ ushort-8-rep [ -1 shift ] }
|
{ ushort-8-rep [ -1 shift ] }
|
||||||
|
|
Loading…
Reference in New Issue