]> git.ipfire.org Git - thirdparty/zstd.git/commit
Flatten ZSTD_row_getMatchMask (#2681)
authoraqrit <vippor_cs@yahoo.com>
Wed, 9 Jun 2021 05:50:25 +0000 (01:50 -0400)
committerGitHub <noreply@github.com>
Wed, 9 Jun 2021 05:50:25 +0000 (08:50 +0300)
commitdd4f6aa9e6db2964cc5ff8641be21334cab97a98
tree4b48018e3711ff4adcf69ab508b804e627c6064c
parent8a3bdfaa7bb2944dbed1ce9dede39f512d6da3f9
Flatten ZSTD_row_getMatchMask (#2681)

* Flatten ZSTD_row_getMatchMask

* Remove the SIMD abstraction layer.
* Add big endian support.
* Align `hashTags` within `tagRow` to a 16-byte boundary.
* Switch SSE2 to use aligned reads.
* Optimize scalar path using SWAR.
* Optimize neon path for `n == 32`
* Work around minor clang issue for NEON (https://bugs.llvm.org/show_bug.cgi?id=49577)

* replace memcpy with MEM_readST

* silence alignment warnings

* fix neon casts

* Update zstd_lazy.c

* unify simd preprocessor detection (#3)

* remove duplicate asserts

* tweak rotates

* improve endian detection

* add cast

there is a fun little catch-22 with gcc: result from pmovmskb has to be cast to uint32_t to avoid a zero-extension
but must be uint16_t to get gcc to generate a rotate instruction..

* more casts

* fix casts

better work-around for the (bogus) warning: unary minus on unsigned
lib/common/compiler.h
lib/common/mem.h
lib/common/zstd_internal.h
lib/compress/zstd_compress.c
lib/compress/zstd_lazy.c