Skip to content

Commit

Permalink
stress-logmath: add logarithmic maths function exercising
Browse files Browse the repository at this point in the history
Log functions maybe supported natively by the processor or by software
calculation in libc. Exercise complex, natural, base 10 and base 2
logs on float, double and long double values.

Signed-off-by: Colin Ian King <colin.i.king@gmail.com>
  • Loading branch information
ColinIanKing committed Mar 17, 2024
1 parent 5a60a91 commit 8c3c53a
Show file tree
Hide file tree
Showing 8 changed files with 750 additions and 10 deletions.
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -369,6 +369,7 @@ STRESS_SRC = \
stress-locka.c \
stress-lockf.c \
stress-lockofd.c \
stress-logmath.c \
stress-longjmp.c \
stress-loop.c \
stress-lsearch.c \
Expand Down
92 changes: 83 additions & 9 deletions Makefile.config
Original file line number Diff line number Diff line change
Expand Up @@ -1790,14 +1790,17 @@ functions: \
ATOMIC_LOAD_DOUBLE ATOMIC_NAND_FETCH ATOMIC_OR_FETCH ATOMIC_STORE \
ATOMIC_STORE_DOUBLE ATOMIC_SUB_FETCH ATOMIC_TEST_AND_SET ATOMIC_XOR_FETCH BRK \
BSD_STRLCAT BSD_STRLCPY BSEARCH BUILTIN_ASSUME_ALIGNED BUILTIN_BITREVERSE \
BUILTIN_BSWAP32 BUILTIN_CABSL BUILTIN_CEXP BUILTIN_CCOS BUILTIN_CCOSF \
BUILTIN_CCOSL BUILTIN_CLZ BUILTIN_CLZL BUILTIN_CLZLL BUILTIN_CONSTANT_P \
BUILTIN_BSWAP32 BUILTIN_CABS BUILTIN_CABSF BUILTIN_CABSL BUILTIN_CEXP \
BUILTIN_CCOS BUILTIN_CCOSF BUILTIN_CCOSL BUILTIN_CLOG BUILTIN_CLOGF \
BUILTIN_CLOGL BUILTIN_CLZ BUILTIN_CLZL BUILTIN_CLZLL BUILTIN_CONSTANT_P \
BUILTIN_COS BUILTIN_COSF BUILTIN_COSHL BUILTIN_COSL BUILTIN_CPOW \
BUILTIN_CPU_IS_POWER9 BUILTIN_CSIN BUILTIN_CSINF BUILTIN_CSINL \
BUILTIN_CTZ BUILTIN_EXP BUILTIN_EXPECT BUILTIN_EXPL BUILTIN_FABS \
BUILTIN_FABSF BUILTIN_FABSL BUILTIN_IA32_MOVNTDQ BUILTIN_IA32_MOVNTI \
BUILTIN_IA32_MOVNTI64 BUILTIN_LGAMMAL BUILTIN_LLABS BUILTIN_LOG BUILTIN_LOGL \
BUILTIN_MEMCPY BUILTIN_MEMCMP BUILTIN_MEMMOVE BUILTIN_MEMSET BUILTIN_NONTEMPORAL_LOAD \
BUILTIN_IA32_MOVNTI64 BUILTIN_LGAMMAL BUILTIN_LLABS BUILTIN_LOG10 \
BUILTIN_LOG10F BUILTIN_LOG10L BUILTIN_LOG2 BUILTIN_LOG2F BUILTIN_LOG2L \
BUILTIN_LOG BUILTIN_LOGF BUILTIN_LOGL BUILTIN_MEMCPY BUILTIN_MEMCMP \
BUILTIN_MEMMOVE BUILTIN_MEMSET BUILTIN_NONTEMPORAL_LOAD \
BUILTIN_NONTEMPORAL_STORE BUILTIN_PARITY BUILTIN_POPCOUNT BUILTIN_POPCOUNTL \
BUILTIN_POPCOUNTLL BUILTIN_POW BUILTIN_PREFETCH BUILTIN_RINT \
BUILTIN_RINTL BUILTIN_ROTATELEFT8 BUILTIN_ROTATELEFT16 BUILTIN_ROTATELEFT32 \
Expand All @@ -1810,8 +1813,9 @@ functions: \
INTRINSIC_RORB INTRINSIC_RORD INTRINSIC_RORW INTRINSIC_RORQ \
CABSL CACHEFLUSH CCOS CCOSF CCOSL CFGETISPEED CFGETOSPEED \
CHROOT CIMAG CIMAGF CIMAGL CLEARENV CLOCK_ADJTIME \
CLOCK_GETRES CLOCK_GETTIME CLOCK_NANOSLEEP CLOCK_SETTIME CLONE COPY_FILE_RANGE \
COSHL COSL CPOW CREAL CREALF CREALL CRYPT_R CSIN CSINF CSINL DUP3 DRAND48 DELETE_MODULE \
CLOCK_GETRES CLOCK_GETTIME CLOCK_NANOSLEEP CLOCK_SETTIME \
CLOG CLOGF CLOGL CLONE COPY_FILE_RANGE COSHL COSL CPOW CREAL CREALF CREALL \
CRYPT_R CSIN CSINF CSINL DUP3 DRAND48 DELETE_MODULE \
EIGEN ENDMNTENT ENDPWENT EPOLL_CREATE \
EPOLL_CREATE1 EVENTFD EXECUTABLE_START EXECVEAT EXPL FACCESSAT \
FACCESSAT2 FALLOCATE FANOTIFY FCHMODAT FCHMODAT2 FCHOWNAT FDATASYNC \
Expand All @@ -1820,9 +1824,9 @@ functions: \
GETENTROPY GETEXECNAME GETHOSTID GETHOSTNAME GETITIMER GETLOADAVG GETMNTENT \
GETMNTINFO GETPAGESIZE GETPGID GETPGRP GETPRIORITY GETPWENT GETRANDOM GETRESGID \
GETRESUID GETRUSAGE GETSID GETTID GETTIMEOFDAY GETXATTR HSEARCH INDEX INOTIFY INOTIFY1 \
IOPL IOPORT LGAMMAL LGETXATTR LINKAT LISTXATTR LLISTXATTR LSTAT LOCKF LOGL \
LOOKUP_DCOOKIE LRAND48 LREMOVEXATTR LSEARCH LSEEK64 LSETXATTR \
MADVISE MALLOC_TRIM MALLOC_USABLE_SIZE MALLOPT MEMALIGN MEMBARRIER \
IOPL IOPORT LGAMMAL LGETXATTR LINKAT LISTXATTR LLISTXATTR LSTAT LOCKF LOG LOGF LOGL \
LOG2 LOG2F LOG2L LOG10 LOG10F LOG10L LOOKUP_DCOOKIE LRAND48 LREMOVEXATTR LSEARCH \
LSEEK64 LSETXATTR MADVISE MALLOC_TRIM MALLOC_USABLE_SIZE MALLOPT MEMALIGN MEMBARRIER \
MEMFD_CREATE MINCORE MKDIRAT MKNODAT MLOCK MLOCK2 MLOCKALL \
MM_STREAM_SI128 MM_STREAM_SI64 MM_STREAM_SI32 \
MODIFY_LDT MPROTECT MQUERY MQ_POSIX MQ_SYSV MREMAP MSYNC MUNLOCK \
Expand Down Expand Up @@ -1972,6 +1976,12 @@ BUILTIN_BITREVERSE:
BUILTIN_BSWAP32:
$(call check,test-builtin-bswap32,HAVE_BUILTIN_BSWAP32,__builtin_bswap32)

