Add a configure option to disable assembly code
This commit is contained in:
parent
ab6d34e043
commit
a5430f73e1
12 changed files with 26 additions and 16 deletions
|
@ -18,6 +18,7 @@ dist_man_MANS = minerd.1
|
||||||
minerd_SOURCES = elist.h miner.h compat.h \
|
minerd_SOURCES = elist.h miner.h compat.h \
|
||||||
cpu-miner.c util.c \
|
cpu-miner.c util.c \
|
||||||
sha2.c scrypt.c
|
sha2.c scrypt.c
|
||||||
|
if USE_ASM
|
||||||
if ARCH_x86
|
if ARCH_x86
|
||||||
minerd_SOURCES += sha2-x86.S scrypt-x86.S
|
minerd_SOURCES += sha2-x86.S scrypt-x86.S
|
||||||
endif
|
endif
|
||||||
|
@ -27,6 +28,7 @@ endif
|
||||||
if ARCH_ARM
|
if ARCH_ARM
|
||||||
minerd_SOURCES += sha2-arm.S scrypt-arm.S
|
minerd_SOURCES += sha2-arm.S scrypt-arm.S
|
||||||
endif
|
endif
|
||||||
|
endif
|
||||||
minerd_LDFLAGS = $(PTHREAD_FLAGS)
|
minerd_LDFLAGS = $(PTHREAD_FLAGS)
|
||||||
minerd_LDADD = @LIBCURL@ @JANSSON_LIBS@ @PTHREAD_LIBS@ @WS2_LIBS@
|
minerd_LDADD = @LIBCURL@ @JANSSON_LIBS@ @PTHREAD_LIBS@ @WS2_LIBS@
|
||||||
minerd_CPPFLAGS = @LIBCURL_CPPFLAGS@
|
minerd_CPPFLAGS = @LIBCURL_CPPFLAGS@
|
||||||
|
|
|
@ -61,7 +61,13 @@ case $target in
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if test x$have_x86 = xtrue -o x$have_x86_64 = xtrue
|
AC_ARG_ENABLE([assembly],
|
||||||
|
AS_HELP_STRING([--disable-assembly], [disable assembly-language routines]))
|
||||||
|
if test x$enable_assembly != xno; then
|
||||||
|
AC_DEFINE([USE_ASM], [1], [Define to 1 if assembly routines are wanted.])
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test x$enable_assembly != xno -a x$have_x86_64 = xtrue
|
||||||
then
|
then
|
||||||
AC_MSG_CHECKING(whether we can compile AVX code)
|
AC_MSG_CHECKING(whether we can compile AVX code)
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[asm ("vmovdqa %ymm0, %ymm1");])],
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[asm ("vmovdqa %ymm0, %ymm1");])],
|
||||||
|
@ -98,6 +104,7 @@ AC_CHECK_LIB([pthread], [pthread_create], PTHREAD_LIBS="-lpthread",
|
||||||
|
|
||||||
AM_CONDITIONAL([WANT_JANSSON], [test x$request_jansson = xtrue])
|
AM_CONDITIONAL([WANT_JANSSON], [test x$request_jansson = xtrue])
|
||||||
AM_CONDITIONAL([HAVE_WINDOWS], [test x$have_win32 = xtrue])
|
AM_CONDITIONAL([HAVE_WINDOWS], [test x$have_win32 = xtrue])
|
||||||
|
AM_CONDITIONAL([USE_ASM], [test x$enable_assembly != xno])
|
||||||
AM_CONDITIONAL([ARCH_x86], [test x$have_x86 = xtrue])
|
AM_CONDITIONAL([ARCH_x86], [test x$have_x86 = xtrue])
|
||||||
AM_CONDITIONAL([ARCH_x86_64], [test x$have_x86_64 = xtrue])
|
AM_CONDITIONAL([ARCH_x86_64], [test x$have_x86_64 = xtrue])
|
||||||
AM_CONDITIONAL([ARCH_ARM], [test x$have_arm = xtrue])
|
AM_CONDITIONAL([ARCH_ARM], [test x$have_arm = xtrue])
|
||||||
|
|
|
@ -1395,13 +1395,13 @@ out:
|
||||||
static void show_version_and_exit(void)
|
static void show_version_and_exit(void)
|
||||||
{
|
{
|
||||||
printf(PACKAGE_STRING "\n built on " __DATE__ "\n features:"
|
printf(PACKAGE_STRING "\n built on " __DATE__ "\n features:"
|
||||||
#if defined(__i386__)
|
#if defined(USE_ASM) && defined(__i386__)
|
||||||
" i386"
|
" i386"
|
||||||
#endif
|
#endif
|
||||||
#if defined(__x86_64__)
|
#if defined(USE_ASM) && defined(__x86_64__)
|
||||||
" x86_64"
|
" x86_64"
|
||||||
#endif
|
#endif
|
||||||
#if defined(__i386__) || defined(__x86_64__)
|
#if defined(USE_ASM) && (defined(__i386__) || defined(__x86_64__))
|
||||||
" SSE2"
|
" SSE2"
|
||||||
#endif
|
#endif
|
||||||
#if defined(__x86_64__) && defined(USE_AVX)
|
#if defined(__x86_64__) && defined(USE_AVX)
|
||||||
|
@ -1413,7 +1413,7 @@ static void show_version_and_exit(void)
|
||||||
#if defined(__x86_64__) && defined(USE_XOP)
|
#if defined(__x86_64__) && defined(USE_XOP)
|
||||||
" XOP"
|
" XOP"
|
||||||
#endif
|
#endif
|
||||||
#if defined(__arm__) && defined(__APCS_32__)
|
#if defined(USE_ASM) && defined(__arm__) && defined(__APCS_32__)
|
||||||
" ARM"
|
" ARM"
|
||||||
#if defined(__ARM_ARCH_5E__) || defined(__ARM_ARCH_5TE__) || \
|
#if defined(__ARM_ARCH_5E__) || defined(__ARM_ARCH_5TE__) || \
|
||||||
defined(__ARM_ARCH_5TEJ__) || defined(__ARM_ARCH_6__) || \
|
defined(__ARM_ARCH_5TEJ__) || defined(__ARM_ARCH_6__) || \
|
||||||
|
|
3
miner.h
3
miner.h
|
@ -136,19 +136,20 @@ void sha256_init(uint32_t *state);
|
||||||
void sha256_transform(uint32_t *state, const uint32_t *block, int swap);
|
void sha256_transform(uint32_t *state, const uint32_t *block, int swap);
|
||||||
void sha256d(unsigned char *hash, const unsigned char *data, int len);
|
void sha256d(unsigned char *hash, const unsigned char *data, int len);
|
||||||
|
|
||||||
|
#ifdef USE_ASM
|
||||||
#if defined(__ARM_NEON__) || defined(__i386__) || defined(__x86_64__)
|
#if defined(__ARM_NEON__) || defined(__i386__) || defined(__x86_64__)
|
||||||
#define HAVE_SHA256_4WAY 1
|
#define HAVE_SHA256_4WAY 1
|
||||||
int sha256_use_4way();
|
int sha256_use_4way();
|
||||||
void sha256_init_4way(uint32_t *state);
|
void sha256_init_4way(uint32_t *state);
|
||||||
void sha256_transform_4way(uint32_t *state, const uint32_t *block, int swap);
|
void sha256_transform_4way(uint32_t *state, const uint32_t *block, int swap);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__x86_64__) && defined(USE_AVX2)
|
#if defined(__x86_64__) && defined(USE_AVX2)
|
||||||
#define HAVE_SHA256_8WAY 1
|
#define HAVE_SHA256_8WAY 1
|
||||||
int sha256_use_8way();
|
int sha256_use_8way();
|
||||||
void sha256_init_8way(uint32_t *state);
|
void sha256_init_8way(uint32_t *state);
|
||||||
void sha256_transform_8way(uint32_t *state, const uint32_t *block, int swap);
|
void sha256_transform_8way(uint32_t *state, const uint32_t *block, int swap);
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
extern int scanhash_sha256d(int thr_id, uint32_t *pdata,
|
extern int scanhash_sha256d(int thr_id, uint32_t *pdata,
|
||||||
const uint32_t *ptarget, uint32_t max_nonce, unsigned long *hashes_done);
|
const uint32_t *ptarget, uint32_t max_nonce, unsigned long *hashes_done);
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
#include "cpuminer-config.h"
|
#include "cpuminer-config.h"
|
||||||
|
|
||||||
#if defined(__arm__) && defined(__APCS_32__)
|
#if defined(USE_ASM) && defined(__arm__) && defined(__APCS_32__)
|
||||||
|
|
||||||
#if defined(__ARM_ARCH_5E__) || defined(__ARM_ARCH_5TE__) || \
|
#if defined(__ARM_ARCH_5E__) || defined(__ARM_ARCH_5TE__) || \
|
||||||
defined(__ARM_ARCH_5TEJ__) || defined(__ARM_ARCH_6__) || \
|
defined(__ARM_ARCH_5TEJ__) || defined(__ARM_ARCH_6__) || \
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
.section .note.GNU-stack,"",%progbits
|
.section .note.GNU-stack,"",%progbits
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__x86_64__)
|
#if defined(USE_ASM) && defined(__x86_64__)
|
||||||
|
|
||||||
.text
|
.text
|
||||||
.p2align 6
|
.p2align 6
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
.section .note.GNU-stack,"",%progbits
|
.section .note.GNU-stack,"",%progbits
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__i386__)
|
#if defined(USE_ASM) && defined(__i386__)
|
||||||
|
|
||||||
.macro scrypt_shuffle src, so, dest, do
|
.macro scrypt_shuffle src, so, dest, do
|
||||||
movl \so+60(\src), %eax
|
movl \so+60(\src), %eax
|
||||||
|
|
6
scrypt.c
6
scrypt.c
|
@ -378,7 +378,7 @@ static inline void PBKDF2_SHA256_128_32_8way(uint32_t *tstate,
|
||||||
#endif /* HAVE_SHA256_8WAY */
|
#endif /* HAVE_SHA256_8WAY */
|
||||||
|
|
||||||
|
|
||||||
#if defined(__x86_64__)
|
#if defined(USE_ASM) && defined(__x86_64__)
|
||||||
|
|
||||||
#define SCRYPT_MAX_WAYS 12
|
#define SCRYPT_MAX_WAYS 12
|
||||||
#define HAVE_SCRYPT_3WAY 1
|
#define HAVE_SCRYPT_3WAY 1
|
||||||
|
@ -392,13 +392,13 @@ void scrypt_core_3way(uint32_t *X, uint32_t *V);
|
||||||
void scrypt_core_6way(uint32_t *X, uint32_t *V);
|
void scrypt_core_6way(uint32_t *X, uint32_t *V);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#elif defined(__i386__)
|
#elif defined(USE_ASM) && defined(__i386__)
|
||||||
|
|
||||||
#define SCRYPT_MAX_WAYS 4
|
#define SCRYPT_MAX_WAYS 4
|
||||||
#define scrypt_best_throughput() 1
|
#define scrypt_best_throughput() 1
|
||||||
void scrypt_core(uint32_t *X, uint32_t *V);
|
void scrypt_core(uint32_t *X, uint32_t *V);
|
||||||
|
|
||||||
#elif defined(__arm__) && defined(__APCS_32__)
|
#elif defined(USE_ASM) && defined(__arm__) && defined(__APCS_32__)
|
||||||
|
|
||||||
void scrypt_core(uint32_t *X, uint32_t *V);
|
void scrypt_core(uint32_t *X, uint32_t *V);
|
||||||
#if defined(__ARM_NEON__)
|
#if defined(__ARM_NEON__)
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
#include "cpuminer-config.h"
|
#include "cpuminer-config.h"
|
||||||
|
|
||||||
#if defined(__arm__) && defined(__APCS_32__)
|
#if defined(USE_ASM) && defined(__arm__) && defined(__APCS_32__)
|
||||||
|
|
||||||
.macro sha256_k
|
.macro sha256_k
|
||||||
.align 2
|
.align 2
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
.section .note.GNU-stack,"",%progbits
|
.section .note.GNU-stack,"",%progbits
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__x86_64__)
|
#if defined(USE_ASM) && defined(__x86_64__)
|
||||||
|
|
||||||
.data
|
.data
|
||||||
.p2align 7
|
.p2align 7
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
.section .note.GNU-stack,"",%progbits
|
.section .note.GNU-stack,"",%progbits
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__i386__)
|
#if defined(USE_ASM) && defined(__i386__)
|
||||||
|
|
||||||
.data
|
.data
|
||||||
.p2align 7
|
.p2align 7
|
||||||
|
|
2
sha2.c
2
sha2.c
|
@ -14,7 +14,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
|
|
||||||
#if defined(__arm__) && defined(__APCS_32__)
|
#if defined(USE_ASM) && defined(__arm__) && defined(__APCS_32__)
|
||||||
#define EXTERN_SHA256
|
#define EXTERN_SHA256
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue