#if defined(__amd64__) || defined(__x86_64__) || defined(__AMD64__) || defined(_M_X64) || defined(__amd64) #ifdef __AVX__ #error ABI_IS_amd64_AVX__ #else #error ABI_IS_amd64__ #endif #elif defined(__i386__) || defined(__x86__) || defined(__X86__) || defined(_M_IX86) || defined(__i386) #if defined(__AVX__) #error ABI_IS_x86_AVX__ #elif defined(__SSE2__) #error ABI_IS_x86_SSE2__ #else #error ABI_IS_x86__ #endif #elif defined(__ia64__) || defined(__IA64__) || defined(__M_IA64) #error ABI_IS_ia64__ #elif defined(__SPU__) #error ABI_IS_cellspu__ #elif defined(__powerpc64__) || defined(__ppc64__) || defined(__PPC64__) || defined(_ARCH_PPC64) #error ABI_IS_ppc64__ #elif defined(__powerpc__) || defined(__ppc__) || defined(__PPC__) || defined(_ARCH_PPC) #error ABI_IS_ppc32__ #elif defined(__s390x__) #error ABI_IS_s390x__ #elif defined(__sparcv9__) || defined(__sparcv9) #error ABI_IS_sparcv9__ #elif defined(__sparc_v8__) #error ABI_IS_sparcv8__ #elif defined(__sparc__) || defined(__sparc) // if false then: error: zero width for bit-field ‘ABI_IS_sparcv9__’ struct isItV9 { int ABI_IS_sparcv9__ : (sizeof(long) == 4); }; struct isItV8 { int ABI_IS_sparcv8__ : (sizeof(long) != 4); }; #elif defined(__aarch64__) #error ABI_IS_arm64__ #elif defined(__ARM_EABI__) #if defined(__ARM_NEON__) #error ABI_IS_armeabi_neon__ #else #error ABI_IS_armeabi__ #endif #elif defined(__arm__) #error ABI_IS_arm__ #elif defined(__mips__) || defined(__mips) || defined(__MIPS__) #if defined(_ABIO32) #if defined(_MIPS_ARCH_MIPS32R2) #error ABI_IS_mipso32_r2__ #else #error ABI_IS_mipso32__ #endif #elif defined(_ABIN32) #error ABI_IS_mips32__ #else #error ABI_IS_mips64__ #endif #else #error ABI_IS_default__ #endif