diff --git a/fix-verbose-disable.patch b/fix-verbose-disable.patch index 21dc5f0e0bf0f9367e92f2f5a250eb28f33aa4b0..16f6201397705882e035007165fea02be0792fb6 100644 --- a/fix-verbose-disable.patch +++ b/fix-verbose-disable.patch @@ -11,7 +11,7 @@ Signed-off-by: pengyeqing 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=' @@ -23,6 +23,6 @@ index 960bf86..e337e35 100644 --) shift; break;; -*\'*) cmp="$cmp '"`printf '%sX\n' "$1" | sed "$escape"`;; -?*) cmp="$cmp '$1'";; --- -1.8.3.1 +-- +2.27.0 diff --git a/gzexe.patch b/gzexe.patch deleted file mode 100644 index 282cf7a9977df140996ea8b4f031aa2b89527f46..0000000000000000000000000000000000000000 --- a/gzexe.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 21cd963565a43dabd59516bd4cca5c76a614f255 Mon Sep 17 00:00:00 2001 -From: Jakub Martisko -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 - diff --git a/gzip-1.10.tar.xz b/gzip-1.10.tar.xz deleted file mode 100644 index 15bf4f45c517d6dd351936a38c58d6341a521f4c..0000000000000000000000000000000000000000 Binary files a/gzip-1.10.tar.xz and /dev/null differ diff --git a/gzip-1.11.tar.xz b/gzip-1.11.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..54fdcb87c91071fc9f4fe2690628621453e47182 Binary files /dev/null and b/gzip-1.11.tar.xz differ diff --git a/gzip.spec b/gzip.spec index f3a3931af7ebc0bc143984f4fe43af2788ab21a4..eb2aaa23028f90d0747fff15eb79cfbbe919ed5a 100644 --- a/gzip.spec +++ b/gzip.spec @@ -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 - 1.11-1 +- upgrade to version 1.11 + * Thu Nov 09 2021 tianwei - 1.10-2 - Type:bugfix - ID:NA diff --git a/performance-neoncrc32-and-prfm.patch b/performance-neoncrc32-and-prfm.patch index ad36f80e4e6c83c3a9ae82ac926bf80bf491be28..51fc3812255e15289eb9f757bb19c2a5a14fb619 100644 --- a/performance-neoncrc32-and-prfm.patch +++ b/performance-neoncrc32-and-prfm.patch @@ -1,26 +1,18 @@ -From 134712c35ed2ec5a06c61583dce59867aeb28862 Mon Sep 17 00:00:00 2001 -From: liqiang64 -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 +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