ruby/prism/compiler/accel.h

20 lines
614 B
C

/**
* @file compiler/accel.h
*/
#ifndef PRISM_COMPILER_ACCEL_H
#define PRISM_COMPILER_ACCEL_H
/**
* Platform detection for SIMD/fast-path implementations. At most one of these
* macros is defined, selecting the best available vectorization strategy.
*/
#if (defined(__aarch64__) && defined(__ARM_NEON)) || (defined(_MSC_VER) && defined(_M_ARM64))
# define PRISM_HAS_NEON
#elif (defined(__x86_64__) && defined(__SSSE3__)) || (defined(_MSC_VER) && defined(_M_X64))
# define PRISM_HAS_SSSE3
#elif defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
# define PRISM_HAS_SWAR
#endif
#endif