BUILTIN_CABS:
$(call check,test-mathfunc,HAVE_BUILTIN_CABS,__builtin_cabs,$(LIB_M),-DMATHFUNC=__builtin_cabs)

BUILTIN_CABSF:
$(call check,test-mathfunc,HAVE_BUILTIN_CABSF,__builtin_cabsf,$(LIB_M),-DMATHFUNC=__builtin_cabsf)

BUILTIN_CABSL:
$(call check,test-mathfunc,HAVE_BUILTIN_CABSL,__builtin_cabsl,$(LIB_M),-DMATHFUNC=__builtin_cabsl)

Expand All @@ -1987,6 +1997,15 @@ BUILTIN_CCOSF:
BUILTIN_CCOSL:
$(call check,test-mathfunc,HAVE_BUILTIN_CCOSL,__builtin_ccosl,$(LIB_M),-DMATHFUNC=__builtin_ccosl)

BUILTIN_CLOG:
$(call check,test-mathfunc,HAVE_BUILTIN_CLOG,__builtin_clog,$(LIB_M),-DMATHFUNC=__builtin_clog)

BUILTIN_CLOGF:
$(call check,test-mathfunc,HAVE_BUILTIN_CLOGF,__builtin_clogf,$(LIB_M),-DMATHFUNC=__builtin_clogf)

BUILTIN_CLOGL:
$(call check,test-mathfunc,HAVE_BUILTIN_CLOGL,__builtin_clogl,$(LIB_M),-DMATHFUNC=__builtin_clogl)

BUILTIN_CLZ:
$(call check,test-builtin-clz,HAVE_BUILTIN_CLZ,__builtin_clz)

Expand Down Expand Up @@ -2062,6 +2081,27 @@ BUILTIN_LGAMMAL:
BUILTIN_LLABS:
$(call check,test-builtin-llabs,HAVE_BUILTIN_LLABS,__builtin_llabs)

BUILTIN_LOG10F:
$(call check,test-mathfunc,HAVE_BUILTIN_LOG10F,__builtin_log10f,$(LIB_M),-DMATHFUNC=__builtin_log10f)

BUILTIN_LOG10:
$(call check,test-mathfunc,HAVE_BUILTIN_LOG10,__builtin_log10,$(LIB_M),-DMATHFUNC=__builtin_log10)

BUILTIN_LOG10L:
$(call check,test-mathfunc,HAVE_BUILTIN_LOG10L,__builtin_log10l,$(LIB_M),-DMATHFUNC=__builtin_log10l)

BUILTIN_LOG2F:
$(call check,test-mathfunc,HAVE_BUILTIN_LOG2F,__builtin_log2f,$(LIB_M),-DMATHFUNC=__builtin_log2f)

BUILTIN_LOG2:
$(call check,test-mathfunc,HAVE_BUILTIN_LOG2,__builtin_log2,$(LIB_M),-DMATHFUNC=__builtin_log2)

BUILTIN_LOG2L:
$(call check,test-mathfunc,HAVE_BUILTIN_LOG2L,__builtin_log2l,$(LIB_M),-DMATHFUNC=__builtin_log2l)

BUILTIN_LOGF:
$(call check,test-mathfunc,HAVE_BUILTIN_LOGF,__builtin_logf,$(LIB_M),-DMATHFUNC=__builtin_logf)

BUILTIN_LOG:
$(call check,test-mathfunc,HAVE_BUILTIN_LOG,__builtin_log,$(LIB_M),-DMATHFUNC=__builtin_log)

Expand Down Expand Up @@ -2263,6 +2303,15 @@ CLOCK_NANOSLEEP:
CLOCK_SETTIME:
$(call check,test-clock-settime,HAVE_CLOCK_SETTIME,clock_settime)

CLOG:
$(call check,test-mathfunc,HAVE_CLOG,clog,$(LIB_M),-DMATHFUNC=clog)

CLOGF:
$(call check,test-mathfunc,HAVE_CLOGF,clogf,$(LIB_M),-DMATHFUNC=clogf)

CLOGL:
$(call check,test-mathfunc,HAVE_CLOGL,clogl,$(LIB_M),-DMATHFUNC=clogl)

CLONE:
$(call check,test-clone,HAVE_CLONE,clone)

Expand Down Expand Up @@ -2509,9 +2558,34 @@ LSTAT:
LOCKF:
$(call check,test-lockf,HAVE_LOCKF,lockf)

LOG:
$(call check,test-mathfunc,HAVE_LOG,log,$(LIB_M),-DMATHFUNC=log)

LOGF:
$(call check,test-mathfunc,HAVE_LOGF,logf,$(LIB_M),-DMATHFUNC=logf)

LOGL:
$(call check,test-mathfunc,HAVE_LOGL,logl,$(LIB_M),-DMATHFUNC=logl)

LOG2:
$(call check,test-mathfunc,HAVE_LOG2,log2,$(LIB_M),-DMATHFUNC=log2)

LOG2F:
$(call check,test-mathfunc,HAVE_LOG2F,log2f,$(LIB_M),-DMATHFUNC=log2f)

LOG2L:
$(call check,test-mathfunc,HAVE_LOG2L,log2l,$(LIB_M),-DMATHFUNC=log2l)

LOG10:
$(call check,test-mathfunc,HAVE_LOG10,log10,$(LIB_M),-DMATHFUNC=log10)

LOG10F:
$(call check,test-mathfunc,HAVE_LOG10F,log10f,$(LIB_M),-DMATHFUNC=log10f)

LOG10L:
$(call check,test-mathfunc,HAVE_LOG10L,log10l,$(LIB_M),-DMATHFUNC=log10l)


LOOKUP_DCOOKIE:
$(call check,test-lookup-dcookie,HAVE_LOOKUP_DCOOKIE,lookup_dcookie)

Expand Down
84 changes: 84 additions & 0 deletions core-builtin.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,18 @@
#define shim_memcmp(dst, src, n) memcmp(dst, src, n)
#endif

