summaryrefslogtreecommitdiffstats
path: root/contrib/libs/simdjson/include
diff options
context:
space:
mode:
authorrobot-contrib <[email protected]>2025-02-15 14:32:01 +0300
committerrobot-contrib <[email protected]>2025-02-15 14:47:40 +0300
commitdb6fa67d60db987184fd5eef86d347e2cad85daa (patch)
tree58631d8b2f338160a6596883f8af77813bb47f03 /contrib/libs/simdjson/include
parentb78775e5a25dfb7551cdc06dba96cdfe6e9bd6fb (diff)
Update contrib/libs/simdjson to 3.12.2
commit_hash:1da1e7f4c8215c30ac33f0a481944ca35188e1fa
Diffstat (limited to 'contrib/libs/simdjson/include')
-rw-r--r--contrib/libs/simdjson/include/simdjson/icelake/simd.h8
-rw-r--r--contrib/libs/simdjson/include/simdjson/simdjson_version.h4
2 files changed, 8 insertions, 4 deletions
diff --git a/contrib/libs/simdjson/include/simdjson/icelake/simd.h b/contrib/libs/simdjson/include/simdjson/icelake/simd.h
index 04203f4b9a5..a37ef957c9f 100644
--- a/contrib/libs/simdjson/include/simdjson/icelake/simd.h
+++ b/contrib/libs/simdjson/include/simdjson/icelake/simd.h
@@ -148,14 +148,18 @@ namespace simd {
// Copies to 'output" all bytes corresponding to a 0 in the mask (interpreted as a bitset).
// Passing a 0 value for mask would be equivalent to writing out every byte to output.
- // Only the first 32 - count_ones(mask) bytes of the result are significant but 32 bytes
+ // Only the first 64 - count_ones(mask) bytes of the result are significant but 64 bytes
// get written.
// Design consideration: it seems like a function with the
// signature simd8<L> compress(uint32_t mask) would be
// sensible, but the AVX ISA makes this kind of approach difficult.
template<typename L>
simdjson_inline void compress(uint64_t mask, L * output) const {
- _mm512_mask_compressstoreu_epi8 (output,~mask,*this);
+ // we deliberately avoid _mm512_mask_compressstoreu_epi8 for portability
+ // (AMD Zen4 has terrible performance with it, it is effectively broken)
+ // _mm512_mask_compressstoreu_epi8 (output,~mask,*this);
+ __m512i compressed = _mm512_maskz_compress_epi8(~mask, *this);
+ _mm512_storeu_si512(output, compressed); // could use a mask
}
template<typename L>
diff --git a/contrib/libs/simdjson/include/simdjson/simdjson_version.h b/contrib/libs/simdjson/include/simdjson/simdjson_version.h
index ae279016397..d61c07c01fb 100644
--- a/contrib/libs/simdjson/include/simdjson/simdjson_version.h
+++ b/contrib/libs/simdjson/include/simdjson/simdjson_version.h
@@ -4,7 +4,7 @@
#define SIMDJSON_SIMDJSON_VERSION_H
/** The version of simdjson being used (major.minor.revision) */
-#define SIMDJSON_VERSION "3.12.1"
+#define SIMDJSON_VERSION "3.12.2"
namespace simdjson {
enum {
@@ -19,7 +19,7 @@ enum {
/**
* The revision (major.minor.REVISION) of simdjson being used.
*/
- SIMDJSON_VERSION_REVISION = 1
+ SIMDJSON_VERSION_REVISION = 2
};
} // namespace simdjson