sha512-armv8: Pull the .16b suffixes out of the variables In aarch64 AdvSIMD (aka NEON), each 128-bit vector register can be viewed in different ways. E.g. v0.16b is v0 viewed as 16 bytes, while v0.4s is v0 viewed as 4 32-bit words. (s stands for "single word".) In the assembly language, some instructions take multiple suffixes, while others can only be used with one suffix. A single register may need to be used with multiple suffixes in a given function. This makes packaging the suffixes into variables tricky because the code cannot choose which one. This file works by just always writing .16b and then using regexes at the bottom to fix them up, sometimes by inventing ad-hoc instructions like add.i32. Other times, it just always gets them wrong (sha256 and sha512 instructions) but gets by because the regexes rewrite them into bytes anyway. So this file looks like more "normal" aarch64 assembly, let's remove these. This first commit pulls the suffixes out of the variables and into where they are used. Other than whitespace to realign the comments, this should not change the value of $code. Bug: 478924351 Change-Id: I9cad9b1552eb6115240e2e80096e511d594374c5 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/87527 Commit-Queue: David Benjamin <davidben@google.com> Reviewed-by: Lily Chen <chlily@google.com>
BoringSSL is a fork of OpenSSL that is designed to meet Google's needs.
Although BoringSSL is an open source project, it is not intended for general use, as OpenSSL is. We don't recommend that third parties depend upon it. Doing so is likely to be frustrating because there are no guarantees of API or ABI stability.
Programs ship their own copies of BoringSSL when they use it and we update everything as needed when deciding to make API changes. This allows us to mostly avoid compromises in the name of compatibility. It works for us, but it may not work for you.
BoringSSL arose because Google used OpenSSL for many years in various ways and, over time, built up a large number of patches that were maintained while tracking upstream OpenSSL. As Google's product portfolio became more complex, more copies of OpenSSL sprung up and the effort involved in maintaining all these patches in multiple places was growing steadily.
Currently BoringSSL is the SSL library in Chrome/Chromium, Android (but it's not part of the NDK) and a number of other apps/programs.
Project links:
To file a security issue, use the Chromium process and mention in the report this is for BoringSSL. You can ignore the parts of the process that are specific to Chromium/Chrome.
There are other files in this directory which might be helpful: