Matthew Barr
d2416736cb
Use intrinsic to get correct movq everywhere
...
The real trick here is that _mm_set_epi64x() (note the 'x') takes a 64-bit
value - not a ptr to a 128-bit value like the non-x - so compilers don't
twist themselves in knots with alignment or whatever confuses them.
2017-04-26 15:16:03 +10:00
Wang, Xiang W
90216921b0
FDR: front end loop improvement
2017-04-26 15:11:10 +10:00
Justin Viiret
dc50ab291b
container: allow sort_and_unique to have a comparator
2017-04-26 15:04:31 +10:00
Alex Coyte
fddcdbb129
determinisation: use unordered_map to hold state set -> id mapping
2017-04-26 14:59:22 +10:00
Matthew Barr
9363ae7486
Clear upper half of AVX register before libm call
...
Clearing the upper half of the AVX register is required before calling SSE
code to avoid AVX-to-SSE transition penalties.
2017-04-26 14:59:22 +10:00
Alex Coyte
bbd64f98ae
allow streams to marked as exhausted in more cases
...
At stream boundaries, we can mark streams as exhausted if there are no
groups active and there are no other ways to report matches. This allows us
to stop maintaining the history buffer on subsequent stream writes.
Previously, streams were only marked as exhausted if a pure highlander case
reported all patterns or the outfix in a sole outfix case died.
2017-04-26 14:44:53 +10:00
Justin Viiret
7c2627f2c2
flat_set/map: make erase() take const_iterator
2017-04-26 14:41:30 +10:00
Justin Viiret
1db7f30296
flat_base: move swap()
2017-04-26 14:41:30 +10:00
Justin Viiret
f8166fac25
flat_base: take more common operations
2017-04-26 14:41:30 +10:00
Justin Viiret
a38ac6a52f
flat_base: take more common operations
2017-04-26 14:41:30 +10:00
Justin Viiret
adfb9fe3f9
flat_set: move comp/data helpers to base
2017-04-26 14:41:30 +10:00
Justin Viiret
3fb5a3702e
flat_set/map: use boost::totally_ordered
2017-04-26 14:41:30 +10:00
Justin Viiret
f520599ab7
flat_map: add value_comp()
2017-04-26 14:41:30 +10:00
Justin Viiret
27adea2224
flat_map: small doc fix
2017-04-26 14:41:30 +10:00
Justin Viiret
a55c03d1f4
flat_set/map: back with small_vector
2017-04-26 14:41:30 +10:00
Justin Viiret
5f60812c9b
flat_set: cheesy tuple-based ebo
2017-04-26 14:41:30 +10:00
Justin Viiret
843ead266f
flat_set: modernize iter_wrapper ctors
2017-04-26 14:41:30 +10:00
Justin Viiret
988ea6b4e1
rose: role aliasing improvements
...
These changes improve the performance of the role aliasing passes on
very large cases and fix a couple of small errors in the left and right
merge passes as well.
2017-04-26 14:41:30 +10:00
Justin Viiret
68a35ff3b8
rose: give longer literals to accel analysis
2017-04-26 14:41:29 +10:00
Matthew Barr
46f74300f2
update copyright year
2017-01-17 11:38:09 +11:00
Matthew Barr
988ee0eb55
MSVC requires the attribute before the type
2017-01-06 11:24:12 +11:00
Matthew Barr
8334745063
SSE2 preprocessor test for MSVC
...
MSVC doesn't define __SSE2__ but we can figure it out from
other macros.
2016-12-14 15:35:44 +11:00
Matthew Barr
c3a73446ee
Fat runtime
2016-12-14 15:34:54 +11:00
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