mirror of
https://github.com/simdjson/simdjson
synced 2026-06-08 17:27:07 +00:00
75178b65e0
expectation is that frequency throttling in these cases is less of a concern for most users. To be clear, older Intel processors with AVX-512 instructions (such as cascade lake or skylake-x) will not be able to run AVX-512 instructions. 2. We adopt a much faster bitset decoding technique described in the following blog post: https://lemire.me/blog/2022/05/10/faster-bitset-decoding-using-intel-avx-512/ Credit to : Kim Walisch and Jatin Bhateja 3. The compress method which is used by _mm512_mask_compressstoreu_epi8 should be a massive performance gain but also a drastic reduction in code complexity. 4. I try to catch up on crediting valued contributors.
48 lines
1.3 KiB
C++
48 lines
1.3 KiB
C++
#ifndef SIMDJSON_ICELAKE_H
|
|
#define SIMDJSON_ICELAKE_H
|
|
|
|
#include "simdjson/implementation-base.h"
|
|
|
|
#if SIMDJSON_IMPLEMENTATION_ICELAKE
|
|
|
|
#if SIMDJSON_CAN_ALWAYS_RUN_ICELAKE
|
|
#define SIMDJSON_TARGET_ICELAKE
|
|
#define SIMDJSON_UNTARGET_ICELAKE
|
|
#else
|
|
#define SIMDJSON_TARGET_ICELAKE SIMDJSON_TARGET_REGION("avx512f,avx512dq,avx512cd,avx512bw,avx512vbmi,avx512vbmi2,avx512vl,avx2,bmi,pclmul,lzcnt")
|
|
#define SIMDJSON_UNTARGET_ICELAKE SIMDJSON_UNTARGET_REGION
|
|
#endif
|
|
|
|
namespace simdjson {
|
|
/**
|
|
* Implementation for Icelake (Intel AVX512).
|
|
*/
|
|
namespace icelake {
|
|
} // namespace icelake
|
|
} // namespace simdjson
|
|
|
|
//
|
|
// These two need to be included outside SIMDJSON_TARGET_ICELAKE
|
|
//
|
|
#include "simdjson/icelake/implementation.h"
|
|
#include "simdjson/icelake/intrinsics.h"
|
|
|
|
//
|
|
// The rest need to be inside the region
|
|
//
|
|
#include "simdjson/icelake/begin.h"
|
|
|
|
// Declarations
|
|
#include "simdjson/generic/dom_parser_implementation.h"
|
|
#include "simdjson/icelake/bitmanipulation.h"
|
|
#include "simdjson/icelake/bitmask.h"
|
|
#include "simdjson/icelake/simd.h"
|
|
#include "simdjson/generic/jsoncharutils.h"
|
|
#include "simdjson/generic/atomparsing.h"
|
|
#include "simdjson/icelake/stringparsing.h"
|
|
#include "simdjson/icelake/numberparsing.h"
|
|
#include "simdjson/icelake/end.h"
|
|
|
|
#endif // SIMDJSON_IMPLEMENTATION_ICELAKE
|
|
#endif // SIMDJSON_ICELAKE_H
|