#include "include/private/base/SkFeatures.h"
#if !defined(SK_OPTS_TARGET)
#error Define SK_OPTS_TARGET before including SkOpts_SetTarget
#endif
#if defined(SK_OPTS_NS)
#elif SK_OPTS_TARGET == SK_OPTS_TARGET_DEFAULT
#if defined(SK_ARM_HAS_NEON)
#define SK_OPTS_NS …
#elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SKX
#define SK_OPTS_NS …
#elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_AVX2
#define SK_OPTS_NS …
#elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_AVX
#define SK_OPTS_NS …
#elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE42
#define SK_OPTS_NS …
#elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE41
#define SK_OPTS_NS …
#elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSSE3
#define SK_OPTS_NS …
#elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE3
#define SK_OPTS_NS …
#elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE2
#define SK_OPTS_NS …
#elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE1
#define SK_OPTS_NS …
#elif SK_CPU_LSX_LEVEL >= SK_CPU_LSX_LEVEL_LASX
#define SK_OPTS_NS …
#elif SK_CPU_LSX_LEVEL >= SK_CPU_LSX_LEVEL_LSX
#define SK_OPTS_NS …
#else
#define SK_OPTS_NS …
#endif
#define DEFINE_DEFAULT(name) …
#else
#if defined(SK_OLD_CPU_SSE_LEVEL)
#error Include SkOpts_RestoreTarget before re-including SkOpts_SetTarget
#endif
#define SK_OLD_CPU_SSE_LEVEL …
#undef SK_CPU_SSE_LEVEL
#undef SK_CPU_LSX_LEVEL
#if defined(__clang__) && defined(_MSC_VER)
#include <immintrin.h>
#endif
#if SK_OPTS_TARGET == SK_OPTS_TARGET_SSSE3
#define SK_CPU_SSE_LEVEL …
#define SK_OPTS_NS …
#if defined(__clang__)
#pragma clang attribute push(__attribute__((target("sse2,ssse3"))), apply_to=function)
#elif defined(__GNUC__)
#pragma GCC push_options
#pragma GCC target("sse2,ssse3")
#endif
#if defined(__clang__) && defined(_MSC_VER)
#include <pmmintrin.h>
#include <tmmintrin.h>
#endif
#elif SK_OPTS_TARGET == SK_OPTS_TARGET_AVX
#define SK_CPU_SSE_LEVEL …
#define SK_OPTS_NS …
#if defined(__clang__)
#pragma clang attribute push(__attribute__((target("sse2,ssse3,sse4.1,sse4.2,avx"))), apply_to=function)
#elif defined(__GNUC__)
#pragma GCC push_options
#pragma GCC target("sse2,ssse3,sse4.1,sse4.2,avx")
#endif
#if defined(__clang__) && defined(_MSC_VER)
#include <pmmintrin.h>
#include <tmmintrin.h>
#include <smmintrin.h>
#include <avxintrin.h>
#endif
#elif SK_OPTS_TARGET == SK_OPTS_TARGET_HSW
#define SK_CPU_SSE_LEVEL …
#define SK_OPTS_NS …
#if defined(__clang__)
#pragma clang attribute push(__attribute__((target("sse2,ssse3,sse4.1,sse4.2,avx,avx2,bmi,bmi2,f16c,fma"))), apply_to=function)
#elif defined(__GNUC__)
#pragma GCC push_options
#pragma GCC target("sse2,ssse3,sse4.1,sse4.2,avx,avx2,bmi,bmi2,f16c,fma")
#endif
#if defined(__clang__) && defined(_MSC_VER)
#include <pmmintrin.h>
#include <tmmintrin.h>
#include <smmintrin.h>
#include <avxintrin.h>
#include <avx2intrin.h>
#include <f16cintrin.h>
#include <bmi2intrin.h>
#include <fmaintrin.h>
#endif
#elif SK_OPTS_TARGET == SK_OPTS_TARGET_LASX
#define SK_CPU_LSX_LEVEL …
#define SK_OPTS_NS …
#define __loongarch_asx
#if defined(__clang__)
#pragma clang attribute push(__attribute__((target("lasx"))), apply_to=function)
#endif
#else
#error Unexpected value of SK_OPTS_TARGET
#endif
#endif