297 Commits

Author SHA1 Message Date
Matthew Barr
22b451b59b Ensure that m256 is 32-aligned on non-avx2 builds 2016-08-10 14:52:56 +10:00
Matthew Barr
e3d416a6ea Apply some consistency to the names we give shifts 2016-07-08 11:07:50 +10:00
Matthew Barr
c76ff285e7 remove unnecessary function proto 2016-07-08 11:07:50 +10:00
Matthew Barr
9c915cc936 remove only use of cmpmsk8 and unused cmpmsk16 2016-07-08 11:07:50 +10:00
Matthew Barr
0722b5db5b Remove GCC-style compound statements
These do not appear to give us benefits over inlining on recent compilers.
2016-07-08 11:07:50 +10:00
Matthew Barr
adf820bbba simd: simplify the set-all-ones util funcs
Modern compilers (gcc, icc) get this right, with the benefit of
removing our last use of inline asm in this file.
2016-07-08 11:07:50 +10:00
Matthew Barr
4d6934fc77 Move limex specific shuffle utils and ssse3 funcs 2016-07-08 11:07:50 +10:00
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