mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-03-08 14:34:53 -05:00
make assembly version optional
This commit is contained in:
parent
37c4ab156d
commit
af073e29e4
3 changed files with 24 additions and 16 deletions
27
Makefile
27
Makefile
|
@ -4,13 +4,14 @@ FLAGS_DEBUG:=-DVERIFY_MAGNITUDE -ggdb3 -O1
|
||||||
FLAGS_TEST:=-DVERIFY_MAGNITUDE -ggdb3 -O2 -march=native
|
FLAGS_TEST:=-DVERIFY_MAGNITUDE -ggdb3 -O2 -march=native
|
||||||
|
|
||||||
SECP256K1_FILES := num.h field.h group.h ecmult.h ecdsa.h \
|
SECP256K1_FILES := num.h field.h group.h ecmult.h ecdsa.h \
|
||||||
num.cpp field.cpp group.cpp ecmult.cpp ecdsa.cpp \
|
num.cpp field.cpp group.cpp ecmult.cpp ecdsa.cpp
|
||||||
lin64.asm
|
|
||||||
|
|
||||||
ifndef CONF
|
ifndef CONF
|
||||||
CONF := gmp
|
CONF := gmp
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
default: all
|
||||||
|
|
||||||
ifeq ($(CONF), openssl)
|
ifeq ($(CONF), openssl)
|
||||||
FLAGS_CONF:=-DUSE_NUM_OPENSSL -DUSE_FIELDINVERSE_BUILTIN
|
FLAGS_CONF:=-DUSE_NUM_OPENSSL -DUSE_FIELDINVERSE_BUILTIN
|
||||||
LIBS:=-lcrypto
|
LIBS:=-lcrypto
|
||||||
|
@ -20,16 +21,27 @@ ifeq ($(CONF), gmp)
|
||||||
FLAGS_CONF:=-DUSE_NUM_GMP
|
FLAGS_CONF:=-DUSE_NUM_GMP
|
||||||
LIBS:=-lgmp
|
LIBS:=-lgmp
|
||||||
SECP256K1_FILES := $(SECP256K1_FILES) num_gmp.h num_gmp.cpp
|
SECP256K1_FILES := $(SECP256K1_FILES) num_gmp.h num_gmp.cpp
|
||||||
|
else
|
||||||
|
ifeq ($(CONF), gmpasm)
|
||||||
|
FLAGS_CONF:=-DUSE_NUM_GMP -DINLINE_ASM
|
||||||
|
LIBS:=-lgmp obj/lin64.o
|
||||||
|
SECP256K1_FILES := $(SECP256K1_FILES) num_gmp.h num_gmp.cpp obj/lin64.o
|
||||||
|
|
||||||
|
obj/lin64.o: lin64.asm
|
||||||
|
/tmp/jwasm -Fo obj/lin64.o -elf64 lin64.asm
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
all: *.cpp *.asm *.h
|
all: *.cpp *.asm *.h
|
||||||
+make CONF=openssl all-openssl
|
+make CONF=openssl all-openssl
|
||||||
+make CONF=gmp all-gmp
|
+make CONF=gmp all-gmp
|
||||||
|
+make CONF=gmpasm all-gmpasm
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
+make CONF=openssl clean-openssl
|
+make CONF=openssl clean-openssl
|
||||||
+make CONF=gmp clean-gmp
|
+make CONF=gmp clean-gmp
|
||||||
|
+make CONF=gmpasm clean-gmpasm
|
||||||
|
|
||||||
bench-any: bench-$(CONF)
|
bench-any: bench-$(CONF)
|
||||||
tests-any: tests-$(CONF)
|
tests-any: tests-$(CONF)
|
||||||
|
@ -42,11 +54,8 @@ clean-$(CONF):
|
||||||
obj/secp256k1-$(CONF).o: $(SECP256K1_FILES)
|
obj/secp256k1-$(CONF).o: $(SECP256K1_FILES)
|
||||||
$(CXX) $(FLAGS_COMMON) $(FLAGS_PROD) $(FLAGS_CONF) secp256k1.cpp -c -o obj/secp256k1-$(CONF).o
|
$(CXX) $(FLAGS_COMMON) $(FLAGS_PROD) $(FLAGS_CONF) secp256k1.cpp -c -o obj/secp256k1-$(CONF).o
|
||||||
|
|
||||||
obj/lin64.o: lin64.asm
|
bench-$(CONF): obj/secp256k1-$(CONF).o bench.cpp
|
||||||
~/tmp/jwasm -Fo obj/lin64.o -elf64 lin64.asm
|
$(CXX) $(FLAGS_COMMON) $(FLAGS_PROD) $(FLAGS_CONF) obj/secp256k1-$(CONF).o bench.cpp $(LIBS) -o bench-$(CONF)
|
||||||
|
|
||||||
bench-$(CONF): obj/secp256k1-$(CONF).o bench.cpp obj/lin64.o
|
tests-$(CONF): $(SECP256K1_FILES) tests.cpp
|
||||||
$(CXX) $(FLAGS_COMMON) $(FLAGS_PROD) $(FLAGS_CONF) obj/secp256k1-$(CONF).o obj/lin64.o bench.cpp $(LIBS) -o bench-$(CONF)
|
$(CXX) $(FLAGS_COMMON) $(FLAGS_TEST) $(FLAGS_CONF) tests.cpp $(LIBS) -o tests-$(CONF)
|
||||||
|
|
||||||
tests-$(CONF): $(SECP256K1_FILES) tests.cpp obj/lin64.o
|
|
||||||
$(CXX) $(FLAGS_COMMON) $(FLAGS_TEST) $(FLAGS_CONF) obj/lin64.o tests.cpp $(LIBS) -o tests-$(CONF)
|
|
||||||
|
|
10
field.cpp
10
field.cpp
|
@ -1,16 +1,16 @@
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <string>
|
#include <string>
|
||||||
#define INLINE_ASM
|
|
||||||
#include "lin64.h"
|
|
||||||
#include "num.h"
|
#include "num.h"
|
||||||
#include "field.h"
|
#include "field.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
// #define VERIFY_MAGNITUDE 1
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
#ifdef INLINE_ASM
|
||||||
|
#include "lin64.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace secp256k1 {
|
namespace secp256k1 {
|
||||||
|
|
||||||
/** Implements arithmetic modulo FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F,
|
/** Implements arithmetic modulo FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F,
|
||||||
|
|
3
lin64.h
3
lin64.h
|
@ -1,10 +1,9 @@
|
||||||
#ifndef _SECP256K1_LIN64
|
#ifndef _SECP256K1_LIN64
|
||||||
#define _SECP256K1_LIN64
|
#define _SECP256K1_LIN64
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
#ifdef INLINE_ASM
|
#ifdef INLINE_ASM
|
||||||
extern "C" void _ExSetMult(uint64_t *, uint64_t *, uint64_t *);
|
extern "C" void _ExSetMult(uint64_t *, uint64_t *, uint64_t *);
|
||||||
extern "C" void _ExSetSquare(uint64_t *, uint64_t *);
|
extern "C" void _ExSetSquare(uint64_t *, uint64_t *);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Reference in a new issue