280 Commits

Author SHA1 Message Date
Justin Viiret
c7c90c7ab7 graph_undirected: adapt bidi graph to undirected
Introduces an adaptor (like the BGL's reverse_graph) that presents an
undirected view of a bidirectional graph.

Initially used in ng_calc_components.
2018-06-27 13:40:10 +08:00
Matthew Barr
1891f14755 Add support for Hamming distance approx matching 2018-01-19 06:11:43 -05:00
Matthew Barr
1a81263744 Check for unused typedef warning and disable
This affects older versions of Boost (1.58), and we were only disabling the
warning for g++.

Fixes #62.
2017-09-18 15:23:57 +10:00
Justin Viiret
3f36665e39 unit: add PrintTo for ue2_literal 2017-09-18 13:26:18 +10:00
Alex Coyte
47e64646b4 move mergeDupeLeaves() and uncalcLeaves() to rose_build_role_aliasing
Unlike the rest of rose_build_mergem, these functions relate to merging
roles/vertices rather than merging engines.
2017-09-18 13:22:56 +10:00
Alex Coyte
2a492273b5 remove !LBR constraints from merge passes
we have either converted candidates to castles already or we have converted them
back in the hope of merging them with other holders
2017-09-18 13:22:56 +10:00
Matthew Barr
b259283d6b cmake: set isystem flag for older cmake 2017-08-21 11:27:20 +10:00
Justin Viiret
3ff70d5568 insertion_ordered_{map,set}: add new containers
These are associative map/set structures that are iterable in insertion
order.
2017-08-21 11:25:21 +10:00
Hong, Yang A
205a5bc98f multibit compression support 2017-08-21 11:19:11 +10:00
Alex Coyte
952f0aad21 support dynamic stream compression 2017-08-21 11:18:54 +10:00
Justin Viiret
9cf66b6ac9 util: switch from Boost to std::unordered set/map
This commit replaces the ue2::unordered_{set,map} types with their STL
versions, with some new hashing utilities in util/hash.h. The new types
ue2_unordered_set<T> and ue2_unordered_map<Key, T> default to using the
ue2_hasher.

The header util/ue2_containers.h has been removed, and the flat_set/map
containers moved to util/flat_containers.h.
2017-08-21 11:14:55 +10:00
Wang, Xiang W
86c5f7feb1 FDR: Squash buckets of included literals in FDR confirm
- Change the compile of literal matchers to two passes.
 - Reverse the bucket assignment in FDR, bucket with longer literals has
   smaller bucket id.
 - Squash the buckets of included literals and jump to the the program of
   included literals directly from parent literal program without going
   through FDR confirm for included iterals.
2017-08-21 11:12:36 +10:00
Wang, Xiang W
67a8f43355 literal matchers: change context passed to callback to scratch 2017-08-21 11:12:36 +10:00
Wang, Xiang W
ebb1b0006b remove start argument in literal matcher callbacks 2017-08-21 11:12:36 +10:00
Justin Viiret
1d041b12b7 shufti/truffle tests: silence ubsan warning
The ubsan support in clang warned about us accessing idx-1 of an array here.
2017-08-21 11:12:16 +10:00
Justin Viiret
3bd0c7f6ad unit-hyperscan: pure-literal/smwr coverage 2017-08-21 11:09:35 +10:00
Alex Coyte
d317d75615 character classes: handle \Q\E and utf8 2017-06-21 08:43:44 +10:00
Matthew Barr
dba2470ec9 msvc: use the vectorcall calling convention
This requires declaring external interfaces with the cdecl
calling convention.
2017-06-09 10:12:02 +10:00
Matthew Barr
fb3a03dc69 Disable part of unit test on FreeBSD 10 2017-05-30 14:00:45 +10:00
Matthew Barr
3e345c2567 If we can shift by an immediate, do it. Otherwise, don't. 2017-05-30 14:00:45 +10:00
Matthew Barr
91db20d8eb avx512: CPU detection and platform hints 2017-05-30 13:59:23 +10:00
Matthew Barr
8a56d16d57 avx512: add basic functions to simd_utils
Extends the m512 type to use avx512 and also changes required
for limex.
2017-05-30 13:59:18 +10:00
Matthew Barr
423569ec82 De-multiaccel 2017-05-30 13:59:00 +10:00
Matthew Barr
c510b85bf1 whitespace changes 2017-05-30 13:59:00 +10:00
Matthew Barr
0b8f25a036 Ensure simd types are aligned to what we assume
Turns out Clang is sensitive to the location of the alignment attribute.
2017-05-30 13:48:38 +10:00
Justin Viiret
e8162960fc unit: use bytecode_ptr instead of aligned_unique_ptr 2017-04-26 15:19:36 +10:00
Justin Viiret
a197074c5d nfa: switch to using bytecode_ptr<NFA> 2017-04-26 15:19:36 +10:00
Justin Viiret
cf82924a39 depth: make constructor explicit 2017-04-26 15:19:19 +10:00
Alex Coyte
37cb93e60f rose_build: reduce size/scope of context objects 2017-04-26 15:19:01 +10:00
Matthew Barr
8201183138 Check compiler architecture flags in one place 2017-04-26 15:18:26 +10:00
Justin Viiret
a4df49dd66 unit: better output from expr_info unit tests 2017-04-26 15:18:25 +10:00
Justin Viiret
a871f70c25 ng_extparam: split up work and do per-comp reduce
This change breaks extparam processing up into:

 - propagateExtendedParams: propagates min_length, min_offset and
   max_offset into the reports on the graph
 - reduceExtendedParams: runs graph reductions based on extparams

Then, we apply the reduce pass to the whole graph, and later as well to
each component after calc_components.
2017-04-26 15:18:22 +10:00
Alex Coyte
0cbec2c1c3 mmbBuildInitRangePlan: correct offset if initial block is not block 0 2017-04-26 15:18:13 +10:00
Justin Viiret
560e522457 ng_calc_components: add Grey box control 2017-04-26 15:18:13 +10:00
Justin Viiret
ba867ebaff ng_calc_components: rework to move graphs
Rather than cloning graphs for output, rework calc components so that it
moves them.
2017-04-26 15:18:13 +10:00
Justin Viiret
5dfae12a62 ng: split NGWrapper into NGHolder, ExpressionInfo
We now use NGHolder for all graph information, while other expression
properties (report, flag information, etc) go in new class
ExpressionInfo.
2017-04-26 15:18:09 +10:00
Justin Viiret
d8eb259ac7 serialize: tidy 2017-04-26 15:17:03 +10:00
Justin Viiret
bc7da2807a unit: modernise test_util 2017-04-26 15:17:03 +10:00
Justin Viiret
1376f3849a serialize: parameterize on pattern as well 2017-04-26 15:17:03 +10:00
Justin Viiret
a97ec56aee serialize: add vectored mode 2017-04-26 15:17:03 +10:00
Justin Viiret
7ca81ff530 ng_find_matches: limit how big we're willing to go
Tests which require tracking more than 15K states (including edit
distance states) are very, very slow.
2017-04-26 15:16:22 +10:00
Justin Viiret
5edecbf539 ng: check can_never_match before validate_fuzzy 2017-04-26 15:16:03 +10:00
Anatoly Burakov
9f72dede5c Add support for approximate matching in NFA matcher unit tests 2017-04-26 15:11:54 +10:00
Anatoly Burakov
2de6706df2 Adding support for compiling approximate matching patterns
Adds new "edit_distance" extparam
2017-04-26 15:11:39 +10:00
Justin Viiret
1245156f44 parser: handle "control verbs" without close paren 2017-04-26 14:59:02 +10:00
Justin Viiret
bef6889844 parser: use control_verb parser inline 2017-04-26 14:58:43 +10:00
Justin Viiret
1875d55cf1 parser: add initial parser for control verbs
This more reliably handles control verbs like (*UTF8) that can only
happen at the start of the pattern, and allows them in any ordering.
2017-04-26 14:57:46 +10:00
Alex Coyte
fbaa0a1b25 make expected too large patterns even larger 2017-04-26 14:44:49 +10:00
Justin Viiret
f520599ab7 flat_map: add value_comp() 2017-04-26 14:41:30 +10:00
Justin Viiret
e37fdb240a flat_set/map: add hash_value tests 2017-04-26 14:41:30 +10:00