Danila Kutenin
8a49e20bcd
Fix formatting of a couple files
2022-06-26 22:59:58 +00: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
Daniel Kutenin
288491d6d9
Optimized and correct version of movemask128 for ARM
...
Closes #99
https://gcc.godbolt.org/z/cTjKqzcvn
Previous version was not correct because movemask thought of having bytes 0xFF. We can fully match the semantics + do it faster with USRA instructions.
Re-submission to a develop branch
2022-04-18 13:37:53 +01:00
Konstantinos Margaritis
4589f1742e
minor fixes
2021-12-07 08:49:59 +00:00
Konstantinos Margaritis
fd2eabd071
fix clang-release-arm compilation
2021-12-07 08:43:52 +00:00
Konstantinos Margaritis
fec557c1f9
fix wrong castings for NEON
2021-12-06 21:35:51 +00:00
Konstantinos Margaritis
290eabbca0
fix compilation with clang and some incomplete/wrong implementations for arm this time
2021-12-06 18:22:58 +00:00
Konstantinos Margaritis
cd95b1a38c
use __builtin_constant_p() instead for arm as well
2021-11-25 06:20:53 +00:00
Konstantinos Margaritis
7b65b298c1
add arm vector types in union, avoid -flax-conversions, fix castings
2021-11-01 16:52:17 +02: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
George Wort
a879715953
Move SVE functions into their own files.
...
Change-Id: I995ba4b7d2b558ee403693ee45d747d414d3b177
2021-10-12 11:51:34 +03:00
George Wort
c95a4c3dd1
Use SVE for single shufti.
...
Change-Id: Ic76940c5bb9b81a1c45d39e9ca396a158c50a7dc
2021-10-12 11:51:34 +03:00
George Wort
c7086cb7f1
Add SVE2 support for dvermicelli
...
Change-Id: I056ef15e162ab6fb1f78964321ce893f4096367e
2021-10-12 11:51:34 +03:00
George Wort
9fb79ac3ec
Add SVE2 support for vermicelli
...
Change-Id: Ia025de53521fbaefe5fb1e4425aaf75c7d80a14e
2021-10-12 11:51:34 +03:00
Konstantinos Margaritis
be66cdb51d
fixes in shifting primitives
2021-02-08 19:38:20 +02:00
Konstantinos Margaritis
e2f253d8ab
remove loads from movemask128, variable_byte_shift, add palignr_imm(), minor fixes
2021-01-25 12:13:35 +02:00
Konstantinos Margaritis
5b85589274
add some useful intrinsics
2021-01-25 12:13:35 +02:00
Konstantinos Margaritis
773dc6fa69
optimize *shiftbyte_m128() functions to use palign instead of variable_byte_shift_m128()
2020-12-07 23:12:26 +02:00
Konstantinos Margaritis
38477b08bc
fix movq and load_m128_from_u64a and resp. test for NEON
2020-12-03 19:27:38 +02:00
Konstantinos Margaritis
1c26f044a7
when building in debug mode, vgetq_lane_*() and vextq_*() need immediate operands, and we have to use switch()'ed versions
2020-11-24 17:56:40 +02:00
Konstantinos Margaritis
7b8cf97546
add extra instructions (currently arm-only), fix order of elements in set4x32/set2x64
2020-11-05 19:18:53 +02:00
Konstantinos Margaritis
548242981d
fix ARM implementations
2020-10-30 10:38:41 +02:00
Konstantinos Margaritis
c5a7f4b846
add ARM simd_utils vectorized functions for 128-bit vectors
2020-10-15 16:26:49 +03:00
Konstantinos Margaritis
31ac6718dd
add ARM version of simd_utils.h
2020-10-13 09:19:56 +03:00