Justin Viiret
ec223e3622
Always init NFAContext::cached_br
...
Now that it's on stack, this should be initialised. Silences a warning
from valgrind.
2016-03-01 11:36:22 +11:00
Matthew Barr
90ea5b6010
Correct asserts
2016-03-01 11:36:22 +11:00
Xiang Wang
a7daa70942
Castle: exclusive analysis for multiple subcastle chunks
...
Apply clique analysis to subcastle chunks if the number of
subcastles is large and check the status of each chunk
separately at runtime.
2016-03-01 11:36:10 +11:00
Justin Viiret
1619d975c6
limex_runtime.h: scratch header no longer needed
2016-03-01 11:34:57 +11:00
Justin Viiret
c3860a9f29
NFA API: Remove unused scratch ptr from struct mq
2016-03-01 11:34:38 +11:00
Justin Viiret
58f9617f66
NFA API: Remove nfaBlockExecReverse scratch arg
...
Scratch is no longer used by this function's implementations.
2016-03-01 11:34:38 +11:00
Justin Viiret
3e002f8181
NFA: Move NFAContext to stack (from scratch)
2016-03-01 11:34:38 +11:00
Justin Viiret
7b54856642
Rose: allow block-mode merge of small prefixes
...
Previously, we disallowed the merging of all Rose prefixes in block mode
where the literal sets are not identical.
This change allows merging if the prefix graphs to be merged are very
small, as a small performance improvement for cases with lots of tiny
prefixes.
This check is deliberately conservative: graphs must have some common
vertices, and the result of the merge must not give up any
accelerability.
2016-03-01 11:34:26 +11:00
Justin Viiret
28f379d738
Rose: remove alignment req for anchored DFA state
2016-03-01 11:32:01 +11:00
Justin Viiret
621dfbebb7
nfaCheckFinalState: define return value
...
Make nfaCheckFinalState return MO_HALT_MATCHING when the user instructs
us (via the callback return value) to halt matching. In the caller,
check this value and stop matching if told.
2016-03-01 11:28:03 +11:00
Anatoly Burakov
843ca0e7cc
Don't look for accel friends for multibyte acceleration
2016-03-01 11:27:36 +11:00
Anatoly Burakov
87424713a7
Multibyte acceleration compile side
2016-03-01 11:21:39 +11:00
Anatoly Burakov
081b3ef369
Multibyte truffle runtime
2016-03-01 11:21:39 +11:00
Anatoly Burakov
47b17ade27
Multibyte shufti runtime
2016-03-01 11:21:39 +11:00
Anatoly Burakov
dd2ec6bdac
Multibyte vermicelli runtime
2016-03-01 11:21:39 +11:00
Anatoly Burakov
77ff826bbf
Adding bitmatchers
2016-03-01 11:21:39 +11:00
Anatoly Burakov
68f6849687
Adding AVX2 version of truffle
2016-03-01 11:21:39 +11:00
Alex Coyte
e065c4d60b
make nfaExecCastle0_QR() more efficent
...
1. Reverse scan for the last escape and only process later events.
2. Only scheck subcastles which may expire for staleness
2016-03-01 11:13:22 +11:00
Alex Coyte
05beadf52f
Introduce REPEAT_ALWAYS model for {0,} castle repeats
...
As Castle guards the repeats, no more state is needed for these repeats
2016-03-01 11:10:20 +11:00
Xiang Wang
7bcd2b07c9
simplify max clique analysis
2015-12-07 09:38:33 +11:00
Justin Viiret
748d46c124
CastleProto: track next top explicitly
...
Repeats may be removed (e.g. by pruning in role aliasing passes)
leaving "holes" in the top map. Track the next top to use explicitly,
rather than using repeats.size().
2015-12-07 09:38:32 +11:00
Justin Viiret
8427d83780
CastleProto: track mapping of reports to tops
...
This allows us to speed up report-based queries, like dedupe checking.
2015-12-07 09:38:32 +11:00
Justin Viiret
da23e8306a
assignDkeys: use flat_set<ReportID>, not set
2015-12-07 09:38:32 +11:00
Justin Viiret
8dac64d1dc
findMinWidth, findMaxWidth: width for a given top
...
Currently only implemented for Castle suffixes.
2015-12-07 09:38:32 +11:00
Justin Viiret
b87590ce9d
castle: simplify find_next_top
...
Tops are no longer sparse in CastleProto, so the linear scan for holes
isn't necessary.
2015-12-07 09:38:32 +11:00
Justin Viiret
2a2576e907
Introduce copy_bytes for writing into bytecode
...
Protects memcpy from nullptr sources, which triggers failures in GCC's
UB sanitizer.
2015-11-18 15:26:16 +11:00
Justin Viiret
cf3ddd9e88
repeatStoreSparseOptimalP: make diff a u32
...
As delta is a u32, we know diff will always fit within a u32 as well.
Silences a warning from Coverity.
2015-11-18 15:26:11 +11:00
Justin Viiret
62776b615b
nfa_api_queue: debug printf format fix
2015-11-10 14:36:38 +11:00
Justin Viiret
863ea1b2b2
mpv_dump: correct hex escapes in printf format
2015-11-10 14:36:38 +11:00
Justin Viiret
fb834114e5
limex_dump: use 'override' keyword in subclass
2015-11-10 14:36:38 +11:00
Justin Viiret
46ad39f253
Add inlined sparseLastTop
...
This allows the code to be inlined into other sparse optimal repeat
functions.
2015-11-10 14:36:38 +11:00
Justin Viiret
2603be3924
storeInitialRingTopPatch: fix large delta bug
...
Check for staleness up front, so that it is safe to use u32 values to
handle adding more tops.
Adds LargeGap unit tests.
2015-11-10 14:36:38 +11:00
Justin Viiret
a083bcfa8d
repeat: use u32 arithmetic explicitly
...
In some ring-based models, we know that if the ring is not stale, then
all our bounds should fit within 32-bits. This change makes these
explicitly u32 rather than implicitly narrowing later on.
2015-11-10 14:36:38 +11:00
Justin Viiret
ae7dbc2472
repeatRecurTable: no need for u64a return type
2015-11-10 14:36:38 +11:00
Xiang Wang
e8bfe5478b
Optimize max clique analysis
...
Use vectors of state ids to avoid the overhead of subgraph copies
2015-11-10 14:36:38 +11:00
Alex Coyte
89660e30b6
raw_som_dfa: initialize members in constructor
2015-11-10 14:36:14 +11:00
Justin Viiret
4311775b43
LimEx NFA: unify flush br/estate behaviour
...
Make the GPR NFA models only clear cached_estate conditionally based on
cached_br, as per the SIMD models.
2015-11-10 14:36:14 +11:00
Justin Viiret
b5e290e985
LimEx NFA: no need to zero estate cache in STREAM
...
We believe that we have solved the issues that required zeroing of the
exception state in STREAM_FN and REV_STREAM_FN nowadays.
2015-11-10 14:36:14 +11:00
Justin Viiret
01498fa8a5
LimEx NFA: no need to zero init cached_esucc
...
All of the "exception cache" members are guarded by cached_esucc.
2015-11-10 14:25:05 +11:00
Alex Coyte
a255e6b678
add asserts to make bounds on alphaShift clear
2015-11-10 14:25:05 +11:00
Justin Viiret
cea914e18e
Add q_last_type() queue function
...
Analogous to q_cur_type(), asserts that queue indices are within a valid
range.
2015-11-10 14:25:04 +11:00
Justin Viiret
55b357f7d1
Remove enum mqe_event and use u32 for queue events
...
We were using intermediate values int he enum and casting back and forth
with a u32; it is cleaner to just use a u32 and define some special
values.
Silences ICC warning #188 : enumerated type mixed with another type.
2015-10-30 11:28:37 +11:00
Justin Viiret
b59491d0db
Custom NFA_API_NO_IMPL variant for zombie_status
...
Silences ICC warning #188 : enumerated type mixed with another type.
2015-10-30 11:28:37 +11:00
Matthew Barr
904e436f11
Initial commit of Hyperscan
2015-10-20 09:13:35 +11:00