SuperVector shuffle implementation and test function optimized

This commit is contained in:
Apostolos Tapsas
2021-10-22 11:55:39 +00:00
parent 57301721f1
commit d43d6733b6
5 changed files with 7 additions and 18 deletions

View File

@@ -463,14 +463,6 @@ char testbit128(m128 val, unsigned int n) {
static really_inline
m128 pshufb_m128(m128 a, m128 b) {
return (m128) vec_perm((uint8x16_t)a, (uint8x16_t)a, (uint8x16_t)b);
//return (m128) vec_perm((int8x16_t)vec_splat_s8(0), (int8x16_t)a, (uint8x16_t)b);;
//uint8x16_t btransparent = vec_and((uint8x16_t)b, (uint8x16_t)vec_splats(0x8f));
//return (m128) vec_perm(a, a, btransparent);
//return (m128) vec_perm((int8x16_t)vec_splat_s8(0), (int8x16_t)b, (uint8x16_t)a);
//return (m128) vec_perm((int8x16_t)a, (int8x16_t)b, (uint8x16_t)vec_splat_s8(0));
//return (m128) vec_perm((int8x16_t)b, (int8x16_t)a, (uint8x16_t)vec_splat_s8(0));
}
static really_inline

View File

@@ -603,7 +603,7 @@ template<>
template<>
really_inline SuperVector<16> SuperVector<16>::pshufb<false>(SuperVector<16> b)
{
return (m128) vec_permxor((int8x16_t)vec_splat_s8(0), (int8x16_t)u.v128[0], (int8x16_t) b.u.v128[0]);
return (m128) vec_perm((uint8x16_t)u.v128[0], (uint8x16_t)u.v128[0], (uint8x16_t)b.u.v128[0]);
}
template<>