libdeflate 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/test.yml +34 -0
  3. data/README.md +1 -6
  4. data/ext/libdeflate/extconf.rb +18 -7
  5. data/ext/libdeflate/libdeflate_ext.c +17 -17
  6. data/lib/libdeflate/version.rb +1 -1
  7. data/libdeflate.gemspec +2 -1
  8. metadata +13 -84
  9. data/.gitmodules +0 -3
  10. data/.travis.yml +0 -5
  11. data/ext/libdeflate/libdeflate/.gitignore +0 -19
  12. data/ext/libdeflate/libdeflate/COPYING +0 -21
  13. data/ext/libdeflate/libdeflate/Makefile +0 -231
  14. data/ext/libdeflate/libdeflate/Makefile.msc +0 -64
  15. data/ext/libdeflate/libdeflate/NEWS +0 -57
  16. data/ext/libdeflate/libdeflate/README.md +0 -170
  17. data/ext/libdeflate/libdeflate/common/common_defs.h +0 -351
  18. data/ext/libdeflate/libdeflate/common/compiler_gcc.h +0 -134
  19. data/ext/libdeflate/libdeflate/common/compiler_msc.h +0 -95
  20. data/ext/libdeflate/libdeflate/lib/adler32.c +0 -213
  21. data/ext/libdeflate/libdeflate/lib/adler32_impl.h +0 -281
  22. data/ext/libdeflate/libdeflate/lib/aligned_malloc.c +0 -57
  23. data/ext/libdeflate/libdeflate/lib/aligned_malloc.h +0 -13
  24. data/ext/libdeflate/libdeflate/lib/bt_matchfinder.h +0 -357
  25. data/ext/libdeflate/libdeflate/lib/crc32.c +0 -368
  26. data/ext/libdeflate/libdeflate/lib/crc32_impl.h +0 -286
  27. data/ext/libdeflate/libdeflate/lib/crc32_table.h +0 -526
  28. data/ext/libdeflate/libdeflate/lib/decompress_impl.h +0 -404
  29. data/ext/libdeflate/libdeflate/lib/deflate_compress.c +0 -2817
  30. data/ext/libdeflate/libdeflate/lib/deflate_compress.h +0 -14
  31. data/ext/libdeflate/libdeflate/lib/deflate_constants.h +0 -66
  32. data/ext/libdeflate/libdeflate/lib/deflate_decompress.c +0 -889
  33. data/ext/libdeflate/libdeflate/lib/gzip_compress.c +0 -95
  34. data/ext/libdeflate/libdeflate/lib/gzip_constants.h +0 -45
  35. data/ext/libdeflate/libdeflate/lib/gzip_decompress.c +0 -130
  36. data/ext/libdeflate/libdeflate/lib/hc_matchfinder.h +0 -405
  37. data/ext/libdeflate/libdeflate/lib/lib_common.h +0 -35
  38. data/ext/libdeflate/libdeflate/lib/matchfinder_avx2.h +0 -53
  39. data/ext/libdeflate/libdeflate/lib/matchfinder_common.h +0 -205
  40. data/ext/libdeflate/libdeflate/lib/matchfinder_neon.h +0 -61
  41. data/ext/libdeflate/libdeflate/lib/matchfinder_sse2.h +0 -53
  42. data/ext/libdeflate/libdeflate/lib/unaligned.h +0 -202
  43. data/ext/libdeflate/libdeflate/lib/x86_cpu_features.c +0 -169
  44. data/ext/libdeflate/libdeflate/lib/x86_cpu_features.h +0 -48
  45. data/ext/libdeflate/libdeflate/lib/zlib_compress.c +0 -87
  46. data/ext/libdeflate/libdeflate/lib/zlib_constants.h +0 -21
  47. data/ext/libdeflate/libdeflate/lib/zlib_decompress.c +0 -91
  48. data/ext/libdeflate/libdeflate/libdeflate.h +0 -274
  49. data/ext/libdeflate/libdeflate/programs/benchmark.c +0 -558
  50. data/ext/libdeflate/libdeflate/programs/checksum.c +0 -197
  51. data/ext/libdeflate/libdeflate/programs/detect.sh +0 -62
  52. data/ext/libdeflate/libdeflate/programs/gzip.c +0 -603
  53. data/ext/libdeflate/libdeflate/programs/prog_util.c +0 -530
  54. data/ext/libdeflate/libdeflate/programs/prog_util.h +0 -162
  55. data/ext/libdeflate/libdeflate/programs/test_checksums.c +0 -135
  56. data/ext/libdeflate/libdeflate/programs/tgetopt.c +0 -118
  57. data/ext/libdeflate/libdeflate/tools/afl-fuzz/Makefile +0 -12
  58. data/ext/libdeflate/libdeflate/tools/afl-fuzz/deflate_compress/fuzz.c +0 -40
  59. data/ext/libdeflate/libdeflate/tools/afl-fuzz/deflate_compress/inputs/0 +0 -0
  60. data/ext/libdeflate/libdeflate/tools/afl-fuzz/deflate_decompress/fuzz.c +0 -28
  61. data/ext/libdeflate/libdeflate/tools/afl-fuzz/deflate_decompress/inputs/0 +0 -3
  62. data/ext/libdeflate/libdeflate/tools/afl-fuzz/gzip_decompress/fuzz.c +0 -28
  63. data/ext/libdeflate/libdeflate/tools/afl-fuzz/gzip_decompress/inputs/0 +0 -0
  64. data/ext/libdeflate/libdeflate/tools/afl-fuzz/prepare_for_fuzz.sh +0 -14
  65. data/ext/libdeflate/libdeflate/tools/afl-fuzz/zlib_decompress/fuzz.c +0 -28
  66. data/ext/libdeflate/libdeflate/tools/afl-fuzz/zlib_decompress/inputs/0 +0 -3
  67. data/ext/libdeflate/libdeflate/tools/android_build.sh +0 -104
  68. data/ext/libdeflate/libdeflate/tools/checksum_benchmarks.sh +0 -76
  69. data/ext/libdeflate/libdeflate/tools/exec_tests.sh +0 -30
  70. data/ext/libdeflate/libdeflate/tools/gen_crc32_multipliers.c +0 -108
  71. data/ext/libdeflate/libdeflate/tools/gen_crc32_table.c +0 -100
  72. data/ext/libdeflate/libdeflate/tools/gzip_tests.sh +0 -412
  73. data/ext/libdeflate/libdeflate/tools/make-windows-releases +0 -21
  74. data/ext/libdeflate/libdeflate/tools/mips_build.sh +0 -9
  75. data/ext/libdeflate/libdeflate/tools/msc_test.bat +0 -3
  76. data/ext/libdeflate/libdeflate/tools/pgo_build.sh +0 -23
  77. data/ext/libdeflate/libdeflate/tools/produce_gzip_benchmark_table.sh +0 -37
  78. data/ext/libdeflate/libdeflate/tools/run_tests.sh +0 -305
  79. data/ext/libdeflate/libdeflate/tools/windows_build.sh +0 -10
