Commit Graph

1476 Commits

Author SHA1 Message Date
ypicchi-arm
ca70a3d9be Fix double shufti's vector end false positive (#325)
* Add regression test for double shufti

It tests for false positive at vector edges.

Signed-off-by: Yoan Picchi <yoan.picchi@arm.com>

* Fix double shufti reporting false positives

Double shufti used to offset one vector, resulting in losing one character
at the end of every vector. This was replaced by a magic value indicating a
match. This meant that if the first char of a pattern fell on the last char of
a vector, double shufti would assume the second character is present and
report a match.
This patch fixes it by keeping the previous vector and feeding its data to the
new one when we shift it, preventing any loss of data.

Signed-off-by: Yoan Picchi <yoan.picchi@arm.com>

* vshl() will call the correct implementation

* implement missing vshr_512_imm(), simplifies caller x86 code

* Fix x86 case, use alignr instead

* it's the reverse, the avx512 alignr is incorrect, need to fix

* Make shufti's OR reduce size agnostic

Signed-off-by: Yoan Picchi <yoan.picchi@arm.com>

* Fix test's array size

Signed-off-by: Yoan Picchi <yoan.picchi@arm.com>

* Fix AVX2/AVX512 alignr implementations and unit tests

* Fix Power VSX alignr

---------

