upgradetoversion 1.11

This commit is contained in:
shangyibin 2021-12-28 11:50:48 +08:00
parent cd90beaa70
commit 9b0b68f49f
6 changed files with 34 additions and 78 deletions

View File

@ -11,7 +11,7 @@ Signed-off-by: pengyeqing <pengyeqing@huawei.com>
1 file changed, 1 insertion(+), 1 deletion(-) 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/zdiff.in b/zdiff.in diff --git a/zdiff.in b/zdiff.in
index 960bf86..e337e35 100644 index a1325f2..2b7ec23 100644
--- a/zdiff.in --- a/zdiff.in
+++ b/zdiff.in +++ b/zdiff.in
@@ -51,7 +51,7 @@ escape=' @@ -51,7 +51,7 @@ escape='
@ -24,5 +24,5 @@ index 960bf86..e337e35 100644
-*\'*) cmp="$cmp '"`printf '%sX\n' "$1" | sed "$escape"`;; -*\'*) cmp="$cmp '"`printf '%sX\n' "$1" | sed "$escape"`;;
-?*) cmp="$cmp '$1'";; -?*) cmp="$cmp '$1'";;
-- --
1.8.3.1 2.27.0

View File

@ -1,38 +0,0 @@
From 21cd963565a43dabd59516bd4cca5c76a614f255 Mon Sep 17 00:00:00 2001
From: Jakub Martisko <jamartis@redhat.com>
Date: Tue, 26 Mar 2019 12:29:30 +0100
Subject: [PATCH] Fix: the value of the skip variable in the gzexe
---
gzexe.in | 4 ++--
tests/Makefile.am | 1 +
tests/gzexe | 20 ++++++++++++++++++++
3 files changed, 23 insertions(+), 2 deletions(-)
create mode 100755 tests/gzexe
diff --git a/gzexe.in b/gzexe.in
index 6c61183..cffa84e 100644
--- a/gzexe.in
+++ b/gzexe.in
@@ -145,7 +145,7 @@ for i do
if test $decomp -eq 0; then
(cat <<'EOF' &&
#!/bin/sh
-skip=44
+skip=49
tab=' '
nl='
@@ -201,7 +201,7 @@ EOF
else
# decompression
- skip=44
+ skip=49
skip_line=`sed -e 1d -e 2q "$file"`
case $skip_line in
skip=[0-9] | skip=[0-9][0-9] | skip=[0-9][0-9][0-9])
--
2.21.0

Binary file not shown.

BIN
gzip-1.11.tar.xz Normal file

Binary file not shown.

View File

