Justin Viiret
9258592d0b
report_manager: more use of unordered_map
2017-05-30 13:58:32 +10:00
Justin Viiret
1878b9a857
report_manager: use unordered externalIdMap
2017-05-30 13:58:32 +10:00
Justin Viiret
c9be18c7e2
accel_dfa_build_strat: use small_vector for paths
2017-05-30 13:49:49 +10:00
Matthew Barr
0b8f25a036
Ensure simd types are aligned to what we assume
...
Turns out Clang is sensitive to the location of the alignment attribute.
2017-05-30 13:48:38 +10:00
Justin Viiret
97bbb62504
bytecode_ptr: needs <stdexcept> for logic_error
2017-04-26 15:19:43 +10:00
Justin Viiret
37596c50cf
bytecode_ptr: avoid shadowing size()
2017-04-26 15:19:43 +10:00
Justin Viiret
d4146059db
bytecode_ptr: add shrink() member function
2017-04-26 15:19:43 +10:00
Justin Viiret
82b889f4a2
bytecode_ptr: fix shadow/conversion issues (gcc48)
2017-04-26 15:19:43 +10:00
Justin Viiret
820f1432aa
alloc: remove aligned_unique_ptr
2017-04-26 15:19:43 +10:00
Justin Viiret
63fe84c3f1
bytecode_ptr: add make_zeroed_bytecode_ptr
...
Rather than always zeroing memory.
2017-04-26 15:19:36 +10:00
Justin Viiret
5653fa55a1
bytecode_ptr updates
2017-04-26 15:19:36 +10:00
Justin Viiret
67779e0c0a
bytecode_ptr: some small improvements
2017-04-26 15:19:36 +10:00
Justin Viiret
a197074c5d
nfa: switch to using bytecode_ptr<NFA>
2017-04-26 15:19:36 +10:00
Justin Viiret
6499d306ec
bytecode_ptr: new smart pointer type
...
bytecode_ptr<T> is an aligned_unique_ptr<T> that can be queried for its
size and alignment.
2017-04-26 15:19:35 +10:00
Alex Coyte
7920b1086b
default the move special functions
2017-04-26 15:19:35 +10:00
Justin Viiret
aa4ae755d8
depth: use hash_all()
2017-04-26 15:19:22 +10:00
Justin Viiret
5d1922327e
depth: use totally_ordered
2017-04-26 15:19:22 +10:00
Justin Viiret
cf82924a39
depth: make constructor explicit
2017-04-26 15:19:19 +10:00
Alex Coyte
37cb93e60f
rose_build: reduce size/scope of context objects
2017-04-26 15:19:01 +10:00
Xu, Chi
ae3cb7de6f
rose: add multi-path shufti 16x8, 32x8, 32x16, 64x8 and multi-path lookaround instructions.
2017-04-26 15:18:56 +10:00
Justin Viiret
1ef87c43ee
noncopyable: switch over from boost
2017-04-26 15:18:26 +10:00
Justin Viiret
a9844fbf74
noncopyable: add simple ue2::noncopyable class
2017-04-26 15:18:26 +10:00
Justin Viiret
a61b92f8d1
operators: add simple ue2::totally_ordered class
2017-04-26 15:18:26 +10:00
Matthew Barr
cd418ea6a8
Wrapper for system intrin header
2017-04-26 15:18:26 +10:00
Matthew Barr
8201183138
Check compiler architecture flags in one place
2017-04-26 15:18:26 +10:00
Matthew Barr
803f61d818
ICC doesn't have a __POPCNT__ macro
2017-04-26 15:18:26 +10:00
Justin Viiret
1f3a000bfa
dump_util: move into namespace ue2
2017-04-26 15:18:26 +10:00
Matthew Barr
1d9a5421ce
ICC doesn't have a __BMI2__ macro
2017-04-26 15:18:13 +10:00
Alex Coyte
0cbec2c1c3
mmbBuildInitRangePlan: correct offset if initial block is not block 0
2017-04-26 15:18:13 +10:00
Justin Viiret
5dfae12a62
ng: split NGWrapper into NGHolder, ExpressionInfo
...
We now use NGHolder for all graph information, while other expression
properties (report, flag information, etc) go in new class
ExpressionInfo.
2017-04-26 15:18:09 +10:00
Matthew Barr
01b91da1cd
Use the default allocator for std::vector
2017-04-26 15:17:19 +10:00
Justin Viiret
187a4b82c2
small_vector: add header to handle older Boost
...
This provides ue2::small_vector<T, N, Alloc> which will fall back to
std::vector<T, Alloc> where the Boost version is too old or not present.
2017-04-26 15:17:11 +10:00
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