79 Commits

Author SHA1 Message Date
Matthew Barr
8c2e033540 cmake: test reverse_graph instead of using version
It seems that some distros are using a patched Boost 1.62.0 which means our
workaround in reverse_graph has a conflict. Add a CMake test to see if we
need to use the patched reverse_graph.
2017-01-20 09:26:34 +11:00
Matthew Barr
e23316f453 Boost 1.61 required for clang/libc++
The libc++ headers aren't specific enough and causes the compiler to think
there are ambiguous functions when using older Boost versions.
2017-01-17 11:38:31 +11:00
Matthew Barr
1c9f38e98d Silence ABI notes in release builds 2017-01-17 11:38:16 +11:00
Matthew Barr
2f57681bb6 cmake: check the generator for fat runtime builds
The RULE_LAUNCH_COMPILE property only works for Unix Makefiles, or
for Ninja with CMake newer than v3.0.
2016-12-14 15:35:44 +11:00
Matthew Barr
0d87116d33 cmake: check clang version for fat runtime support 2016-12-14 15:35:44 +11:00
Matthew Barr
f29b203a86 cmake: combine hs_exec src lists correctly 2016-12-14 15:35:28 +11:00
Matthew Barr
1ed2bdc46f Don't set flags for common files 2016-12-14 15:35:22 +11:00
Matthew Barr
c337ac665b cmake: default to fat runtime for release builds 2016-12-14 15:35:19 +11:00
Matthew Barr
6967c7ddf1 cmake: unneeded header check 2016-12-14 15:35:16 +11:00
Matthew Barr
0d0e1a5106 api: hs_valid_platform 2016-12-14 15:35:13 +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
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
Alex Coyte
32c826e9c6 have single dump function per engine 2016-12-02 11:32:36 +11:00
Alex Coyte
e1e9010cac Introduce custom adjacency-list based graph 2016-12-02 11:31:33 +11:00
Matthew Barr
be8bd41ec4 Merge master into develop 2016-12-02 11:21:29 +11:00
Matthew Barr
0a16e6f78c Bump version number for release 2016-11-15 10:09:59 +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
6ed30194ce Disable asserts everywhere when we say so 2016-10-28 14:52:15 +11:00
Matthew Barr
2e5a2ab2a9 cmake: don't be so heavyhanded with flags 2016-10-28 14:47:11 +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
13b6023a18 hash: add hash_all variadic tpl func, use in rose 2016-10-28 14:45:28 +11:00
Justin Viiret
13af3bfb74 rose: decouple build-time program representation
This commit replaces the build-time representation of the Rose
interpreter programs, from a class containing a discriminated union of
the bytecode structures to a class hierarchy of build-time prototypes.

This makes it easier to reason about and manipulate Rose programs during
compilation.
2016-10-28 14:45:15 +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
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
Matthew Barr
d21fcbfa92 Bump version number for release 2016-08-29 11:30:24 +10:00
Matthew Barr
8cf0c41552 Bump version number for release 2016-08-24 14:27:59 +10:00
Matthew Barr
34d6a0d683 Change SONAME to only use the major version number
Hyperscan will only break ABI on major version changes, and the SONAME
used for shared library versions should reflect this.
2016-08-22 16:04:48 +10:00
Matthew Barr
f06f5d0702 Use SOURCE_DATE_EPOCH for timestamp if present
The Debian reproducible builds effort suggests using
this environment variable for timestamps.
2016-08-10 15:14:30 +10:00
Matthew Barr
e3c9bc7edf GCC 6 warns about unused attributes - disable the warning 2016-08-10 15:14:07 +10:00
Matthew Barr
85e2ba7555 cmake: take control of our compiler flags 2016-08-10 15:14:03 +10:00
Anatoly Burakov
6331da4e29 dfa: adding new Sheng engine
A new shuffle-based DFA engine, complete with acceleration and smallwrite.
2016-08-10 15:10:46 +10:00
Anatoly Burakov
56bf25b091 McClellan refactor
Taking dfa strat out of McClellan, to be reused by other DFAs
2016-08-10 15:10:25 +10:00
Matthew Barr
cbd115f7fe Don't shadow names 2016-08-10 15:06:57 +10:00
Alex Coyte
5c5ec905cc violet: initial implementation 2016-08-10 15:01:08 +10:00
Xu, Chi
4d7469392d rose: add CHECK_BYTE/CHECK_MASK instructions
These instructions are specialisations of the "lookaround" code for
performance.
2016-08-10 14:57:48 +10:00
Matthew Barr
4d6934fc77 Move limex specific shuffle utils and ssse3 funcs 2016-07-08 11:07:50 +10:00
Xiang Wang
9087d59be5 tamarama: add container engine for exclusive nfas
Add the new Tamarama engine that acts as a container for infix/suffix
engines that can be proven to run exclusively of one another.

This reduces stream state for pattern sets with many exclusive engines.
2016-07-08 11:01:34 +10:00
Justin Viiret
76d96809f8 rose: move roseRunProgram into its own unit
The roseRunProgram function had gotten very large for the number of
sites it was being inlined into, with negative effects on performance in
large cases. This change moves it into its own translation unit.
2016-07-08 11:01:34 +10:00
Matthew Barr
f9ded59361 Disable strict aliasing
Strict aliasing allows to compiler to make some optimisations, but they aren't
without risk. The benefits do not appear to be worth the risk.
2016-07-08 10:59:40 +10:00
Kirill Rybalchenko
9d2403e8bb limex: implement variable shift NFA engines
Replaces the old LimEx NFA engines, which were specialised for model
size and number of shifts, with a new set of engines that can handle a
variable number of shifts.
2016-07-08 10:57:29 +10:00
Justin Viiret
cf8e8c90ff eod: move stream eod code to stream.c 2016-07-08 10:55:36 +10:00
Matthew Barr
c7212a7478 Only omit frame pointers on 32bit release builds
Frame pointers are very useful for debugging and testing, and only
really make a difference to performance on IA32.
2016-07-08 10:50:08 +10:00
Justin Viiret
c2496fbf76 rose: elide SET_GROUPS when possible 2016-07-08 10:47:07 +10:00
Matthew Barr
212ed92ac5 Bump version number for release 2016-06-01 11:04:43 +10:00
Matthew Barr
89bc2b4b39 cmake: invoke the compiler to test arch features
We require SSSE3, and optionally support AVX2, and the best way of testing
the compiler and compile flags is to run the compiler.
2016-05-24 11:26:38 +10:00
Matthew Barr
e52783017e pkgconfig: Add Libs.private for static linking 2016-05-24 11:26:06 +10:00
Matthew Barr
74d5d0e819 cmake: fix optimise define 2016-05-24 11:26:03 +10:00
Boris Nagaev
ba77229c02 install .dll to bin/, not to lib/ 2016-05-22 15:56:49 +03:00