upgradetoversion 1.11
This commit is contained in:
parent
cd90beaa70
commit
9b0b68f49f
@ -11,7 +11,7 @@ Signed-off-by: pengyeqing <pengyeqing@huawei.com>
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/zdiff.in b/zdiff.in
|
||||
index 960bf86..e337e35 100644
|
||||
index a1325f2..2b7ec23 100644
|
||||
--- a/zdiff.in
|
||||
+++ b/zdiff.in
|
||||
@@ -51,7 +51,7 @@ escape='
|
||||
@ -24,5 +24,5 @@ index 960bf86..e337e35 100644
|
||||
-*\'*) cmp="$cmp '"`printf '%sX\n' "$1" | sed "$escape"`;;
|
||||
-?*) cmp="$cmp '$1'";;
|
||||
--
|
||||
1.8.3.1
|
||||
2.27.0
|
||||
|
||||
|
||||
38
gzexe.patch
38
gzexe.patch
@ -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
|
||||
|
||||
BIN
gzip-1.10.tar.xz
BIN
gzip-1.10.tar.xz
Binary file not shown.
BIN
gzip-1.11.tar.xz
Normal file
BIN
gzip-1.11.tar.xz
Normal file
Binary file not shown.
@ -1,13 +1,12 @@
|
||||
Name: gzip
|
||||
Version: 1.10
|
||||
Release: 2
|
||||
Version: 1.11
|
||||
Release: 1
|
||||
Summary: A data compression utility
|
||||
|
||||
License: GPLv3+ and GFDL
|
||||
URL: https://www.gnu.org/software/gzip
|
||||
Source0: https://ftp.gnu.org/gnu/gzip/gzip-%{version}.tar.xz
|
||||
|
||||
Patch0: gzexe.patch
|
||||
Patch9000: fix-verbose-disable.patch
|
||||
Patch9100: performance-neoncrc32-and-prfm.patch
|
||||
|
||||
@ -58,6 +57,9 @@ make check
|
||||
%{_mandir}/man1/*
|
||||
|
||||
%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
|
||||
- Type:bugfix
|
||||
- ID:NA
|
||||
|
||||
@ -1,26 +1,18 @@
|
||||
From 134712c35ed2ec5a06c61583dce59867aeb28862 Mon Sep 17 00:00:00 2001
|
||||
From: liqiang64 <liqiang64@huawei.com>
|
||||
Date: Mon, 11 Nov 2019 19:47:36 +0800
|
||||
Subject: [PATCH] performance-neoncrc32-and-prfm
|
||||
From 00f4c93e6c6cae92714a96cdde3c07bdfd59c9dc Mon Sep 17 00:00:00 2001
|
||||
From: root <root@localhost.localdomain>
|
||||
Date: Tue, 28 Dec 2021 10:24:26 +0800
|
||||
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 ++++++++++++++++++++++++++-
|
||||
util.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
deflate.c | 28 +++++++++++++++++++++++++++-
|
||||
util.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 75 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/deflate.c b/deflate.c
|
||||
index 951d7af..f15a227 100644
|
||||
index 55bdc0e..3add924 100644
|
||||
--- a/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 */
|
||||
int best_len = prev_length; /* best match length so far */
|
||||
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,
|
||||
* we prevent matches with the string of window index 0.
|
||||
*/
|
||||
@@ -425,6 +428,10 @@ longest_match(IPos cur_match)
|
||||
do {
|
||||
@@ -412,6 +415,11 @@ longest_match(IPos cur_match)
|
||||
Assert(cur_match < strstart, "no future");
|
||||
match = window + cur_match;
|
||||
|
||||
+ #ifdef __aarch64__
|
||||
+ next_match = prev[cur_match & WMASK];
|
||||
+ __asm__("PRFM PLDL1STRM, [%0]"::"r"(&(prev[next_match & WMASK])));
|
||||
+ #endif
|
||||
|
||||
+
|
||||
/* Skip to next match if the match length cannot increase
|
||||
* 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];
|
||||
#endif
|
||||
}
|
||||
@ -49,15 +42,15 @@ index 951d7af..f15a227 100644
|
||||
+ }
|
||||
+ #ifdef __aarch64__
|
||||
+ while ((cur_match = next_match) > limit
|
||||
&& --chain_length != 0);
|
||||
+ && --chain_length != 0);
|
||||
+ #else
|
||||
+ while ((cur_match = prev[cur_match & WMASK]) > limit
|
||||
+ && --chain_length != 0);
|
||||
&& --chain_length != 0);
|
||||
+ #endif
|
||||
|
||||
return best_len;
|
||||
}
|
||||
@@ -788,7 +801,19 @@ off_t deflate()
|
||||
@@ -777,7 +791,19 @@ deflate (int pack_level)
|
||||
lookahead -= prev_length-1;
|
||||
prev_length -= 2;
|
||||
RSYNC_ROLL(strstart, prev_length+1);
|
||||
@ -78,7 +71,7 @@ index 951d7af..f15a227 100644
|
||||
INSERT_STRING(strstart, hash_head);
|
||||
/* strstart never exceeds WSIZE-MAX_MATCH, so there are
|
||||
diff --git a/util.c b/util.c
|
||||
index bb5e9f3..d0b3cb0 100644
|
||||
index e4240a7..397fb3e 100644
|
||||
--- a/util.c
|
||||
+++ b/util.c
|
||||
@@ -31,6 +31,9 @@
|
||||
@ -105,15 +98,14 @@ index bb5e9f3..d0b3cb0 100644
|
||||
};
|
||||
+#endif
|
||||
|
||||
/* ===========================================================================
|
||||
* Copy input to output unchanged: zcat == cat with --force.
|
||||
@@ -129,6 +134,49 @@ ulg updcrc(s, n)
|
||||
uch *s; /* pointer to bytes to pump through */
|
||||
/* Shift register contents. */
|
||||
static ulg crc = 0xffffffffL;
|
||||
@@ -132,6 +137,48 @@ ulg updcrc(s, n)
|
||||
const uch *s; /* pointer to bytes to pump through */
|
||||
unsigned n; /* number of bytes in s[] */
|
||||
{
|
||||
+ #ifdef __aarch64__
|
||||
+ register ulg c;
|
||||
+ static ulg crc = (ulg)0xffffffffL;
|
||||
+ register const uint8_t *buf1;
|
||||
+ register const uint16_t *buf2;
|
||||
+ register const uint32_t *buf4;
|
||||
@ -124,7 +116,7 @@ index bb5e9f3..d0b3cb0 100644
|
||||
+ if (s == NULL) {
|
||||
+ c = 0xffffffffL;
|
||||
+ } else {
|
||||
+ c = crc;
|
||||
+ c = crc;
|
||||
+
|
||||
+ while(length >= sizeof(uint64_t)) {
|
||||
+ c = __crc32d(c, *buf8++);
|
||||
@ -156,15 +148,15 @@ index bb5e9f3..d0b3cb0 100644
|
||||
+#else
|
||||
register ulg c; /* temporary variable */
|
||||
|
||||
static ulg crc = (ulg)0xffffffffL; /* shift register contents */
|
||||
@@ -143,6 +191,7 @@ ulg updcrc(s, n)
|
||||
if (s == NULL) {
|
||||
@@ -144,6 +191,7 @@ ulg updcrc(s, n)
|
||||
}
|
||||
crc = c;
|
||||
return c ^ 0xffffffffL; /* (instead of ~c for 64-bit machines) */
|
||||
+#endif
|
||||
}
|
||||
|
||||
/* ===========================================================================
|
||||
/* Return a current CRC value. */
|
||||
--
|
||||
1.8.3.1
|
||||
2.27.0
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user