#include "config.h"
#include "hs_common.h"
#include "ue2common.h"
#if !defined(VS_SIMDE_BACKEND)
#if defined(ARCH_IA32) || defined(ARCH_X86_64)
#include "util/arch/x86/cpuid_inline.h"
#elif defined(ARCH_AARCH64)
#include "util/arch/arm/cpuid_inline.h"
#endif
#endif
HS_PUBLIC_API
hs_error_t HS_CDECL hs_valid_platform(void) {
#if defined(FAT_RUNTIME)
#if (defined(ARCH_IA32) || defined(ARCH_X86_64))
#if defined(VS_SIMDE_BACKEND)
return HS_SUCCESS;
#else
DEBUG_PRINTF("checking SSE42 support\n");
return check_sse42()? HS_SUCCESS: HS_ARCH_ERROR;
#endif
#elif (defined(ARCH_ARM32) || defined(ARCH_AARCH64))
return check_neon()? HS_SUCCESS: HS_ARCH_ERROR;
#endif
#else
#if !defined(VS_SIMDE_BACKEND) && (defined(ARCH_IA32) || defined(ARCH_X86_64))
return check_sse42()? HS_SUCCESS: HS_ARCH_ERROR;
#elif !defined(VS_SIMDE_BACKEND) && (defined(ARCH_ARM32) || defined(ARCH_AARCH64))
return check_neon()? HS_SUCCESS: HS_ARCH_ERROR;
#elif defined(ARCH_PPC64EL) || defined(VS_SIMDE_BACKEND)
return HS_SUCCESS;
#endif
#endif
return HS_SUCCESS;
}