Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ pipeline {
bat """
call "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Auxiliary\\Build\\vcvars64.bat"
if not %ERRORLEVEL% == 0 exit /b %ERRORLEVEL%
call "winbuild-clang.bat" -DCMAKE_BUILD_TYPE=Release -DSLEEF_SHOW_CONFIG=1 -DSLEEF_BUILD_DFT=False -DSLEEF_BUILD_QUAD=TRUE -DSLEEF_ENFORCE_SSE2=TRUE -DSLEEF_ENFORCE_SSE4=TRUE -DSLEEF_ENFORCE_AVX=TRUE -DSLEEF_ENFORCE_AVX2=TRUE -DSLEEF_ENFORCE_AVX512F=TRUE -DSLEEF_ENABLE_TESTER4=False -DSLEEF_DISABLE_SSL=False
call "winbuild-clang.bat" -DCMAKE_BUILD_TYPE=Release -DSLEEF_SHOW_CONFIG=1 -DSLEEF_BUILD_DFT=True -DSLEEF_BUILD_QUAD=TRUE -DSLEEF_ENFORCE_SSE2=TRUE -DSLEEF_ENFORCE_SSE4=TRUE -DSLEEF_ENFORCE_AVX=TRUE -DSLEEF_ENFORCE_AVX2=TRUE -DSLEEF_ENFORCE_AVX512F=TRUE -DSLEEF_ENABLE_TESTER4=False -DSLEEF_DISABLE_SSL=True
if not %ERRORLEVEL% == 0 exit /b %ERRORLEVEL%
ctest -j 4 --output-on-failure
exit /b %ERRORLEVEL%
Expand All @@ -76,7 +76,7 @@ pipeline {
bat """
call "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Auxiliary\\Build\\vcvars64.bat"
if not %ERRORLEVEL% == 0 exit /b %ERRORLEVEL%
call "winbuild-msvc.bat" -DCMAKE_BUILD_TYPE=Release -DSLEEF_SHOW_CONFIG=1 -DSLEEF_BUILD_DFT=True -DSLEEF_BUILD_QUAD=TRUE -DSLEEF_ENFORCE_SSE2=TRUE -DSLEEF_ENFORCE_SSE4=TRUE -DSLEEF_ENFORCE_AVX=TRUE -DSLEEF_ENFORCE_AVX2=TRUE -DSLEEF_ENFORCE_AVX512F=TRUE -DSLEEF_ENABLE_TESTER4=True -DSLEEF_DISABLE_SSL=True
call "winbuild-msvc.bat" -DCMAKE_BUILD_TYPE=Release -DSLEEF_SHOW_CONFIG=1 -DSLEEF_BUILD_DFT=True -DSLEEF_BUILD_QUAD=TRUE -DSLEEF_ENFORCE_SSE2=TRUE -DSLEEF_ENFORCE_SSE4=TRUE -DSLEEF_ENFORCE_AVX=TRUE -DSLEEF_ENFORCE_AVX2=TRUE -DSLEEF_ENFORCE_AVX512F=TRUE -DSLEEF_ENABLE_TESTER4=True
if not %ERRORLEVEL% == 0 exit /b %ERRORLEVEL%
ctest -j 4 --output-on-failure
exit /b %ERRORLEVEL%
Expand Down Expand Up @@ -189,6 +189,7 @@ pipeline {
cmake -E time ninja
export OMP_WAIT_POLICY=passive
export CTEST_OUTPUT_ON_FAILURE=TRUE
export LD_LIBRARY_PATH=/usr/powerpc64le-linux-gnu/lib
ctest -j `nproc`
ninja install
'''
Expand Down
22 changes: 22 additions & 0 deletions src/common/qtesterutil.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@
#include "quaddef.h"
#include "testerutil.h"

#ifdef __cplusplus
extern "C" {
#endif

typedef struct {
#if defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
uint64_t h, l;
Expand Down Expand Up @@ -51,3 +55,21 @@ Sleef_quad cast_q_str(const char *s);
Sleef_quad cast_q_str_hex(const char *s);
Sleef_quad add_q_d(Sleef_quad q, double d);
#endif

#ifdef __cplusplus
}

static tlfloat_quad rndf128_(Sleef_quad min, Sleef_quad max, int setSignRandomly) {
return std::bit_cast<tlfloat_quad>(rndf128(min, max, setSignRandomly));
}

#if !defined(TLFLOAT_COMPILER_SUPPORTS_FLOAT128) && !defined(TLFLOAT_LONGDOUBLE_IS_FLOAT128)
static Sleef_quad rndf128(tlfloat_quad min, tlfloat_quad max, int setSignRandomly) {
return rndf128(std::bit_cast<Sleef_quad>(min), std::bit_cast<Sleef_quad>(max), setSignRandomly);
}

static tlfloat_quad rndf128_(tlfloat_quad min, tlfloat_quad max, int setSignRandomly) {
return std::bit_cast<tlfloat_quad>(rndf128(std::bit_cast<Sleef_quad>(min), std::bit_cast<Sleef_quad>(max), setSignRandomly));
}
#endif
#endif
4 changes: 2 additions & 2 deletions src/common/quaddef.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
#define SLEEF_FLOAT128_IS_IEEEQP
#endif

#if !defined(SLEEF_FLOAT128_IS_IEEEQP) && defined(__SIZEOF_LONG_DOUBLE__) && __SIZEOF_LONG_DOUBLE__ == 16 && (defined(__aarch64__) || defined(__zarch__))
#if !defined(SLEEF_FLOAT128_IS_IEEEQP) && defined(__SIZEOF_LONG_DOUBLE__) && __SIZEOF_LONG_DOUBLE__ == 16 && (defined(__aarch64__) || defined(__zarch__) || defined(__riscv))
#define SLEEF_LONGDOUBLE_IS_IEEEQP
#endif

Expand Down Expand Up @@ -81,7 +81,7 @@ SLEEFSHARPif !defined(SLEEFXXX__NVCC__) && ((defined(SLEEFXXX__SIZEOF_FLOAT128__
SLEEFSHARPdefine SLEEFXXXSLEEF_FLOAT128_IS_IEEEQP
SLEEFSHARPendif

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__))
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))
SLEEFSHARPdefine SLEEFXXXSLEEF_LONGDOUBLE_IS_IEEEQP
SLEEFSHARPendif

Expand Down
39 changes: 15 additions & 24 deletions src/common/testerutil.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
// (See accompanying file LICENSE.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)

#include <string.h>

#ifdef __cplusplus
#include <tlfloat/tlfloat.h>
using namespace tlfloat;
Expand All @@ -11,6 +13,7 @@ using namespace tlfloat;
#if defined(__GNUC__) && !defined(__clang__)
#pragma GCC diagnostic ignored "-Wuninitialized"
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
#pragma GCC diagnostic ignored "-Wattributes"
#endif

#if defined(__clang__)
Expand Down Expand Up @@ -61,39 +64,27 @@ void memrand(void *p, int size);
// The following functions are meant to be inlined

static double u2d(uint64_t u) {
union {
double f;
uint64_t i;
} tmp;
tmp.i = u;
return tmp.f;
double d = 0;
memcpy(&d, &u, sizeof(d));
return d;
}

static uint64_t d2u(double d) {
union {
double f;
uint64_t i;
} tmp;
tmp.f = d;
return tmp.i;
uint64_t u = 0;
memcpy(&u, &d, sizeof(u));
return u;
}

static float u2f(uint32_t u) {
union {
float f;
uint32_t i;
} tmp;
tmp.i = u;
return tmp.f;
float f = 0;
memcpy(&f, &u, sizeof(f));
return f;
}

static uint32_t f2u(float d) {
union {
float f;
uint32_t i;
} tmp;
tmp.f = d;
return tmp.i;
uint32_t u = 0;
memcpy(&u, &d, sizeof(u));
return u;
}

static int startsWith(char *str, char *prefix) {
Expand Down
28 changes: 23 additions & 5 deletions src/libm-tester/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -246,6 +246,7 @@ macro(test_extension SIMD)
list(APPEND IUT_LIST ${IUTINAME})
endif(SLEEF_BUILD_INLINE_HEADERS AND SED_COMMAND)
endif(SLEEF_ENABLE_TESTER)

#

if (SLEEF_ENABLE_TESTER4 AND TLFLOAT_LIBRARIES)
Expand All @@ -257,7 +258,7 @@ macro(test_extension SIMD)
target_compile_options(${TARGET_TESTER4_${SIMD}}
PRIVATE ${FLAGS_ENABLE_${SIMD}})
target_compile_definitions(${TARGET_TESTER4_${SIMD}}
PRIVATE ENABLE_${SIMD}=1 ${COMMON_TARGET_DEFINITIONS} TLFLOAT_ENABLE_INLINING=1)
PRIVATE ENABLE_${SIMD}=1 ${COMMON_TARGET_DEFINITIONS})
target_link_libraries(${TARGET_TESTER4_${SIMD}} ${TARGET_LIBSLEEF} ${TLFLOAT_LIBRARIES} ${TARGET_TESTERUTIL_OBJ})
if (FORCE_AAVPCS)
target_compile_definitions(${TARGET_TESTER4_${SIMD}} PRIVATE ENABLE_AAVPCS=1)
Expand All @@ -281,7 +282,7 @@ macro(test_extension SIMD)
target_compile_options(${TARGET_TESTER4Y_${SIMD}}
PRIVATE ${FLAGS_ENABLE_${SIMD}})
target_compile_definitions(${TARGET_TESTER4Y_${SIMD}}
PRIVATE ENABLE_${SIMD}=1 ${COMMON_TARGET_DEFINITIONS} DETERMINISTIC=1 TLFLOAT_ENABLE_INLINING=1)
PRIVATE ENABLE_${SIMD}=1 ${COMMON_TARGET_DEFINITIONS} DETERMINISTIC=1)
target_link_libraries(${TARGET_TESTER4Y_${SIMD}} ${TARGET_LIBSLEEF} ${TLFLOAT_LIBRARIES} ${TARGET_TESTERUTIL_OBJ})
add_dependencies(${TARGET_TESTER4Y_${SIMD}} ${TARGET_HEADERS})
add_dependencies(${TARGET_TESTER4Y_${SIMD}} ${TARGET_LIBSLEEF})
Expand Down Expand Up @@ -310,7 +311,6 @@ macro(test_extension SIMD)
USE_INLINE_HEADER="sleefinline_${LCSIMD}.h"
MACRO_ONLY_HEADER="macroonly${SIMD}.h"
SIMD_SUFFIX=_${LCSIMD}_sleef
TLFLOAT_ENABLE_INLINING=1
)
target_include_directories(${TARGET_TESTER4I_${SIMD}} PRIVATE ${PROJECT_BINARY_DIR}/include)
add_dependencies(${TARGET_TESTER4I_${SIMD}} ${TARGET_INLINE_HEADERS})
Expand Down Expand Up @@ -511,7 +511,7 @@ if (SLEEF_ARCH_X86)
# tester4dsp128
add_executable(tester4dsp128 ${TESTER4_SRC})
target_compile_definitions(tester4dsp128 PRIVATE
ENABLE_DSP128=1 ${COMMON_TARGET_DEFINITIONS} TLFLOAT_ENABLE_INLINING=1)
ENABLE_DSP128=1 ${COMMON_TARGET_DEFINITIONS})
target_compile_options(tester4dsp128 PRIVATE ${FLAGS_ENABLE_SSE2})
target_link_libraries(tester4dsp128 ${TARGET_LIBSLEEF} ${TLFLOAT_LIBRARIES} ${TARGET_TESTERUTIL_OBJ})
add_dependencies(tester4dsp128 ${TARGET_HEADERS} ${TARGET_LIBSLEEF} ext_tlfloat)
Expand All @@ -520,7 +520,7 @@ if (SLEEF_ARCH_X86)
# tester4dsp256
add_executable(tester4dsp256 ${TESTER4_SRC})
target_compile_definitions(tester4dsp256 PRIVATE
ENABLE_DSP256=1 ${COMMON_TARGET_DEFINITIONS} TLFLOAT_ENABLE_INLINING=1)
ENABLE_DSP256=1 ${COMMON_TARGET_DEFINITIONS})
target_compile_options(tester4dsp256 PRIVATE ${FLAGS_ENABLE_AVX})
target_link_libraries(tester4dsp256 ${TARGET_LIBSLEEF} ${TLFLOAT_LIBRARIES} ${TARGET_TESTERUTIL_OBJ})
add_dependencies(tester4dsp256 ${TARGET_HEADERS} ${TARGET_LIBSLEEF} ext_tlfloat)
Expand All @@ -538,6 +538,15 @@ if (SLEEF_ARCH_PPC64)
add_test_iut(iutdsp128 1.0)
list(APPEND IUT_LIST iutdsp128)
endif(SLEEF_ENABLE_TESTER)

if (SLEEF_ENABLE_TESTER4 AND TLFLOAT_LIBRARIES)
add_executable(tester4dsp128 ${TESTER4_SRC})
target_compile_definitions(tester4dsp128 PRIVATE ENABLE_DSPPOWER_128=1 ${COMMON_TARGET_DEFINITIONS})
target_compile_options(tester4dsp128 PRIVATE ${FLAGS_ENABLE_VSX})
target_link_libraries(tester4dsp128 ${TARGET_LIBSLEEF} ${TLFLOAT_LIBRARIES} ${TARGET_TESTERUTIL_OBJ})
add_dependencies(tester4dsp128 ${TARGET_HEADERS} ${TARGET_LIBSLEEF} ext_tlfloat)
add_test_with_emu(1.0 tester4dsp128)
endif(SLEEF_ENABLE_TESTER4 AND TLFLOAT_LIBRARIES)
endif(SLEEF_ARCH_PPC64)

if (SLEEF_ARCH_S390X)
Expand All @@ -550,6 +559,15 @@ if (SLEEF_ARCH_S390X)
add_test_iut(iutdsp128 1.0)
list(APPEND IUT_LIST iutdsp128)
endif(SLEEF_ENABLE_TESTER)

if (SLEEF_ENABLE_TESTER4 AND TLFLOAT_LIBRARIES)
add_executable(tester4dsp128 ${TESTER4_SRC})
target_compile_definitions(tester4dsp128 PRIVATE ENABLE_DSPS390X_128=1 ${COMMON_TARGET_DEFINITIONS})
target_compile_options(tester4dsp128 PRIVATE ${FLAGS_ENABLE_VXE})
target_link_libraries(tester4dsp128 ${TARGET_LIBSLEEF} ${TLFLOAT_LIBRARIES} ${TARGET_TESTERUTIL_OBJ})
add_dependencies(tester4dsp128 ${TARGET_HEADERS} ${TARGET_LIBSLEEF} ext_tlfloat)
add_test_with_emu(1.0 tester4dsp128)
endif(SLEEF_ENABLE_TESTER4 AND TLFLOAT_LIBRARIES)
endif(SLEEF_ARCH_S390X)

if(SLEEF_BUILD_SCALAR_LIB)
Expand Down
Loading