Matthew Barr
3e345c2567
If we can shift by an immediate, do it. Otherwise, don't.
2017-05-30 14:00:45 +10:00
Matthew Barr
f6b688fc06
rename pshufb to pshufb_m128
2017-05-30 13:59:23 +10:00
Matthew Barr
a295c96198
rename vpshufb to pshufb_m256
2017-05-30 13:59:23 +10:00
Matthew Barr
ec7869711f
avx512 fat runtime support: experimental
2017-05-30 13:59:23 +10:00
Matthew Barr
91db20d8eb
avx512: CPU detection and platform hints
2017-05-30 13:59:23 +10:00
Matthew Barr
8a56d16d57
avx512: add basic functions to simd_utils
...
Extends the m512 type to use avx512 and also changes required
for limex.
2017-05-30 13:59:18 +10:00
Matthew Barr
fedd48489f
Allow the full cpuid flags for fat runtimes
2017-05-30 13:59:00 +10:00
Matthew Barr
c510b85bf1
whitespace changes
2017-05-30 13:59:00 +10:00
Justin Viiret
1a04d1330e
verify_types: add type static assertions
2017-05-30 13:59:00 +10:00
Justin Viiret
16a00074c6
verify_types: throw on failure
...
In release builds, we would like a verify_u32 (etc) failure to be more
than just an assertion.
2017-05-30 13:58:59 +10:00
Justin Viiret
8a7ac432c0
ue2_literal: add hash_value()
2017-05-30 13:58:59 +10:00
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