mirror of
https://github.com/simdjson/simdjson
synced 2026-06-08 17:27:07 +00:00
65 lines
1.9 KiB
C++
65 lines
1.9 KiB
C++
#ifndef SIMDJSON_HASWELL_H
|
|
#define SIMDJSON_HASWELL_H
|
|
|
|
#include "simdjson/implementation-base.h"
|
|
|
|
#ifdef SIMDJSON_WESTMERE_H
|
|
#error "haswell.h must be included before westmere.h"
|
|
#endif
|
|
#ifdef SIMDJSON_FALLBACK_H
|
|
#error "haswell.h must be included before fallback.h"
|
|
#endif
|
|
|
|
// Default Haswell to on if this is x86-64. Even if we're not compiled for it, it could be selected
|
|
// at runtime.
|
|
#ifndef SIMDJSON_IMPLEMENTATION_HASWELL
|
|
#define SIMDJSON_IMPLEMENTATION_HASWELL (SIMDJSON_IS_X86_64)
|
|
#endif
|
|
// To see why (__BMI__) && (__PCLMUL__) && (__LZCNT__) are not part of this next line, see
|
|
// https://github.com/simdjson/simdjson/issues/1247
|
|
#define SIMDJSON_CAN_ALWAYS_RUN_HASWELL ((SIMDJSON_IMPLEMENTATION_HASWELL) && (SIMDJSON_IS_X86_64) && (__AVX2__))
|
|
|
|
#if SIMDJSON_IMPLEMENTATION_HASWELL
|
|
|
|
#define SIMDJSON_TARGET_HASWELL SIMDJSON_TARGET_REGION("avx2,bmi,pclmul,lzcnt")
|
|
|
|
namespace simdjson {
|
|
/**
|
|
* Implementation for Haswell (Intel AVX2).
|
|
*/
|
|
namespace haswell {
|
|
} // namespace haswell
|
|
} // namespace simdjson
|
|
|
|
//
|
|
// These two need to be included outside SIMDJSON_TARGET_REGION
|
|
//
|
|
#include "simdjson/haswell/implementation.h"
|
|
#include "simdjson/haswell/intrinsics.h"
|
|
|
|
//
|
|
// The rest need to be inside the region
|
|
//
|
|
#include "simdjson/haswell/begin.h"
|
|
|
|
// Declarations
|
|
#include "simdjson/generic/dom_parser_implementation.h"
|
|
#include "simdjson/haswell/bitmanipulation.h"
|
|
#include "simdjson/haswell/bitmask.h"
|
|
#include "simdjson/haswell/simd.h"
|
|
#include "simdjson/generic/jsoncharutils.h"
|
|
#include "simdjson/generic/atomparsing.h"
|
|
#include "simdjson/haswell/stringparsing.h"
|
|
#include "simdjson/haswell/numberparsing.h"
|
|
#include "simdjson/generic/implementation_simdjson_result_base.h"
|
|
#include "simdjson/generic/ondemand.h"
|
|
|
|
// Inline definitions
|
|
#include "simdjson/generic/implementation_simdjson_result_base-inl.h"
|
|
#include "simdjson/generic/ondemand-inl.h"
|
|
|
|
#include "simdjson/haswell/end.h"
|
|
|
|
#endif // SIMDJSON_IMPLEMENTATION_HASWELL
|
|
#endif // SIMDJSON_HASWELL_COMMON_H
|