Skip to content

Commit a0e21c7

Browse files
authored
Add LSH dynamic dispatch (PR weidai11#1032)
This commit adds dynamic dispatch to LSH. The implementation pivots on AVX2 and SSSE3.
1 parent 21a40ab commit a0e21c7

16 files changed

+3667
-1542
lines changed

Filelist.txt

+4
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,11 @@ lea.cpp
205205
lea_simd.cpp
206206
lea.h
207207
lsh256.cpp
208+
lsh256_sse.cpp
209+
lsh256_avx.cpp
208210
lsh512.cpp
211+
lsh512_sse.cpp
212+
lsh512_avx.cpp
209213
lsh.h
210214
luc.cpp
211215
luc.h

GNUmakefile

+34-4
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,9 @@ else ifeq ($(findstring clean,$(MAKECMDGOALS)),clean)
122122
DETECT_FEATURES := 0
123123
else ifeq ($(findstring distclean,$(MAKECMDGOALS)),distclean)
124124
DETECT_FEATURES := 0
125-
else ifeq ($(findstring distclean,$(MAKECMDGOALS)),trim)
125+
else ifeq ($(findstring trim,$(MAKECMDGOALS)),trim)
126+
DETECT_FEATURES := 0
127+
else ifeq ($(findstring zip,$(MAKECMDGOALS)),zip)
126128
DETECT_FEATURES := 0
127129
endif
128130

@@ -230,7 +232,7 @@ endif # IS_MINGW
230232

231233
# Newlib needs _XOPEN_SOURCE=600 for signals
232234
TPROG = TestPrograms/test_newlib.cpp
233-
HAVE_OPT = $(shell $(CXX) $(TCXXFLAGS) $(ZOPT) $(TPROG) -o $(TOUT) 2>&1 | wc -w)
235+
HAVE_OPT = $(shell $(TCOMMAND) 2>&1 | wc -w)
234236
ifeq ($(strip $(HAVE_OPT)),0)
235237
ifeq ($(findstring -D_XOPEN_SOURCE,$(CXXFLAGS)),)
236238
CRYPTOPP_CXXFLAGS += -D_XOPEN_SOURCE=600
@@ -286,7 +288,9 @@ ifeq ($(DETECT_FEATURES),1)
286288
CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_ASM
287289
endif
288290

291+
# Need SSE2 or higher for these tests
289292
ifneq ($(SSE2_FLAG),)
293+
290294
TPROG = TestPrograms/test_x86_ssse3.cpp
291295
TOPT = $(SSSE3_FLAG)
292296
HAVE_OPT = $(shell $(TCOMMAND) 2>&1 | wc -w)
@@ -295,13 +299,21 @@ ifeq ($(DETECT_FEATURES),1)
295299
CHAM_FLAG = $(SSSE3_FLAG)
296300
KECCAK_FLAG = $(SSSE3_FLAG)
297301
LEA_FLAG = $(SSSE3_FLAG)
302+
LSH256_FLAG = $(SSSE3_FLAG)
303+
LSH512_FLAG = $(SSSE3_FLAG)
298304
SIMON128_FLAG = $(SSSE3_FLAG)
299305
SPECK128_FLAG = $(SSSE3_FLAG)
300306
SUN_LDFLAGS += $(SSSE3_FLAG)
301307
else
302308
SSSE3_FLAG =
303309
endif
304310

311+
# The first Apple MacBooks were Core2's with SSE4.1
312+
ifneq ($(IS_DARWIN),0)
313+
# Add SSE2 algo's here as required
314+
# They get a free upgrade
315+
endif
316+
305317
TPROG = TestPrograms/test_x86_sse41.cpp
306318
TOPT = $(SSE41_FLAG)
307319
HAVE_OPT = $(shell $(TCOMMAND) 2>&1 | wc -w)
@@ -360,6 +372,8 @@ ifeq ($(DETECT_FEATURES),1)
360372
HAVE_OPT = $(shell $(TCOMMAND) 2>&1 | wc -w)
361373
ifeq ($(strip $(HAVE_OPT)),0)
362374
CHACHA_AVX2_FLAG = $(AVX2_FLAG)
375+
LSH256_AVX2_FLAG = $(AVX2_FLAG)
376+
LSH512_AVX2_FLAG = $(AVX2_FLAG)
363377
SUN_LDFLAGS += $(AVX2_FLAG)
364378
else
365379
AVX2_FLAG =
@@ -420,7 +434,7 @@ ifeq ($(DETECT_FEATURES),1)
420434
# CRYPTOPP_DISABLE_MIXED_ASM is now being added in config_asm.h for all
421435
# Clang compilers. This test will need to be re-enabled if Clang fixes it.
422436
#TPROG = TestPrograms/test_asm_mixed.cpp
423-
#HAVE_OPT = $(shell $(CXX) $(TCXXFLAGS) $(ZOPT) $(TPROG) -o $(TOUT) 2>&1 | wc -w)
437+
#HAVE_OPT = $(shell $(TCOMMAND) 2>&1 | wc -w)
424438
#ifneq ($(strip $(HAVE_OPT)),0)
425439
# CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_MIXED_ASM
426440
#endif
@@ -1057,7 +1071,7 @@ endif # Valgrind
10571071
# Newlib test due to http://sourceware.org/bugzilla/show_bug.cgi?id=20268
10581072
ifneq ($(filter -DDEBUG -DDEBUG=1,$(CXXFLAGS)),)
10591073
TPROG = TestPrograms/test_cxx.cpp
1060-
USING_GLIBCXX := $(shell $(CXX)$(CXXFLAGS) -E $(TPROG) -o $(TOUT) 2>&1 | $(GREP) -i -c "__GLIBCXX__")
1074+
USING_GLIBCXX := $(shell $(CXX)$(CXXFLAGS) -E $(TPROG) -c 2>&1 | $(GREP) -i -c "__GLIBCXX__")
10611075
ifneq ($(USING_GLIBCXX),0)
10621076
ifeq ($(HAS_NEWLIB),0)
10631077
ifeq ($(findstring -D_GLIBCXX_DEBUG,$(CXXFLAGS)),)
@@ -1621,6 +1635,22 @@ keccak_simd.o : keccak_simd.cpp
16211635
lea_simd.o : lea_simd.cpp
16221636
$(CXX) $(strip $(CPPFLAGS) $(CXXFLAGS) $(LEA_FLAG) -c) $<
16231637

1638+
# SSSE3 available
1639+
lsh256_sse.o : lsh256_sse.cpp
1640+
$(CXX) $(strip $(CPPFLAGS) $(CXXFLAGS) $(LSH256_FLAG) -c) $<
1641+
1642+
# AVX2 available
1643+
lsh256_avx.o : lsh256_avx.cpp
1644+
$(CXX) $(strip $(CPPFLAGS) $(CXXFLAGS) $(LSH256_AVX2_FLAG) -c) $<
1645+
1646+
# SSSE3 available
1647+
lsh512_sse.o : lsh512_sse.cpp
1648+
$(CXX) $(strip $(CPPFLAGS) $(CXXFLAGS) $(LSH512_FLAG) -c) $<
1649+
1650+
# AVX2 available
1651+
lsh512_avx.o : lsh512_avx.cpp
1652+
$(CXX) $(strip $(CPPFLAGS) $(CXXFLAGS) $(LSH512_AVX2_FLAG) -c) $<
1653+
16241654
# NEON available
16251655
neon_simd.o : neon_simd.cpp
16261656
$(CXX) $(strip $(CPPFLAGS) $(CXXFLAGS) $(NEON_FLAG) -c) $<

GNUmakefile-cross

+32-17
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,11 @@ endif
4646

4747
IS_LINUX := $(shell echo $(MACHINEX) | $(GREP) -i -c "Linux")
4848

49-
# Can be used by Android and Embeeded cross-compiles. Disable by default because
49+
# Can be used by Android and Embedded cross-compiles. Disable by default because
5050
# Android and embedded users typically don't run this configuration.
5151
HAS_SOLIB_VERSION ?= 0
5252

53-
# Formely adhoc.cpp was created from adhoc.cpp.proto when needed.
53+
# Formerly adhoc.cpp was created from adhoc.cpp.proto when needed.
5454
# This is now needed because ISA tests are performed using adhoc.cpp.
5555
ifeq ($(wildcard adhoc.cpp),)
5656
$(shell cp adhoc.cpp.proto adhoc.cpp)
@@ -192,9 +192,9 @@ else ifeq ($(findstring clean,$(MAKECMDGOALS)),clean)
192192
DETECT_FEATURES := 0
193193
else ifeq ($(findstring distclean,$(MAKECMDGOALS)),distclean)
194194
DETECT_FEATURES := 0
195-
else ifeq ($(findstring distclean,$(MAKECMDGOALS)),trim)
195+
else ifeq ($(findstring trim,$(MAKECMDGOALS)),trim)
196196
DETECT_FEATURES := 0
197-
else ifeq ($(IS_IOS),1)
197+
else ifeq ($(findstring zip,$(MAKECMDGOALS)),zip)
198198
DETECT_FEATURES := 0
199199
endif
200200

@@ -249,6 +249,7 @@ ifeq ($(DETECT_FEATURES),1)
249249
CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_ASM
250250
endif
251251

252+
# Need SSE2 or higher for these tests
252253
ifneq ($(SSE2_FLAG),)
253254
TPROG = TestPrograms/test_x86_ssse3.cpp
254255
TOPT = $(SSSE3_FLAG)
@@ -258,20 +259,26 @@ ifeq ($(DETECT_FEATURES),1)
258259
CHAM_FLAG = $(SSSE3_FLAG)
259260
KECCAK_FLAG = $(SSSE3_FLAG)
260261
LEA_FLAG = $(SSSE3_FLAG)
262+
LSH256_FLAG = $(SSSE3_FLAG)
263+
LSH512_FLAG = $(SSSE3_FLAG)
261264
SIMON128_FLAG = $(SSSE3_FLAG)
262265
SPECK128_FLAG = $(SSSE3_FLAG)
263-
SUN_LDFLAGS += $(SSSE3_FLAG)
264266
else
265267
SSSE3_FLAG =
266268
endif
267269

270+
# The first Apple MacBooks were Core2's with SSE4.1
271+
ifneq ($(IS_DARWIN),0)
272+
# Add SSE2 algo's here as required
273+
# They get a free upgrade
274+
endif
275+
268276
TPROG = TestPrograms/test_x86_sse41.cpp
269277
TOPT = $(SSE41_FLAG)
270278
HAVE_OPT = $(shell $(TCOMMAND) 2>&1 | wc -w)
271279
ifeq ($(strip $(HAVE_OPT)),0)
272280
BLAKE2B_FLAG = $(SSE41_FLAG)
273281
BLAKE2S_FLAG = $(SSE41_FLAG)
274-
SUN_LDFLAGS += $(SSE41_FLAG)
275282
else
276283
SSE41_FLAG =
277284
endif
@@ -281,7 +288,6 @@ ifeq ($(DETECT_FEATURES),1)
281288
HAVE_OPT = $(shell $(TCOMMAND) 2>&1 | wc -w)
282289
ifeq ($(strip $(HAVE_OPT)),0)
283290
CRC_FLAG = $(SSE42_FLAG)
284-
SUN_LDFLAGS += $(SSE42_FLAG)
285291
else
286292
SSE42_FLAG =
287293
endif
@@ -292,7 +298,6 @@ ifeq ($(DETECT_FEATURES),1)
292298
ifeq ($(strip $(HAVE_OPT)),0)
293299
GCM_FLAG = $(SSSE3_FLAG) $(CLMUL_FLAG)
294300
GF2N_FLAG = $(CLMUL_FLAG)
295-
SUN_LDFLAGS += $(CLMUL_FLAG)
296301
else
297302
CLMUL_FLAG =
298303
endif
@@ -303,7 +308,6 @@ ifeq ($(DETECT_FEATURES),1)
303308
ifeq ($(strip $(HAVE_OPT)),0)
304309
AES_FLAG = $(SSE41_FLAG) $(AESNI_FLAG)
305310
SM4_FLAG = $(SSSE3_FLAG) $(AESNI_FLAG)
306-
SUN_LDFLAGS += $(AESNI_FLAG)
307311
else
308312
AESNI_FLAG =
309313
endif
@@ -313,7 +317,6 @@ ifeq ($(DETECT_FEATURES),1)
313317
HAVE_OPT = $(shell $(TCOMMAND) 2>&1 | wc -w)
314318
ifeq ($(strip $(HAVE_OPT)),0)
315319
# XXX_FLAG = $(AVX_FLAG)
316-
SUN_LDFLAGS += $(AVX_FLAG)
317320
else
318321
AVX_FLAG =
319322
endif
@@ -323,7 +326,8 @@ ifeq ($(DETECT_FEATURES),1)
323326
HAVE_OPT = $(shell $(TCOMMAND) 2>&1 | wc -w)
324327
ifeq ($(strip $(HAVE_OPT)),0)
325328
CHACHA_AVX2_FLAG = $(AVX2_FLAG)
326-
SUN_LDFLAGS += $(AVX2_FLAG)
329+
LSH256_AVX2_FLAG = $(AVX2_FLAG)
330+
LSH512_AVX2_FLAG = $(AVX2_FLAG)
327331
else
328332
AVX2_FLAG =
329333
endif
@@ -333,15 +337,10 @@ ifeq ($(DETECT_FEATURES),1)
333337
HAVE_OPT = $(shell $(TCOMMAND) 2>&1 | wc -w)
334338
ifeq ($(strip $(HAVE_OPT)),0)
335339
SHA_FLAG = $(SSE42_FLAG) $(SHANI_FLAG)
336-
SUN_LDFLAGS += $(SHANI_FLAG)
337340
else
338341
SHANI_FLAG =
339342
endif
340343

341-
ifeq ($(SUN_COMPILER),1)
342-
CRYPTOPP_LDFLAGS += $(SUN_LDFLAGS)
343-
endif
344-
345344
ifeq ($(SSE3_FLAG),)
346345
CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_SSE3
347346
else ifeq ($(SSSE3_FLAG),)
@@ -383,7 +382,7 @@ ifeq ($(DETECT_FEATURES),1)
383382
# CRYPTOPP_DISABLE_MIXED_ASM is now being added in config_asm.h for all
384383
# Clang compilers. This test will need to be re-enabled if Clang fixes it.
385384
#TPROG = TestPrograms/test_asm_mixed.cpp
386-
#HAVE_OPT = $(shell $(CXX) $(TCXXFLAGS) $(ZOPT) $(TPROG) -o $(TOUT) 2>&1 | wc -w)
385+
#HAVE_OPT = $(shell $(TCOMMAND) 2>&1 | wc -w)
387386
#ifneq ($(strip $(HAVE_OPT)),0)
388387
# CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_MIXED_ASM
389388
#endif
@@ -989,6 +988,22 @@ keccak_simd.o : keccak_simd.cpp
989988
lea_simd.o : lea_simd.cpp
990989
$(CXX) $(strip $(CPPFLAGS) $(CXXFLAGS) $(LEA_FLAG) -c) $<
991990

991+
# SSSE3 available
992+
lsh256_sse.o : lsh256_sse.cpp
993+
$(CXX) $(strip $(CPPFLAGS) $(CXXFLAGS) $(LSH256_FLAG) -c) $<
994+
995+
# AVX2 available
996+
lsh256_avx.o : lsh256_avx.cpp
997+
$(CXX) $(strip $(CPPFLAGS) $(CXXFLAGS) $(LSH256_AVX2_FLAG) -c) $<
998+
999+
# SSSE3 available
1000+
lsh512_sse.o : lsh512_sse.cpp
1001+
$(CXX) $(strip $(CPPFLAGS) $(CXXFLAGS) $(LSH512_FLAG) -c) $<
1002+
1003+
# AVX2 available
1004+
lsh512_avx.o : lsh512_avx.cpp
1005+
$(CXX) $(strip $(CPPFLAGS) $(CXXFLAGS) $(LSH512_AVX2_FLAG) -c) $<
1006+
9921007
# NEON available
9931008
neon_simd.o : neon_simd.cpp
9941009
$(CXX) $(strip $(CPPFLAGS) $(CXXFLAGS) $(NEON_FLAG) -c) $<

config_misc.h

-26
Original file line numberDiff line numberDiff line change
@@ -191,30 +191,4 @@
191191
# pragma GCC diagnostic ignored "-Wunused-function"
192192
#endif
193193

194-
// Requires ifunc support: GCC 4.8, Binutils 2.20.1 and libc 2.11.1.
195-
// Should work for Clang 7 and above: https://stackoverflow.com/q/39958935,
196-
// but fails with Clang 10: https://bugs.llvm.org/show_bug.cgi?id=50025.
197-
// Should work with GCC 4.8.4 and 7.5.0 but does not:
198-
// https://travis-ci.org/github/noloader/cryptopp-cmake/jobs/767701720 and
199-
// https://travis-ci.org/github/noloader/cryptopp/jobs/767704226.
200-
// Not available on Apple and Solaris platforms. Also see
201-
// https://sourceware.org/glibc/wiki/GNU_IFUNC and
202-
// https://gcc.gnu.org/onlinedocs/gcc/Function-Multiversioning.html.
203-
#if !defined(CRYPTOPP_DISABLE_ASM)
204-
# if defined(__linux__)
205-
# if defined(__i386__) || defined(__i686__) || defined(__amd64__)
206-
# if (CRYPTOPP_GCC_VERSION >= 80000) || (CRYPTOPP_LLVM_CLANG_VERSION >= 130000)
207-
# include <x86intrin.h>
208-
# define CRYPTOPP_HAVE_ATTRIBUTE_TARGET 1
209-
# define CRYPTOPP_TARGET_DEFAULT __attribute__ ((target ("default")))
210-
# define CRYPTOPP_TARGET_SSSE3 __attribute__ ((target ("ssse3")))
211-
# endif
212-
# endif
213-
# endif
214-
#endif
215-
216-
#ifndef CRYPTOPP_TARGET_DEFAULT
217-
# define CRYPTOPP_TARGET_DEFAULT
218-
#endif
219-
220194
#endif // CRYPTOPP_CONFIG_MISC_H

cryptest.nmake

+34-28
Original file line numberDiff line numberDiff line change
@@ -70,20 +70,21 @@ LIB_SRCS = \
7070
gfpcrypt.cpp gost.cpp gzip.cpp hc128.cpp hc256.cpp hex.cpp hight.cpp \
7171
hmac.cpp hrtimer.cpp ida.cpp idea.cpp iterhash.cpp kalyna.cpp \
7272
kalynatab.cpp keccak.cpp keccak_core.cpp keccak_simd.cpp lea.cpp \
73-
lea_simd.cpp lsh256.cpp lsh512.cpp luc.cpp mars.cpp marss.cpp md2.cpp \
74-
md4.cpp md5.cpp misc.cpp modes.cpp mqueue.cpp mqv.cpp nbtheory.cpp \
75-
oaep.cpp osrng.cpp padlkrng.cpp panama.cpp pkcspad.cpp poly1305.cpp \
76-
polynomi.cpp pssr.cpp pubkey.cpp queue.cpp rabbit.cpp rabin.cpp \
77-
randpool.cpp rc2.cpp rc5.cpp rc6.cpp rdrand.cpp rdtables.cpp \
78-
rijndael.cpp rijndael_simd.cpp ripemd.cpp rng.cpp rsa.cpp rw.cpp \
79-
safer.cpp salsa.cpp scrypt.cpp seal.cpp seed.cpp serpent.cpp sha.cpp \
80-
sha3.cpp sha_simd.cpp shacal2.cpp shacal2_simd.cpp shake.cpp shark.cpp \
81-
sharkbox.cpp simeck.cpp simon.cpp simon128_simd.cpp skipjack.cpp sm3.cpp \
82-
sm4.cpp sm4_simd.cpp sosemanuk.cpp speck.cpp speck128_simd.cpp \
83-
square.cpp squaretb.cpp sse_simd.cpp strciphr.cpp tea.cpp tftables.cpp \
84-
threefish.cpp tiger.cpp tigertab.cpp ttmac.cpp tweetnacl.cpp twofish.cpp \
85-
vmac.cpp wake.cpp whrlpool.cpp xed25519.cpp xtr.cpp xtrcrypt.cpp xts.cpp \
86-
zdeflate.cpp zinflate.cpp zlib.cpp
73+
lea_simd.cpp lsh256.cpp lsh256_avx.cpp lsh256_sse.cpp lsh512.cpp \
74+
lsh512_avx.cpp lsh512_sse.cpp luc.cpp mars.cpp marss.cpp md2.cpp md4.cpp \
75+
md5.cpp misc.cpp modes.cpp mqueue.cpp mqv.cpp nbtheory.cpp oaep.cpp \
76+
osrng.cpp padlkrng.cpp panama.cpp pkcspad.cpp poly1305.cpp polynomi.cpp \
77+
pssr.cpp pubkey.cpp queue.cpp rabbit.cpp rabin.cpp randpool.cpp rc2.cpp \
78+
rc5.cpp rc6.cpp rdrand.cpp rdtables.cpp rijndael.cpp rijndael_simd.cpp \
79+
ripemd.cpp rng.cpp rsa.cpp rw.cpp safer.cpp salsa.cpp scrypt.cpp \
80+
seal.cpp seed.cpp serpent.cpp sha.cpp sha3.cpp sha_simd.cpp shacal2.cpp \
81+
shacal2_simd.cpp shake.cpp shark.cpp sharkbox.cpp simeck.cpp simon.cpp \
82+
simon128_simd.cpp skipjack.cpp sm3.cpp sm4.cpp sm4_simd.cpp \
83+
sosemanuk.cpp speck.cpp speck128_simd.cpp square.cpp squaretb.cpp \
84+
sse_simd.cpp strciphr.cpp tea.cpp tftables.cpp threefish.cpp tiger.cpp \
85+
tigertab.cpp ttmac.cpp tweetnacl.cpp twofish.cpp vmac.cpp wake.cpp \
86+
whrlpool.cpp xed25519.cpp xtr.cpp xtrcrypt.cpp xts.cpp zdeflate.cpp \
87+
zinflate.cpp zlib.cpp
8788

8889
LIB_OBJS = \
8990
cryptlib.obj cpu.obj integer.obj 3way.obj adler32.obj algebra.obj \
@@ -100,20 +101,21 @@ LIB_OBJS = \
100101
gfpcrypt.obj gost.obj gzip.obj hc128.obj hc256.obj hex.obj hight.obj \
101102
hmac.obj hrtimer.obj ida.obj idea.obj iterhash.obj kalyna.obj \
102103
kalynatab.obj keccak.obj keccak_core.obj keccak_simd.obj lea.obj \
103-
lea_simd.obj lsh256.obj lsh512.obj luc.obj mars.obj marss.obj md2.obj \
104-
md4.obj md5.obj misc.obj modes.obj mqueue.obj mqv.obj nbtheory.obj \
105-
oaep.obj osrng.obj padlkrng.obj panama.obj pkcspad.obj poly1305.obj \
106-
polynomi.obj pssr.obj pubkey.obj queue.obj rabbit.obj rabin.obj \
107-
randpool.obj rc2.obj rc5.obj rc6.obj rdrand.obj rdtables.obj \
108-
rijndael.obj rijndael_simd.obj ripemd.obj rng.obj rsa.obj rw.obj \
109-
safer.obj salsa.obj scrypt.obj seal.obj seed.obj serpent.obj sha.obj \
110-
sha3.obj sha_simd.obj shacal2.obj shacal2_simd.obj shake.obj shark.obj \
111-
sharkbox.obj simeck.obj simon.obj simon128_simd.obj skipjack.obj sm3.obj \
112-
sm4.obj sm4_simd.obj sosemanuk.obj speck.obj speck128_simd.obj \
113-
square.obj squaretb.obj sse_simd.obj strciphr.obj tea.obj tftables.obj \
114-
threefish.obj tiger.obj tigertab.obj ttmac.obj tweetnacl.obj twofish.obj \
115-
vmac.obj wake.obj whrlpool.obj xed25519.obj xtr.obj xtrcrypt.obj xts.obj \
116-
zdeflate.obj zinflate.obj zlib.obj
104+
lea_simd.obj lsh256.obj lsh256_avx.obj lsh256_sse.obj lsh512.obj \
105+
lsh512_avx.obj lsh512_sse.obj luc.obj mars.obj marss.obj md2.obj md4.obj \
106+
md5.obj misc.obj modes.obj mqueue.obj mqv.obj nbtheory.obj oaep.obj \
107+
osrng.obj padlkrng.obj panama.obj pkcspad.obj poly1305.obj polynomi.obj \
108+
pssr.obj pubkey.obj queue.obj rabbit.obj rabin.obj randpool.obj rc2.obj \
109+
rc5.obj rc6.obj rdrand.obj rdtables.obj rijndael.obj rijndael_simd.obj \
110+
ripemd.obj rng.obj rsa.obj rw.obj safer.obj salsa.obj scrypt.obj \
111+
seal.obj seed.obj serpent.obj sha.obj sha3.obj sha_simd.obj shacal2.obj \
112+
shacal2_simd.obj shake.obj shark.obj sharkbox.obj simeck.obj simon.obj \
113+
simon128_simd.obj skipjack.obj sm3.obj sm4.obj sm4_simd.obj \
114+
sosemanuk.obj speck.obj speck128_simd.obj square.obj squaretb.obj \
115+
sse_simd.obj strciphr.obj tea.obj tftables.obj threefish.obj tiger.obj \
116+
tigertab.obj ttmac.obj tweetnacl.obj twofish.obj vmac.obj wake.obj \
117+
whrlpool.obj xed25519.obj xtr.obj xtrcrypt.obj xts.obj zdeflate.obj \
118+
zinflate.obj zlib.obj
117119

118120
ASM_OBJS = \
119121
rdrand-x86.obj rdrand-x64.obj rdseed-x86.obj rdseed-x64.obj x64masm.obj x64dll.obj
@@ -311,6 +313,10 @@ x64dll.obj: x64dll.asm
311313
!IF "$(PLATFORM)" == "x64" || "$(PLATFORM)" == "X64" || "$(PLATFORM)" == "amd64" || "$(PLATFORM)" == "x86" || "$(PLATFORM)" == "X86"
312314
chacha_avx.obj:
313315
$(CXX) $(CXXFLAGS) /arch:AVX /c chacha_avx.cpp
316+
lsh256_avx.obj:
317+
$(CXX) $(CXXFLAGS) /arch:AVX /c lsh256_avx.cpp
318+
lsh512_avx.obj:
319+
$(CXX) $(CXXFLAGS) /arch:AVX /c lsh512_avx.cpp
314320
!endif
315321

316322
# For testing cryptopp.dll and CRYPTOPP_IMPORTS

cryptlib.vcxproj

+4
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,11 @@
263263
<ClCompile Include="lea.cpp" />
264264
<ClCompile Include="lea_simd.cpp" />
265265
<ClCompile Include="lsh256.cpp" />
266+
<ClCompile Include="lsh256_sse.cpp" />
267+
<ClCompile Include="lsh256_avx.cpp" />
266268
<ClCompile Include="lsh512.cpp" />
269+
<ClCompile Include="lsh512_sse.cpp" />
270+
<ClCompile Include="lsh512_avx.cpp" />
267271
<ClCompile Include="luc.cpp" />
268272
<ClCompile Include="mars.cpp" />
269273
<ClCompile Include="marss.cpp" />

0 commit comments

Comments
 (0)