163 Commits

Author SHA1 Message Date
Justin Viiret
68bf473e2e fdr: move long literal handling into Rose
Move the hash table used for long literal support in streaming mode from
FDR to Rose, and introduce new instructions CHECK_LONG_LIT and
CHECK_LONG_LIT_NOCASE for doing literal confirm for long literals.

This simplifies FDR confirm, and guarantees that HWLM matchers will only
be used for literals < 256 bytes long.
2016-10-28 14:52:26 +11:00
Matthew Barr
7d3eff8648 extern "C" for mask1bit table 2016-10-28 14:51:49 +11:00
Alex Coyte
c94899dd44 allow sets of tops on edges 2016-10-28 14:51:46 +11:00
Alex Coyte
aca89e66d2 hinted insert operations for flat_set 2016-10-28 14:48:55 +11:00
Matthew Barr
7849b9d611 MSVC prefers the attrib at the beginning 2016-10-28 14:48:31 +11:00
Xu, Chi
04d79629de rose: add shufti-based lookaround instructions
More lookaround specialisations that use the shufti approach.
2016-10-28 14:46:27 +11:00
Justin Viiret
9139123642 rose: move sparse iter cache to RoseEngineBlob
This enables its use for iterators written by instructions.
2016-10-28 14:45:32 +11:00
Justin Viiret
13b6023a18 hash: add hash_all variadic tpl func, use in rose 2016-10-28 14:45:28 +11:00
Justin Viiret
3bfef988fe container.h: include <vector> 2016-10-28 14:45:11 +11:00
Alex Coyte
e74b141e95 rework load_m128_from_u64a() 2016-10-28 14:44:16 +11:00
Alex Coyte
a08e1dd690 Introduce a 64-bit LimEx model.
On 64-bit platforms, the Limex 64 model is implemented in normal GPRs.
On 32-bit platforms, however, 128-bit SSE registers are used for the
runtime implementation.
2016-10-28 14:44:12 +11:00
Justin Viiret
3cf4199879 debug: always use %zu in format string for size_t 2016-10-28 14:43:34 +11:00
Xu, Chi
b96d5c23d1 rose: add new instruction CHECK_MASK_32
This is a specialisation of the "lookaround" code.
2016-10-28 14:43:33 +11:00
Alex Coyte
702f256b39 remove exceptionMap from LimExNFA 2016-08-10 15:11:15 +10:00
Alex Coyte
5c5ec905cc violet: initial implementation 2016-08-10 15:01:08 +10:00
Justin Viiret
49bb3b5c82 simd_utils: setbit/clearbit by loading 1-bit mask 2016-08-10 14:52:56 +10:00
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