]> git.ipfire.org Git - thirdparty/vectorscan.git/log
thirdparty/vectorscan.git
3 years agoalignr methods for avx2 and avx512 added
apostolos [Wed, 28 Jul 2021 09:55:32 +0000 (12:55 +0300)] 
alignr methods for avx2 and avx512 added

3 years agolimex_shuffle added and it's unit tests
apostolos [Tue, 27 Jul 2021 08:44:35 +0000 (11:44 +0300)] 
limex_shuffle added and it's unit tests

3 years agoremove duplicate functions from previous merge
Konstantinos Margaritis [Mon, 26 Jul 2021 18:11:30 +0000 (21:11 +0300)] 
remove duplicate functions from previous merge

3 years agoadd missing compile flags
Konstantinos Margaritis [Mon, 26 Jul 2021 18:09:12 +0000 (21:09 +0300)] 
add missing compile flags

3 years agoadd accidentally removed lines
Konstantinos Margaritis [Mon, 26 Jul 2021 16:50:34 +0000 (19:50 +0300)] 
add accidentally removed lines

3 years ago* add -fno-new-ttp-matching to fix build-failures on newer gcc compilers with C++17
Konstantinos Margaritis [Mon, 26 Jul 2021 16:13:33 +0000 (19:13 +0300)] 
* add -fno-new-ttp-matching to fix build-failures on newer gcc compilers with C++17
* add explicit -mssse3, -mavx2 in compiler flags in respective build profiles

3 years agoMove SVE functions into their own files.
George Wort [Tue, 20 Jul 2021 17:13:02 +0000 (18:13 +0100)] 
Move SVE functions into their own files.

Change-Id: I995ba4b7d2b558ee403693ee45d747d414d3b177

3 years agoImplement new DoubleVermicelli16 acceleration functions using SVE2
George Wort [Mon, 28 Jun 2021 15:29:43 +0000 (16:29 +0100)] 
Implement new DoubleVermicelli16 acceleration functions using SVE2

Change-Id: Id4a8ffca840caab930a6e78cc0dfd0fe7d320b4e

3 years agoUse SVE shufti for counting miracles.
George Wort [Fri, 2 Jul 2021 14:54:42 +0000 (15:54 +0100)] 
Use SVE shufti for counting miracles.

Change-Id: Idd4aaf5bbc05fc90e9138c6fed385bc6ffa7b0b8

3 years agoUse SVE for double shufti.
George Wort [Tue, 13 Jul 2021 19:39:53 +0000 (20:39 +0100)] 
Use SVE for double shufti.

Change-Id: I09e0d57bb8a2f05b613f6225dea79ae823136268

3 years agoUse SVE for single shufti.
George Wort [Tue, 13 Jul 2021 14:09:38 +0000 (15:09 +0100)] 
Use SVE for single shufti.

Change-Id: Ic76940c5bb9b81a1c45d39e9ca396a158c50a7dc

3 years agoUse SVE2 for counting miracles.
George Wort [Fri, 2 Jul 2021 14:53:43 +0000 (15:53 +0100)] 
Use SVE2 for counting miracles.

Change-Id: I048dc182e5f4e726b847b3285ffafef4f538e550

3 years agoReplace USE_ARM_SVE with HAVE_SVE.
George Wort [Fri, 16 Jul 2021 12:21:14 +0000 (13:21 +0100)] 
Replace USE_ARM_SVE with HAVE_SVE.

Change-Id: I469efaac197cba93201f2ca6eca78ca61be3054d

3 years agoAdd Licence to state_compress and bitutils.
George Wort [Fri, 16 Jul 2021 10:56:48 +0000 (11:56 +0100)] 
Add Licence to state_compress and bitutils.

Change-Id: I958daf82e5aef5bd306424dcfa7812382b266d65

3 years agoImplement new Vermicelli16 acceleration functions using SVE2.
George Wort [Mon, 28 Jun 2021 15:29:43 +0000 (16:29 +0100)] 
Implement new Vermicelli16 acceleration functions using SVE2.

