boringssl/crypto
David Benjamin 4616bb1e6e Build 32-bit assembly with SSE2 enabled.
This affects bignum and sha. Also now that we're passing the SSE2 flag, revert
the change to ghash-x86.pl which unconditionally sets $sse2, just to minimize
upstream divergence. Chromium assumes SSE2 support, so relying on it is okay.
See https://crbug.com/349320.

Note: this change needs to be mirrored in Chromium to take.

bssl speed numbers:

SSE2:
Did 552 RSA 2048 signing operations in 3007814us (183.5 ops/sec)
Did 19003 RSA 2048 verify operations in 3070779us (6188.3 ops/sec)
Did 72 RSA 4096 signing operations in 3055885us (23.6 ops/sec)
Did 4650 RSA 4096 verify operations in 3024926us (1537.2 ops/sec)

Without SSE2:
Did 350 RSA 2048 signing operations in 3042021us (115.1 ops/sec)
Did 11760 RSA 2048 verify operations in 3003197us (3915.8 ops/sec)
Did 46 RSA 4096 signing operations in 3042692us (15.1 ops/sec)
Did 3400 RSA 4096 verify operations in 3083035us (1102.8 ops/sec)

SSE2:
Did 16407000 SHA-1 (16 bytes) operations in 3000141us (5468743.0 ops/sec): 87.5 MB/s
Did 4367000 SHA-1 (256 bytes) operations in 3000436us (1455455.1 ops/sec): 372.6 MB/s
Did 185000 SHA-1 (8192 bytes) operations in 3002666us (61611.9 ops/sec): 504.7 MB/s
Did 9444000 SHA-256 (16 bytes) operations in 3000052us (3147945.4 ops/sec): 50.4 MB/s
Did 2283000 SHA-256 (256 bytes) operations in 3000457us (760884.1 ops/sec): 194.8 MB/s
Did 89000 SHA-256 (8192 bytes) operations in 3016024us (29509.0 ops/sec): 241.7 MB/s
Did 5550000 SHA-512 (16 bytes) operations in 3000350us (1849784.2 ops/sec): 29.6 MB/s
Did 1820000 SHA-512 (256 bytes) operations in 3001039us (606456.6 ops/sec): 155.3 MB/s
Did 93000 SHA-512 (8192 bytes) operations in 3007874us (30918.8 ops/sec): 253.3 MB/s

Without SSE2:
Did 10573000 SHA-1 (16 bytes) operations in 3000261us (3524026.7 ops/sec): 56.4 MB/s
Did 2937000 SHA-1 (256 bytes) operations in 3000621us (978797.4 ops/sec): 250.6 MB/s
Did 123000 SHA-1 (8192 bytes) operations in 3033202us (40551.2 ops/sec): 332.2 MB/s
Did 5846000 SHA-256 (16 bytes) operations in 3000294us (1948475.7 ops/sec): 31.2 MB/s
Did 1377000 SHA-256 (256 bytes) operations in 3000335us (458948.8 ops/sec): 117.5 MB/s
Did 54000 SHA-256 (8192 bytes) operations in 3027962us (17833.8 ops/sec): 146.1 MB/s
Did 2075000 SHA-512 (16 bytes) operations in 3000967us (691443.8 ops/sec): 11.1 MB/s
Did 638000 SHA-512 (256 bytes) operations in 3000576us (212625.8 ops/sec): 54.4 MB/s
Did 30000 SHA-512 (8192 bytes) operations in 3042797us (9859.3 ops/sec): 80.8 MB/s

BUG=430237

