On Saturday, July 29, 2017 at 1:32:32 AM UTC-4, Jeffrey Walton wrote:
>
> On Friday, July 28, 2017 at 9:30:36 PM UTC-4, Jeffrey Walton wrote:
>>
>> ...
>> We are experiencing some pain points trying to support SSE4, AVX and BMI 
>> instruction sets under the compilations models we support. We experimented 
>> with a few different ways to move forward, and we think we found a good one 
>> that involves splitting source files. The test project is located at 
>> https://github.com/noloader/CRC-Test...
>>
>
> Changes to the library were checked-in on my testing branch at 
> https://github.com/noloader/cryptopp/. The check-in of interest is 
> https://github.com/noloader/cryptopp/commit/fe9e21dd
>

Things are progressing well. One gap that needed addressing was, the body 
for TryXXX (like TryCRC() or TrySHA()) needed to be moved to the 
xxx-simd.cpp file.

Below is what a compile looks like on an Aarch64 (ARM-64) HiKey. Notice the 
makefile adds the appropriate flags in the right places. We still have some 
features to cut-over, like CLMUL and AES.

Benchmarks are showing the applicable speedup, like in CRC and SHA.

Jeff

**********

$ ./cryptest.exe v
Using seed: 1501436617

Testing Settings...

passed:  Your machine is little endian.
passed:  Aligned data access (no CRYPTOPP_ALLOW_UNALIGNED_DATA_ACCESS).
passed:  sizeof(byte) == 1
passed:  sizeof(word16) == 2
passed:  sizeof(word32) == 4
passed:  sizeof(word64) == 8
passed:  sizeof(hword) == 2, sizeof(word) == 4, sizeof(dword) == 8
passed:  hasNEON == 1, hasPMULL == 0, hasCRC32 == 1, hasAES == 0, hasSHA1 
== 1, hasSHA2 == 1

Testing operating system provided blocking random number generator...

passed:  it took 0 seconds to generate 16 bytes
passed:  16 generated bytes compressed to 19 bytes by DEFLATE
passed:  GenerateWord32 and Crop
...

**********

# Two second benchmark on HiKey @ 1.2 GHz. CRC runs about 0.8 cpb, and SHA 
runs about 4.0 cpb.

$ ./cryptest.exe b 2 1.14441
...
<TBODY style="background: yellow;">
<TR><TH>CRC32<TD>1450<TD>0.8
<TR><TH>CRC32C<TD>1450<TD>0.8
<TR><TH>Adler32<TD>284<TD>3.8
<TR><TH>MD5<TD>164<TD>6.7
<TR><TH>SHA-1<TD>266<TD>4.1
<TR><TH>SHA-256<TD>269<TD>4.1
<TR><TH>SHA-512<TD>72<TD>15.1
<TR><TH>Keccak-224<TD>51<TD>21.2
<TR><TH>Keccak-256<TD>49<TD>22.4
<TR><TH>Keccak-384<TD>37<TD>29.2
<TR><TH>Keccak-512<TD>26<TD>41.9
...

**********

$ CXXFLAGS="-DNDEBUG -g2 -O3" make
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c cryptlib.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c cpu.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c integer.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c 3way.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c adler32.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c algebra.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c algparam.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c arc4.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -march=armv8-a -c aria-simd.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c aria.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c asn.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c authenc.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c base32.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c base64.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c basecode.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c bfinit.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -march=armv8-a -c blake2-simd.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c blake2.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c blowfish.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c blumshub.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c camellia.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c cast.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c casts.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c cbcmac.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c ccm.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c chacha.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c channels.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c cmac.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -march=armv8-a+crc -c crc-simd.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c crc.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c default.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c des.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c dessp.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c dh.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c dh2.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c dll.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c dsa.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c eax.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c ec2n.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c eccrypto.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c ecp.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c elgamal.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c emsa2.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c eprecomp.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c esign.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c files.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c filters.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c fips140.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c fipstest.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -march=armv8-a -c gcm-simd.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c gcm.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c gf256.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c gf2_32.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c gf2n.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c gfpcrypt.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c gost.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c gzip.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c hex.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c hmac.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c hrtimer.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c ida.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c idea.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c iterhash.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c kalyna.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c kalynatab.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c keccak.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c luc.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c mars.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c marss.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c md2.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c md4.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c md5.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c misc.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c modes.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c mqueue.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c mqv.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c nbtheory.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -march=armv8-a -c neon.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c network.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c oaep.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c ospstore.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c osrng.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c panama.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c pkcspad.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c poly1305.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c polynomi.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c pssr.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c pubkey.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c queue.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c rabin.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c randpool.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c rc2.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c rc5.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c rc6.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c rdrand.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c rdtables.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c rijndael.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c ripemd.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c rng.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c rsa.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c rw.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c safer.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c salsa.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c seal.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c seed.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c serpent.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -march=armv8-a+crypto -c sha-simd.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c sha.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c sha3.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c shacal2.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c shark.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c sharkbox.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c skipjack.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c socketft.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c sosemanuk.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c square.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c squaretb.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c strciphr.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c tea.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c tftables.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c threefish.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c tiger.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c tigertab.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c trdlocal.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c ttmac.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c twofish.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c vmac.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c wait.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c wake.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c whrlpool.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c xtr.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c xtrcrypt.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c zdeflate.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c zinflate.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c zlib.cpp
ar r libcryptopp.a cryptlib.o cpu.o integer.o ... zdeflate.o zinflate.o 
zlib.o
ranlib libcryptopp.a
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c adhoc.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c test.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c bench1.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c bench2.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c validat0.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c validat1.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c validat2.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c validat3.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c datatest.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c regtest1.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c regtest2.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c regtest3.cpp
g++ -DNDEBUG -g2 -O3 -fPIC -pipe -c dlltest.cpp
g++ -o cryptest.exe -DNDEBUG -g2 -O3 -fPIC -pipe adhoc.o test.o bench1.o 
bench2.o validat0.o validat1.o validat2.o validat3.o datatest.o regtest1.o 
regtest2.o regtest3.o dlltest.o fipsalgt.o ./libcryptopp.a -pthread

-- 
-- 
You received this message because you are subscribed to the "Crypto++ Users" 
Google Group.
To unsubscribe, send an email to cryptopp-users-unsubscr...@googlegroups.com.
More information about Crypto++ and this group is available at 
http://www.cryptopp.com.
--- 
You received this message because you are subscribed to the Google Groups 
"Crypto++ Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to cryptopp-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to