The scheme utilises the MATCH and NMATCH instructions to
scan for 16 characters at the same rate as vermicelli
scans for one.

Change-Id: Ie2cef904c56651e6108593c668e9b65bc001a886

3 years agoAdd SVE2 support for dvermicelli
George Wort [Wed, 23 Jun 2021 13:14:28 +0000 (14:14 +0100)] 
Add SVE2 support for dvermicelli

Change-Id: I056ef15e162ab6fb1f78964321ce893f4096367e

3 years agoadd arm rshift128/rshift128
Konstantinos Margaritis [Tue, 20 Jul 2021 11:33:03 +0000 (14:33 +0300)] 
add arm rshift128/rshift128

3 years agofix failing corner case, add pshufb_maskz()
Konstantinos Margaritis [Fri, 23 Jul 2021 15:55:56 +0000 (18:55 +0300)] 
fix failing corner case, add pshufb_maskz()

3 years agouse STL make_unique, remove wrapper header, breaks C++17 compilation
Konstantinos Margaritis [Fri, 23 Jul 2021 08:54:53 +0000 (11:54 +0300)] 
use STL make_unique, remove wrapper header, breaks C++17 compilation

3 years agochange C/C++ standard used to C17/C++17
Konstantinos Margaritis [Fri, 23 Jul 2021 08:47:45 +0000 (11:47 +0300)] 
change C/C++ standard used to C17/C++17