#if defined(HAVE_BUILTIN_CABS)
#define shim_cabs(x) __builtin_cabs(x)
#else
#define shim_cabs(x) cabs(x)
#endif

#if defined(HAVE_BUILTIN_CABSF)
#define shim_cabsf(x) __builtin_cabsf(x)
#else
#define shim_cabsf(x) cabsf(x)
#endif

#if defined(HAVE_BUILTIN_CABSL)
#define shim_cabsl(x) __builtin_cabsl(x)
#else
Expand Down Expand Up @@ -103,6 +115,34 @@
#endif
#endif

#if defined(HAVE_BUILTIN_CLOGF)
#define shim_clogf(x) __builtin_clogf(x)
#else
#define shim_clogf(x) clogf(x)
#endif

#if defined(HAVE_BUILTIN_CLOG)
#define shim_clog(x) __builtin_clog(x)
#else
#define shim_clog(x) clog(x)
#endif

#if defined(HAVE_BUILTIN_CLOGL)
#define shim_clogl(x) __builtin_clogl(x)
#else
#if defined(HAVE_CLOGL)
#define shim_clogl(x) clogl(x)
#else
#define shim_clogl(x) shim_clog(x)
#endif
#endif

#if defined(HAVE_BUILTIN_LOGF)
#define shim_logf(x) __builtin_logf(x)
#else
#define shim_logf(x) logf(x)
#endif

#if defined(HAVE_BUILTIN_LOG)
#define shim_log(x) __builtin_log(x)
#else
Expand All @@ -119,6 +159,50 @@
#endif
#endif

#if defined(HAVE_BUILTIN_LOG10F)
#define shim_log10f(x) __builtin_log10f(x)
#else
#define shim_log10f(x) log10f(x)
#endif

#if defined(HAVE_BUILTIN_LOG10)
#define shim_log10(x) __builtin_log10(x)
#else
#define shim_log10(x) log10(x)
#endif

#if defined(HAVE_BUILTIN_LOG10L)
#define shim_log10l(x) __builtin_log10l(x)
#else
#if defined(HAVE_LOGL10)
#define shim_log10l(x) log10l(x)
#else
#define shim_log10l(x) shim_log10(x)
#endif
#endif

#if defined(HAVE_BUILTIN_LOG2F)
#define shim_log2f(x) __builtin_log2f(x)
#else
#define shim_log2f(x) log2f(x)
#endif

#if defined(HAVE_BUILTIN_LOG2)
#define shim_log2(x) __builtin_log2(x)
#else
#define shim_log2(x) log2(x)
#endif

#if defined(HAVE_BUILTIN_LOG2L)
#define shim_log2l(x) __builtin_log2l(x)
#else
#if defined(HAVE_LOGL2)
#define shim_log2l(x) log2l(x)
#else
#define shim_log2l(x) shim_log2(x)
#endif
#endif

#if defined(HAVE_BUILTIN_EXP)
#define shim_exp(x) __builtin_exp(x)
#else
Expand Down
3 changes: 3 additions & 0 deletions core-opts.c
Original file line number Diff line number Diff line change
Expand Up @@ -427,6 +427,9 @@ const struct option stress_long_options[] = {
{ "log-brief", 0, 0, OPT_log_brief },
{ "log-file", 1, 0, OPT_log_file },
{ "log-lockless", 0, 0, OPT_log_lockless },
{ "logmath", 1, 0, OPT_logmath },
{ "logmath-method", 1, 0, OPT_logmath_method },
{ "logmath-ops", 1, 0, OPT_logmath},
{ "longjmp", 1, 0, OPT_longjmp },
{ "longjmp-ops", 1, 0, OPT_longjmp_ops },
{ "loop", 1, 0, OPT_loop },
Expand Down
4 changes: 4 additions & 0 deletions core-opts.h
Original file line number Diff line number Diff line change
Expand Up @@ -665,6 +665,10 @@ typedef enum {
OPT_log_file,
OPT_log_lockless,

OPT_logmath,
OPT_logmath_method,
OPT_logmath_ops,

OPT_longjmp,
OPT_longjmp_ops,

Expand Down
1 change: 1 addition & 0 deletions core-stressors.h
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,7 @@
MACRO(lockbus) \
MACRO(lockf) \
MACRO(lockofd) \
MACRO(logmath) \
MACRO(longjmp) \
MACRO(loop) \
MACRO(lsearch) \
Expand Down
Loading

0 comments on commit 8c3c53a

Please sign in to comment.