51 Commits

Author SHA1 Message Date
Konstantinos Margaritis
1b915cfb93 add fallback pdep64 for x86 if no HAVE_BMI2 2023-12-20 08:25:30 +02:00
Konstantinos Margaritis
49e6fe15a2 add missing pdep64 for x86 bitutils 2023-12-20 00:12:15 +02:00
Konstantnos Margaritis
f5e508b13f fix compilation for SIMDe 2023-11-27 20:52:52 +00:00
Konstantinos Margaritis
f57928ea08 fix SIMDe emulation builds on Arm, add native translation from x86 for comparison 2023-11-27 12:21:58 +00:00
Konstantinos Margaritis
e6cfd11948 prefix assume_aligned to avoid clash with std::assume_aligned in c++20 2022-11-01 10:29:22 +00:00
Konstantinos Margaritis
e3c237a7e0 use correct intrinsic for lshiftbyte_m128 2022-09-07 16:00:10 +03:00
Konstantinos Margaritis
756ef409b4 provide non-immediate versions of lshiftbyte/rshiftbyte on x86 2022-09-07 15:07:20 +03:00
Konstantinos Margaritis
1ae0d15181 readd simd_onebit_masks for x86, needs more work 2022-09-07 13:42:25 +03:00
Konstantinos Margaritis
02ae2a3cad remove simd_onebit_masks from arm/x86 headers, as they moved to common 2022-09-07 12:41:32 +03:00
Danila Kutenin
49eb18ee4f Optimize vectorscan for aarch64 by using shrn instruction
This optimization is based on the thread
https://twitter.com/Danlark1/status/1539344279268691970 and uses
shift right and narrow by 4 instruction https://developer.arm.com/documentation/ddi0596/2020-12/SIMD-FP-Instructions/SHRN--SHRN2--Shift-Right-Narrow--immediate--

