mirror of
https://github.com/VectorCamp/vectorscan.git
synced 2025-06-28 16:41:01 +03:00
fix for new pshufb
This commit is contained in:
parent
67e0674df8
commit
9ab18cf419
@ -51,7 +51,7 @@ u32 packedExtract(SuperVector<S> s, const SuperVector<S> permute, const SuperVec
|
||||
template <>
|
||||
really_really_inline
|
||||
u32 packedExtract<16>(SuperVector<16> s, const SuperVector<16> permute, const SuperVector<16> compare) {
|
||||
SuperVector<16> shuffled = s.pshufb(permute);
|
||||
SuperVector<16> shuffled = s.pshufb<true>(permute);
|
||||
SuperVector<16> compared = shuffled & compare;
|
||||
u16 rv = ~compared.eqmask(shuffled);
|
||||
return (u32)rv;
|
||||
@ -60,7 +60,7 @@ u32 packedExtract<16>(SuperVector<16> s, const SuperVector<16> permute, const Su
|
||||
template <>
|
||||
really_really_inline
|
||||
u32 packedExtract<32>(SuperVector<32> s, const SuperVector<32> permute, const SuperVector<32> compare) {
|
||||
SuperVector<32> shuffled = s.pshufb(permute);
|
||||
SuperVector<32> shuffled = s.pshufb<true>(permute);
|
||||
SuperVector<32> compared = shuffled & compare;
|
||||
u32 rv = ~compared.eqmask(shuffled);
|
||||
return (u32)((rv >> 16) | (rv & 0xffffU));
|
||||
@ -69,7 +69,7 @@ u32 packedExtract<32>(SuperVector<32> s, const SuperVector<32> permute, const Su
|
||||
template <>
|
||||
really_really_inline
|
||||
u32 packedExtract<64>(SuperVector<64> s, const SuperVector<64> permute, const SuperVector<64> compare) {
|
||||
SuperVector<64> shuffled = s.pshufb(permute);
|
||||
SuperVector<64> shuffled = s.pshufb<true>(permute);
|
||||
SuperVector<64> compared = shuffled & compare;
|
||||
u64a rv = ~compared.eqmask(shuffled);
|
||||
rv = rv >> 32 | rv;
|
||||
@ -77,4 +77,4 @@ u32 packedExtract<64>(SuperVector<64> s, const SuperVector<64> permute, const Su
|
||||
}
|
||||
|
||||
|
||||
#endif // LIMEX_SHUFFLE_HPP
|
||||
#endif // LIMEX_SHUFFLE_HPP
|
||||
|
Loading…
x
Reference in New Issue
Block a user