Skip to content

Commit c73b89f

Browse files
shibatchNaoki Shibata
and
Naoki Shibata
authored
Robust detection of compiler support for IEEE binary128 (#643)
Co-authored-by: Naoki Shibata <[email protected]>
1 parent 848ecac commit c73b89f

13 files changed

+127
-118
lines changed

CMakeLists.txt

+51-13
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@ project(SLEEF VERSION ${SLEEF_VERSION} LANGUAGES C CXX)
77

88
set(SLEEF_SOVERSION ${SLEEF_VERSION_MAJOR})
99

10+
set(CMAKE_CXX_STANDARD 20)
11+
1012
# Options
1113

1214
option(SLEEF_BUILD_STATIC_TEST_BINS "Build statically linked test executables" OFF)
1315
option(SLEEF_ENABLE_LTO "Enable LTO on GCC or ThinLTO on clang" OFF)
1416
option(SLEEF_BUILD_LIBM "libsleef will be built." ON)
1517
option(SLEEF_BUILD_DFT "libsleefdft will be built." OFF)
16-
option(SLEEF_BUILD_QUAD "libsleefquad will be built." OFF)
18+
option(SLEEF_BUILD_QUAD "libsleefquad will be built." ON)
1719
option(SLEEF_BUILD_GNUABI_LIBS "libsleefgnuabi will be built." ON)
1820
option(SLEEF_BUILD_SCALAR_LIB "libsleefscalar will be built." OFF)
1921
option(SLEEF_BUILD_TESTS "Tests will be built." ON)
@@ -27,28 +29,66 @@ option(SLEEF_SHOW_ERROR_LOG "Show cmake error log." OFF)
2729
option(SLEEF_ASAN "Enable address sanitizing on all targets." OFF)
2830

2931
option(SLEEF_ENABLE_TESTER "Enable testing libm with tester" OFF)
30-
option(SLEEF_ENABLE_TESTER4 "Enable testing with tester4" ON)
31-
3232
option(SLEEF_ENFORCE_TESTER "Build fails if tester is not available" OFF)
33+
3334
option(SLEEF_ENFORCE_TESTER3 "Build fails if tester3 is not built" OFF)
35+
36+
option(SLEEF_ENABLE_TESTER4 "Enable testing with tester4" ON)
3437
option(SLEEF_ENFORCE_TESTER4 "Build fails if tester4 is not available" OFF)
3538

3639
option(SLEEF_ENABLE_ALTDIV "Enable alternative division method (aarch64 only)" OFF)
3740
option(SLEEF_ENABLE_ALTSQRT "Enable alternative sqrt method (aarch64 only)" OFF)
3841

3942
option(SLEEF_DISABLE_FFTW "Disable testing the DFT library with FFTW" OFF)
4043
option(SLEEF_DISABLE_MPFR "Disable testing with the MPFR library" OFF)
41-
option(SLEEF_DISABLE_SSL "Disable testing with the SSL library" OFF)
4244
option(SLEEF_ENABLE_TLFLOAT "Enable use of TLFloat library" ON)
4345

46+
option(SLEEF_DISABLE_SSL "Disable testing with the SSL library" OFF)
47+
set(OPENSSL_EXTRA_LIBRARIES "" CACHE STRING "Extra libraries for openssl")
48+
4449
option(SLEEF_ENABLE_CUDA "Enable CUDA" OFF)
4550

4651
option(SLEEF_BUILD_WITH_LIBM "build libsleef with libm, can turn off on Windows to solve mutiple math functions issue." ON)
4752

48-
#
53+
option(SLEEF_DISABLE_LONG_DOUBLE "Disable long double" OFF)
54+
option(SLEEF_ENFORCE_LONG_DOUBLE "Build fails if long double is not supported by the compiler" OFF)
55+
56+
option(SLEEF_DISABLE_FLOAT128 "Disable float128" OFF)
57+
option(SLEEF_ENFORCE_FLOAT128 "Build fails if float128 is not supported by the compiler" OFF)
58+
59+
option(SLEEF_DISABLE_SSE2 "Disable SSE2" OFF)
60+
option(SLEEF_ENFORCE_SSE2 "Build fails if SSE2 is not supported by the compiler" OFF)
61+
option(SLEEF_DISABLE_SSE4 "Disable SSE4" OFF)
62+
option(SLEEF_ENFORCE_SSE4 "Build fails if SSE4 is not supported by the compiler" OFF)
63+
option(SLEEF_ENFORCE_AVX "Disable AVX" OFF)
64+
option(SLEEF_ENFORCE_AVX "Build fails if AVX is not supported by the compiler" OFF)
65+
option(SLEEF_DISABLE_FMA4 "Disable FMA4" OFF)
66+
option(SLEEF_ENFORCE_FMA4 "Build fails if FMA4 is not supported by the compiler" OFF)
67+
option(SLEEF_DISABLE_AVX2 "Disable AVX2" OFF)
68+
option(SLEEF_ENFORCE_AVX2 "Build fails if AVX2 is not supported by the compiler" OFF)
69+
option(SLEEF_DISABLE_AVX512F "Disable AVX512F" OFF)
70+
option(SLEEF_ENFORCE_AVX512F "Build fails if AVX512F is not supported by the compiler" OFF)
71+
option(SLEEF_DISABLE_SVE "Disable SVE" OFF)
72+
option(SLEEF_ENFORCE_SVE "Build fails if SVE is not supported by the compiler" OFF)
73+
option(SLEEF_DISABLE_VSX "Disable VSX" OFF)
74+
option(SLEEF_ENFORCE_VSX "Build fails if VSX is not supported by the compiler" OFF)
75+
option(SLEEF_DISABLE_VSX3 "Disable VSX3" OFF)
76+
option(SLEEF_ENFORCE_VSX3 "Build fails if VSX3 is not supported by the compiler" OFF)
77+
option(SLEEF_DISABLE_VXE "Disable VXE" OFF)
78+
option(SLEEF_ENFORCE_VXE "Build fails if VXE is not supported by the compiler" OFF)
79+
option(SLEEF_DISABLE_VXE2 "Disable VXE2" OFF)
80+
option(SLEEF_ENFORCE_VXE2 "Build fails if VXE2 is not supported by the compiler" OFF)
81+
option(SLEEF_DISABLE_RVVM1 "Disable RVVM1" OFF)
82+
option(SLEEF_ENFORCE_RVVM1 "Build fails if RVVM1 is not supported by the compiler" OFF)
83+
option(SLEEF_DISABLE_RVVM2 "Disable RVVM2" OFF)
84+
option(SLEEF_ENFORCE_RVVM2 "Build fails if RVVM2 is not supported by the compiler" OFF)
85+
86+
option(SLEEF_ENFORCE_CUDA "Build fails if CUDA is not supported" OFF)
87+
88+
option(SLEEF_DISABLE_OPENMP "Disable OPENMP" OFF)
89+
option(SLEEF_ENFORCE_OPENMP "Build fails if OPENMP is not supported by the compiler" OFF)
4990

50-
set(SLEEF_ENABLE_CXX ON)
51-
set(CMAKE_CXX_STANDARD 20)
91+
#
5292

5393
if (SLEEF_BUILD_BENCH_REF)
5494
if (NOT SLEEF_BUILD_BENCH)
@@ -147,8 +187,8 @@ set(COSTOVERRIDE_AVX2 2)
147187
set(COSTOVERRIDE_AVX 2)
148188
set(COSTOVERRIDE_NEON32 2)
149189
set(COSTOVERRIDE_NEON32VFPV4 2)
150-
set(COSTOVERRIDE_SVE 20)
151-
set(COSTOVERRIDE_SVENOFMA 20)
190+
set(COSTOVERRIDE_SVE 10)
191+
set(COSTOVERRIDE_SVENOFMA 10)
152192
set(COSTOVERRIDE_RVVM1 10)
153193
set(COSTOVERRIDE_RVVM1NOFMA 10)
154194
set(COSTOVERRIDE_RVVM2 20)
@@ -157,10 +197,7 @@ set(COSTOVERRIDE_RVVM2NOFMA 20)
157197
#
158198

159199
enable_testing()
160-
161-
if (SLEEF_ENABLE_CXX)
162-
enable_language(CXX)
163-
endif()
200+
enable_language(CXX)
164201

165202
if (SLEEF_ENABLE_CUDA)
166203
enable_language(CUDA)
@@ -222,6 +259,7 @@ include(Configure.cmake)
222259
configure_file(
223260
${PROJECT_SOURCE_DIR}/sleef-config.h.in
224261
${PROJECT_BINARY_DIR}/include/sleef-config.h @ONLY)
262+
include_directories(AFTER "${PROJECT_BINARY_DIR}/include")
225263

226264
# We like to have a documented index of all targets in the project. The
227265
# variables listed below carry the names of the targets defined throughout

Configure.cmake

+32-51
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
include(CheckCCompilerFlag)
22
include(CheckCSourceCompiles)
3+
include(CheckCXXSourceCompiles)
34
include(CheckTypeSize)
45
include(CheckLanguage)
56

@@ -12,7 +13,6 @@ if (SLEEF_BUILD_STATIC_TEST_BINS)
1213
endif()
1314

1415
if (NOT SLEEF_DISABLE_SSL)
15-
set(OPENSSL_EXTRA_LIBRARIES "" CACHE STRING "Extra libraries for openssl")
1616
if (NOT CMAKE_CROSSCOMPILING AND NOT SLEEF_FORCE_FIND_PACKAGE_SSL)
1717
if (SLEEF_BUILD_STATIC_TEST_BINS)
1818
set(OPENSSL_USE_STATIC_LIBS TRUE)
@@ -223,7 +223,7 @@ if(NOT CLANG_EXE_PATH)
223223
set(CLANG_EXE_PATH ${CMAKE_C_COMPILER})
224224
else()
225225
# Else we may find clang on the path?
226-
find_program(CLANG_EXE_PATH NAMES clang "clang-11" "clang-10" "clang-9" "clang-8" "clang-7" "clang-6.0" "clang-5.0" "clang-4.0" "clang-3.9")
226+
find_program(CLANG_EXE_PATH NAMES clang "clang-25" "clang-24" "clang-23" "clang-22" "clang-21" "clang-20" "clang-19" "clang-18" "clang-17")
227227
endif()
228228
endif()
229229

@@ -410,9 +410,6 @@ endif()
410410

411411
# Long double
412412

413-
option(SLEEF_DISABLE_LONG_DOUBLE "Disable long double" OFF)
414-
option(SLEEF_ENFORCE_LONG_DOUBLE "Build fails if long double is not supported by the compiler" OFF)
415-
416413
if(NOT SLEEF_DISABLE_LONG_DOUBLE)
417414
CHECK_TYPE_SIZE("long double" LD_SIZE)
418415
if(LD_SIZE GREATER "9")
@@ -433,9 +430,6 @@ endif()
433430

434431
# float128
435432

436-
option(SLEEF_DISABLE_FLOAT128 "Disable float128" OFF)
437-
option(SLEEF_ENFORCE_FLOAT128 "Build fails if float128 is not supported by the compiler" OFF)
438-
439433
if(NOT SLEEF_DISABLE_FLOAT128)
440434
CHECK_C_SOURCE_COMPILES("
441435
int main() { __float128 r = 1;
@@ -455,10 +449,37 @@ if(COMPILER_SUPPORTS_FLOAT128)
455449
}" COMPILER_SUPPORTS_QUADMATH)
456450
endif()
457451

458-
# SSE2
452+
if(COMPILER_SUPPORTS_FLOAT128)
453+
if (CMAKE_CXX_COMPILER_TARGET)
454+
set(CMAKE_REQUIRED_FLAGS "--target=${CMAKE_CXX_COMPILER_TARGET}")
455+
endif()
456+
CHECK_CXX_SOURCE_COMPILES("
457+
#include <bit>
458+
struct s { long long x, y; };
459+
int main(int argc, char **argv) {
460+
constexpr s a = std::bit_cast<s>(__float128(0.1234)*__float128(56.789));
461+
static_assert((a.x ^ a.y) == 0xc7d695c93a4e2b71LL);
462+
__float128 i = argc;
463+
return (int)i;
464+
}
465+
" SLEEF_FLOAT128_IS_IEEEQP)
466+
set(CMAKE_REQUIRED_FLAGS)
467+
endif()
468+
469+
if (CMAKE_CXX_COMPILER_TARGET)
470+
set(CMAKE_REQUIRED_FLAGS "--target=${CMAKE_CXX_COMPILER_TARGET}")
471+
endif()
472+
CHECK_CXX_SOURCE_COMPILES("
473+
#include <bit>
474+
struct s { long long x, y; };
475+
int main(void) {
476+
constexpr s a = std::bit_cast<s>((long double)0.1234*(long double)56.789);
477+
static_assert((a.x ^ a.y) == 0xc7d695c93a4e2b71LL);
478+
}
479+
" SLEEF_LONGDOUBLE_IS_IEEEQP)
480+
set(CMAKE_REQUIRED_FLAGS)
459481

460-
option(SLEEF_DISABLE_SSE2 "Disable SSE2" OFF)
461-
option(SLEEF_ENFORCE_SSE2 "Build fails if SSE2 is not supported by the compiler" OFF)
482+
# SSE2
462483

463484
if(SLEEF_ARCH_X86 AND NOT SLEEF_DISABLE_SSE2)
464485
string (REPLACE ";" " " CMAKE_REQUIRED_FLAGS "${FLAGS_ENABLE_SSE2}")
@@ -479,9 +500,6 @@ endif()
479500

480501
# SSE 4.1
481502

482-
option(SLEEF_DISABLE_SSE4 "Disable SSE4" OFF)
483-
option(SLEEF_ENFORCE_SSE4 "Build fails if SSE4 is not supported by the compiler" OFF)
484-
485503
if(SLEEF_ARCH_X86 AND NOT SLEEF_DISABLE_SSE4)
486504
string (REPLACE ";" " " CMAKE_REQUIRED_FLAGS "${FLAGS_ENABLE_SSE4}")
487505
CHECK_C_SOURCE_COMPILES("
@@ -501,9 +519,6 @@ endif()
501519

502520
# AVX
503521

504-
option(SLEEF_ENFORCE_AVX "Disable AVX" OFF)
505-
option(SLEEF_ENFORCE_AVX "Build fails if AVX is not supported by the compiler" OFF)
506-
507522
if(SLEEF_ARCH_X86 AND NOT SLEEF_DISABLE_AVX)
508523
string (REPLACE ";" " " CMAKE_REQUIRED_FLAGS "${FLAGS_ENABLE_AVX}")
509524
CHECK_C_SOURCE_COMPILES("
@@ -523,9 +538,6 @@ endif()
523538

524539
# FMA4
525540

526-
option(SLEEF_DISABLE_FMA4 "Disable FMA4" OFF)
527-
option(SLEEF_ENFORCE_FMA4 "Build fails if FMA4 is not supported by the compiler" OFF)
528-
529541
if(SLEEF_ARCH_X86 AND NOT SLEEF_DISABLE_FMA4)
530542
string (REPLACE ";" " " CMAKE_REQUIRED_FLAGS "${FLAGS_ENABLE_FMA4}")
531543
CHECK_C_SOURCE_COMPILES("
@@ -545,9 +557,6 @@ endif()
545557

546558
# AVX2
547559

548-
option(SLEEF_DISABLE_AVX2 "Disable AVX2" OFF)
549-
option(SLEEF_ENFORCE_AVX2 "Build fails if AVX2 is not supported by the compiler" OFF)
550-
551560
if(SLEEF_ARCH_X86 AND NOT SLEEF_DISABLE_AVX2)
552561
string (REPLACE ";" " " CMAKE_REQUIRED_FLAGS "${FLAGS_ENABLE_AVX2}")
553562
CHECK_C_SOURCE_COMPILES("
@@ -572,8 +581,6 @@ endif()
572581

573582
# AVX512F
574583

575-
option(SLEEF_DISABLE_AVX512F "Disable AVX512F" OFF)
576-
option(SLEEF_ENFORCE_AVX512F "Build fails if AVX512F is not supported by the compiler" OFF)
577584

578585
if(SLEEF_ARCH_X86 AND NOT SLEEF_DISABLE_AVX512F)
579586
string (REPLACE ";" " " CMAKE_REQUIRED_FLAGS "${FLAGS_ENABLE_AVX512F}")
@@ -604,9 +611,6 @@ endif()
604611

605612
# SVE
606613

607-
option(SLEEF_DISABLE_SVE "Disable SVE" OFF)
608-
option(SLEEF_ENFORCE_SVE "Build fails if SVE is not supported by the compiler" OFF)
609-
610614
# Darwin does not support SVE yet (see issue #474),
611615
# therefore we disable SVE on Darwin systems.
612616
if(SLEEF_ARCH_AARCH64 AND NOT SLEEF_DISABLE_SVE AND NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin")
@@ -628,9 +632,6 @@ endif()
628632

629633
# VSX
630634

631-
option(SLEEF_DISABLE_VSX "Disable VSX" OFF)
632-
option(SLEEF_ENFORCE_VSX "Build fails if VSX is not supported by the compiler" OFF)
633-
634635
if(SLEEF_ARCH_PPC64 AND NOT SLEEF_DISABLE_VSX)
635636
string (REPLACE ";" " " CMAKE_REQUIRED_FLAGS "${FLAGS_ENABLE_VSX}")
636637
CHECK_C_SOURCE_COMPILES("
@@ -658,9 +659,6 @@ endif()
658659

659660
# VSX3
660661

661-
option(SLEEF_DISABLE_VSX3 "Disable VSX3" OFF)
662-
option(SLEEF_ENFORCE_VSX3 "Build fails if VSX3 is not supported by the compiler" OFF)
663-
664662
if(SLEEF_ARCH_PPC64 AND NOT SLEEF_DISABLE_VSX3)
665663
string (REPLACE ";" " " CMAKE_REQUIRED_FLAGS "${FLAGS_ENABLE_VSX3}")
666664
CHECK_C_SOURCE_COMPILES("
@@ -687,9 +685,6 @@ endif()
687685

688686
# IBM Z
689687

690-
option(SLEEF_DISABLE_VXE "Disable VXE" OFF)
691-
option(SLEEF_ENFORCE_VXE "Build fails if VXE is not supported by the compiler" OFF)
692-
693688
if(SLEEF_ARCH_S390X AND NOT SLEEF_DISABLE_VXE)
694689
string (REPLACE ";" " " CMAKE_REQUIRED_FLAGS "${FLAGS_ENABLE_VXE}")
695690
CHECK_C_SOURCE_COMPILES("
@@ -711,9 +706,6 @@ endif()
711706

712707
#
713708

714-
option(SLEEF_DISABLE_VXE2 "Disable VXE2" OFF)
715-
option(SLEEF_ENFORCE_VXE2 "Build fails if VXE2 is not supported by the compiler" OFF)
716-
717709
if(SLEEF_ARCH_S390X AND NOT SLEEF_DISABLE_VXE2)
718710
string (REPLACE ";" " " CMAKE_REQUIRED_FLAGS "${FLAGS_ENABLE_VXE2}")
719711
CHECK_C_SOURCE_COMPILES("
@@ -735,9 +727,6 @@ endif()
735727

736728
# RVVM1
737729

738-
option(SLEEF_DISABLE_RVVM1 "Disable RVVM1" OFF)
739-
option(SLEEF_ENFORCE_RVVM1 "Build fails if RVVM1 is not supported by the compiler" OFF)
740-
741730
if(SLEEF_ARCH_RISCV64 AND NOT SLEEF_DISABLE_RVVM1)
742731
string (REPLACE ";" " " CMAKE_REQUIRED_FLAGS "${FLAGS_ENABLE_RVVM1}")
743732
CHECK_C_SOURCE_COMPILES("
@@ -771,9 +760,6 @@ endif()
771760

772761
# RVVM2
773762

774-
option(SLEEF_DISABLE_RVVM2 "Disable RVVM2" OFF)
775-
option(SLEEF_ENFORCE_RVVM2 "Build fails if RVVM2 is not supported by the compiler" OFF)
776-
777763
if(SLEEF_ARCH_RISCV64 AND NOT SLEEF_DISABLE_RVVM2)
778764
string (REPLACE ";" " " CMAKE_REQUIRED_FLAGS "${FLAGS_ENABLE_RVVM2}")
779765
CHECK_C_SOURCE_COMPILES("
@@ -807,17 +793,12 @@ endif()
807793

808794
# CUDA
809795

810-
option(SLEEF_ENFORCE_CUDA "Build fails if CUDA is not supported" OFF)
811-
812796
if (SLEEF_ENFORCE_CUDA AND NOT CMAKE_CUDA_COMPILER)
813797
message(FATAL_ERROR "SLEEF_ENFORCE_CUDA is specified and that feature is disabled or not supported by the compiler")
814798
endif()
815799

816800
# OpenMP
817801

818-
option(SLEEF_DISABLE_OPENMP "Disable OPENMP" OFF)
819-
option(SLEEF_ENFORCE_OPENMP "Build fails if OPENMP is not supported by the compiler" OFF)
820-
821802
if(NOT SLEEF_DISABLE_OPENMP)
822803
find_package(OpenMP)
823804
# Check if compilation with OpenMP really succeeds

sleef-config.h.in

+5
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@
66
#define SLEEF_VERSION_MAJOR @SLEEF_VERSION_MAJOR@
77
#define SLEEF_VERSION_MINOR @SLEEF_VERSION_MINOR@
88

9+
#cmakedefine SLEEF_FLOAT128_IS_IEEEQP
10+
#cmakedefine SLEEF_LONGDOUBLE_IS_IEEEQP
11+
12+
#ifndef SLEEF_STATIC_LIBS
913
#cmakedefine SLEEF_STATIC_LIBS
14+
#endif
1015

1116
#endif // SLEEF_CONFIG_H

src/common/quaddef.h

+1-18
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,11 @@
55

66
#if !defined(SLEEF_GENHEADER)
77

8-
#if (defined(__SIZEOF_FLOAT128__) && __SIZEOF_FLOAT128__ == 16) || (defined(__linux__) && defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))) || (defined(__PPC64__) && defined(__GNUC__) && !defined(__clang__) && __GNUC__ >= 8)
9-
#define SLEEF_FLOAT128_IS_IEEEQP
10-
#endif
11-
12-
#if !defined(SLEEF_FLOAT128_IS_IEEEQP) && defined(__SIZEOF_LONG_DOUBLE__) && __SIZEOF_LONG_DOUBLE__ == 16 && (defined(__aarch64__) || defined(__zarch__) || defined(__riscv))
13-
#define SLEEF_LONGDOUBLE_IS_IEEEQP
14-
#endif
8+
#include "sleef-config.h"
159

1610
#if !defined(Sleef_quad_DEFINED)
1711
#define Sleef_quad_DEFINED
1812
typedef struct { uint64_t x, y; } Sleef_uint64_2t;
19-
#ifdef _AIX
20-
#undef SLEEF_FLOAT128_IS_IEEEQP
21-
#endif
2213
#if defined(SLEEF_FLOAT128_IS_IEEEQP) || defined(ENABLEFLOAT128)
2314
typedef __float128 Sleef_quad;
2415
#define SLEEF_QUAD_C(x) (x ## Q)
@@ -77,14 +68,6 @@ typedef union {
7768

7869
#else // #if !defined(SLEEF_GENHEADER)
7970

80-
SLEEFSHARPif !defined(SLEEFXXX__NVCC__) && ((defined(SLEEFXXX__SIZEOF_FLOAT128__) && SLEEFXXX__SIZEOF_FLOAT128__ == 16) || (defined(SLEEFXXX__linux__) && defined(SLEEFXXX__GNUC__) && (defined(SLEEFXXX__i386__) || defined(SLEEFXXX__x86_64__))) || (defined(SLEEFXXX__PPC64__) && defined(SLEEFXXX__GNUC__) && !defined(SLEEFXXX__clang__) && SLEEFXXX__GNUC__ >= 8))
81-
SLEEFSHARPdefine SLEEFXXXSLEEF_FLOAT128_IS_IEEEQP
82-
SLEEFSHARPendif
83-
84-
SLEEFSHARPif !defined(SLEEFXXXSLEEF_FLOAT128_IS_IEEEQP) && !defined(SLEEFXXX__NVCC__) && defined(SLEEFXXX__SIZEOF_LONG_DOUBLE__) && SLEEFXXX__SIZEOF_LONG_DOUBLE__ == 16 && (defined(SLEEFXXX__aarch64__) || defined(SLEEFXXX__zarch__) || defined(SLEEFXXX__riscv))
85-
SLEEFSHARPdefine SLEEFXXXSLEEF_LONGDOUBLE_IS_IEEEQP
86-
SLEEFSHARPendif
87-
8871
SLEEFSHARPif !defined(SLEEFXXXSleef_quad_DEFINED)
8972
SLEEFSHARPdefine SLEEFXXXSleef_quad_DEFINED
9073
typedef struct { uint64_t x, y; } Sleef_uint64_2t;

0 commit comments

Comments
 (0)