Matthew Barr
2214296b7f
Convert compile-time code to not require SIMD
2016-12-14 15:29:01 +11:00
Matthew Barr
e993fe1eb0
Remove erroneous semicolon
2016-12-14 15:28:58 +11:00
Justin Viiret
e271781d95
multibit, fatbit: make _size build-time only
...
This commit makes mmbit_size() and fatbit_size compile-time only, and
adds a resource limit for very large multibits.
2016-12-14 15:28:54 +11:00
Alex Coyte
e51b6d23b9
introduce Sheng-McClellan hybrid
2016-12-14 15:27:18 +11:00
Matthew Barr
99e14df117
Fix combine2x128
2016-12-02 11:33:48 +11:00
Alex Coyte
32c826e9c6
have single dump function per engine
2016-12-02 11:32:36 +11:00
Alex Coyte
1614c73eeb
Implement some ue2_graph functions using TMP rather than friends
...
This helps work around issues with some compilers
2016-12-02 11:32:24 +11:00
Alex Coyte
530d84c6f3
allow edge_descriptors to be created from pair<edge_descriptor, bool>
2016-12-02 11:32:20 +11:00
Alex Coyte
e1e9010cac
Introduce custom adjacency-list based graph
2016-12-02 11:31:33 +11:00
Alex Coyte
47f53f63a7
simple pass to pick up paths redundant with those from cyclic's succs
2016-12-02 11:24:30 +11:00
Justin Viiret
8869dee643
rose: simplify long lit table, add bloom filter
...
Replaces the original long lit hash table (used in streaming mode) with a
smaller, simpler linear probing approach. Adds a bloom filter in front
of it to reduce time spent on false positives.
Sizing of both the hash table and bloom filter are done based on max
load.
2016-10-28 14:52:45 +11:00
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