From: Mark Wooding Date: Wed, 18 May 2016 09:29:03 +0000 (+0100) Subject: Merge branch 'mdw/cpu-dispatch' X-Git-Tag: 2.2.3~1^2~22 X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb/commitdiff_plain/1da1ed6a5815deef6c33d74f1eb3c856793df3e5 Merge branch 'mdw/cpu-dispatch' * mdw/cpu-dispatch: Add support machinery for ARM hosts. base/dispatch.c: Add (unused) machinery for probing ELF auxilary vector. Add support for AMD64 processors and Microsoft Windows. symm/rijndael-x86-aseni.S: Unify encryption and decryption with a macro. symm/rijndael-x86-aesni.S: Use xmm5 instead of xmm7. symm/*.S: Symbolic names for shuffles. symm/chacha-x86-sse2.S: Fix the register allocation comment. Preprocess the assembler files. configure.ac: Improve the host CPU family detection. base/dispatch.c: Indent some preprocessor definitions properly. Add a pile of debug output around the CPU dispatching machinery. base/dispatch.c: Add documentation for some internal functions. base/dispatch.c: Add in more useful section markers. Support Intel's AES Native Instructions where available on x86 hardware. symm/: New SSE2 implementations of Salsa20 and ChaCha. symm/salsa20.c, symm/salsa20-core.h: Permute input matrix for SIMD. debian/rules: Run tests twice, once without any detected CPU features. base/dispatch.c: Check operating system support for XMM registers. configure.ac, base/dispatch.[ch]: CPU-specific implementations. configure.ac: Arrange to have an assembler available. Conflicts: configure.ac symm/Makefile.am --- 1da1ed6a5815deef6c33d74f1eb3c856793df3e5 diff --cc configure.ac index c3e55ca4,e3e5c21a..715a5c28 --- a/configure.ac +++ b/configure.ac @@@ -31,7 -31,8 +31,8 @@@ mdw_AUTO_VERSIO AC_INIT([catacomb], AUTO_VERSION, [mdw@distorted.org.uk]) AC_CONFIG_SRCDIR([catacomb.pc.in]) AC_CONFIG_AUX_DIR([config]) -AM_INIT_AUTOMAKE([foreign parallel-tests]) +AM_INIT_AUTOMAKE([foreign parallel-tests color-tests subdir-objects]) + AC_CANONICAL_HOST mdw_SILENT_RULES AC_PROG_CC diff --cc symm/Makefile.am index 69c1013f,e78277b7..1d3374f5 --- a/symm/Makefile.am +++ b/symm/Makefile.am @@@ -182,18 -180,23 +182,24 @@@ BLKCS += rc ## Daemen and Rijmen's `Rijndael' block cipher, selected as AES. BLKCS += rijndael rijndael192 rijndael256 libsymm_la_SOURCES += rijndael-base.h rijndael-base.c + if CPUFAM_X86 + libsymm_la_SOURCES += rijndael-x86ish-aesni.S + endif + if CPUFAM_AMD64 + libsymm_la_SOURCES += rijndael-x86ish-aesni.S + endif -libsymm_la_SOURCES += $(precomp)/rijndael-tab.c -PRECOMPS += $(precomp)/rijndael-tab.c +nodist_libsymm_la_SOURCES += ../precomp/symm/rijndael-tab.c +PRECOMPS += $(precomp)/symm/rijndael-tab.c PRECOMP_PROGS += rijndael-mktab if !CROSS_COMPILING -$(precomp)/rijndael-tab.c: - $(AM_V_at)$(MKDIR_P) $(precomp) - $(AM_V_at)$(MAKE) rijndael-mktab$e - $(AM_V_GEN)./rijndael-mktab >$(precomp)/rijndael-tab.c.new && \ - mv $(precomp)/rijndael-tab.c.new $(precomp)/rijndael-tab.c +$(precomp)/symm/rijndael-tab.c: + $(AM_V_at)$(MKDIR_P) $(precomp)/symm + $(AM_V_at)$(MAKE) rijndael-mktab$(EXEEXT) + $(AM_V_GEN)./rijndael-mktab >$(precomp)/symm/rijndael-tab.c.new && \ + mv $(precomp)/symm/rijndael-tab.c.new \ + $(precomp)/symm/rijndael-tab.c endif -rijndael.$t: t/rijndael +rijndael.t$(EXEEXT): t/rijndael EXTRA_DIST += t/rijndael.aes MAINTAINERCLEANFILES += $(srcdir)/t/rijndael t/rijndael: t/rijndael.aes @@@ -388,7 -384,13 +394,13 @@@ ALL_CIPHERS += sea EXTRA_DIST += salsa20-tvconv pkginclude_HEADERS += salsa20.h salsa20-core.h libsymm_la_SOURCES += salsa20.c + if CPUFAM_X86 + libsymm_la_SOURCES += salsa20-x86ish-sse2.S + endif + if CPUFAM_AMD64 + libsymm_la_SOURCES += salsa20-x86ish-sse2.S + endif -TESTS += salsa20.$t +TESTS += salsa20.t$(EXEEXT) ALL_CIPHERS += salsa20 salsa2012 salsa208 ALL_CIPHERS += xsalsa20 xsalsa2012 xsalsa208 STUBS_HDR += Salsa20/12,salsa2012,salsa20 @@@ -414,7 -416,13 +426,13 @@@ t/salsa20: salsa20-tvconv t/salsa20.loc ## Bernstein's `ChaCha' stream cipher. pkginclude_HEADERS += chacha.h chacha-core.h libsymm_la_SOURCES += chacha.c + if CPUFAM_X86 + libsymm_la_SOURCES += chacha-x86ish-sse2.S + endif + if CPUFAM_AMD64 + libsymm_la_SOURCES += chacha-x86ish-sse2.S + endif -TESTS += chacha.$t +TESTS += chacha.t$(EXEEXT) EXTRA_DIST += t/chacha ALL_CIPHERS += chacha20 chacha12 chacha8 ALL_CIPHERS += xchacha20 xchacha12 xchacha8