From: Konstantinos Margaritis Date: Wed, 7 Sep 2022 10:20:01 +0000 (+0000) Subject: [NEON] optimize mask1bit128, get rid of simd_onebit_masks X-Git-Tag: vectorscan/5.4.8~1^2~2^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0af2ba86165c469361fbfd9f34fd70aa2a53213d;p=thirdparty%2Fvectorscan.git [NEON] optimize mask1bit128, get rid of simd_onebit_masks --- 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.