3 years agoremove low4bits from the arguments, fix cases that mostly affect loading large (64...
Konstantinos Margaritis [Fri, 23 Jul 2021 08:45:58 +0000 (11:45 +0300)] 
remove low4bits from the arguments, fix cases that mostly affect loading large (64) vectors and falling out of bounds

3 years agofix loadu_maskz, add {l,r}shift128_var(), tab fixes
Konstantinos Margaritis [Fri, 23 Jul 2021 08:44:46 +0000 (11:44 +0300)] 
fix loadu_maskz, add {l,r}shift128_var(), tab fixes

3 years agoconvert to for loops
Konstantinos Margaritis [Fri, 23 Jul 2021 08:43:51 +0000 (11:43 +0300)] 
convert to for loops

3 years agominor fixes, add 2 constructors from half size vectors
Konstantinos Margaritis [Fri, 23 Jul 2021 08:43:10 +0000 (11:43 +0300)] 
minor fixes, add 2 constructors from half size vectors

3 years agofix lastMatch<64>
Konstantinos Margaritis [Fri, 23 Jul 2021 08:42:13 +0000 (11:42 +0300)] 
fix lastMatch<64>

3 years agoprovide an {l,r}shift128_var() to fix immediate value build failure in loadu_maskz
Konstantinos Margaritis [Wed, 21 Jul 2021 10:20:40 +0000 (10:20 +0000)] 
provide an {l,r}shift128_var() to fix immediate value build failure in loadu_maskz

3 years agofix arm loadu_maskz()
Konstantinos Margaritis [Tue, 20 Jul 2021 11:38:19 +0000 (11:38 +0000)] 
fix arm loadu_maskz()

3 years agoadd arm rshift128/rshift128
Konstantinos Margaritis [Tue, 20 Jul 2021 11:33:03 +0000 (14:33 +0300)] 
add arm rshift128/rshift128

3 years agouse rshift128() instead of vector-wide right shift
Konstantinos Margaritis [Tue, 20 Jul 2021 11:33:03 +0000 (14:33 +0300)] 
use rshift128() instead of vector-wide right shift

3 years agoadd {l,r}shift128()+tests, rename printv_u64() to print64()
Konstantinos Margaritis [Tue, 20 Jul 2021 11:32:40 +0000 (14:32 +0300)] 
add {l,r}shift128()+tests, rename printv_u64() to print64()

3 years agoUse SVE2 Bitperm's bdep instruction in bitutils and state_compress
George Wort [Fri, 2 Jul 2021 09:43:48 +0000 (10:43 +0100)] 
Use SVE2 Bitperm's bdep instruction in bitutils and state_compress

Specifically for pdep64, expand32, and expand64 in bitutils,
as well as all of the loadcompressed functions used in
state_compress.

Change-Id: I92851bd12481dbee6a7e344df0890c4901b56d01

3 years agoFix CROSS_COMPILE_AARCH64 for SVE issues.
George Wort [Mon, 12 Jul 2021 16:08:11 +0000 (17:08 +0100)] 
Fix CROSS_COMPILE_AARCH64 for SVE issues.

Change-Id: I7b9ba3ccb754d96eee22ca01714c783dae1e4956

3 years agoAdd SVE2 support for vermicelli
George Wort [Mon, 7 Jun 2021 12:55:09 +0000 (13:55 +0100)] 
Add SVE2 support for vermicelli

Change-Id: Ia025de53521fbaefe5fb1e4425aaf75c7d80a14e

3 years agoRemove possibly undefined behaviour from Noodle.
George Wort [Thu, 1 Jul 2021 13:19:20 +0000 (14:19 +0100)] 
Remove possibly undefined behaviour from Noodle.

Change-Id: I9a7997cea6a48927cb02b00c5dba5009bbf83850

3 years agoRemove first check from scanDouble Noodle.
George Wort [Wed, 30 Jun 2021 13:13:27 +0000 (14:13 +0100)] 
Remove first check from scanDouble Noodle.

Change-Id: I00eabb3cb06ef6a2060df52c26fa8591907a2711

3 years agoEqual mask test fixed with random numbers
apostolos [Mon, 19 Jul 2021 10:12:58 +0000 (13:12 +0300)] 
Equal mask test fixed with random numbers

3 years agoSupervector test fixes
apostolos [Mon, 19 Jul 2021 07:23:11 +0000 (10:23 +0300)] 
Supervector test fixes

3 years agoSuperVector AVX512 implementations
apostolos [Fri, 16 Jul 2021 08:17:28 +0000 (11:17 +0300)] 
SuperVector AVX512 implementations

3 years agoSuperVector unit tests for AVX2 and AVX512 added
apostolos [Tue, 13 Jul 2021 13:38:25 +0000 (16:38 +0300)] 
SuperVector unit tests for AVX2 and AVX512  added

3 years agoreally fix lshift for avx2
Konstantinos Margaritis [Tue, 13 Jul 2021 10:19:48 +0000 (13:19 +0300)] 
really fix lshift for avx2

3 years agodisable OPTIMISE by default
Konstantinos Margaritis [Mon, 12 Jul 2021 18:12:21 +0000 (21:12 +0300)] 
disable OPTIMISE by default

3 years agofix truffle SIMD for S>16 as well
Konstantinos Margaritis [Mon, 12 Jul 2021 18:12:05 +0000 (21:12 +0300)] 
fix truffle SIMD for S>16 as well

3 years agoadd AVX2 specializations
Konstantinos Margaritis [Mon, 12 Jul 2021 18:09:10 +0000 (21:09 +0300)] 
add AVX2 specializations

3 years agolots of fixes to AVX2 implementation
Konstantinos Margaritis [Mon, 12 Jul 2021 18:08:51 +0000 (21:08 +0300)] 
lots of fixes to AVX2 implementation

3 years agoconvert print helper functions to class methods
Konstantinos Margaritis [Mon, 12 Jul 2021 17:59:09 +0000 (20:59 +0300)] 
convert print helper functions to class methods

3 years agotiny change in vector initialization
Konstantinos Margaritis [Mon, 12 Jul 2021 17:57:44 +0000 (20:57 +0300)] 
tiny change in vector initialization

3 years agofix last failing Shufti/Truffle tests
Konstantinos Margaritis [Tue, 6 Jul 2021 06:22:31 +0000 (09:22 +0300)] 
fix last failing Shufti/Truffle tests

3 years agofix arm SuperVector implementation
Konstantinos Margaritis [Tue, 6 Jul 2021 06:22:00 +0000 (09:22 +0300)] 
fix arm SuperVector implementation

3 years agofix rtruffle, was failing Lbr and a few ReverseTruffle tests
Konstantinos Margaritis [Mon, 5 Jul 2021 10:06:12 +0000 (13:06 +0300)] 
fix rtruffle, was failing Lbr and a few ReverseTruffle tests

3 years agofix x86 debug alignr
Konstantinos Margaritis [Mon, 5 Jul 2021 06:07:02 +0000 (09:07 +0300)] 
fix x86 debug alignr

3 years agomove firstMatch, lastMatch to own header in util
Konstantinos Margaritis [Sun, 4 Jul 2021 16:12:23 +0000 (19:12 +0300)] 
move firstMatch, lastMatch to own header in util

3 years agominor fixes
Konstantinos Margaritis [Sun, 4 Jul 2021 16:11:55 +0000 (19:11 +0300)] 
minor fixes

3 years agocompilation fixes for debug mode
Konstantinos Margaritis [Sun, 4 Jul 2021 11:46:50 +0000 (14:46 +0300)] 
compilation fixes for debug mode

3 years agofix arm implementation of alignr()
Konstantinos Margaritis [Fri, 2 Jul 2021 17:16:23 +0000 (20:16 +0300)] 
fix arm implementation of alignr()

3 years agoharmonise syntax of x86 SuperVector impl.cpp like arm, fix alignr, define printv_...
Konstantinos Margaritis [Fri, 2 Jul 2021 16:53:37 +0000 (19:53 +0300)] 
harmonise syntax of x86 SuperVector impl.cpp like arm, fix alignr, define printv_* functions when on debug mode only

3 years agostyle fixes
Konstantinos Margaritis [Fri, 2 Jul 2021 16:28:37 +0000 (19:28 +0300)] 
style fixes

3 years agoremoved obsolete file
Konstantinos Margaritis [Fri, 2 Jul 2021 16:16:18 +0000 (19:16 +0300)] 
removed obsolete file

3 years agorename supervector class header, use dup_*() functions names instead of set1_*()...
Konstantinos Margaritis [Fri, 2 Jul 2021 16:11:44 +0000 (19:11 +0300)] 
rename supervector class header, use dup_*() functions names instead of set1_*(), minor fixes

3 years agohandle GNUCC_ARCH on non-x86 properly
Konstantinos Margaritis [Fri, 2 Jul 2021 16:10:21 +0000 (19:10 +0300)] 
handle GNUCC_ARCH on non-x86 properly

3 years agoTruffle simd vectorized
apostolos [Fri, 2 Jul 2021 14:12:47 +0000 (17:12 +0300)] 
Truffle simd vectorized

3 years agoFix error in initial noodle double final call.
George Wort [Tue, 22 Jun 2021 11:34:35 +0000 (12:34 +0100)] 
Fix error in initial noodle double final call.

Change-Id: Ie044988f183b47e0b2f1eed3b4bd23de75c3117d

3 years agosyntax fixes
Konstantinos Margaritis [Wed, 23 Jun 2021 19:20:01 +0000 (22:20 +0300)] 
syntax fixes

3 years agonits
Konstantinos Margaritis [Wed, 23 Jun 2021 19:19:16 +0000 (22:19 +0300)] 
nits

3 years agofix typo
Konstantinos Margaritis [Wed, 23 Jun 2021 19:16:56 +0000 (22:16 +0300)] 
fix typo

3 years agofix unit tests, and resp. ARM SuperVector methods based on those unit tests, add...
Konstantinos Margaritis [Wed, 23 Jun 2021 19:16:24 +0000 (22:16 +0300)] 
fix unit tests, and resp. ARM SuperVector methods based on those unit tests, add print functions for SuperVector

3 years agoSupervector Unit Tests
apostolos [Tue, 22 Jun 2021 10:08:00 +0000 (13:08 +0300)] 
Supervector Unit Tests

3 years agoAdd SVE2 support for noodle
George Wort [Tue, 25 May 2021 10:10:25 +0000 (11:10 +0100)] 
Add SVE2 support for noodle

Change-Id: Iacb7d1f164bdd0ba50e2e13d26fe548cf9b45a6a

3 years agoadd missing ARM SuperVector methods, some tests still fail, WIP
Konstantinos Margaritis [Fri, 11 Jun 2021 10:33:01 +0000 (13:33 +0300)] 
add missing ARM SuperVector methods, some tests still fail, WIP

3 years agodisable SuperVector unit tests for now, until ARM support is included
Konstantinos Margaritis [Fri, 11 Jun 2021 10:27:19 +0000 (13:27 +0300)] 
disable SuperVector unit tests for now, until ARM support is included

3 years agorename arm impl.hpp to impl.cpp, add operator|() to SuperVector class
Konstantinos Margaritis [Thu, 10 Jun 2021 10:35:51 +0000 (13:35 +0300)] 
rename arm impl.hpp to impl.cpp, add operator|() to SuperVector class

3 years agorefactor shufti algorithm to use SuperVector class, WIP
Konstantinos Margaritis [Thu, 10 Jun 2021 10:34:38 +0000 (13:34 +0300)] 
refactor shufti algorithm to use SuperVector class, WIP

3 years agoAdd SVE, SVE2, and SVE2_BITPERM as targets
George Wort [Mon, 17 May 2021 16:13:14 +0000 (17:13 +0100)] 
Add SVE, SVE2, and SVE2_BITPERM as targets

Change-Id: I5231e2eb0a31708a16c853dc83ea48db32e0b0a5

3 years agoEnable cross compilation to aarch64
George Wort [Mon, 17 May 2021 14:17:38 +0000 (15:17 +0100)] 
Enable cross compilation to aarch64

Change-Id: Iafc8ac60926f5286990ce63a4ff4f8b6a7c46bef

3 years agoSuperVector unit tests
apostolos [Fri, 11 Jun 2021 08:54:47 +0000 (11:54 +0300)] 
SuperVector unit tests

3 years agounit tests for supervector
apostolos [Wed, 9 Jun 2021 08:58:59 +0000 (11:58 +0300)] 
unit tests for supervector

3 years agoadd more functions, move defines here, enable inlining of template specializations...
Konstantinos Margaritis [Mon, 7 Jun 2021 07:07:29 +0000 (10:07 +0300)] 
add more functions, move defines here, enable inlining of template specializations only when running optimized code

3 years agofix compilation on C++
Konstantinos Margaritis [Mon, 7 Jun 2021 07:04:57 +0000 (10:04 +0300)] 
fix compilation on C++

3 years agosimplify function
Konstantinos Margaritis [Mon, 7 Jun 2021 07:04:36 +0000 (10:04 +0300)] 
simplify function

3 years agomove definitions elsewhere
Konstantinos Margaritis [Mon, 7 Jun 2021 07:04:19 +0000 (10:04 +0300)] 
move definitions elsewhere

3 years agomove SuperVector versions of noodleEngine scan functions to _simd.hpp file
Konstantinos Margaritis [Tue, 25 May 2021 14:15:00 +0000 (17:15 +0300)] 
move SuperVector versions of noodleEngine scan functions to _simd.hpp file

3 years agoadd arm support for the new SuperVector class
Konstantinos Margaritis [Thu, 13 May 2021 17:06:34 +0000 (20:06 +0300)] 
add arm support for the new SuperVector class

3 years agosimplify scanSingleMain() and scanDoubleMain()
Konstantinos Margaritis [Thu, 13 May 2021 14:53:12 +0000 (17:53 +0300)] 
simplify scanSingleMain() and scanDoubleMain()

3 years agodelete separate implementations
Konstantinos Margaritis [Wed, 12 May 2021 17:18:05 +0000 (20:18 +0300)] 
delete separate implementations

3 years agoadd C++ template SIMD library (WIP)
Konstantinos Margaritis [Wed, 12 May 2021 10:31:12 +0000 (13:31 +0300)] 
add C++ template SIMD library (WIP)

3 years agoadd generic SIMD implementation
Konstantinos Margaritis [Wed, 12 May 2021 10:30:20 +0000 (13:30 +0300)] 
add generic SIMD implementation

3 years agorename project, change to noodle_engine.cpp
Konstantinos Margaritis [Wed, 12 May 2021 10:29:50 +0000 (13:29 +0300)] 
rename project, change to noodle_engine.cpp

3 years agoconvert to C++
Konstantinos Margaritis [Wed, 12 May 2021 10:29:16 +0000 (13:29 +0300)] 
convert to C++

3 years agorevert to push_back()
Konstantinos Margaritis [Wed, 12 May 2021 10:27:18 +0000 (13:27 +0300)] 
revert to push_back()

3 years agoadd global definitions for CHUNKSIZE/VECTORSIZE, define HAVE_AVX512* only when BUILD_...
Konstantinos Margaritis [Wed, 12 May 2021 10:26:42 +0000 (13:26 +0300)] 
add global definitions for CHUNKSIZE/VECTORSIZE, define HAVE_AVX512* only when BUILD_AVX512 is also enabled

3 years agofix typo
Konstantinos Margaritis [Wed, 12 May 2021 10:25:41 +0000 (13:25 +0300)] 
fix typo

3 years agoreplace push_back by emplace_back where possible
Konstantinos Margaritis [Fri, 26 Mar 2021 10:39:40 +0000 (12:39 +0200)] 
replace push_back by emplace_back where possible

3 years agouse -O3 for C++ code as well, makes a difference
Konstantinos Margaritis [Mon, 22 Mar 2021 17:43:38 +0000 (19:43 +0200)] 
use -O3 for C++ code as well, makes a difference

3 years agomerge with master
Konstantinos Margaritis [Tue, 12 Oct 2021 08:51:20 +0000 (11:51 +0300)] 
merge with master

3 years agominor optimizations
Konstantinos Margaritis [Tue, 16 Mar 2021 15:47:00 +0000 (17:47 +0200)] 
minor optimizations

3 years agoprefetch works best when addresses are 64-byte aligned
Konstantinos Margaritis [Fri, 12 Mar 2021 08:10:53 +0000 (10:10 +0200)] 
prefetch works best when addresses are 64-byte aligned

3 years agoRevert "replace long macro and switch statement with function pointer array and branc...
Konstantinos Margaritis [Fri, 26 Feb 2021 14:40:58 +0000 (16:40 +0200)] 
Revert "replace long macro and switch statement with function pointer array and branchless execution"

This reverts commit cc9dfed2494d709aac79051c29adb0a563903ba9.

3 years agoreplace long macro and switch statement with function pointer array and branchless...
Konstantinos Margaritis [Fri, 26 Feb 2021 14:39:24 +0000 (16:39 +0200)] 
replace long macro and switch statement with function pointer array and branchless execution

3 years agooptimise case handling
Konstantinos Margaritis [Mon, 22 Feb 2021 11:59:05 +0000 (13:59 +0200)] 
optimise case handling

3 years agosimplify and make scanSingle*()/scanDouble*() more uniform
Konstantinos Margaritis [Fri, 19 Feb 2021 10:16:43 +0000 (12:16 +0200)] 
simplify and make scanSingle*()/scanDouble*() more uniform

3 years agooptimize caseMask handling
Konstantinos Margaritis [Tue, 16 Feb 2021 20:10:42 +0000 (22:10 +0200)] 
optimize caseMask handling