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