440 Commits

Author SHA1 Message Date
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
Matthew Barr
22b451b59b Ensure that m256 is 32-aligned on non-avx2 builds 2016-08-10 14:52:56 +10:00
Matthew Barr
e3d416a6ea Apply some consistency to the names we give shifts 2016-07-08 11:07:50 +10:00
Matthew Barr
c76ff285e7 remove unnecessary function proto 2016-07-08 11:07:50 +10:00
Matthew Barr
9c915cc936 remove only use of cmpmsk8 and unused cmpmsk16 2016-07-08 11:07:50 +10:00
Matthew Barr
0722b5db5b Remove GCC-style compound statements
These do not appear to give us benefits over inlining on recent compilers.
2016-07-08 11:07:50 +10:00
Matthew Barr
adf820bbba simd: simplify the set-all-ones util funcs
Modern compilers (gcc, icc) get this right, with the benefit of
removing our last use of inline asm in this file.
2016-07-08 11:07:50 +10:00
Matthew Barr
4d6934fc77 Move limex specific shuffle utils and ssse3 funcs 2016-07-08 11:07:50 +10:00