simdjson 4.2.1
Ridiculously Fast JSON
Loading...
Searching...
No Matches
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
50static_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:33