| #ifndef FUNC_DEF_IN |
| #define FUNC_DEF_IN |
| |
| // F32 - function available on all 32 bit architectures |
| // F64 - function available on all 64 bit architectures |
| // F_X86_ANY - function available on i386 and x86_64 |
| // F_I386 - function available only on i386 |
| // F_X64 - function available only on x86_64 |
| // F_ARM32 - function available only on arm32 |
| // F_ARM64 - function available only on arm64 |
| // F_ARM_ANY - function available on 32 and 64 bit arm |
| // F_NON_I386 - function available on everything but i386 |
| // F_NON_X64 - function available on everything but x86_64 |
| // F_NON_ARM64 - function available on everything but arm64 |
| #if defined(__x86_64__) |
| #define F64(x) x |
| #define F_X64(x) x |
| #define F_X86_ANY(x) x |
| #define F_NON_I386(x) x |
| #define F_NON_ARM64(x) x |
| #if defined(__arm64ec__) |
| #define F_ARM_ANY(x) x |
| #endif |
| #elif defined(__i386__) |
| #define F32(x) x |
| #define F_I386(x) x |
| #define F_X86_ANY(x) x |
| #define F_NON_X64(x) x |
| #define F_NON_ARM64(x) x |
| #elif defined(__arm__) |
| #define F32(x) x |
| #define F_ARM32(x) x |
| #define F_ARM_ANY(x) x |
| #define F_NON_I386(x) x |
| #define F_NON_X64(x) x |
| #define F_NON_ARM64(x) x |
| #elif defined(__aarch64__) |
| #define F64(x) x |
| #define F_ARM64(x) x |
| #define F_ARM_ANY(x) x |
| #define F_NON_I386(x) x |
| #define F_NON_X64(x) x |
| #else |
| #error No DEF_<ARCH> is defined |
| #endif |
| |
| #ifndef F32 |
| #define F32(x) |
| #endif |
| #ifndef F64 |
| #define F64(x) |
| #endif |
| #ifndef F_X86_ANY |
| #define F_X86_ANY(x) |
| #endif |
| #ifndef F_I386 |
| #define F_I386(x) |
| #endif |
| #ifndef F_X64 |
| #define F_X64(x) |
| #endif |
| #ifndef F_ARM_ANY |
| #define F_ARM_ANY(x) |
| #endif |
| #ifndef F_ARM32 |
| #define F_ARM32(x) |
| #endif |
| #ifndef F_ARM64 |
| #define F_ARM64(x) |
| #endif |
| #ifndef F_NON_I386 |
| #define F_NON_I386(x) |
| #endif |
| #ifndef F_NON_X64 |
| #define F_NON_X64(x) |
| #endif |
| #ifndef F_NON_ARM64 |
| #define F_NON_ARM64(x) |
| #endif |
| |
| #if defined(__i386__) |
| #define STDCALL_DECORATED_EXPORT(symbol) symbol == _ ## symbol |
| #define FASTCALL_DECORATED_EXPORT(symbol) symbol == symbol |
| #endif |
| |
| #if __SIZEOF_LONG_DOUBLE__ == __SIZEOF_DOUBLE__ |
| #define F_LD64(x) x |
| #define F_LD80(x) |
| #else |
| #define F_LD64(x) |
| #define F_LD80(x) x |
| #endif |
| |
| #endif // FUNC_DEF_IN |