simdjson  3.11.0
Ridiculously Fast JSON
intrinsics.h
1 #ifndef SIMDJSON_HASWELL_INTRINSICS_H
2 #define SIMDJSON_HASWELL_INTRINSICS_H
3 
4 #ifndef SIMDJSON_CONDITIONAL_INCLUDE
5 #include "simdjson/haswell/base.h"
6 #endif // SIMDJSON_CONDITIONAL_INCLUDE
7 
8 #if SIMDJSON_VISUAL_STUDIO
9 // under clang within visual studio, this will include <x86intrin.h>
10 #include <intrin.h> // visual studio or clang
11 #else
12 #include <x86intrin.h> // elsewhere
13 #endif // SIMDJSON_VISUAL_STUDIO
14 
15 #if SIMDJSON_CLANG_VISUAL_STUDIO
34 #include <bmiintrin.h> // for _blsr_u64
35 #include <lzcntintrin.h> // for __lzcnt64
36 #include <immintrin.h> // for most things (AVX2, AVX512, _popcnt64)
37 #include <smmintrin.h>
38 #include <tmmintrin.h>
39 #include <avxintrin.h>
40 #include <avx2intrin.h>
41 #include <wmmintrin.h> // for _mm_clmulepi64_si128
42 // unfortunately, we may not get _blsr_u64, but, thankfully, clang
43 // has it as a macro.
44 #ifndef _blsr_u64
45 // we roll our own
46 #define _blsr_u64(n) ((n - 1) & n)
47 #endif // _blsr_u64
48 #endif // SIMDJSON_CLANG_VISUAL_STUDIO
49 
50 static_assert(sizeof(__m256i) <= simdjson::SIMDJSON_PADDING, "insufficient padding for haswell kernel.");
51 
52 #endif // SIMDJSON_HASWELL_INTRINSICS_H
constexpr size_t SIMDJSON_PADDING
The amount of padding needed in a buffer to parse JSON.
Definition: base.h:32