Change-Id: I47d1c1ffcd71afe4f4a192272f8cb92af9505ee1
Reviewed-on: https://boringssl-review.googlesource.com/4130
Reviewed-by: Adam Langley <agl@google.com>
2015-03-26 23:35:56 +00:00
..
aes Fix undefined behavior in shifts. 2015-03-19 11:33:46 +00:00
asn1 Clean up error reporting. 2015-03-20 22:12:59 +00:00
base64 evp: prevent underflow in base64 decoding 2015-03-19 21:59:28 +00:00
bio Use TCP sockets rather than socketpairs in the SSL tests. 2015-02-23 19:59:06 +00:00
bn Avoid undefined behavior in probable_prime. 2015-03-19 11:36:49 +00:00
buf Precompute sorted array for error strings. 2015-02-09 17:35:31 -08:00
bytestring Add in missing curly braces part 1. 2015-02-11 19:31:01 +00:00
chacha Switch nonce type in chacha_vec.c to uint32_t. 2015-02-13 13:16:59 -08:00
cipher Clean up error reporting. 2015-03-20 22:12:59 +00:00
conf Add in missing curly braces part 1. 2015-02-11 19:31:01 +00:00
des Add support for 3DES ECB. 2015-03-18 19:55:14 +00:00
dh Add in missing curly braces part 1. 2015-02-11 19:31:01 +00:00
digest Precompute sorted array for error strings. 2015-02-09 17:35:31 -08:00
dsa Add in missing curly braces part 1. 2015-02-11 19:31:01 +00:00
ec Fix a failure to NULL a pointer freed on error. 2015-03-19 19:50:32 +00:00
ecdh Add in missing curly braces part 2. 2015-02-11 23:14:04 +00:00
ecdsa Add in missing curly braces part 2. 2015-02-11 23:14:04 +00:00
engine Precompute sorted array for error strings. 2015-02-09 17:35:31 -08:00
err Add AEADs for AES-CTR with HMAC-SHA256. 2015-03-18 21:16:55 +00:00
evp Remove unused fields from EVP_PKEY. 2015-03-25 15:32:33 +00:00
hkdf Precompute sorted array for error strings. 2015-02-09 17:35:31 -08:00
hmac Forbid reusing HMAC key without reusing the hash function. 2015-03-02 23:16:12 +00:00
lhash Remove more bits of ERR_STRING_DATA. 2015-02-10 02:10:46 +00:00
md4 Remove string.h from base.h. 2015-02-02 19:14:15 +00:00
md5 Remove explicit .hiddens from x86_64 perlasm files. 2015-02-25 21:26:16 +00:00
modes Build 32-bit assembly with SSE2 enabled. 2015-03-26 23:35:56 +00:00
obj Precompute sorted array for error strings. 2015-02-09 17:35:31 -08:00
pem Precompute sorted array for error strings. 2015-02-09 17:35:31 -08:00
perlasm Remove Unused SPARC & PowerPC perlasm scripts. 2015-03-14 00:16:55 +00:00
pkcs8 Add in missing curly braces part 3. 2015-02-11 15:14:46 -08:00
poly1305 Add in missing curly braces part 3. 2015-02-11 15:14:46 -08:00
rand Add in missing curly braces part 3. 2015-02-11 15:14:46 -08:00
rc4 Remove explicit .hiddens from x86_64 perlasm files. 2015-02-25 21:26:16 +00:00
rsa Clean up error reporting. 2015-03-20 22:12:59 +00:00
sha ARMv4 assembly pack: add Cortex-A15 performance data. 2015-03-10 02:32:05 +00:00
stack Add sk_deep_copy and its macro. 2015-02-13 10:59:10 -08:00
x509 Fix a failure to NULL a pointer freed on error. 2015-03-19 19:50:32 +00:00
x509v3 Clean up error reporting. 2015-03-20 22:12:59 +00:00
arm_arch.h aarch64 support. 2015-01-14 23:38:11 +00:00
CMakeLists.txt Build 32-bit assembly with SSE2 enabled. 2015-03-26 23:35:56 +00:00
constant_time_test.c Update constant-time operations. 2014-11-10 13:48:30 -08:00
cpu-arm-asm.S Don't probe for NEON with SIGILL on aarch64. 2015-02-03 19:56:25 +00:00
cpu-arm.c Don't install SIGILL handler until after sigsetjmp. 2015-03-19 11:53:07 +00:00
cpu-intel.c Remove string.h from base.h. 2015-02-02 19:14:15 +00:00
cpu-x86_64-asm.pl Remove explicit .hiddens from x86_64 perlasm files. 2015-02-25 21:26:16 +00:00
cpu-x86-asm.pl Never set RC4_CHAR. 2015-02-20 23:59:59 +00:00
crypto_error.h
crypto.c aarch64 support. 2015-01-14 23:38:11 +00:00
directory_posix.c Remove string.h from base.h. 2015-02-02 19:14:15 +00:00
directory_win.c Remove string.h from base.h. 2015-02-02 19:14:15 +00:00
directory.h Add visibility rules. 2014-07-31 22:03:11 +00:00
ex_data_impl.c Free more memory in cleanup functions. 2015-01-13 00:04:35 +00:00
ex_data.c Don't compare signed vs. unsigned. 2014-10-01 02:17:38 +00:00
header_removed.h
internal.h aarch64 support. 2015-01-14 23:38:11 +00:00
mem.c Enable more warnings & treat warnings as errors on Windows. 2015-01-31 00:18:55 +00:00
thread.c Fix duplicate lock IDs & simplify lock ID maintenance. 2015-03-17 23:58:20 +00:00
time_support.c Add in missing curly braces part 3. 2015-02-11 15:14:46 -08:00