To achieve that, I needed to redesign a little movemask into comparemask
and have an additional step towards mask iteration. Our benchmarks
showed 10-15% improvement on average for long matches.
2022-06-26 22:55:45 +00:00
Konstantinos Margaritis
7d600c4fcb bump base requirements to SSE4.2 2021-12-01 23:20:02 +02:00
Konstantinos Margaritis
24fa54081b add len parameter and mask, fixes corner cases on AVX512 2021-11-05 14:30:22 +02:00
Konstantinos Margaritis
5eabceddcf renamed matcher functions, added new ones for Vermicelli 2021-11-01 16:28:50 +00:00
Konstantinos Margaritis
4e044d4142 Add missing copyright info from tampered files 2021-10-12 11:51:35 +03:00
Konstantinos Margaritis
9d0c15c448 add simd_onebit_masks as static in arm simd_utils.h as well 2021-10-12 11:51:35 +03:00
Konstantinos Margaritis
9c54412447 remove simd_utils.c 2021-10-12 11:51:35 +03:00
Konstantinos Margaritis
eebd6c97bc use movemask 2021-10-12 11:51:35 +03:00
Konstantinos Margaritis
fa3d509fad firstMatch/lastMatch are now arch-dependent, emulating movemask on non-Intel is very costly, the alternative is almost twice as fast on Arm 2021-10-12 11:51:34 +03:00
Konstantinos Margaritis
08357a096c remove Windows/ICC support 2021-10-12 11:51:34 +03:00
Konstantinos Margaritis
273b9683ac simplify function 2021-10-12 11:51:34 +03:00
Konstantinos Margaritis
52661f35e8 add global definitions for CHUNKSIZE/VECTORSIZE, define HAVE_AVX512* only when BUILD_AVX512 is also enabled 2021-10-12 11:51:33 +03:00
Konstantinos Margaritis
831091db9e fix typo 2021-10-12 11:51:33 +03:00
Konstantinos Margaritis
741d8246c5 fix some AVX512 function names, to fix AVX512 build failure, also rename the expand* functions to broadcast*() ones for consistency 2021-02-15 13:54:19 +02:00
Konstantinos Margaritis
c3c68b1c3f fix x86 implementations for compress128/expand128 2021-02-15 13:54:19 +02:00
Konstantinos Margaritis
814045201f add BUILD_AVX2 definition, enable non-AVX2 building selectively 2021-02-15 13:54:19 +02:00
Wang Xiang W
5f930b267c Limex: exception handling with AVX512 2021-01-25 14:13:13 +02:00
Chang, Harry
b19a41528a Add cpu feature / target info "AVX512VBMI". 2021-01-25 14:13:13 +02:00
Zhu,Wenjun
d96f1ab505 MCSHENG64: extend to 64-state based on mcsheng 2021-01-25 14:13:13 +02:00
Hong, Yang A
dea7c4dc2e lookaround:
add 64x8 and 64x16 shufti models
add mask64 model
expand entry quantity
2021-01-25 14:13:13 +02:00
Konstantinos Margaritis
1c581e45e9 add expand128() implementation for NEON 2021-01-25 12:13:35 +02:00
Konstantinos Margaritis
752a42419b fix IA32 build, as we need minimum SSSE3 support for compilation to succeed 2020-12-30 19:57:44 +02:00
Konstantinos Margaritis
61b963a717 fix x86 compilation 2020-12-08 11:42:30 +02:00
Konstantinos Margaritis
c4f1372814 remove debug from functions 2020-11-05 20:33:17 +02:00
Konstantinos Margaritis
33904180d8 add compress128 function and implementation 2020-11-05 19:20:06 +02:00
Konstantinos Margaritis
4bce012570 Revert "move x86 popcount.h implementations to util/arch/x86/popcount.h"
This reverts commit 6581aae90e55520353c03edb716de80ecc03521a.
2020-10-16 12:32:44 +03:00
Konstantinos Margaritis
83977db7ab split arch-agnostic simd_utils.h functions into the common file 2020-10-16 12:30:34 +03:00
Konstantinos Margaritis
e7e1308d7f fix compilation paths for cpuid_flags for x86 2020-10-16 12:29:45 +03:00
Konstantinos Margaritis
d2cf1a7882 move cpuid_flags.h header to common 2020-10-08 20:49:33 +03:00
Konstantinos Margaritis
9a0494259e minor fix 2020-10-07 14:26:41 +03:00
Konstantinos Margaritis
f0e70bc0ad Revert "Revert "move x86 popcount.h implementations to util/arch/x86/popcount.h""
This reverts commit 04fbf2468140cc4d7ccabc62a2bdc4503a3d31c5.
2020-09-24 11:52:59 +03:00
Konstantinos Margaritis
04fbf24681 Revert "move x86 popcount.h implementations to util/arch/x86/popcount.h"
This reverts commit 6581aae90e55520353c03edb716de80ecc03521a.
2020-09-24 10:01:50 +03:00
Konstantinos Margaritis
f7a6b8934c add some set*() functions, harmonize names, rename setAxB to set1_AxB when using mm_set1_* internally 2020-09-23 11:49:26 +03:00
Konstantinos Margaritis
e8e188acaf move x86 implementations of simd_utils.h to util/arch/x86/ 2020-09-22 13:12:07 +03:00
Konstantinos Margaritis
9f3ad89ed6 move andn helper function to bitutils.h 2020-09-22 12:17:27 +03:00
Konstantinos Margaritis
6581aae90e move x86 popcount.h implementations to util/arch/x86/popcount.h 2020-09-22 11:45:24 +03:00
Konstantinos Margaritis
aac1f0f1dc move x86 bitutils.h implementations to util/arch/x86/bitutils.h 2020-09-22 11:02:07 +03:00
Konstantinos Margaritis
8ed5f4ac75 fix include paths for masked_move 2020-09-18 12:55:57 +03:00
Konstantinos Margaritis
956b001613 move masked_move* AVX2 implementation to util/arch/x86 2020-09-18 12:51:39 +03:00
Konstantinos Margaritis
ea721c908f move crc32 SSE42 implementation to util/arch/x86 2020-09-18 12:48:14 +03:00
Konstantinos Margaritis
6a40793719 move cpuid stuff to util/arch/x86 2020-09-17 20:35:39 +03:00