]> git.ipfire.org Git - thirdparty/vectorscan.git/commitdiff
fdr/teddy: dump confirm lit load
authorJustin Viiret <justin.viiret@intel.com>
Mon, 26 Jun 2017 01:15:29 +0000 (11:15 +1000)
committerMatthew Barr <matthew.barr@intel.com>
Mon, 21 Aug 2017 01:10:11 +0000 (11:10 +1000)
src/fdr/fdr_dump.cpp

index ae81f257e5ae234c4f14db0819c43790367ec712..0a4d74154a192ddbf50895019b6273beae23b3aa 100644 (file)
@@ -45,7 +45,7 @@
 #error No dump support!
 #endif
 
-using std::unique_ptr;
+using namespace std;
 
 namespace ue2 {
 
@@ -60,6 +60,17 @@ bool fdrIsTeddy(const FDR *fdr) {
     return !getFdrDescription(engine);
 }
 
+static
+void dumpLitIndex(const FDRConfirm *fdrc, FILE *f) {
+    const u32 *lit_index = getConfirmLitIndex(fdrc);
+    u32 num_lits = 1U << fdrc->nBits;
+    u32 lits_used = count_if(lit_index, lit_index + num_lits,
+                             [](u32 idx) { return idx != 0; });
+
+    fprintf(f, "      load    %u/%u (%0.2f%%)\n", lits_used, num_lits,
+            (double)lits_used / (double)(num_lits)*100);
+}
+
 static
 void dumpConfirms(const void *fdr_base, u32 conf_offset, u32 num_confirms,
                   FILE *f) {
@@ -71,6 +82,7 @@ void dumpConfirms(const void *fdr_base, u32 conf_offset, u32 num_confirms,
         fprintf(f, "      mult    0x%016llx\n", fdrc->mult);
         fprintf(f, "      nbits   %u\n", fdrc->nBits);
         fprintf(f, "      groups  0x%016llx\n", fdrc->groups);
+        dumpLitIndex(fdrc, f);
     }
 }