929f842810
This avoids upsetting the C compiler. UBSan is offended by the alignment violations in those functions. The business with offset is also undefined behavior (pointer arithmetic is supposed to stay within a single object). There is a small performance cost, however: Before: Did 6636000 ChaCha20-Poly1305 (16 bytes) seal operations in 5000475us (1327073.9 ops/sec): 21.2 MB/s Did 832000 ChaCha20-Poly1305 (1350 bytes) seal operations in 5003481us (166284.2 ops/sec): 224.5 MB/s Did 155000 ChaCha20-Poly1305 (8192 bytes) seal operations in 5026933us (30833.9 ops/sec): 252.6 MB/s After: Did 6508000 ChaCha20-Poly1305 (16 bytes) seal operations in 5000160us (1301558.4 ops/sec): 20.8 MB/s Did 831000 ChaCha20-Poly1305 (1350 bytes) seal operations in 5002865us (166104.8 ops/sec): 224.2 MB/s Did 155000 ChaCha20-Poly1305 (8192 bytes) seal operations in 5013204us (30918.4 ops/sec): 253.3 MB/s (Tested with the no-asm build which disables the custom stitched mode assembly and ends up using this one.) Change-Id: I76d74183f1e04ad3726463a8871ee64be04ce674 Reviewed-on: https://boringssl-review.googlesource.com/22784 Reviewed-by: Adam Langley <agl@google.com> |
||
---|---|---|
.. | ||
CMakeLists.txt | ||
internal.h | ||
poly1305_arm_asm.S | ||
poly1305_arm.c | ||
poly1305_test.cc | ||
poly1305_tests.txt | ||
poly1305_vec.c | ||
poly1305.c |