From 0af2ba86165c469361fbfd9f34fd70aa2a53213d Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Wed, 7 Sep 2022 10:20:01 +0000 Subject: [PATCH] [NEON] optimize mask1bit128, get rid of simd_onebit_masks --- src/util/arch/arm/simd_utils.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/util/arch/arm/simd_utils.h b/src/util/arch/arm/simd_utils.h index 6447996c..45bcd23c 100644 --- a/src/util/arch/arm/simd_utils.h +++ b/src/util/arch/arm/simd_utils.h @@ -577,9 +577,9 @@ m128 variable_byte_shift_m128(m128 in, s32 amount) { static really_inline m128 mask1bit128(unsigned int n) { assert(n < sizeof(m128) * 8); - u32 mask_idx = ((n % 8) * 64) + 95; - mask_idx -= n / 8; - return loadu128(&simd_onebit_masks[mask_idx]); + static m128 onebit = { 1, 0 }; + m128 mask = lshiftbyte_m128( onebit, n / 8 ); + return lshift64_m128( mask, n % 8 ); } // switches on bit N in the given vector.