From 404f73981112d69488f431585c53b724801987ed Mon Sep 17 00:00:00 2001 From: "Chang, Harry" Date: Thu, 27 Jul 2017 17:21:05 +0800 Subject: [PATCH] Compile dump of teddy's nibble masks and reinforcement table in fdr_dump.cpp --- src/fdr/fdr_dump.cpp | 47 +++++++++++++++++++++++++++++++++++++++ src/fdr/teddy_compile.cpp | 37 ------------------------------ 2 files changed, 47 insertions(+), 37 deletions(-) diff --git a/src/fdr/fdr_dump.cpp b/src/fdr/fdr_dump.cpp index 0a4d7415..f4cd1f44 100644 --- a/src/fdr/fdr_dump.cpp +++ b/src/fdr/fdr_dump.cpp @@ -86,6 +86,45 @@ void dumpConfirms(const void *fdr_base, u32 conf_offset, u32 num_confirms, } } +static +void dumpTeddyReinforced(const u8 *rmsk, const u32 num_tables, FILE *f) { + // dump reinforcement masks + for (u32 b = 0; b < num_tables; b++) { + fprintf(f, " reinforcement table for bucket %u..%u:\n", + b * 8, b * 8 + 7); + for (u32 i = 0; i <= N_CHARS; i++) { + fprintf(f, " 0x%02x: ", i); + for (u32 j = 0; j < 8; j++) { + u8 val = rmsk[b * ((N_CHARS + 1) * 8) + i * 8 + j]; + for (u32 k = 0; k < 8; k++) { + fprintf(f, "%s", ((val >> k) & 0x1) ? "1" : "0"); + } + fprintf(f, " "); + } + fprintf(f, "\n"); + } + fprintf(f, "\n"); + } +} + +static +void dumpTeddyMasks(const u8 *baseMsk, u32 numMasks, u32 maskWidth, FILE *f) { + // dump nibble masks + fprintf(f, " nibble masks:\n"); + for (u32 i = 0; i < numMasks * 2; i++) { + fprintf(f, " -%d%s: ", 1 + i / 2, (i % 2) ? "hi" : "lo"); + for (u32 j = 0; j < 16 * maskWidth; j++) { + u8 val = baseMsk[i * 16 * maskWidth + j]; + for (u32 k = 0; k < 8; k++) { + fprintf(f, "%s", ((val >> k) & 0x1) ? "1" : "0"); + } + fprintf(f, " "); + } + fprintf(f, "\n"); + } + fprintf(f, "\n"); +} + static void dumpTeddy(const Teddy *teddy, FILE *f) { fprintf(f, "TEDDY: %u\n", teddy->engineID); @@ -105,6 +144,14 @@ void dumpTeddy(const Teddy *teddy, FILE *f) { teddy->floodOffset); fprintf(f, "\n"); + u32 maskWidth = des->getNumBuckets() / 8; + size_t headerSize = sizeof(Teddy); + size_t maskLen = des->numMasks * 16 * 2 * maskWidth; + const u8 *teddy_base = (const u8 *)teddy; + const u8 *baseMsk = teddy_base + ROUNDUP_CL(headerSize); + const u8 *rmsk = baseMsk + ROUNDUP_CL(maskLen); + dumpTeddyMasks(baseMsk, des->numMasks, maskWidth, f); + dumpTeddyReinforced(rmsk, maskWidth, f); dumpConfirms(teddy, teddy->confOffset, des->getNumBuckets(), f); } diff --git a/src/fdr/teddy_compile.cpp b/src/fdr/teddy_compile.cpp index 3709465b..9a1e54a1 100644 --- a/src/fdr/teddy_compile.cpp +++ b/src/fdr/teddy_compile.cpp @@ -353,26 +353,6 @@ void fillReinforcedMsk(u8 *rmsk, u16 c, u32 j, u8 bmsk) { } } -#ifdef TEDDY_DEBUG -static -void dumpReinforcedMaskTable(const u8 *rmsk, const u32 num_tables) { - for (u32 b = 0; b < num_tables; b++) { - printf("reinforcement table for bucket %u..%u:\n", b * 8, b * 8 + 7); - for (u32 i = 0; i <= N_CHARS; i++) { - printf("0x%02x: ", i); - for (u32 j = 0; j < REINFORCED_MSK_LEN; j++) { - u8 val = rmsk[b * RTABLE_SIZE + i * REINFORCED_MSK_LEN + j]; - for (u32 k = 0; k < 8; k++) { - printf("%s", ((val >> k) & 0x1) ? "1" : "0"); - } - printf(" "); - } - printf("\n"); - } - } -} -#endif - static void fillNibbleMasks(const map> &bucketToLits, @@ -543,23 +523,6 @@ bytecode_ptr TeddyCompiler::build() { u8 *reinforcedMsk = baseMsk + ROUNDUP_CL(maskLen); fillReinforcedTable(bucketToLits, lits, reinforcedMsk, maskWidth); -#ifdef TEDDY_DEBUG - for (u32 i = 0; i < eng.numMasks * 2; i++) { - for (u32 j = 0; j < 16; j++) { - u8 val = baseMsk[i * 16 + j]; - for (u32 k = 0; k < 8; k++) { - printf("%s", ((val >> k) & 0x1) ? "1" : "0"); - } - printf(" "); - } - printf("\n"); - } - - printf("\n===============================================\n" - "reinforced mask table for low boundary (original)\n\n"); - dumpReinforcedMaskTable(reinforcedMsk, maskWidth); -#endif - return fdr; }