Signed-off-by: Yoan Picchi <yoan.picchi@arm.com>
Co-authored-by: Konstantinos Margaritis <konstantinos@vectorcamp.gr>
2025-06-11 18:55:10 +03:00
Konstantinos Margaritis
7737104585 Bugfix/fix avx512vbmi regressions (#335)
Multiple AVX512VBMI-related fixes:

src/nfa/mcsheng_compile.cpp: No need for an assert here, impl_id can be set to 0
src/nfa/nfa_api_queue.h: Make sure this compiles on both C++ and C
src/nfagraph/ng_fuzzy.cpp: Fix compilation error when DEBUG_OUTPUT=on
src/runtime.c: Fix crash when data == NULL
unit/internal/sheng.cpp: Unit test has to enable AVX512VBMI manually as autodetection does not get trigger, this causes test to fail
src/fdr/teddy_fat.cpp: AVX512 loads need to be 64-bit aligned, caused a crash on clang-18
2025-05-30 21:08:55 +03:00
Konstantinos Margaritis
7b505226ed Various cppcheck fixes (#337) 2025-05-30 12:27:28 +03:00
Rafał Dowgird
4f40db0755 Fixed out of bounds read in AVX512VBMI version of fdr_exec_fat_teddy … (#333)
Fixed out of bounds read in AVX512VBMI version of fdr_exec_fat_teddy (#322)

  * Replaced the 32 byte read with a properly truncated mapped read
  * Added a unit test

Co-authored-by: Rafał Dowgird <rafal.dowgird@rtbhouse.com>
2025-05-18 11:01:10 +03:00
Konstantinos Margaritis
eecad13b13 partial_load_u64 will fail if buf == NULL/c_len == 0 (#331) 2025-05-16 13:44:36 +03:00
gtsoul-tech
50bcb90f8d Fix regression error #317 and add unit test (#318)
Revert the code that produced the regression error in #317 
Add the regression error to a unit test regressions.cpp along with the rebar tests

---------

Co-authored-by: gtsoul-tech <gtsoulkanakis@gmail.com>
2024-11-13 10:43:23 +02:00
gtsoul-tech
79b016a6e8 Cppcheck errors fixed and suppressed (#319)
* supress knownConditionTrueFalse

* cppcheck suppress redundantInitialization

* cppcheck solve stlcstrStream

* cppcheck suppress useStlAlgorithm

* cppcheck-suppress derefInvalidIteratorRedundantCheck

* cppcheck solvwe constParameterReference

* const parameter reference cppcheck

* removed wrong fix

* cppcheck-suppress memsetClassFloat

* cppcheck fix memsetClassFloat

* cppcheck fix unsignedLessThanZero

* supressing all errors on simde gitmodule

* fix typo (unsignedLessThanZero)

* fix cppcheck suppress simde gitmodule

* cppcheck-suppress unsignedLessThanZero

---------

Co-authored-by: gtsoul-tech <gtsoulkanakis@gmail.com>
2024-11-12 10:01:11 +02:00
ypicchi-arm
7146d5e225 Fix noodle sve2 off by one (#313)
* Revert "Fix noodle SVE2 off by one bug"

This patch was fixing the bug when it happens at the end of the buffer
but it wasn't fixing it when we do scanDoubleOnce before the main loop

The next patch fix this bug for both case instead

This reverts commit 48dd0e5ff0.

* Fix noodle spurious match with \0 chars for SVE2

When sve2's noodle process a non full vector (before the main loop or
at the end of it), a fake \0 was being parsed, trigerring a match for
pattern that ended with \0. This patch fix this.

Signed-off-by: Yoan Picchi <yoan.picchi@arm.com>

---------

Signed-off-by: Yoan Picchi <yoan.picchi@arm.com>
2024-08-29 13:49:29 +03:00
Michael Tremer
1c1ff6f279 hs_valid_platform: Fix check for SSE4.2 (#310)
Vectorscan requires SSE4.2 as a minimum on x86_64. For Hyperscan this
used to be SSSE3.

Applications that use the library call hs_valid_platform() to check if
the CPU fulfils this minimum requirement. However, when Vectorscan
upgraded to SSE4.2, the check was not updated. This leads to the library
trying to execute instructions that are not supported, resulting in the
application to crash.

This might not have been noticed as the CPUs that do not support SSE4.2
are rather old and unlikely to run any load where performance is an
issue. However, I believe that the library should not let the
application crash.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
2024-08-22 10:34:05 +03:00
ypicchi-arm
d05f95d65f Make vectorscan accept \0 starting pattern (#312)
Vectorscan used to reject such pattern because they were being compared
to "" and found to be an empty string. We now check the pattern length
instead.

Signed-off-by: Yoan Picchi <yoan.picchi@arm.com>
2024-08-22 10:32:53 +03:00
ypicchi-arm
2a4b9d1c78 Fix noodle SVE2 off by one bug (#309)
By using svmatch on 16 bit lanes with a 8 bit predicate, we end up
including an undefined character in the pattern checks. The inactive
lane after load contains an undefined value, usually \0. Patterns
using \0 as the last character would then match this spurious
character, returning a match beyond the buffer's end. The fix checks
for such matches and rejects them.

Signed-off-by: Yoan Picchi <yoan.picchi@arm.com>
2024-08-05 09:42:56 +03:00
gtsoul-tech
dbb830acd1 Bug fix/rebar tests (#307)
* fixed paths and utf8-lossy=true

* revert to maskz (its the bug)

* cppcheck fix

---------

Co-authored-by: gtsoul-tech <gtsoulkanakis@gmail.com>
2024-07-29 11:49:25 +03:00
g. economou
f1e0977f07 build/run on machines that only have SSE2 with SIMDE (#303)
This allows the use of SIMDE library to emulate SSSE3/SSE4.2 instructions on SSE2-only (x86-64-v2) hardware.

---------

Co-authored-by: G.E <gregory.economou@vectorcamp.gr>
Co-authored-by: Konstantinos Margaritis <konstantinos@vectorcamp.gr>
2024-07-10 21:20:17 +03:00
g. economou
328b74656b Teddy macros unrolling - initial PR to test in CI (#294)
Major refactoring of teddy and teddy_avx2, unrolling macros to C++ templated functions

---------

Co-authored-by: G.E <gregory.economou@vectorcamp.gr>
2024-06-26 22:35:33 +03:00
gtsoul-tech
30dd577126 Bug fix/clang-tidy-performance (#300)
Various clang-tidy-performance fixes:
* noexcept
* performance-noexcept-swap
* performance
* performance-move-const-arg
* performance-unnecessary-value-param
* performance-inefficient-vector-operation
* performance-no-int-to-ptr
* add performance
* performance-inefficient-string-concatenation
* clang-analyzer-deadcode.DeadStores
* performance-inefficient-vector-operation
* clang-analyzer-core.NullDereference
* clang-analyzer-core.UndefinedBinaryOperatorResult
* clang-analyzer-core.CallAndMessage

---------

Co-authored-by: gtsoul-tech <gtsoulkanakis@gmail.com>
2024-06-20 14:57:19 +03:00
gtsoul-tech
502c0f863a Bug fix/clang tidy warnings part3 (#298)
* clang-analyzer-deadcode.DeadStores

* clang-analyzer-optin.performance.Padding

---------

Co-authored-by: gtsoul-tech <gtsoulkanakis@gmail.com>
2024-06-10 10:08:54 +03:00
gtsoul-tech
999263d140 Bug fix/clang tidy warnings part2 (#296)
* core.StackAddressEscape

* cplusplus.VirtualCall

* clang-analyzer-deadcode.DeadStores

* clang-analyzer-core.NullDereference

* clang-analyzer-core.NonNullParamChecker

* change to nolint

---------

Co-authored-by: gtsoul-tech <gtsoulkanakis@gmail.com>
2024-06-04 16:18:17 +03:00
gtsoul-tech
b4a176738a clang-analyzer-core.uninitialized.UndefReturn 2024-05-31 10:24:44 +03:00
gtsoul-tech
120e896691 clang-analyzer-cplusplus.NewDelete 2024-05-30 16:40:55 +03:00
gtsoul-tech
a846d496b4 deadcode.DeadStores 2024-05-30 16:40:18 +03:00
gtsoul-tech
793025fab6 uninitialized.UndefReturn 2024-05-29 11:51:06 +03:00
Konstantinos Margaritis
02fc8e3b1c Fix/Suppress remaining Cppcheck warnings (#291)
Fix/suppress the following cppcheck warnings:

* arithOperationsOnVoidPointer
* uninitMember
* const*
* shadowVariable
* assignmentIntegerToAddress
* containerOutOfBounds
* pointer-related warnings in Ragel source
* missingOverride
* memleak
* knownConditionTrueFalse
* noExplicitConstructor
* invalidPrintfArgType_sint
* useStlAlgorithm
* cstyleCast
* clarifyCondition
* VSX-related cstyleCast
* unsignedLessThanZero 

Furthermore, we added a suppression list to be used, which also includes the following:
* missingIncludeSystem
* missingInclude
* unmatchedSuppression
2024-05-27 12:23:02 +03:00
Konstantinos Margaritis
a8e43a4c0b Part 5 of C-style cast cppcheck (#289)
Fixes some cstyleCasts part 5

closes some: #252
2024-05-24 23:24:58 +03:00
Yoan Picchi
7054378c93 Speed up truffle with 256b TBL instructions
256b wide SVE vectors allow some simplification of truffle.
Up to 40% speedup on graviton3. Going from 12500 MB/s to 17000 MB/s
onhe microbenchmark.
SVE2 also offer this capability for 128b vector with a speedup around
25% compared to normal SVE

Add unit tests and benchmark for this wide variant

Signed-off-by: Yoan Picchi <yoan.picchi@arm.com>
2024-05-22 16:13:53 +00:00
gtsoul-tech
2042ef50a0 cstylecast parser 2024-05-22 11:11:13 +03:00
gtsoul-tech
23a2b4e830 cstylecasts and suppressions 2024-05-22 10:16:56 +03:00
Konstantinos Margaritis
154cb6333b Merge pull request #288 from isildur-g/bugfix-assert
revert a change to assert
2024-05-21 23:43:04 +03:00
Konstantinos Margaritis
23e05ec443 Merge pull request #287 from gtsoul-tech/bugFix/cppcheck-cStylecasts-Part4
Part 4 of C-style cast cppcheck
2024-05-21 15:59:51 +03:00
Konstantinos Margaritis
1fc353efa6 Merge pull request #283 from isildur-g/wip-cppcheck271-part2
Wip cppcheck271 useStlAlgorithm part2
2024-05-21 15:52:15 +03:00
G.E.
3ac8832814 revert a change to assert , the original logic might have been
subtely clever (or else totally useless all these years), when we
see which of the two we might delete that assert entirely. for now
put it back as it was.
2024-05-20 18:03:56 +03:00
gtsoul-tech
d7dc3ec916 cstylecasts suppress,fixes 2024-05-20 17:09:30 +03:00
G.E
013c83a776 undo that one, it breaks 2024-05-20 16:35:58 +03:00
gtsoul-tech
cb8808619e fix cStyleCasts 2024-05-20 14:54:35 +03:00
Konstantinos Margaritis
c01df9dfac Fix typo 2024-05-18 22:52:17 +03:00
Konstantinos Margaritis
b07f527f2e Add more C style casts fixes and suppressions 2024-05-18 21:49:54 +03:00
Konstantinos Margaritis
8b93f44856 remove unneeded suppression 2024-05-18 21:47:47 +03:00
Konstantinos Margaritis
ac5018cdcf Fix more C-style casts 2024-05-18 15:10:34 +03:00
Konstantinos Margaritis
3bcf7e81e3 Fix casts 2024-05-18 14:58:11 +03:00
Konstantinos Margaritis
b562f955c2 Fix wrong comparison 2024-05-18 14:57:44 +03:00
Konstantinos Margaritis
01837ae5a3 Merge pull request #284 from gtsoul-tech/bigFix/cppcheck-cStylecasts-Part2
Part 2 of C-style cast cppcheck
2024-05-18 09:41:50 +03:00
G.E
00165e1d5a stl'ed another. 2024-05-18 00:02:43 +03:00
G.E
795d776b3d stl'ed one more instance 2024-05-17 23:18:55 +03:00
gtsoul-tech
037a54bb39 cStyleCasts 2024-05-17 13:57:12 +03:00
G.E
44b05fc6c0 clean up comments 2024-05-17 11:27:43 +03:00
g. economou
45de972f44 Merge branch 'develop' into wip-cppcheck271-part2 2024-05-17 11:08:09 +03:00
G.E
6c4e027e26 next batch 2024-05-17 10:44:28 +03:00
G.E
7555d5cc96 next batch 2024-05-17 00:08:37 +03:00
Konstantinos Margaritis
db540d5ae7 Merge pull request #281 from VectorCamp/bugfix/cppcheck-cstyleCasts-part1
Part 1 of C-style cast cppcheck fixes
2024-05-16 23:14:45 +03:00
G.E
d78cfb922e first batch of cppcheck disables and a few more stl-ifications,
involving use of accumulate() .
2024-05-16 23:01:17 +03:00
Konstantinos Margaritis
258197eb54 add alternative macro without C casts to avoid Cppcheck warnings 2024-05-16 15:58:02 +03:00