]> git.ipfire.org Git - thirdparty/vectorscan.git/commitdiff
rose: don't accel noodle engines
authorJustin Viiret <justin.viiret@intel.com>
Mon, 9 Jan 2017 23:07:12 +0000 (10:07 +1100)
committerMatthew Barr <matthew.barr@intel.com>
Wed, 26 Apr 2017 04:41:29 +0000 (14:41 +1000)
src/rose/rose_build_matchers.cpp

index 2e7305f73e96545a2895eba30aeb5c8b6c587524..dfbde375b05cea150930b6778b97efeb536c0b57 100644 (file)
@@ -37,6 +37,7 @@
 #include "rose_build_lit_accel.h"
 #include "rose_build_width.h"
 #include "hwlm/hwlm_build.h"
+#include "hwlm/hwlm_internal.h"
 #include "hwlm/hwlm_literal.h"
 #include "nfa/castlecompile.h"
 #include "nfa/nfa_api_queue.h"
@@ -811,6 +812,20 @@ void MatcherProto::insert(const MatcherProto &a) {
     history_required = max(history_required, a.history_required);
 }
 
+static
+void buildAccel(const RoseBuildImpl &build, const MatcherProto &mp,
+                HWLM &hwlm) {
+    if (!build.cc.grey.hamsterAccelForward) {
+        return;
+    }
+
+    if (hwlm.type == HWLM_ENGINE_NOOD) {
+        return;
+    }
+
+    buildForwardAccel(&hwlm, mp.accel_lits, build.getInitialGroups());
+}
+
 aligned_unique_ptr<HWLM>
 buildFloatingMatcher(const RoseBuildImpl &build, size_t longLitLengthThreshold,
                      const map<u32, u32> &final_to_frag_map,
@@ -835,9 +850,7 @@ buildFloatingMatcher(const RoseBuildImpl &build, size_t longLitLengthThreshold,
         throw CompileError("Unable to generate bytecode.");
     }
 
-    if (build.cc.grey.hamsterAccelForward) {
-        buildForwardAccel(hwlm.get(), mp.accel_lits, build.getInitialGroups());
-    }
+    buildAccel(build, mp, *hwlm);
 
     if (build.cc.streaming) {
         DEBUG_PRINTF("history_required=%zu\n", mp.history_required);
@@ -903,9 +916,7 @@ buildSmallBlockMatcher(const RoseBuildImpl &build,
         throw CompileError("Unable to generate bytecode.");
     }
 
-    if (build.cc.grey.hamsterAccelForward) {
-        buildForwardAccel(hwlm.get(), mp.accel_lits, build.getInitialGroups());
-    }
+    buildAccel(build, mp, *hwlm);
 
     *sbsize = hwlmSize(hwlm.get());
     assert(*sbsize);
@@ -934,9 +945,7 @@ buildEodAnchoredMatcher(const RoseBuildImpl &build,
         throw CompileError("Unable to generate bytecode.");
     }
 
-    if (build.cc.grey.hamsterAccelForward) {
-        buildForwardAccel(hwlm.get(), mp.accel_lits, build.getInitialGroups());
-    }
+    buildAccel(build, mp, *hwlm);
 
     *esize = hwlmSize(hwlm.get());
     assert(*esize);