Xiang Wang
9087d59be5
tamarama: add container engine for exclusive nfas
...
Add the new Tamarama engine that acts as a container for infix/suffix
engines that can be proven to run exclusively of one another.
This reduces stream state for pattern sets with many exclusive engines.
2016-07-08 11:01:34 +10:00
Justin Viiret
6e49544558
exhaust: move functions to report.h
2016-07-08 10:45:06 +10:00
Boris Nagaev
ba45bd34d6
fix iter_wrapper for iterator=pointer
2016-07-06 19:46:25 +03:00
Matthew Barr
ca2343f98e
We need an immediate so use intrinsic directly
2016-05-24 11:26:33 +10:00
Matthew Barr
1d6462532a
vbs: the static array has C linkage
2016-05-24 11:26:27 +10:00
Matthew Barr
3527a9cb5c
masked move: C linkage
2016-05-24 11:26:24 +10:00
Matthew Barr
b5be8ef6aa
Win32 ctz and clz
2016-05-24 11:26:20 +10:00
Matthew Barr
5234639736
popcount: use intrinsics and restructure defines
2016-05-24 11:26:16 +10:00
Justin Viiret
6c1143a264
ue2string: fix broken function type in upperString
...
Silences warning from ubsan.
2016-05-18 16:28:00 +10:00
Alex Coyte
e86688e313
add m128 byte shift functions
...
variable_byte_shift_m128 taken from pug-interpreter branch
2016-05-18 16:22:44 +10:00
Justin Viiret
31b1114f76
cmpForward: assume (and assert) p2 is upper-case
2016-05-18 16:22:28 +10:00
Justin Viiret
da89f5ef6b
ue2string: bring caseless cmp inline
2016-05-18 16:22:18 +10:00
Justin Viiret
f40aa6bd40
report_manager: store report -> program mapping
2016-05-18 16:20:38 +10:00
Justin Viiret
4541eaa92c
report: remove dead function isInternalSomReport
2016-04-20 13:34:57 +10:00
Justin Viiret
36150bbc19
Rose: replace internal_report with program
...
Replace the use of the internal_report structure (for reports from
engines, MPV etc) with the Rose program interpreter.
SOM processing was reworked to use a new som_operation structure that is
embedded in the appropriate instructions.
2016-04-20 13:34:57 +10:00
Alex Coyte
41751c4f3b
bitfield: unroll main operators
2016-04-20 13:34:56 +10:00
Alex Coyte
938ac9fd38
CharReach operators inline
2016-04-20 13:34:56 +10:00
Alex Coyte
ff721ed8e4
unify some accel code/structures between limex and mcclellan
2016-04-20 13:34:56 +10:00
Alex Coyte
f53c093baa
simple offset accel for mcclellan start state
2016-04-20 13:34:56 +10:00
Justin Viiret
50885f210a
exhaust: Update interface
...
- Only use functions in exhaust.h for valid ekeys
- Use INVALID_EKEY everywhere (remove dupe END_EXHAUST sentinel)
2016-04-20 13:34:55 +10:00
Justin Viiret
f2c0a66b6f
Rose: use a multibit for the exhaustion vector
...
Previously, the exhaustion vector was a standard bitvector, which
required an expensive memset() call at init for databases with a large
number of exhaustion keys.
2016-04-20 13:34:55 +10:00
Justin Viiret
1fcd3cfb2c
mmbit_all: True if all keys are switched on
2016-04-20 13:34:55 +10:00
Matthew Barr
088347b437
Remove unused storeu macros
2016-04-20 13:34:55 +10:00
Matthew Barr
dd4c1eceb8
Remove unused loadu2x128
2016-04-20 13:34:55 +10:00
Justin Viiret
e034ccb9b4
mmbit_iterate_bounded: make block_width u64a
2016-04-20 13:34:55 +10:00
Justin Viiret
e466e67b79
AlignedAllocator: simplify and fix for MSVC, C++11
...
- Simplify thanks to minimal allocator requirements in C++11.
- Add required copy constructor.
2016-04-20 13:34:54 +10:00
Matthew Barr
d77ee0839d
Improved test for AVX2 support
...
Test for xsave and XMM/YMM registers. Use ICC dynamic feature detection
where available.
2016-03-01 11:36:09 +11:00
Justin Viiret
060defe6c4
Rose: move more report handling work into program
...
Move report preconditions (bounds, exhaustion, etc) into program
instructions and use a more direct path to the user match callback than
the adaptor functions.
Report handling has been moved to new file src/report.h. Reporting from
EOD now uses the same instructions as normal report handling, rather
than its own.
Jump target tracking in rose_build_bytecode.cpp has been cleaned up.
2016-03-01 11:32:01 +11:00
Justin Viiret
de61b32e98
Use fatbit for anch log, delay slots in scratch
...
Since these structures are in scratch, they do not have to be as small
as possible and we can use fatbit instead of multibit to improve
performance.
2016-03-01 11:24:17 +11:00
Matthew Barr
39886a0968
Coverity: Restore output stream format
2016-03-01 11:23:56 +11:00
Anatoly Burakov
77ff826bbf
Adding bitmatchers
2016-03-01 11:21:39 +11:00
Justin Viiret
8069e99bee
make_disjoint: Remove dead code
2016-03-01 11:17:28 +11:00
Justin Viiret
9cb2233589
rose: Use an interpreter for role runtime
...
Replace much of the RoseRole structure with an interpreted program,
simplifying the Rose runtime and making it much more flexible.
2016-03-01 11:16:02 +11:00
Justin Viiret
da23e8306a
assignDkeys: use flat_set<ReportID>, not set
2015-12-07 09:38:32 +11:00
Justin Viiret
15c2980948
Make key 64 bits where large shifts may be used.
...
This fixes a long-standing issue with large multibit structures.
2015-12-07 09:38:32 +11:00
Justin Viiret
2a2576e907
Introduce copy_bytes for writing into bytecode
...
Protects memcpy from nullptr sources, which triggers failures in GCC's
UB sanitizer.
2015-11-18 15:26:16 +11:00
Justin Viiret
d9efe07125
depth: correct sign in printf format
2015-11-10 14:36:38 +11:00
Justin Viiret
ed4a3cdcf1
compare: always use braces for for/if blocks
2015-11-10 14:36:38 +11:00
Matthew Barr
1f47b82106
Remove unneeded code at preproc stage
...
If we know we have BMI2 we shouldn't produce the fallback code.
2015-10-30 11:28:38 +11:00
Matthew Barr
904e436f11
Initial commit of Hyperscan
2015-10-20 09:13:35 +11:00