Skip to content

Commit 2a7de8b

Browse files
committed
Port Sleef to AIX
Closes #628.
1 parent d77e50a commit 2a7de8b

File tree

3 files changed

+9
-8
lines changed

3 files changed

+9
-8
lines changed

Configure.cmake

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm")
197197
set(COMPILER_SUPPORTS_NEON32VFPV4 1)
198198

199199
set(CLANG_FLAGS_ENABLE_PURECFMA_SCALAR "-mfpu=vfpv4")
200-
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64")
200+
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64" OR CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)")
201201
set(SLEEF_ARCH_PPC64 ON CACHE INTERNAL "True for PPC64 architecture.")
202202

203203
set(CLANG_FLAGS_ENABLE_PURECFMA_SCALAR "-mvsx")
@@ -626,8 +626,9 @@ if(SLEEF_ARCH_PPC64 AND NOT SLEEF_DISABLE_VSX)
626626
string (REPLACE ";" " " CMAKE_REQUIRED_FLAGS "${FLAGS_ENABLE_VSX}")
627627
CHECK_C_SOURCE_COMPILES("
628628
#include <altivec.h>
629-
#ifndef __LITTLE_ENDIAN__
630-
#error \"Only VSX(ISA2.07) little-endian mode is supported \"
629+
#if !defined(__LITTLE_ENDIAN__) && !defined(_AIX)
630+
#error \"Only VSX(ISA2.07) little-endian mode and AIX is supported \"
631+
#endif
631632
#endif
632633
int main() {
633634
vector double d;

src/common/quaddef.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616
#if !defined(Sleef_quad_DEFINED)
1717
#define Sleef_quad_DEFINED
1818
typedef struct { uint64_t x, y; } Sleef_uint64_2t;
19-
#if defined(SLEEF_FLOAT128_IS_IEEEQP) || defined(ENABLEFLOAT128)
19+
#if (defined(SLEEF_FLOAT128_IS_IEEEQP) || defined(ENABLEFLOAT128)) && !defined(_AIX)
2020
typedef __float128 Sleef_quad;
2121
#define SLEEF_QUAD_C(x) (x ## Q)
22-
#elif defined(SLEEF_LONGDOUBLE_IS_IEEEQP)
22+
#elif defined(SLEEF_LONGDOUBLE_IS_IEEEQP) || defined(_AIX)
2323
typedef long double Sleef_quad;
2424
#define SLEEF_QUAD_C(x) (x ## L)
2525
#else

src/libm/sleeflibm_header.h.org.in

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
#include <arm_sve.h>
6464
#endif
6565

66-
#if defined(__VSX__) && defined(__PPC64__) && defined(__LITTLE_ENDIAN__)
66+
#if (defined(__VSX__) && defined(__PPC64__) && defined(__LITTLE_ENDIAN__)) || defined(_AIX)
6767
#include <altivec.h>
6868
typedef __vector double SLEEF_VECTOR_DOUBLE;
6969
typedef __vector float SLEEF_VECTOR_FLOAT;
@@ -175,10 +175,10 @@ typedef struct {
175175
#if !defined(Sleef_quad_DEFINED)
176176
#define Sleef_quad_DEFINED
177177
typedef struct { uint64_t x, y; } Sleef_uint64_2t;
178-
#if defined(SLEEF_FLOAT128_IS_IEEEQP) || defined(ENABLEFLOAT128)
178+
#if (defined(SLEEF_FLOAT128_IS_IEEEQP) || defined(ENABLEFLOAT128)) && !defined(_AIX)
179179
typedef __float128 Sleef_quad;
180180
#define SLEEF_QUAD_C(x) (x ## Q)
181-
#elif defined(SLEEF_LONGDOUBLE_IS_IEEEQP)
181+
#elif defined(SLEEF_LONGDOUBLE_IS_IEEEQP) || defined(_AIX)
182182
typedef long double Sleef_quad;
183183
#define SLEEF_QUAD_C(x) (x ## L)
184184
#else

0 commit comments

Comments
 (0)