diff options
author | Jeffrey Walton <noloader@gmail.com> | 2021-04-26 04:50:48 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-26 04:50:48 -0400 |
commit | a0e21c77aeadb2d8bb4c03a830528c9ae0616dfe (patch) | |
tree | 9c8dd638fa7dd6a1c84d483eb062c7716f6a3db5 /GNUmakefile | |
parent | 21a40abc5ceeb0ccf6577a444f1b4c19fa6379c6 (diff) | |
download | cryptopp-git-a0e21c77aeadb2d8bb4c03a830528c9ae0616dfe.tar.gz |
Add LSH dynamic dispatch (PR #1032)
This commit adds dynamic dispatch to LSH. The implementation pivots on AVX2 and SSSE3.
Diffstat (limited to 'GNUmakefile')
-rw-r--r-- | GNUmakefile | 38 |
1 files changed, 34 insertions, 4 deletions
diff --git a/GNUmakefile b/GNUmakefile index eee39c15..3491ef4d 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -122,7 +122,9 @@ else ifeq ($(findstring clean,$(MAKECMDGOALS)),clean) DETECT_FEATURES := 0 else ifeq ($(findstring distclean,$(MAKECMDGOALS)),distclean) DETECT_FEATURES := 0 -else ifeq ($(findstring distclean,$(MAKECMDGOALS)),trim) +else ifeq ($(findstring trim,$(MAKECMDGOALS)),trim) + DETECT_FEATURES := 0 +else ifeq ($(findstring zip,$(MAKECMDGOALS)),zip) DETECT_FEATURES := 0 endif @@ -230,7 +232,7 @@ endif # IS_MINGW # Newlib needs _XOPEN_SOURCE=600 for signals TPROG = TestPrograms/test_newlib.cpp -HAVE_OPT = $(shell $(CXX) $(TCXXFLAGS) $(ZOPT) $(TPROG) -o $(TOUT) 2>&1 | wc -w) +HAVE_OPT = $(shell $(TCOMMAND) 2>&1 | wc -w) ifeq ($(strip $(HAVE_OPT)),0) ifeq ($(findstring -D_XOPEN_SOURCE,$(CXXFLAGS)),) CRYPTOPP_CXXFLAGS += -D_XOPEN_SOURCE=600 @@ -286,7 +288,9 @@ ifeq ($(DETECT_FEATURES),1) CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_ASM endif + # Need SSE2 or higher for these tests ifneq ($(SSE2_FLAG),) + TPROG = TestPrograms/test_x86_ssse3.cpp TOPT = $(SSSE3_FLAG) HAVE_OPT = $(shell $(TCOMMAND) 2>&1 | wc -w) @@ -295,6 +299,8 @@ ifeq ($(DETECT_FEATURES),1) CHAM_FLAG = $(SSSE3_FLAG) KECCAK_FLAG = $(SSSE3_FLAG) LEA_FLAG = $(SSSE3_FLAG) + LSH256_FLAG = $(SSSE3_FLAG) + LSH512_FLAG = $(SSSE3_FLAG) SIMON128_FLAG = $(SSSE3_FLAG) SPECK128_FLAG = $(SSSE3_FLAG) SUN_LDFLAGS += $(SSSE3_FLAG) @@ -302,6 +308,12 @@ ifeq ($(DETECT_FEATURES),1) SSSE3_FLAG = endif + # The first Apple MacBooks were Core2's with SSE4.1 + ifneq ($(IS_DARWIN),0) + # Add SSE2 algo's here as required + # They get a free upgrade + endif + TPROG = TestPrograms/test_x86_sse41.cpp TOPT = $(SSE41_FLAG) HAVE_OPT = $(shell $(TCOMMAND) 2>&1 | wc -w) @@ -360,6 +372,8 @@ ifeq ($(DETECT_FEATURES),1) HAVE_OPT = $(shell $(TCOMMAND) 2>&1 | wc -w) ifeq ($(strip $(HAVE_OPT)),0) CHACHA_AVX2_FLAG = $(AVX2_FLAG) + LSH256_AVX2_FLAG = $(AVX2_FLAG) + LSH512_AVX2_FLAG = $(AVX2_FLAG) SUN_LDFLAGS += $(AVX2_FLAG) else AVX2_FLAG = @@ -420,7 +434,7 @@ ifeq ($(DETECT_FEATURES),1) # CRYPTOPP_DISABLE_MIXED_ASM is now being added in config_asm.h for all # Clang compilers. This test will need to be re-enabled if Clang fixes it. #TPROG = TestPrograms/test_asm_mixed.cpp - #HAVE_OPT = $(shell $(CXX) $(TCXXFLAGS) $(ZOPT) $(TPROG) -o $(TOUT) 2>&1 | wc -w) + #HAVE_OPT = $(shell $(TCOMMAND) 2>&1 | wc -w) #ifneq ($(strip $(HAVE_OPT)),0) # CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_MIXED_ASM #endif @@ -1057,7 +1071,7 @@ endif # Valgrind # Newlib test due to http://sourceware.org/bugzilla/show_bug.cgi?id=20268 ifneq ($(filter -DDEBUG -DDEBUG=1,$(CXXFLAGS)),) TPROG = TestPrograms/test_cxx.cpp - USING_GLIBCXX := $(shell $(CXX)$(CXXFLAGS) -E $(TPROG) -o $(TOUT) 2>&1 | $(GREP) -i -c "__GLIBCXX__") + USING_GLIBCXX := $(shell $(CXX)$(CXXFLAGS) -E $(TPROG) -c 2>&1 | $(GREP) -i -c "__GLIBCXX__") ifneq ($(USING_GLIBCXX),0) ifeq ($(HAS_NEWLIB),0) ifeq ($(findstring -D_GLIBCXX_DEBUG,$(CXXFLAGS)),) @@ -1621,6 +1635,22 @@ keccak_simd.o : keccak_simd.cpp lea_simd.o : lea_simd.cpp $(CXX) $(strip $(CPPFLAGS) $(CXXFLAGS) $(LEA_FLAG) -c) $< +# SSSE3 available +lsh256_sse.o : lsh256_sse.cpp + $(CXX) $(strip $(CPPFLAGS) $(CXXFLAGS) $(LSH256_FLAG) -c) $< + +# AVX2 available +lsh256_avx.o : lsh256_avx.cpp + $(CXX) $(strip $(CPPFLAGS) $(CXXFLAGS) $(LSH256_AVX2_FLAG) -c) $< + +# SSSE3 available +lsh512_sse.o : lsh512_sse.cpp + $(CXX) $(strip $(CPPFLAGS) $(CXXFLAGS) $(LSH512_FLAG) -c) $< + +# AVX2 available +lsh512_avx.o : lsh512_avx.cpp + $(CXX) $(strip $(CPPFLAGS) $(CXXFLAGS) $(LSH512_AVX2_FLAG) -c) $< + # NEON available neon_simd.o : neon_simd.cpp $(CXX) $(strip $(CPPFLAGS) $(CXXFLAGS) $(NEON_FLAG) -c) $< |