Fixed v_signmask implementation for AVX2, updated universal intrinsics tests.
This commit is contained in:
@@ -1227,18 +1227,14 @@ inline int v_signmask(const v_uint8x32& a)
|
||||
{ return v_signmask(v_reinterpret_as_s8(a)); }
|
||||
|
||||
inline int v_signmask(const v_int16x16& a)
|
||||
{
|
||||
v_int8x32 v = v_int8x32(_mm256_packs_epi16(a.val, a.val));
|
||||
return v_signmask(v) & 255;
|
||||
}
|
||||
{ return v_signmask(v_pack(a, a)) & 0xFFFF; }
|
||||
inline int v_signmask(const v_uint16x16& a)
|
||||
{ return v_signmask(v_reinterpret_as_s16(a)); }
|
||||
|
||||
inline int v_signmask(const v_int32x8& a)
|
||||
{
|
||||
__m256i a16 = _mm256_packs_epi32(a.val, a.val);
|
||||
v_int8x32 v = v_int8x32(_mm256_packs_epi16(a16, a16));
|
||||
return v_signmask(v) & 15;
|
||||
v_int16x16 a16 = v_pack(a, a);
|
||||
return v_signmask(v_pack(a16, a16)) & 0xFF;
|
||||
}
|
||||
inline int v_signmask(const v_uint32x8& a)
|
||||
{ return v_signmask(v_reinterpret_as_s32(a)); }
|
||||
|
||||
Reference in New Issue
Block a user