multi_compress 0.3.2 → 0.3.3
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -3
- data/GET_STARTED.md +3 -3
- data/README.md +75 -66
- data/THIRD_PARTY_NOTICES.md +24 -0
- data/ext/multi_compress/brotli_dec_static_init.c +3 -0
- data/ext/multi_compress/brotli_enc_static_init.c +3 -0
- data/ext/multi_compress/extconf.rb +22 -1
- data/ext/multi_compress/vendor/.vendored +2 -2
- data/ext/multi_compress/vendor/brotli/LICENSE +19 -0
- data/ext/multi_compress/vendor/brotli/c/common/constants.c +7 -7
- data/ext/multi_compress/vendor/brotli/c/common/constants.h +2 -5
- data/ext/multi_compress/vendor/brotli/c/common/context.c +2 -2
- data/ext/multi_compress/vendor/brotli/c/common/context.h +1 -2
- data/ext/multi_compress/vendor/brotli/c/common/dictionary.c +4 -5856
- data/ext/multi_compress/vendor/brotli/c/common/dictionary.h +1 -2
- data/ext/multi_compress/vendor/brotli/c/common/dictionary_inc.h +5847 -0
- data/ext/multi_compress/vendor/brotli/c/common/platform.c +0 -4
- data/ext/multi_compress/vendor/brotli/c/common/platform.h +182 -43
- data/ext/multi_compress/vendor/brotli/c/common/shared_dictionary.c +3 -7
- data/ext/multi_compress/vendor/brotli/c/common/shared_dictionary_internal.h +1 -1
- data/ext/multi_compress/vendor/brotli/c/common/static_init.h +56 -0
- data/ext/multi_compress/vendor/brotli/c/common/transform.c +6 -4
- data/ext/multi_compress/vendor/brotli/c/common/transform.h +1 -2
- data/ext/multi_compress/vendor/brotli/c/common/version.h +3 -3
- data/ext/multi_compress/vendor/brotli/c/dec/bit_reader.c +2 -3
- data/ext/multi_compress/vendor/brotli/c/dec/bit_reader.h +0 -4
- data/ext/multi_compress/vendor/brotli/c/dec/decode.c +128 -39
- data/ext/multi_compress/vendor/brotli/c/dec/huffman.c +2 -5
- data/ext/multi_compress/vendor/brotli/c/dec/huffman.h +0 -2
- data/ext/multi_compress/vendor/brotli/c/dec/prefix.c +67 -0
- data/ext/multi_compress/vendor/brotli/c/dec/prefix.h +18 -708
- data/ext/multi_compress/vendor/brotli/c/dec/prefix_inc.h +707 -0
- data/ext/multi_compress/vendor/brotli/c/dec/state.c +18 -15
- data/ext/multi_compress/vendor/brotli/c/dec/state.h +2 -6
- data/ext/multi_compress/vendor/brotli/c/dec/static_init.c +53 -0
- data/ext/multi_compress/vendor/brotli/c/dec/static_init.h +30 -0
- data/ext/multi_compress/vendor/brotli/c/enc/backward_references.c +32 -8
- data/ext/multi_compress/vendor/brotli/c/enc/backward_references.h +1 -5
- data/ext/multi_compress/vendor/brotli/c/enc/backward_references_hq.c +15 -15
- data/ext/multi_compress/vendor/brotli/c/enc/backward_references_hq.h +1 -5
- data/ext/multi_compress/vendor/brotli/c/enc/bit_cost.c +28 -4
- data/ext/multi_compress/vendor/brotli/c/enc/bit_cost.h +8 -40
- data/ext/multi_compress/vendor/brotli/c/enc/bit_cost_inc.h +1 -1
- data/ext/multi_compress/vendor/brotli/c/enc/block_splitter.c +9 -12
- data/ext/multi_compress/vendor/brotli/c/enc/block_splitter.h +0 -3
- data/ext/multi_compress/vendor/brotli/c/enc/block_splitter_inc.h +14 -8
- data/ext/multi_compress/vendor/brotli/c/enc/brotli_bit_stream.c +10 -9
- data/ext/multi_compress/vendor/brotli/c/enc/brotli_bit_stream.h +0 -6
- data/ext/multi_compress/vendor/brotli/c/enc/cluster.c +0 -2
- data/ext/multi_compress/vendor/brotli/c/enc/cluster.h +0 -2
- data/ext/multi_compress/vendor/brotli/c/enc/command.c +1 -1
- data/ext/multi_compress/vendor/brotli/c/enc/command.h +8 -10
- data/ext/multi_compress/vendor/brotli/c/enc/compound_dictionary.c +3 -5
- data/ext/multi_compress/vendor/brotli/c/enc/compound_dictionary.h +1 -4
- data/ext/multi_compress/vendor/brotli/c/enc/compress_fragment.c +3 -13
- data/ext/multi_compress/vendor/brotli/c/enc/compress_fragment.h +0 -2
- data/ext/multi_compress/vendor/brotli/c/enc/compress_fragment_two_pass.c +5 -15
- data/ext/multi_compress/vendor/brotli/c/enc/compress_fragment_two_pass.h +0 -2
- data/ext/multi_compress/vendor/brotli/c/enc/dictionary_hash.c +127 -1830
- data/ext/multi_compress/vendor/brotli/c/enc/dictionary_hash.h +23 -3
- data/ext/multi_compress/vendor/brotli/c/enc/dictionary_hash_inc.h +1829 -0
- data/ext/multi_compress/vendor/brotli/c/enc/encode.c +77 -52
- data/ext/multi_compress/vendor/brotli/c/enc/encoder_dict.c +9 -7
- data/ext/multi_compress/vendor/brotli/c/enc/encoder_dict.h +2 -4
- data/ext/multi_compress/vendor/brotli/c/enc/entropy_encode.c +3 -6
- data/ext/multi_compress/vendor/brotli/c/enc/entropy_encode.h +2 -4
- data/ext/multi_compress/vendor/brotli/c/enc/entropy_encode_static.h +18 -12
- data/ext/multi_compress/vendor/brotli/c/enc/fast_log.c +1 -1
- data/ext/multi_compress/vendor/brotli/c/enc/fast_log.h +2 -3
- data/ext/multi_compress/vendor/brotli/c/enc/find_match_length.h +0 -2
- data/ext/multi_compress/vendor/brotli/c/enc/hash.h +38 -31
- data/ext/multi_compress/vendor/brotli/c/enc/hash_base.h +38 -0
- data/ext/multi_compress/vendor/brotli/c/enc/hash_forgetful_chain_inc.h +11 -1
- data/ext/multi_compress/vendor/brotli/c/enc/hash_longest_match64_inc.h +24 -7
- data/ext/multi_compress/vendor/brotli/c/enc/hash_longest_match64_simd_inc.h +304 -0
- data/ext/multi_compress/vendor/brotli/c/enc/hash_longest_match_inc.h +30 -11
- data/ext/multi_compress/vendor/brotli/c/enc/hash_longest_match_quickly_inc.h +4 -0
- data/ext/multi_compress/vendor/brotli/c/enc/hash_longest_match_simd_inc.h +278 -0
- data/ext/multi_compress/vendor/brotli/c/enc/histogram.c +1 -0
- data/ext/multi_compress/vendor/brotli/c/enc/histogram.h +0 -4
- data/ext/multi_compress/vendor/brotli/c/enc/literal_cost.c +4 -6
- data/ext/multi_compress/vendor/brotli/c/enc/literal_cost.h +0 -2
- data/ext/multi_compress/vendor/brotli/c/enc/matching_tag_mask.h +69 -0
- data/ext/multi_compress/vendor/brotli/c/enc/memory.c +0 -5
- data/ext/multi_compress/vendor/brotli/c/enc/memory.h +0 -4
- data/ext/multi_compress/vendor/brotli/c/enc/metablock.c +7 -9
- data/ext/multi_compress/vendor/brotli/c/enc/metablock.h +3 -3
- data/ext/multi_compress/vendor/brotli/c/enc/metablock_inc.h +4 -4
- data/ext/multi_compress/vendor/brotli/c/enc/params.h +0 -1
- data/ext/multi_compress/vendor/brotli/c/enc/prefix.h +0 -2
- data/ext/multi_compress/vendor/brotli/c/enc/quality.h +17 -10
- data/ext/multi_compress/vendor/brotli/c/enc/ringbuffer.h +1 -4
- data/ext/multi_compress/vendor/brotli/c/enc/state.h +2 -2
- data/ext/multi_compress/vendor/brotli/c/enc/static_dict.c +5 -11
- data/ext/multi_compress/vendor/brotli/c/enc/static_dict.h +1 -3
- data/ext/multi_compress/vendor/brotli/c/enc/static_dict_lut.c +224 -0
- data/ext/multi_compress/vendor/brotli/c/enc/static_dict_lut.h +20 -5837
- data/ext/multi_compress/vendor/brotli/c/enc/static_dict_lut_inc.h +5830 -0
- data/ext/multi_compress/vendor/brotli/c/enc/static_init.c +59 -0
- data/ext/multi_compress/vendor/brotli/c/enc/static_init.h +30 -0
- data/ext/multi_compress/vendor/brotli/c/enc/static_init_lazy.cc +26 -0
- data/ext/multi_compress/vendor/brotli/c/enc/utf8_util.c +1 -1
- data/ext/multi_compress/vendor/brotli/c/enc/utf8_util.h +0 -2
- data/ext/multi_compress/vendor/brotli/c/enc/write_bits.h +0 -2
- data/ext/multi_compress/vendor/brotli/c/include/brotli/decode.h +1 -1
- data/ext/multi_compress/vendor/brotli/c/include/brotli/encode.h +5 -1
- data/ext/multi_compress/vendor/brotli/c/include/brotli/port.h +4 -7
- data/ext/multi_compress/vendor/brotli/c/include/brotli/types.h +2 -2
- data/ext/multi_compress/vendor/lz4/LICENSE +12 -0
- data/ext/multi_compress/vendor/zstd/COPYING +339 -0
- data/ext/multi_compress/vendor/zstd/LICENSE +30 -0
- data/ext/multi_compress/vendor/zstd/lib/Makefile +67 -35
- data/ext/multi_compress/vendor/zstd/lib/README.md +33 -2
- data/ext/multi_compress/vendor/zstd/lib/common/allocations.h +55 -0
- data/ext/multi_compress/vendor/zstd/lib/common/bits.h +205 -0
- data/ext/multi_compress/vendor/zstd/lib/common/bitstream.h +84 -108
- data/ext/multi_compress/vendor/zstd/lib/common/compiler.h +170 -41
- data/ext/multi_compress/vendor/zstd/lib/common/cpu.h +37 -1
- data/ext/multi_compress/vendor/zstd/lib/common/debug.c +7 -1
- data/ext/multi_compress/vendor/zstd/lib/common/debug.h +21 -21
- data/ext/multi_compress/vendor/zstd/lib/common/entropy_common.c +12 -40
- data/ext/multi_compress/vendor/zstd/lib/common/error_private.c +10 -2
- data/ext/multi_compress/vendor/zstd/lib/common/error_private.h +46 -47
- data/ext/multi_compress/vendor/zstd/lib/common/fse.h +8 -100
- data/ext/multi_compress/vendor/zstd/lib/common/fse_decompress.c +28 -116
- data/ext/multi_compress/vendor/zstd/lib/common/huf.h +79 -166
- data/ext/multi_compress/vendor/zstd/lib/common/mem.h +46 -66
- data/ext/multi_compress/vendor/zstd/lib/common/pool.c +27 -11
- data/ext/multi_compress/vendor/zstd/lib/common/pool.h +8 -11
- data/ext/multi_compress/vendor/zstd/lib/common/portability_macros.h +45 -11
- data/ext/multi_compress/vendor/zstd/lib/common/threading.c +74 -14
- data/ext/multi_compress/vendor/zstd/lib/common/threading.h +5 -18
- data/ext/multi_compress/vendor/zstd/lib/common/xxhash.c +5 -11
- data/ext/multi_compress/vendor/zstd/lib/common/xxhash.h +2411 -1003
- data/ext/multi_compress/vendor/zstd/lib/common/zstd_common.c +1 -36
- data/ext/multi_compress/vendor/zstd/lib/common/zstd_deps.h +13 -1
- data/ext/multi_compress/vendor/zstd/lib/common/zstd_internal.h +13 -182
- data/ext/multi_compress/vendor/zstd/lib/common/zstd_trace.h +6 -13
- data/ext/multi_compress/vendor/zstd/lib/compress/clevels.h +1 -1
- data/ext/multi_compress/vendor/zstd/lib/compress/fse_compress.c +15 -131
- data/ext/multi_compress/vendor/zstd/lib/compress/hist.c +11 -1
- data/ext/multi_compress/vendor/zstd/lib/compress/hist.h +8 -1
- data/ext/multi_compress/vendor/zstd/lib/compress/huf_compress.c +283 -189
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress.c +2419 -903
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_internal.h +423 -245
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_literals.c +116 -40
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_literals.h +16 -8
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_sequences.c +10 -10
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_sequences.h +8 -7
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_superblock.c +254 -139
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_compress_superblock.h +1 -1
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_cwksp.h +184 -95
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_double_fast.c +163 -81
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_double_fast.h +18 -14
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_fast.c +507 -197
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_fast.h +7 -14
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_lazy.c +579 -484
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_lazy.h +133 -65
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_ldm.c +61 -40
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_ldm.h +7 -15
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_ldm_geartab.h +1 -1
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_opt.c +352 -218
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_opt.h +37 -21
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_preSplit.c +238 -0
- data/ext/multi_compress/vendor/zstd/lib/compress/zstd_preSplit.h +33 -0
- data/ext/multi_compress/vendor/zstd/lib/compress/zstdmt_compress.c +239 -175
- data/ext/multi_compress/vendor/zstd/lib/compress/zstdmt_compress.h +5 -16
- data/ext/multi_compress/vendor/zstd/lib/decompress/huf_decompress.c +543 -488
- data/ext/multi_compress/vendor/zstd/lib/decompress/huf_decompress_amd64.S +78 -61
- data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_ddict.c +4 -4
- data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_ddict.h +1 -1
- data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_decompress.c +295 -115
- data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_decompress_block.c +430 -293
- data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_decompress_block.h +7 -2
- data/ext/multi_compress/vendor/zstd/lib/decompress/zstd_decompress_internal.h +11 -7
- data/ext/multi_compress/vendor/zstd/lib/deprecated/zbuff.h +1 -1
- data/ext/multi_compress/vendor/zstd/lib/deprecated/zbuff_common.c +1 -1
- data/ext/multi_compress/vendor/zstd/lib/deprecated/zbuff_compress.c +1 -1
- data/ext/multi_compress/vendor/zstd/lib/deprecated/zbuff_decompress.c +3 -1
- data/ext/multi_compress/vendor/zstd/lib/dictBuilder/cover.c +95 -46
- data/ext/multi_compress/vendor/zstd/lib/dictBuilder/cover.h +3 -9
- data/ext/multi_compress/vendor/zstd/lib/dictBuilder/divsufsort.h +0 -10
- data/ext/multi_compress/vendor/zstd/lib/dictBuilder/fastcover.c +4 -4
- data/ext/multi_compress/vendor/zstd/lib/dictBuilder/zdict.c +25 -97
- data/ext/multi_compress/vendor/zstd/lib/dll/example/Makefile +1 -1
- data/ext/multi_compress/vendor/zstd/lib/dll/example/README.md +1 -1
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_legacy.h +38 -1
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v01.c +19 -50
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v01.h +1 -1
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v02.c +27 -80
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v02.h +1 -1
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v03.c +28 -83
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v03.h +1 -1
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v04.c +25 -74
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v04.h +1 -1
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v05.c +31 -76
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v05.h +1 -1
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v06.c +44 -88
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v06.h +1 -1
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v07.c +33 -84
- data/ext/multi_compress/vendor/zstd/lib/legacy/zstd_v07.h +1 -1
- data/ext/multi_compress/vendor/zstd/lib/libzstd.mk +65 -33
- data/ext/multi_compress/vendor/zstd/lib/libzstd.pc.in +5 -5
- data/ext/multi_compress/vendor/zstd/lib/module.modulemap +13 -3
- data/ext/multi_compress/vendor/zstd/lib/zdict.h +65 -36
- data/ext/multi_compress/vendor/zstd/lib/zstd.h +890 -267
- data/ext/multi_compress/vendor/zstd/lib/zstd_errors.h +28 -16
- data/lib/multi_compress/version.rb +1 -1
- metadata +29 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
3
|
* All rights reserved.
|
|
4
4
|
*
|
|
5
5
|
* This source code is licensed under both the BSD-style license (found in the
|
|
@@ -10,34 +10,53 @@
|
|
|
10
10
|
|
|
11
11
|
#include "../common/portability_macros.h"
|
|
12
12
|
|
|
13
|
+
#if defined(__ELF__) && defined(__GNUC__)
|
|
13
14
|
/* Stack marking
|
|
14
15
|
* ref: https://wiki.gentoo.org/wiki/Hardened/GNU_stack_quickstart
|
|
15
16
|
*/
|
|
16
|
-
#if defined(__ELF__) && defined(__GNUC__)
|
|
17
17
|
.section .note.GNU-stack,"",%progbits
|
|
18
|
+
|
|
19
|
+
#if defined(__aarch64__)
|
|
20
|
+
/* Mark that this assembly supports BTI & PAC, because it is empty for aarch64.
|
|
21
|
+
* See: https://github.com/facebook/zstd/issues/3841
|
|
22
|
+
* See: https://gcc.godbolt.org/z/sqr5T4ffK
|
|
23
|
+
* See: https://lore.kernel.org/linux-arm-kernel/20200429211641.9279-8-broonie@kernel.org/
|
|
24
|
+
* See: https://reviews.llvm.org/D62609
|
|
25
|
+
*/
|
|
26
|
+
.pushsection .note.gnu.property, "a"
|
|
27
|
+
.p2align 3
|
|
28
|
+
.long 4 /* size of the name - "GNU\0" */
|
|
29
|
+
.long 0x10 /* size of descriptor */
|
|
30
|
+
.long 0x5 /* NT_GNU_PROPERTY_TYPE_0 */
|
|
31
|
+
.asciz "GNU"
|
|
32
|
+
.long 0xc0000000 /* pr_type - GNU_PROPERTY_AARCH64_FEATURE_1_AND */
|
|
33
|
+
.long 4 /* pr_datasz - 4 bytes */
|
|
34
|
+
.long 3 /* pr_data - GNU_PROPERTY_AARCH64_FEATURE_1_BTI | GNU_PROPERTY_AARCH64_FEATURE_1_PAC */
|
|
35
|
+
.p2align 3 /* pr_padding - bring everything to 8 byte alignment */
|
|
36
|
+
.popsection
|
|
37
|
+
#endif
|
|
38
|
+
|
|
18
39
|
#endif
|
|
19
40
|
|
|
20
41
|
#if ZSTD_ENABLE_ASM_X86_64_BMI2
|
|
21
42
|
|
|
22
43
|
/* Calling convention:
|
|
23
44
|
*
|
|
24
|
-
* %rdi contains the first argument: HUF_DecompressAsmArgs*.
|
|
45
|
+
* %rdi (or %rcx on Windows) contains the first argument: HUF_DecompressAsmArgs*.
|
|
25
46
|
* %rbp isn't maintained (no frame pointer).
|
|
26
47
|
* %rsp contains the stack pointer that grows down.
|
|
27
48
|
* No red-zone is assumed, only addresses >= %rsp are used.
|
|
28
49
|
* All register contents are preserved.
|
|
29
|
-
*
|
|
30
|
-
* TODO: Support Windows calling convention.
|
|
31
50
|
*/
|
|
32
51
|
|
|
33
|
-
ZSTD_HIDE_ASM_FUNCTION(
|
|
34
|
-
ZSTD_HIDE_ASM_FUNCTION(
|
|
35
|
-
ZSTD_HIDE_ASM_FUNCTION(
|
|
36
|
-
ZSTD_HIDE_ASM_FUNCTION(
|
|
37
|
-
.global
|
|
38
|
-
.global
|
|
39
|
-
.global
|
|
40
|
-
.global
|
|
52
|
+
ZSTD_HIDE_ASM_FUNCTION(HUF_decompress4X1_usingDTable_internal_fast_asm_loop)
|
|
53
|
+
ZSTD_HIDE_ASM_FUNCTION(HUF_decompress4X2_usingDTable_internal_fast_asm_loop)
|
|
54
|
+
ZSTD_HIDE_ASM_FUNCTION(_HUF_decompress4X2_usingDTable_internal_fast_asm_loop)
|
|
55
|
+
ZSTD_HIDE_ASM_FUNCTION(_HUF_decompress4X1_usingDTable_internal_fast_asm_loop)
|
|
56
|
+
.global HUF_decompress4X1_usingDTable_internal_fast_asm_loop
|
|
57
|
+
.global HUF_decompress4X2_usingDTable_internal_fast_asm_loop
|
|
58
|
+
.global _HUF_decompress4X1_usingDTable_internal_fast_asm_loop
|
|
59
|
+
.global _HUF_decompress4X2_usingDTable_internal_fast_asm_loop
|
|
41
60
|
.text
|
|
42
61
|
|
|
43
62
|
/* Sets up register mappings for clarity.
|
|
@@ -95,8 +114,9 @@ ZSTD_HIDE_ASM_FUNCTION(_HUF_decompress4X1_usingDTable_internal_bmi2_asm_loop)
|
|
|
95
114
|
/* Define both _HUF_* & HUF_* symbols because MacOS
|
|
96
115
|
* C symbols are prefixed with '_' & Linux symbols aren't.
|
|
97
116
|
*/
|
|
98
|
-
|
|
99
|
-
|
|
117
|
+
_HUF_decompress4X1_usingDTable_internal_fast_asm_loop:
|
|
118
|
+
HUF_decompress4X1_usingDTable_internal_fast_asm_loop:
|
|
119
|
+
ZSTD_CET_ENDBRANCH
|
|
100
120
|
/* Save all registers - even if they are callee saved for simplicity. */
|
|
101
121
|
push %rax
|
|
102
122
|
push %rbx
|
|
@@ -115,7 +135,11 @@ HUF_decompress4X1_usingDTable_internal_bmi2_asm_loop:
|
|
|
115
135
|
push %r15
|
|
116
136
|
|
|
117
137
|
/* Read HUF_DecompressAsmArgs* args from %rax */
|
|
138
|
+
#if defined(_WIN32)
|
|
139
|
+
movq %rcx, %rax
|
|
140
|
+
#else
|
|
118
141
|
movq %rdi, %rax
|
|
142
|
+
#endif
|
|
119
143
|
movq 0(%rax), %ip0
|
|
120
144
|
movq 8(%rax), %ip1
|
|
121
145
|
movq 16(%rax), %ip2
|
|
@@ -130,7 +154,7 @@ HUF_decompress4X1_usingDTable_internal_bmi2_asm_loop:
|
|
|
130
154
|
movq 88(%rax), %bits3
|
|
131
155
|
movq 96(%rax), %dtable
|
|
132
156
|
push %rax /* argument */
|
|
133
|
-
push 104(%rax) /*
|
|
157
|
+
push 104(%rax) /* ilowest */
|
|
134
158
|
push 112(%rax) /* oend */
|
|
135
159
|
push %olimit /* olimit space */
|
|
136
160
|
|
|
@@ -155,11 +179,11 @@ HUF_decompress4X1_usingDTable_internal_bmi2_asm_loop:
|
|
|
155
179
|
shrq $2, %r15
|
|
156
180
|
|
|
157
181
|
movq %ip0, %rax /* rax = ip0 */
|
|
158
|
-
movq 40(%rsp), %rdx /* rdx =
|
|
159
|
-
subq %rdx, %rax /* rax = ip0 -
|
|
160
|
-
movq %rax, %rbx /* rbx = ip0 -
|
|
182
|
+
movq 40(%rsp), %rdx /* rdx = ilowest */
|
|
183
|
+
subq %rdx, %rax /* rax = ip0 - ilowest */
|
|
184
|
+
movq %rax, %rbx /* rbx = ip0 - ilowest */
|
|
161
185
|
|
|
162
|
-
/* rdx = (ip0 -
|
|
186
|
+
/* rdx = (ip0 - ilowest) / 7 */
|
|
163
187
|
movabsq $2635249153387078803, %rdx
|
|
164
188
|
mulq %rdx
|
|
165
189
|
subq %rdx, %rbx
|
|
@@ -182,9 +206,8 @@ HUF_decompress4X1_usingDTable_internal_bmi2_asm_loop:
|
|
|
182
206
|
|
|
183
207
|
/* If (op3 + 20 > olimit) */
|
|
184
208
|
movq %op3, %rax /* rax = op3 */
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
jb .L_4X1_exit
|
|
209
|
+
cmpq %rax, %olimit /* op3 == olimit */
|
|
210
|
+
je .L_4X1_exit
|
|
188
211
|
|
|
189
212
|
/* If (ip1 < ip0) go to exit */
|
|
190
213
|
cmpq %ip0, %ip1
|
|
@@ -315,7 +338,7 @@ HUF_decompress4X1_usingDTable_internal_bmi2_asm_loop:
|
|
|
315
338
|
/* Restore stack (oend & olimit) */
|
|
316
339
|
pop %rax /* olimit */
|
|
317
340
|
pop %rax /* oend */
|
|
318
|
-
pop %rax /*
|
|
341
|
+
pop %rax /* ilowest */
|
|
319
342
|
pop %rax /* arg */
|
|
320
343
|
|
|
321
344
|
/* Save ip / op / bits */
|
|
@@ -350,8 +373,9 @@ HUF_decompress4X1_usingDTable_internal_bmi2_asm_loop:
|
|
|
350
373
|
pop %rax
|
|
351
374
|
ret
|
|
352
375
|
|
|
353
|
-
|
|
354
|
-
|
|
376
|
+
_HUF_decompress4X2_usingDTable_internal_fast_asm_loop:
|
|
377
|
+
HUF_decompress4X2_usingDTable_internal_fast_asm_loop:
|
|
378
|
+
ZSTD_CET_ENDBRANCH
|
|
355
379
|
/* Save all registers - even if they are callee saved for simplicity. */
|
|
356
380
|
push %rax
|
|
357
381
|
push %rbx
|
|
@@ -369,7 +393,12 @@ HUF_decompress4X2_usingDTable_internal_bmi2_asm_loop:
|
|
|
369
393
|
push %r14
|
|
370
394
|
push %r15
|
|
371
395
|
|
|
396
|
+
/* Read HUF_DecompressAsmArgs* args from %rax */
|
|
397
|
+
#if defined(_WIN32)
|
|
398
|
+
movq %rcx, %rax
|
|
399
|
+
#else
|
|
372
400
|
movq %rdi, %rax
|
|
401
|
+
#endif
|
|
373
402
|
movq 0(%rax), %ip0
|
|
374
403
|
movq 8(%rax), %ip1
|
|
375
404
|
movq 16(%rax), %ip2
|
|
@@ -385,7 +414,7 @@ HUF_decompress4X2_usingDTable_internal_bmi2_asm_loop:
|
|
|
385
414
|
movq 96(%rax), %dtable
|
|
386
415
|
push %rax /* argument */
|
|
387
416
|
push %rax /* olimit */
|
|
388
|
-
push 104(%rax) /*
|
|
417
|
+
push 104(%rax) /* ilowest */
|
|
389
418
|
|
|
390
419
|
movq 112(%rax), %rax
|
|
391
420
|
push %rax /* oend3 */
|
|
@@ -412,9 +441,9 @@ HUF_decompress4X2_usingDTable_internal_bmi2_asm_loop:
|
|
|
412
441
|
|
|
413
442
|
/* We can consume up to 7 input bytes each iteration. */
|
|
414
443
|
movq %ip0, %rax /* rax = ip0 */
|
|
415
|
-
movq 40(%rsp), %rdx /* rdx =
|
|
416
|
-
subq %rdx, %rax /* rax = ip0 -
|
|
417
|
-
movq %rax, %r15 /* r15 = ip0 -
|
|
444
|
+
movq 40(%rsp), %rdx /* rdx = ilowest */
|
|
445
|
+
subq %rdx, %rax /* rax = ip0 - ilowest */
|
|
446
|
+
movq %rax, %r15 /* r15 = ip0 - ilowest */
|
|
418
447
|
|
|
419
448
|
/* rdx = rax / 7 */
|
|
420
449
|
movabsq $2635249153387078803, %rdx
|
|
@@ -424,44 +453,33 @@ HUF_decompress4X2_usingDTable_internal_bmi2_asm_loop:
|
|
|
424
453
|
addq %r15, %rdx
|
|
425
454
|
shrq $2, %rdx
|
|
426
455
|
|
|
427
|
-
/* r15 = (ip0 -
|
|
456
|
+
/* r15 = (ip0 - ilowest) / 7 */
|
|
428
457
|
movq %rdx, %r15
|
|
429
458
|
|
|
430
|
-
|
|
431
|
-
movq 8(%rsp),
|
|
432
|
-
subq %op0,
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
/* r15 = min(%rdx, %r15) */
|
|
437
|
-
cmpq %rdx, %r15
|
|
438
|
-
cmova %rdx, %r15
|
|
439
|
-
|
|
440
|
-
movabsq $-3689348814741910323, %rdx
|
|
441
|
-
movq 16(%rsp), %rax /* rax = oend1 */
|
|
442
|
-
subq %op1, %rax /* rax = oend1 - op1 */
|
|
443
|
-
mulq %rdx
|
|
444
|
-
shrq $3, %rdx /* rdx = rax / 10 */
|
|
459
|
+
/* r15 = min(r15, min(oend0 - op0, oend1 - op1, oend2 - op2, oend3 - op3) / 10) */
|
|
460
|
+
movq 8(%rsp), %rax /* rax = oend0 */
|
|
461
|
+
subq %op0, %rax /* rax = oend0 - op0 */
|
|
462
|
+
movq 16(%rsp), %rdx /* rdx = oend1 */
|
|
463
|
+
subq %op1, %rdx /* rdx = oend1 - op1 */
|
|
445
464
|
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
cmova %rdx, %r15
|
|
465
|
+
cmpq %rax, %rdx
|
|
466
|
+
cmova %rax, %rdx /* rdx = min(%rdx, %rax) */
|
|
449
467
|
|
|
450
|
-
movabsq $-3689348814741910323, %rdx
|
|
451
468
|
movq 24(%rsp), %rax /* rax = oend2 */
|
|
452
469
|
subq %op2, %rax /* rax = oend2 - op2 */
|
|
453
|
-
mulq %rdx
|
|
454
|
-
shrq $3, %rdx /* rdx = rax / 10 */
|
|
455
470
|
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
cmova %rdx, %r15
|
|
471
|
+
cmpq %rax, %rdx
|
|
472
|
+
cmova %rax, %rdx /* rdx = min(%rdx, %rax) */
|
|
459
473
|
|
|
460
|
-
movabsq $-3689348814741910323, %rdx
|
|
461
474
|
movq 32(%rsp), %rax /* rax = oend3 */
|
|
462
475
|
subq %op3, %rax /* rax = oend3 - op3 */
|
|
476
|
+
|
|
477
|
+
cmpq %rax, %rdx
|
|
478
|
+
cmova %rax, %rdx /* rdx = min(%rdx, %rax) */
|
|
479
|
+
|
|
480
|
+
movabsq $-3689348814741910323, %rax
|
|
463
481
|
mulq %rdx
|
|
464
|
-
shrq $3, %rdx /* rdx =
|
|
482
|
+
shrq $3, %rdx /* rdx = rdx / 10 */
|
|
465
483
|
|
|
466
484
|
/* r15 = min(%rdx, %r15) */
|
|
467
485
|
cmpq %rdx, %r15
|
|
@@ -476,9 +494,8 @@ HUF_decompress4X2_usingDTable_internal_bmi2_asm_loop:
|
|
|
476
494
|
|
|
477
495
|
/* If (op3 + 10 > olimit) */
|
|
478
496
|
movq %op3, %rax /* rax = op3 */
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
jb .L_4X2_exit
|
|
497
|
+
cmpq %rax, %olimit /* op3 == olimit */
|
|
498
|
+
je .L_4X2_exit
|
|
482
499
|
|
|
483
500
|
/* If (ip1 < ip0) go to exit */
|
|
484
501
|
cmpq %ip0, %ip1
|
|
@@ -546,7 +563,7 @@ HUF_decompress4X2_usingDTable_internal_bmi2_asm_loop:
|
|
|
546
563
|
pop %rax /* oend1 */
|
|
547
564
|
pop %rax /* oend2 */
|
|
548
565
|
pop %rax /* oend3 */
|
|
549
|
-
pop %rax /*
|
|
566
|
+
pop %rax /* ilowest */
|
|
550
567
|
pop %rax /* olimit */
|
|
551
568
|
pop %rax /* arg */
|
|
552
569
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
3
|
* All rights reserved.
|
|
4
4
|
*
|
|
5
5
|
* This source code is licensed under both the BSD-style license (found in the
|
|
@@ -14,12 +14,12 @@
|
|
|
14
14
|
/*-*******************************************************
|
|
15
15
|
* Dependencies
|
|
16
16
|
*********************************************************/
|
|
17
|
+
#include "../common/allocations.h" /* ZSTD_customMalloc, ZSTD_customFree */
|
|
17
18
|
#include "../common/zstd_deps.h" /* ZSTD_memcpy, ZSTD_memmove, ZSTD_memset */
|
|
18
19
|
#include "../common/cpu.h" /* bmi2 */
|
|
19
20
|
#include "../common/mem.h" /* low level memory routines */
|
|
20
21
|
#define FSE_STATIC_LINKING_ONLY
|
|
21
22
|
#include "../common/fse.h"
|
|
22
|
-
#define HUF_STATIC_LINKING_ONLY
|
|
23
23
|
#include "../common/huf.h"
|
|
24
24
|
#include "zstd_decompress_internal.h"
|
|
25
25
|
#include "zstd_ddict.h"
|
|
@@ -134,7 +134,7 @@ static size_t ZSTD_initDDict_internal(ZSTD_DDict* ddict,
|
|
|
134
134
|
ZSTD_memcpy(internalBuffer, dict, dictSize);
|
|
135
135
|
}
|
|
136
136
|
ddict->dictSize = dictSize;
|
|
137
|
-
ddict->entropy.hufTable[0] = (HUF_DTable)((
|
|
137
|
+
ddict->entropy.hufTable[0] = (HUF_DTable)((ZSTD_HUFFDTABLE_CAPACITY_LOG)*0x1000001); /* cover both little and big endian */
|
|
138
138
|
|
|
139
139
|
/* parse dictionary content */
|
|
140
140
|
FORWARD_IF_ERROR( ZSTD_loadEntropy_intoDDict(ddict, dictContentType) , "");
|
|
@@ -240,5 +240,5 @@ size_t ZSTD_sizeof_DDict(const ZSTD_DDict* ddict)
|
|
|
240
240
|
unsigned ZSTD_getDictID_fromDDict(const ZSTD_DDict* ddict)
|
|
241
241
|
{
|
|
242
242
|
if (ddict==NULL) return 0;
|
|
243
|
-
return
|
|
243
|
+
return ddict->dictID;
|
|
244
244
|
}
|