@ -1,13 +1,12 @@
Name: gzip Name: gzip
Version: 1.10 Version: 1.11
Release: 2 Release: 1
Summary: A data compression utility Summary: A data compression utility
License: GPLv3+ and GFDL License: GPLv3+ and GFDL
URL: https://www.gnu.org/software/gzip URL: https://www.gnu.org/software/gzip
Source0: https://ftp.gnu.org/gnu/gzip/gzip-%{version}.tar.xz Source0: https://ftp.gnu.org/gnu/gzip/gzip-%{version}.tar.xz
Patch0: gzexe.patch
Patch9000: fix-verbose-disable.patch Patch9000: fix-verbose-disable.patch
Patch9100: performance-neoncrc32-and-prfm.patch Patch9100: performance-neoncrc32-and-prfm.patch
@ -58,6 +57,9 @@ make check
%{_mandir}/man1/* %{_mandir}/man1/*
%changelog %changelog
* Tue Dec 28 2021 shangyibin<shangyibin1@huawei.com> - 1.11-1
- upgrade to version 1.11
* Thu Nov 09 2021 tianwei<tianwei12@huawei.com> - 1.10-2 * Thu Nov 09 2021 tianwei<tianwei12@huawei.com> - 1.10-2
- Type:bugfix - Type:bugfix
- ID:NA - ID:NA

View File

@ -1,26 +1,18 @@
From 134712c35ed2ec5a06c61583dce59867aeb28862 Mon Sep 17 00:00:00 2001 From 00f4c93e6c6cae92714a96cdde3c07bdfd59c9dc Mon Sep 17 00:00:00 2001
From: liqiang64 <liqiang64@huawei.com> From: root <root@localhost.localdomain>
Date: Mon, 11 Nov 2019 19:47:36 +0800 Date: Tue, 28 Dec 2021 10:24:26 +0800
Subject: [PATCH] performance-neoncrc32-and-prfm Subject: [PATCH] performance-neoncrc32-and-prfm-2
Analysis of gzip software by perf tool, found that crc32 and
longest_match hotspots are very high.
On the ARM architecture, we can optimize the efficiency of
crc32 through the interface provided by the neon instruction
set, and optimize the performance of random access code through
prefetch instructions.
Modify by Li Qiang.
--- ---
deflate.c | 27 ++++++++++++++++++++++++++- deflate.c | 28 +++++++++++++++++++++++++++-
util.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ util.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 75 insertions(+), 1 deletion(-) 2 files changed, 75 insertions(+), 1 deletion(-)
diff --git a/deflate.c b/deflate.c diff --git a/deflate.c b/deflate.c
index 951d7af..f15a227 100644 index 55bdc0e..3add924 100644
--- a/deflate.c --- a/deflate.c
+++ b/deflate.c +++ b/deflate.c
@@ -392,6 +392,9 @@ longest_match(IPos cur_match) @@ -378,6 +378,9 @@ longest_match(IPos cur_match)
register int len; /* length of current match */ register int len; /* length of current match */
int best_len = prev_length; /* best match length so far */ int best_len = prev_length; /* best match length so far */
IPos limit = strstart > (IPos)MAX_DIST ? strstart - (IPos)MAX_DIST : NIL; IPos limit = strstart > (IPos)MAX_DIST ? strstart - (IPos)MAX_DIST : NIL;
@ -30,18 +22,19 @@ index 951d7af..f15a227 100644
/* Stop when cur_match becomes <= limit. To simplify the code, /* Stop when cur_match becomes <= limit. To simplify the code,
* we prevent matches with the string of window index 0. * we prevent matches with the string of window index 0.
*/ */
@@ -425,6 +428,10 @@ longest_match(IPos cur_match) @@ -412,6 +415,11 @@ longest_match(IPos cur_match)
do {
Assert(cur_match < strstart, "no future"); Assert(cur_match < strstart, "no future");
match = window + cur_match; match = window + cur_match;
+ #ifdef __aarch64__ + #ifdef __aarch64__
+ next_match = prev[cur_match & WMASK]; + next_match = prev[cur_match & WMASK];
+ __asm__("PRFM PLDL1STRM, [%0]"::"r"(&(prev[next_match & WMASK]))); + __asm__("PRFM PLDL1STRM, [%0]"::"r"(&(prev[next_match & WMASK])));
+ #endif + #endif
+
/* Skip to next match if the match length cannot increase /* Skip to next match if the match length cannot increase
* or if the match length is less than 2: * or if the match length is less than 2:
@@ -502,8 +509,14 @@ longest_match(IPos cur_match) */
@@ -488,8 +496,14 @@ longest_match(IPos cur_match)
scan_end = scan[best_len]; scan_end = scan[best_len];
#endif #endif
} }
@ -49,15 +42,15 @@ index 951d7af..f15a227 100644
+ } + }
+ #ifdef __aarch64__ + #ifdef __aarch64__
+ while ((cur_match = next_match) > limit + while ((cur_match = next_match) > limit
&& --chain_length != 0); + && --chain_length != 0);
+ #else + #else
+ while ((cur_match = prev[cur_match & WMASK]) > limit + while ((cur_match = prev[cur_match & WMASK]) > limit
+ && --chain_length != 0); && --chain_length != 0);
+ #endif + #endif
return best_len; return best_len;
} }
@@ -788,7 +801,19 @@ off_t deflate() @@ -777,7 +791,19 @@ deflate (int pack_level)
lookahead -= prev_length-1; lookahead -= prev_length-1;
prev_length -= 2; prev_length -= 2;
RSYNC_ROLL(strstart, prev_length+1); RSYNC_ROLL(strstart, prev_length+1);
@ -78,7 +71,7 @@ index 951d7af..f15a227 100644
INSERT_STRING(strstart, hash_head); INSERT_STRING(strstart, hash_head);
/* strstart never exceeds WSIZE-MAX_MATCH, so there are /* strstart never exceeds WSIZE-MAX_MATCH, so there are
diff --git a/util.c b/util.c diff --git a/util.c b/util.c
index bb5e9f3..d0b3cb0 100644 index e4240a7..397fb3e 100644
--- a/util.c --- a/util.c
+++ b/util.c +++ b/util.c
@@ -31,6 +31,9 @@ @@ -31,6 +31,9 @@
@ -105,15 +98,14 @@ index bb5e9f3..d0b3cb0 100644
}; };
+#endif +#endif
/* =========================================================================== /* Shift register contents. */
* Copy input to output unchanged: zcat == cat with --force. static ulg crc = 0xffffffffL;
@@ -129,6 +134,49 @@ ulg updcrc(s, n) @@ -132,6 +137,48 @@ ulg updcrc(s, n)
uch *s; /* pointer to bytes to pump through */ const uch *s; /* pointer to bytes to pump through */
unsigned n; /* number of bytes in s[] */ unsigned n; /* number of bytes in s[] */
{ {
+ #ifdef __aarch64__ + #ifdef __aarch64__
+ register ulg c; + register ulg c;
+ static ulg crc = (ulg)0xffffffffL;
+ register const uint8_t *buf1; + register const uint8_t *buf1;
+ register const uint16_t *buf2; + register const uint16_t *buf2;
+ register const uint32_t *buf4; + register const uint32_t *buf4;
@ -124,7 +116,7 @@ index bb5e9f3..d0b3cb0 100644
+ if (s == NULL) { + if (s == NULL) {
+ c = 0xffffffffL; + c = 0xffffffffL;
+ } else { + } else {
+ c = crc; + c = crc;
+ +
+ while(length >= sizeof(uint64_t)) { + while(length >= sizeof(uint64_t)) {
+ c = __crc32d(c, *buf8++); + c = __crc32d(c, *buf8++);
@ -156,15 +148,15 @@ index bb5e9f3..d0b3cb0 100644
+#else +#else
register ulg c; /* temporary variable */ register ulg c; /* temporary variable */
static ulg crc = (ulg)0xffffffffL; /* shift register contents */ if (s == NULL) {
@@ -143,6 +191,7 @@ ulg updcrc(s, n) @@ -144,6 +191,7 @@ ulg updcrc(s, n)
} }
crc = c; crc = c;
return c ^ 0xffffffffL; /* (instead of ~c for 64-bit machines) */ return c ^ 0xffffffffL; /* (instead of ~c for 64-bit machines) */
+#endif +#endif
} }
/* =========================================================================== /* Return a current CRC value. */
-- --
1.8.3.1 2.27.0