aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryalin wang <yalin.wang2010@gmail.com>2015-09-09 18:39:18 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2015-09-10 16:29:01 -0400
commit8b235f2f16a472b8cfc10e8ef1286fcd3331e033 (patch)
tree833e552d3da36089d23727f25b6e2b133d769eb3
parente4e29dc4841d21943bec1bc5378ab421d2320d83 (diff)
zlib_deflate/deftree: remove bi_reverse()
Remove bi_reverse() and use generic bitrev32() instead - it should have better performance on some platforms. Signed-off-by: yalin wang <yalin.wang2010@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--lib/zlib_deflate/deftree.c6
-rw-r--r--lib/zlib_deflate/defutil.h16
2 files changed, 3 insertions, 19 deletions
diff --git a/lib/zlib_deflate/deftree.c b/lib/zlib_deflate/deftree.c
index ddf348299f24..9b1756b12743 100644
--- a/lib/zlib_deflate/deftree.c
+++ b/lib/zlib_deflate/deftree.c
@@ -35,6 +35,7 @@
35/* #include "deflate.h" */ 35/* #include "deflate.h" */
36 36
37#include <linux/zutil.h> 37#include <linux/zutil.h>
38#include <linux/bitrev.h>
38#include "defutil.h" 39#include "defutil.h"
39 40
40#ifdef DEBUG_ZLIB 41#ifdef DEBUG_ZLIB
@@ -146,7 +147,6 @@ static void send_all_trees (deflate_state *s, int lcodes, int dcodes,
146static void compress_block (deflate_state *s, ct_data *ltree, 147static void compress_block (deflate_state *s, ct_data *ltree,
147 ct_data *dtree); 148 ct_data *dtree);
148static void set_data_type (deflate_state *s); 149static void set_data_type (deflate_state *s);
149static unsigned bi_reverse (unsigned value, int length);
150static void bi_windup (deflate_state *s); 150static void bi_windup (deflate_state *s);
151static void bi_flush (deflate_state *s); 151static void bi_flush (deflate_state *s);
152static void copy_block (deflate_state *s, char *buf, unsigned len, 152static void copy_block (deflate_state *s, char *buf, unsigned len,
@@ -284,7 +284,7 @@ static void tr_static_init(void)
284 /* The static distance tree is trivial: */ 284 /* The static distance tree is trivial: */
285 for (n = 0; n < D_CODES; n++) { 285 for (n = 0; n < D_CODES; n++) {
286 static_dtree[n].Len = 5; 286 static_dtree[n].Len = 5;
287 static_dtree[n].Code = bi_reverse((unsigned)n, 5); 287 static_dtree[n].Code = bitrev32((u32)n) >> (32 - 5);
288 } 288 }
289 static_init_done = 1; 289 static_init_done = 1;
290} 290}
@@ -520,7 +520,7 @@ static void gen_codes(
520 int len = tree[n].Len; 520 int len = tree[n].Len;
521 if (len == 0) continue; 521 if (len == 0) continue;
522 /* Now reverse the bits */ 522 /* Now reverse the bits */
523 tree[n].Code = bi_reverse(next_code[len]++, len); 523 tree[n].Code = bitrev32((u32)(next_code[len]++)) >> (32 - len);
524 524
525 Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ", 525 Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ",
526 n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1)); 526 n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));
diff --git a/lib/zlib_deflate/defutil.h b/lib/zlib_deflate/defutil.h
index b640b6402e99..a8c370897c9f 100644
--- a/lib/zlib_deflate/defutil.h
+++ b/lib/zlib_deflate/defutil.h
@@ -293,22 +293,6 @@ void zlib_tr_stored_type_only (deflate_state *);
293} 293}
294 294
295/* =========================================================================== 295/* ===========================================================================
296 * Reverse the first len bits of a code, using straightforward code (a faster
297 * method would use a table)
298 * IN assertion: 1 <= len <= 15
299 */
300static inline unsigned bi_reverse(unsigned code, /* the value to invert */
301 int len) /* its bit length */
302{
303 register unsigned res = 0;
304 do {
305 res |= code & 1;
306 code >>= 1, res <<= 1;
307 } while (--len > 0);
308 return res >> 1;
309}
310
311/* ===========================================================================
312 * Flush the bit buffer, keeping at most 7 bits in it. 296 * Flush the bit buffer, keeping at most 7 bits in it.
313 */ 297 */
314static inline void bi_flush(deflate_state *s) 298static inline void bi_flush(deflate_state *s)