@@ -1,135 +0,0 @@
1
- /*
2
- * test_checksums.c
3
- *
4
- * Verify that libdeflate's Adler-32 and CRC-32 functions produce the same
5
- * results as their zlib equivalents.
6
- */
7
-
8
- #include <time.h>
9
- #include <zlib.h>
10
-
11
- #include "prog_util.h"
12
-
13
- static unsigned int rng_seed;
14
-
15
- static void
16
- assertion_failed(const char *file, int line)
17
- {
18
- fprintf(stderr, "Assertion failed at %s:%d\n", file, line);
19
- fprintf(stderr, "RNG seed was %u\n", rng_seed);
20
- abort();
21
- }
22
-
23
- #define ASSERT(expr) if (!(expr)) assertion_failed(__FILE__, __LINE__);
24
-
25
- typedef u32 (*cksum_fn_t)(u32, const void *, size_t);
26
-
27
- static u32
28
- zlib_adler32(u32 adler, const void *buf, size_t len)
29
- {
30
- return adler32(adler, buf, len);
31
- }
32
-
33
- static u32
34
- zlib_crc32(u32 crc, const void *buf, size_t len)
35
- {
36
- return crc32(crc, buf, len);
37
- }
38
-
39
- static u32
40
- select_initial_crc(void)
41
- {
42
- if (rand() & 1)
43
- return 0;
44
- return ((u32)rand() << 16) | rand();
45
- }
46
-
47
- static u32
48
- select_initial_adler(void)
49
- {
50
- if (rand() & 1)
51
- return 1;
52
- return ((u32)(rand() % 65521) << 16) | (rand() % 65521);
53
- }
54
-
55
- static void
56
- test_initial_values(cksum_fn_t cksum, u32 expected)
57
- {
58
- ASSERT(cksum(0, NULL, 0) == expected);
59
- if (cksum != zlib_adler32) /* broken */
60
- ASSERT(cksum(0, NULL, 1) == expected);
61
- ASSERT(cksum(0, NULL, 1234) == expected);
62
- ASSERT(cksum(1234, NULL, 0) == expected);
63
- ASSERT(cksum(1234, NULL, 1234) == expected);
64
- }
65
-
66
- static void
67
- test_multipart(const u8 *buffer, unsigned size, const char *name,
68
- cksum_fn_t cksum, u32 v, u32 expected)
69
- {
70
- unsigned division = (size != 0) ? rand() % size : 0;
71
- v = cksum(v, buffer, division);
72
- v = cksum(v, buffer + division, size - division);
73
- if (v != expected) {
74
- fprintf(stderr, "%s checksum failed multipart test\n", name);
75
- ASSERT(0);
76
- }
77
- }
78
-
79
- static void
80
- test_checksums(const void *buffer, unsigned size, const char *name,
81
- cksum_fn_t cksum1, cksum_fn_t cksum2, u32 initial_value)
82
- {
83
- u32 v1 = cksum1(initial_value, buffer, size);
84
- u32 v2 = cksum2(initial_value, buffer, size);
85
-
86
- if (v1 != v2) {
87
- fprintf(stderr, "%s checksum mismatch\n", name);
88
- fprintf(stderr, "initial_value=0x%08"PRIx32", buffer=%p, "
89
- "contents ", initial_value, buffer);
90
- for (unsigned i = 0; i < size; i++)
91
- fprintf(stderr, "%02x", ((const u8 *)buffer)[i]);
92
- fprintf(stderr, "\n");
93
- ASSERT(0);
94
- }
95
-
96
- if ((rand() & 15) == 0) {
97
- test_multipart(buffer, size, name, cksum1, initial_value, v1);
98
- test_multipart(buffer, size, name, cksum2, initial_value, v1);
99
- }
100
- }
101
-
102
- int
103
- tmain(int argc, tchar *argv[])
104
- {
105
- u8 buffer[256];
106
-
107
- rng_seed = time(NULL);
108
- srand(rng_seed);
109
-
110
- test_initial_values(libdeflate_adler32, 1);
111
- test_initial_values(zlib_adler32, 1);
112
- test_initial_values(libdeflate_crc32, 0);
113
- test_initial_values(zlib_crc32, 0);
114
-
115
- for (uint32_t i = 0; i < 50000; i++) {
116
- /* test different buffer sizes and alignments */
117
- int start = rand() % sizeof(buffer);
118
- int len = rand() % (sizeof(buffer) - start);
119
-
120
- for (int i = start; i < start + len; i++)
121
- buffer[i] = rand();
122
-
123
- test_checksums(&buffer[start], len, "Adler-32",
124
- libdeflate_adler32, zlib_adler32,
125
- select_initial_adler());
126
-
127
- test_checksums(&buffer[start], len, "CRC-32",
128
- libdeflate_crc32, zlib_crc32,
129
- select_initial_crc());
130
- }
131
-
132
- printf("Adler-32 and CRC-32 checksum tests passed!\n");
133
-
134
- return 0;
135
- }
@@ -1,118 +0,0 @@
1
- /*
2
- * tgetopt.c - portable replacement for GNU getopt()
3
- *
4
- * Copyright 2016 Eric Biggers
5
- *
6
- * Permission is hereby granted, free of charge, to any person
7
- * obtaining a copy of this software and associated documentation
8
- * files (the "Software"), to deal in the Software without
9
- * restriction, including without limitation the rights to use,
10
- * copy, modify, merge, publish, distribute, sublicense, and/or sell
11
- * copies of the Software, and to permit persons to whom the
12
- * Software is furnished to do so, subject to the following
13
- * conditions:
14
- *
15
- * The above copyright notice and this permission notice shall be
16
- * included in all copies or substantial portions of the Software.
17
- *
18
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
20
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
22
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
23
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
24
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
25
- * OTHER DEALINGS IN THE SOFTWARE.
26
- */
27
-
28
- #include "prog_util.h"
29
-
30
- tchar *toptarg;
31
- int toptind = 1, topterr = 1, toptopt;
32
-
33
- /*
34
- * This is a simple implementation of getopt(). It can be compiled with either
35
- * 'char' or 'wchar_t' as the character type.
36
- *
37
- * Do *not* use this implementation if you need any of the following features,
38
- * as they are not supported:
39
- * - Long options
40
- * - Option-related arguments retained in argv, not nulled out
41
- * - '+' and '-' characters in optstring
42
- */
43
- int
44
- tgetopt(int argc, tchar *argv[], const tchar *optstring)
45
- {
46
- static tchar empty[1];
47
- static tchar *nextchar;
48
- static bool done;
49
-
50
- if (toptind == 1) {
51
- /* Starting to scan a new argument vector */
52
- nextchar = NULL;
53
- done = false;
54
- }
55
-
56
- while (!done && (nextchar != NULL || toptind < argc)) {
57
- if (nextchar == NULL) {
58
- /* Scanning a new argument */
59
- tchar *arg = argv[toptind++];
60
- if (arg[0] == '-' && arg[1] != '\0') {
61
- if (arg[1] == '-' && arg[2] == '\0') {
62
- /* All args after "--" are nonoptions */
63
- argv[toptind - 1] = NULL;
64
- done = true;
65
- } else {
66
- /* Start of short option characters */
67
- nextchar = &arg[1];
68
- }
69
- }
70
- } else {
71
- /* More short options in previous arg */
72
- tchar opt = *nextchar;
73
- tchar *p = tstrchr(optstring, opt);
74
- if (p == NULL) {
75
- if (topterr)
76
- msg("invalid option -- '%"TC"'", opt);
77
- toptopt = opt;
78
- return '?';
79
- }
80
- /* 'opt' is a valid short option character */
81
- nextchar++;
82
- toptarg = NULL;
83
- if (*(p + 1) == ':') {
84
- /* 'opt' can take an argument */
85
- if (*nextchar != '\0') {
86
- /* Optarg is in same argv argument */
87
- toptarg = nextchar;
88
- nextchar = empty;
89
- } else if (toptind < argc && *(p + 2) != ':') {
90
- /* Optarg is next argv argument */
91
- argv[toptind - 1] = NULL;
92
- toptarg = argv[toptind++];
93
- } else if (*(p + 2) != ':') {
94
- if (topterr && *optstring != ':') {
95
- msg("option requires an "
96
- "argument -- '%"TC"'", opt);
97
- }
98
- toptopt = opt;
99
- opt = (*optstring == ':') ? ':' : '?';
100
- }
101
- }
102
- if (*nextchar == '\0') {
103
- argv[toptind - 1] = NULL;
104
- nextchar = NULL;
105
- }
106
- return opt;
107
- }
108
- }
109
-
110
- /* Done scanning. Move all nonoptions to the end, set optind to the
111
- * index of the first nonoption, and return -1. */
112
- toptind = argc;
113
- while (--argc > 0)
114
- if (argv[argc] != NULL)
115
- argv[--toptind] = argv[argc];
116
- done = true;
117
- return -1;
118
- }
@@ -1,12 +0,0 @@
1
- SRC := $(wildcard */*.c)
2
- EXE := $(SRC:.c=)
3
-
4
- CFLAGS := -O2 -s
5
- LDLIBS := -ldeflate
6
- LDFLAGS := -L../..
7
- CPPFLAGS := -I../..
8
-
9
- all:$(EXE)
10
-
11
- clean:
12
- rm -f $(EXE)
@@ -1,40 +0,0 @@
1
- #include <assert.h>
2
- #include <libdeflate.h>
3
- #include <string.h>
4
- #include <fcntl.h>
5
- #include <unistd.h>
6
- #include <sys/stat.h>
7
-
8
- int main(int argc, char **argv)
9
- {
10
- struct libdeflate_decompressor *d;
11
- struct libdeflate_compressor *c;
12
- int ret;
13
- int fd = open(argv[1], O_RDONLY);
14
- struct stat stbuf;
15
- assert(fd >= 0);
16
- ret = fstat(fd, &stbuf);
17
- assert(!ret);
18
-
19
- char in[stbuf.st_size];
20
- ret = read(fd, in, sizeof in);
21
- assert(ret == sizeof in);
22
-
23
- c = libdeflate_alloc_compressor(6);
24
- d = libdeflate_alloc_decompressor();
25
-
26
- char out[sizeof(in)];
27
- char checkarray[sizeof(in)];
28
-
29
- size_t csize = libdeflate_deflate_compress(c, in,sizeof in, out, sizeof out);
30
- if (csize) {
31
- enum libdeflate_result res;
32
- res = libdeflate_deflate_decompress(d, out, csize, checkarray, sizeof in, NULL);
33
- assert(!res);
34
- assert(!memcmp(in, checkarray, sizeof in));
35
- }
36
-
37
- libdeflate_free_compressor(c);
38
- libdeflate_free_decompressor(d);
39
- return 0;
40
- }
@@ -1,28 +0,0 @@
1
- #include <assert.h>
2
- #include <libdeflate.h>
3
- #include <fcntl.h>
4
- #include <unistd.h>
5
- #include <sys/stat.h>
6
-
7
- int main(int argc, char **argv)
8
- {
9
- struct libdeflate_decompressor *d;
10
- int ret;
11
- int fd = open(argv[1], O_RDONLY);
12
- struct stat stbuf;
13
- assert(fd >= 0);
14
- ret = fstat(fd, &stbuf);
15
- assert(!ret);
16
-
17
- char in[stbuf.st_size];
18
- ret = read(fd, in, sizeof in);
19
- assert(ret == sizeof in);
20
-
21
- char out[sizeof(in) * 3];
22
-
23
- d = libdeflate_alloc_decompressor();
24
-
25
- libdeflate_deflate_decompress(d, in, sizeof in, out, sizeof out, NULL);
26
- libdeflate_free_decompressor(d);
27
- return 0;
28
- }
@@ -1,3 +0,0 @@
1
- u�1
2
- �@Eg�Bl5
3
- ��V���6j��X{�i=���l=����l�����?t���D
@@ -1,28 +0,0 @@
1
- #include <assert.h>
2
- #include <libdeflate.h>
3
- #include <fcntl.h>
4
- #include <unistd.h>
5
- #include <sys/stat.h>
6
-
7
- int main(int argc, char **argv)
8
- {
9
- struct libdeflate_decompressor *d;
10
- int ret;
11
- int fd = open(argv[1], O_RDONLY);
12
- struct stat stbuf;
13
- assert(fd >= 0);
14
- ret = fstat(fd, &stbuf);
15
- assert(!ret);
16
-
17
- char in[stbuf.st_size];
18
- ret = read(fd, in, sizeof in);
19
- assert(ret == sizeof in);
20
-
21
- char out[sizeof(in) * 3];
22
-
23
- d = libdeflate_alloc_decompressor();
24
-
25
- libdeflate_gzip_decompress(d, in, sizeof in, out, sizeof out, NULL);
26
- libdeflate_free_decompressor(d);
27
- return 0;
28
- }
@@ -1,14 +0,0 @@
1
- #!/bin/sh
2
-
3
- set -e
4
-
5
- make -C ../../ clean
6
- make clean
7
- AFL_HARDEN=1 make CC=afl-gcc -C ../../
8
- AFL_HARDEN=1 make CC=afl-gcc
9
-
10
- for dir in $(find . -mindepth 1 -maxdepth 1 -type d); do
11
- rm -rf /tmp/$dir
12
- cp -va $dir /tmp/$dir
13
- mkdir -p /tmp/$dir/outputs
14
- done
@@ -1,28 +0,0 @@
1
- #include <assert.h>
2
- #include <libdeflate.h>
3
- #include <fcntl.h>
4
- #include <unistd.h>
5
- #include <sys/stat.h>
6
-
7
- int main(int argc, char **argv)
8
- {
9
- struct libdeflate_decompressor *d;
10
- int ret;
11
- int fd = open(argv[1], O_RDONLY);
12
- struct stat stbuf;
13
- assert(fd >= 0);
14
- ret = fstat(fd, &stbuf);
15
- assert(!ret);
16
-
17
- char in[stbuf.st_size];
18
- ret = read(fd, in, sizeof in);
19
- assert(ret == sizeof in);
20
-
21
- char out[sizeof(in) * 3];
22
-
23
- d = libdeflate_alloc_decompressor();
24
-
25
- libdeflate_zlib_decompress(d, in, sizeof in, out, sizeof out, NULL);
26
- libdeflate_free_decompressor(d);
27
- return 0;
28
- }
@@ -1,3 +0,0 @@
1
- x�u�1
2
- �@Eg�Bl5
3
- ��V���6j��X{�i=���l=����l�����?t���D
@@ -1,104 +0,0 @@
1
- #!/bin/bash
2
-
3
- set -eu
4
-
5
- ARCH="arm32"
6
- COMPILER="gcc"
7
- NDKDIR="/opt/android-ndk"
8
- DISABLE_NEON=
9
-
10
- usage() {
11
- cat << EOF
12
- Usage: $0 [OPTION]... -- [BENCHMARK_PROGRAM_ARG]...
13
- Build the libdeflate test programs for Android
14
-
15
- --arch=ARCH Architecture: arm32|arm64 (default: $ARCH)
16
- --compiler=COMPILER Compiler: gcc|clang (default: $COMPILER)
17
- --ndkdir=NDKDIR Android NDK directory (default: $NDKDIR)
18
- --disable-neon Disable NEON instructions
19
- EOF
20
- }
21
-
22
- if ! options=$(getopt -o '' \
23
- -l 'arch:,compiler:,ndkdir:,disable-neon,help' -- "$@"); then
24
- usage
25
- exit 1
26
- fi
27
-
28
- eval set -- "$options"
29
-
30
- while [ $# -gt 0 ]; do
31
- case "$1" in
32
- --arch)
33
- ARCH="$2"
34
- shift
35
- ;;
36
- --compiler)
37
- COMPILER="$2"
38
- shift
39
- ;;
40
- --ndkdir)
41
- NDKDIR="$2"
42
- shift
43
- ;;
44
- --disable-neon)
45
- DISABLE_NEON=1
46
- ;;
47
- --help)
48
- usage
49
- exit 0
50
- ;;
51
- --)
52
- shift
53
- break
54
- ;;
55
- *)
56
- echo 1>&2 "Unknown option \"$1\""
57
- usage
58
- exit 1
59
- esac
60
- shift
61
- done
62
-
63
- CFLAGS="-fPIC -pie"
64
-
65
- case "$ARCH" in
66
- arm|arm32|aarch32)
67
- GCC_TOOLCHAIN="arm-linux-androideabi-4.9"
68
- CLANG_TARGET="armv7-none-linux-androideabi"
69
- if [ -n "$DISABLE_NEON" ]; then
70
- CFLAGS+=" -march=armv6"
71
- else
72
- CFLAGS+=" -march=armv7-a -mfpu=neon -mfloat-abi=softfp"
73
- fi
74
- CFLAGS+=" --sysroot=\"$NDKDIR/platforms/android-12/arch-arm\""
75
- ;;
76
- arm64|aarch64)
77
- GCC_TOOLCHAIN="aarch64-linux-android-4.9"
78
- CLANG_TARGET="aarch64-none-linux-android"
79
- CFLAGS+=" --sysroot=\"$NDKDIR/platforms/android-21/arch-arm64\""
80
- ;;
81
- *)
82
- echo 1>&2 "Unknown architecture: \"$ARCH\""
83
- usage
84
- exit 1
85
- esac
86
-
87
- case "$COMPILER" in
88
- gcc)
89
- CC="\"$NDKDIR/toolchains/$GCC_TOOLCHAIN/prebuilt/linux-x86_64/bin/${GCC_TOOLCHAIN%-*}-gcc\""
90
- CFLAGS+=" -pie"
91
- ;;
92
- clang)
93
- CC="\"$NDKDIR/toolchains/llvm/prebuilt/linux-x86_64/bin/clang\""
94
- CFLAGS+=" -target \"$CLANG_TARGET\""
95
- CFLAGS+=" -gcc-toolchain \"$NDKDIR/toolchains/$GCC_TOOLCHAIN/prebuilt/linux-x86_64\""
96
- ;;
97
- *)
98
- echo 1>&2 "Unknown compiler: \"$COMPILER\""
99
- usage
100
- exit 1
101
- esac
102
-
103
- make -j$(grep -c processor /proc/cpuinfo) test_programs \
104
- CC="$CC" CFLAGS="$CFLAGS"
@@ -1,76 +0,0 @@
1
- #!/bin/bash
2
-
3
- set -eu
4
-
5
- if [ $# -eq 0 ]; then
6
- FILE="$HOME/data/silesia"
7
- echo "Using default FILE: $FILE"
8
- echo
9
- elif [ $# -eq 1 ]; then
10
- FILE="$1"
11
- else
12
- echo "Usage: $0 [FILE]" 1>&2
13
- exit 1
14
- fi
15
-
16
-
17
- if ! grep -q '\<sse2\>' /proc/cpuinfo; then
18
- echo "This script must be run on an x86 CPU" 1>&2
19
- exit 1
20
- fi
21
-
22
- if [ -n "$(git status -s | egrep 'adler32.c|crc32.c')" ]; then
23
- echo "This script will overwrite adler32.c and crc32.c, which" \
24
- "have uncommitted changes. Refusing to run." 1>&2
25
- exit 1
26
- fi
27
-
28
- do_benchmark() {
29
- method="$1"
30
- shift
31
- speed=$(./checksum "$@" -t "$FILE" | \
32
- grep -o '[0-9]\+ MB/s' | grep -o '[0-9]\+')
33
- printf "%-36s%-10s\n" "$method" "$speed"
34
- }
35
-
36
- sort_by_speed() {
37
- awk '{print $NF, $0}' | sort -nr | cut -f2- -d' '
38
- }
39
-
40
- cat << EOF
41
- Method Speed (MB/s)
42
- ------ ------------
43
- EOF
44
-
45
- # CRC-32
46
- (
47
- if grep -q '\<pclmulqdq\>' /proc/cpuinfo; then
48
- make checksum > /dev/null
49
- do_benchmark "CRC-32 (libdeflate, PCLMUL/AVX)"
50
- sed -i '/^\#if NEED_PCLMUL_IMPL && !defined(__AVX__)/,/^\#endif$/d' lib/crc32.c
51
- make checksum > /dev/null
52
- do_benchmark "CRC-32 (libdeflate, PCLMUL)"
53
- fi
54
- sed -i '/^#if defined(__PCLMUL__)/,/^\#endif$/d' lib/crc32.c
55
- make checksum > /dev/null
56
- do_benchmark "CRC-32 (libdeflate, generic)"
57
- git checkout -f lib/crc32.c > /dev/null
58
- do_benchmark "CRC-32 (zlib)" -Z
59
- ) | sort_by_speed
60
-
61
- # Adler-32
62
- echo
63
- (
64
- if grep -q '\<avx2\>' /proc/cpuinfo; then
65
- make checksum > /dev/null
66
- do_benchmark "Adler-32 (libdeflate, AVX2)" -A
67
- fi
68
- sed -i '/^#if defined(__AVX2__)/,/^\#endif$/d' lib/adler32.c
69
- make checksum > /dev/null
70
- do_benchmark "Adler-32 (libdeflate, SSE2)" -A
71
- sed -i '/^#ifdef __SSE2__/,/^\#endif$/d' lib/adler32.c
72
- make checksum > /dev/null
73
- do_benchmark "Adler-32 (libdeflate, generic)" -A
74
- git checkout -f lib/adler32.c > /dev/null
75
- do_benchmark "Adler-32 (zlib)" -A -Z
76
- ) | sort_by_speed
@@ -1,30 +0,0 @@
1
- #
2
- # Helper script used by run_tests.sh, not intended to be run directly
3
- #
4
-
5
- set -eu
6
-
7
- run_cmd() {
8
- echo "$WRAPPER $@"
9
- $WRAPPER "$@" > /dev/null
10
- }
11
-
12
- run_cmd ./test_checksums
13
-
14
- for format in '' '-g' '-z'; do
15
- for ref_impl in '' '-Y' '-Z'; do
16
- run_cmd ./benchmark $format $ref_impl $SMOKEDATA
17
- done
18
- done
19
- for level in 1 3 7 9; do
20
- for ref_impl in '' '-Y'; do
21
- run_cmd ./benchmark -$level $ref_impl $SMOKEDATA
22
- done
23
- done
24
- for level in 1 3 7 9 12; do
25
- for ref_impl in '' '-Z'; do
26
- run_cmd ./benchmark -$level $ref_impl $SMOKEDATA
27
- done
28
- done
29
-
30
- echo "exec_tests finished successfully" # Needed for 'adb shell'