1476 Commits

Author SHA1 Message Date
Xu, Chi
997787bd4b rose: add CHECK_SINGLE_LOOKAROUND instruction
This specialisation is cheaper than the shufti-based variants, so we
prefer it for single character class tests.
2016-10-28 14:47:04 +11:00
Justin Viiret
385f71b44e rose: enable generation of shufti32x16 case 2016-10-28 14:46:37 +11:00
Alex Coyte
efa3299774 remove code preventing firing callbacks in the history buffer 2016-10-28 14:46:34 +11:00
Matthew Barr
c3b5efefb6 Add short avx2 shufti form 2016-10-28 14:46: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
5e3fa7a266 limex: make NFAAccept::squash rel to LimEx base 2016-10-28 14:46:23 +11:00
Justin Viiret
77fe1ef6e5 limex: rework accept handling
Rather that iterating over NFAAccept structures and testing individual
bits in the state structure, iterate over the state vector and index
into accept structures.

Adds report list support to this path, unified with the report lists
used for exception handling.
2016-10-28 14:46:19 +11:00
Justin Viiret
3dcfea19e0 limex: fold TESTEOD_REV_FN use into TESTEOD_FN 2016-10-28 14:45:57 +11:00
Justin Viiret
9c99a923a1 limex: remove constant do_br arg from TESTEOD_FN 2016-10-28 14:45:54 +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
13af3bfb74 rose: decouple build-time program representation
This commit replaces the build-time representation of the Rose
interpreter programs, from a class containing a discriminated union of
the bytecode structures to a class hierarchy of build-time prototypes.

This makes it easier to reason about and manipulate Rose programs during
compilation.
2016-10-28 14:45:15 +11:00
Justin Viiret
3bfef988fe container.h: include <vector> 2016-10-28 14:45:11 +11:00
Alex Coyte
97483eee5b UE-3019: limex_compile: correctly access the dominator map 2016-10-28 14:45:02 +11:00
Justin Viiret
f4fa6cd4dd rose: tighten up requirements for catch up
We only need to catch up when there is an actual anchored table, not
merely when there are successors of anchored_root in the Rose graph.
2016-10-28 14:44:20 +11:00
Alex Coyte
e74b141e95 rework load_m128_from_u64a() 2016-10-28 14:44:16 +11:00
Alex Coyte
bcf40c5136 Limex: don't not build accel schemes for impossible state sets 2016-10-28 14:44:12 +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
Justin Viiret
0cc941dfd5 limex_dump: silence gcc large alignment warning
Passing mask by const ref silences the warning: "The ABI for passing
parameters with 32-byte alignment has changed in GCC 4.6".
2016-10-28 14:43:34 +11:00
Justin Viiret
c8868fb9c7 rose: remove CHECK_LIT_MASK instruction 2016-10-28 14:43:33 +11:00
Justin Viiret
4ce306864e rose: use lookarounds to implement benefits masks
This replaces the CHECK_LIT_MASK instruction.
2016-10-28 14:43:33 +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
Justin Viiret
8be6c8b2ca rose: don't merge large acyclic suffixes
Check earlier on in mergeSuffixes that we're not proposing to merge
suffixes above our limit from the acyclic merge path.
2016-10-28 14:43:33 +11:00
jason taylor
b859e5cb8a Updated nfa source file permissions
Resolves issue github issue #37
2016-09-04 19:25:59 -04:00
Matthew Barr
f05e833e10 Only initialise stream state history when required.
This fixes 01org/hyperscan#30.
2016-08-29 11:30:15 +10:00
Matthew Barr
0a1491d907 Remove problematic debug output 2016-08-22 16:04:44 +10:00
Justin Viiret
87e32c9037 tamarama: check for match halt in _Q2 as well 2016-08-22 16:04:27 +10:00
Alex Coyte
e6c05d5a55 set an appropriate default value for RoleInfo::score
Coverity CID 131843
2016-08-22 16:03:51 +10:00
Alex Coyte
147f9655b6 Add assertion indicating valid range of rank_in_mask's bit param
Coverity CID 141632
2016-08-22 16:03:47 +10:00
Justin Viiret
ae14187462 rose: use min of max_offset in left merges
Be more careful with max_offset, since we rely on it ofr ANCH history
cases. Also adds tighter assertions.
2016-08-10 15:12:12 +10:00
Justin Viiret
cec57d7e90 rose: ensure anch small block literals have bounds 2016-08-10 15:12:04 +10:00
Justin Viiret
e03375b644 program_runtime: remove commented-out code 2016-08-10 15:11:15 +10:00
Justin Viiret
01ee4c94e3 dfa_build_strat: remove dead pure virtual impl 2016-08-10 15:11:15 +10:00
Alex Coyte
702f256b39 remove exceptionMap from LimExNFA 2016-08-10 15:11:15 +10:00
Anatoly Burakov
6331da4e29 dfa: adding new Sheng engine
A new shuffle-based DFA engine, complete with acceleration and smallwrite.
2016-08-10 15:10:46 +10:00
Anatoly Burakov
56bf25b091 McClellan refactor
Taking dfa strat out of McClellan, to be reused by other DFAs
2016-08-10 15:10:25 +10:00
Justin Viiret
a9fddbc400 nfa: delete largely-unused struct LimExNFABase 2016-08-10 15:10:25 +10:00
Alex Coyte
093029b5d1 add a csv version of rose_components 2016-08-10 15:10:09 +10:00
Matthew Barr
b8d33732b5 Check for misaligned memory in compile error code
We now check that mem alloc for error message is aligned, and
fail with an appropriate message in the compile error.
2016-08-10 15:10:09 +10:00
Alex Coyte
cded5552c2 rose: don't leave stray reports when copying the subgraph leading to a report 2016-08-10 15:09:27 +10:00
Justin Viiret
2aaa292aae dump: offsets for SOM_REL, SOM_ABS reports 2016-08-10 15:09:12 +10:00
Justin Viiret
67e450115a parser: ignore \E that is not preceded by \Q
This conforms to PCRE's behaviour, where an isolated \E that is not
preceded by \Q is ignored.
2016-08-10 15:08:01 +10:00
Justin Viiret
c58d9d04a1 ng_violet: fix non-det in lookForCleanEarlySplits 2016-08-10 15:07:45 +10:00
Justin Viiret
d119dd95fd ng_violet: trivial typo fixes 2016-08-10 15:07:45 +10:00
Justin Viiret
f3ccbf19b8 ng_violet: fix non-determinism in deanchorIfNeeded 2016-08-10 15:07:45 +10:00
Justin Viiret
a8cceeeddc ng_violet: fix non-determinism in splitEdgesByCut 2016-08-10 15:07:45 +10:00
Matthew Barr
151810b4fc Older gcc doesn't like shadowing the function 2016-08-10 15:07:11 +10:00
Matthew Barr
89ddb85637 Remove enum typedef 2016-08-10 15:07:01 +10:00
Matthew Barr
cbd115f7fe Don't shadow names 2016-08-10 15:06:57 +10:00