#ifndef RUY_RUY_PLATFORM_H_
#define RUY_RUY_PLATFORM_H_
#ifdef __ANDROID_NDK__
#include <android/ndk-version.h>
#endif
#ifdef __APPLE__
#define RUY_PLATFORM_APPLE …
#include <TargetConditionals.h>
#define RUY_PLATFORM_APPLE_IPHONE_SIMULATOR …
#else
#define RUY_PLATFORM_APPLE …
#define RUY_PLATFORM_APPLE_IPHONE_SIMULATOR …
#endif
#if defined(__ppc__) || defined(__powerpc__)
#define RUY_PLATFORM_PPC …
#else
#define RUY_PLATFORM_PPC …
#endif
#ifdef __Fuchsia__
#define RUY_PLATFORM_FUCHSIA …
#else
#define RUY_PLATFORM_FUCHSIA …
#endif
#if defined(__x86_64__) || defined(__i386__) || defined(__i386) || \
defined(__x86__) || defined(__X86__) || defined(_X86_) || \
defined(_M_IX86) || defined(_M_X64)
#define RUY_PLATFORM_X86 …
#else
#define RUY_PLATFORM_X86 …
#endif
#ifdef __arm__
#define RUY_PLATFORM_ARM_32 …
#else
#define RUY_PLATFORM_ARM_32 …
#endif
#ifdef __aarch64__
#define RUY_PLATFORM_ARM_64 …
#else
#define RUY_PLATFORM_ARM_64 …
#endif
#define RUY_PLATFORM_ARM …
#if (defined(__ARM_NEON) || defined(__ARM_NEON__)) && !RUY_PLATFORM_X86
#define RUY_PLATFORM_NEON …
#else
#define RUY_PLATFORM_NEON …
#endif
#define RUY_PLATFORM_NEON_32 …
#define RUY_PLATFORM_NEON_64 …
#if defined(RUY_FORCE_ENABLE_X86_ENHANCEMENTS)
#define RUY_PLATFORM_X86_ENHANCEMENTS …
#elif defined(__EMSCRIPTEN__)
#define RUY_PLATFORM_X86_ENHANCEMENTS …
#elif defined(__ANDROID_NDK__) && defined(__NDK_MAJOR__) && \
(__NDK_MAJOR__ >= 20)
#define RUY_PLATFORM_X86_ENHANCEMENTS …
#elif ((RUY_PLATFORM_APPLE && !RUY_PLATFORM_APPLE_IPHONE_SIMULATOR) || \
defined(__linux__)) && \
defined(__clang__) && (__clang_major__ >= 8)
#define RUY_PLATFORM_X86_ENHANCEMENTS …
#elif defined(__GNUC__) && (__GNUC__ >= 9)
#define RUY_PLATFORM_X86_ENHANCEMENTS …
#elif defined(_MSC_VER) && (_MSC_VER >= 1920)
#define RUY_PLATFORM_X86_ENHANCEMENTS …
#else
#define RUY_PLATFORM_X86_ENHANCEMENTS …
#endif
#if RUY_PLATFORM_X86_ENHANCEMENTS && RUY_PLATFORM_X86 && \
defined(__AVX512F__) && defined(__AVX512DQ__) && defined(__AVX512CD__) && \
defined(__AVX512BW__) && defined(__AVX512VL__)
#define RUY_PLATFORM_AVX512 …
#else
#define RUY_PLATFORM_AVX512 …
#endif
#if RUY_PLATFORM_X86_ENHANCEMENTS && RUY_PLATFORM_X86 && defined(__AVX2__) && \
(defined(__FMA__) || defined(_MSC_VER))
#define RUY_PLATFORM_AVX2_FMA …
#else
#define RUY_PLATFORM_AVX2_FMA …
#endif
#if RUY_PLATFORM_X86_ENHANCEMENTS && RUY_PLATFORM_X86 && defined(__AVX__)
#define RUY_PLATFORM_AVX …
#else
#define RUY_PLATFORM_AVX …
#endif
#ifdef __EMSCRIPTEN__
#define RUY_PLATFORM_EMSCRIPTEN …
#else
#define RUY_PLATFORM_EMSCRIPTEN …
#endif
#endif