summaryrefslogtreecommitdiffstats
path: root/third_party/boringssl
diff options
context:
space:
mode:
authordavidben <davidben@chromium.org>2015-05-12 15:13:21 -0700
committerCommit bot <commit-bot@chromium.org>2015-05-12 22:13:56 +0000
commit49f8b812ba5844f6aae6f5271db0821c22300a0f (patch)
treea6bebe607868cbd6c69f7c41755ab63c9c10f4c3 /third_party/boringssl
parent74829d51c072a86fc5d1962e061c2cb7343a7d04 (diff)
downloadchromium_src-49f8b812ba5844f6aae6f5271db0821c22300a0f.zip
chromium_src-49f8b812ba5844f6aae6f5271db0821c22300a0f.tar.gz
chromium_src-49f8b812ba5844f6aae6f5271db0821c22300a0f.tar.bz2
Revert of Roll src/third_party/boringssl/src 68de407:de12d6c (patchset #3 id:40001 of https://codereview.chromium.org/1132443004/)
Reason for revert: http://build.chromium.org/p/chromium.linux/builders/Android%20Arm64%20Builder%20%28dbg%29/builds/17339 Decent chance this will need to be re-uploaded manually, but let's see... Original issue's description: > Roll src/third_party/boringssl/src 68de407:de12d6c > > Summary of changes available at: > https://boringssl.googlesource.com/boringssl/+log/68de407..de12d6c > > This also removes update_gypi_and_asm.py in favor of the script inside > BoringSSL proper. > > BUG=none > > Committed: https://crrev.com/45248985036de1238c29d195b583797319a7020f > Cr-Commit-Position: refs/heads/master@{#329500} TBR=agl@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=none Review URL: https://codereview.chromium.org/1128293004 Cr-Commit-Position: refs/heads/master@{#329504}
Diffstat (limited to 'third_party/boringssl')
-rw-r--r--third_party/boringssl/README.chromium7
-rw-r--r--third_party/boringssl/boringssl.gypi4
-rw-r--r--third_party/boringssl/boringssl_tests.gypi67
-rw-r--r--third_party/boringssl/boringssl_unittest.cc52
-rw-r--r--third_party/boringssl/err_data.c580
-rw-r--r--third_party/boringssl/linux-aarch64/crypto/aes/aesv8-armx.S2
-rw-r--r--third_party/boringssl/linux-aarch64/crypto/modes/ghashv8-armx.S2
-rw-r--r--third_party/boringssl/linux-arm/crypto/aes/aes-armv4.S93
-rw-r--r--third_party/boringssl/linux-arm/crypto/aes/bsaes-armv7.S2331
-rw-r--r--third_party/boringssl/linux-arm/crypto/bn/armv4-mont.S321
-rw-r--r--third_party/boringssl/linux-arm/crypto/modes/ghash-armv4.S325
-rw-r--r--third_party/boringssl/linux-arm/crypto/sha/sha1-armv4-large.S248
-rw-r--r--third_party/boringssl/linux-arm/crypto/sha/sha256-armv4.S197
-rw-r--r--third_party/boringssl/linux-arm/crypto/sha/sha512-armv4.S1363
-rw-r--r--third_party/boringssl/linux-x86/crypto/aes/aesni-x86.S789
-rw-r--r--third_party/boringssl/linux-x86_64/crypto/aes/aesni-x86_64.S502
-rw-r--r--third_party/boringssl/mac-x86/crypto/aes/aesni-x86.S793
-rw-r--r--third_party/boringssl/mac-x86_64/crypto/aes/aesni-x86_64.S502
-rw-r--r--third_party/boringssl/update_gypi_and_asm.py259
-rw-r--r--third_party/boringssl/win-x86/crypto/aes/aesni-x86.asm792
-rw-r--r--third_party/boringssl/win-x86_64/crypto/aes/aesni-x86_64.asm522
21 files changed, 3940 insertions, 5811 deletions
diff --git a/third_party/boringssl/README.chromium b/third_party/boringssl/README.chromium
index 8c89faa..c4c63c4 100644
--- a/third_party/boringssl/README.chromium
+++ b/third_party/boringssl/README.chromium
@@ -9,10 +9,3 @@ Security Critical: yes
Description:
This is BoringSSL, a fork of OpenSSL. See
https://www.imperialviolet.org/2014/06/20/boringssl.html
-
-Note: when rolling DEPS forward, remember to run
-
- cd third_party/boringssl
- python src/util/generate_build_files.py chromium
-
-from a system with both Perl and Go installed.
diff --git a/third_party/boringssl/boringssl.gypi b/third_party/boringssl/boringssl.gypi
index 6187637..80d24e1 100644
--- a/third_party/boringssl/boringssl.gypi
+++ b/third_party/boringssl/boringssl.gypi
@@ -2,7 +2,7 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-# This file is created by generate_build_files.py. Do not edit manually.
+# This file is created by update_gypi_and_asm.py. Do not edit manually.
{
'variables': {
@@ -95,7 +95,6 @@
'src/crypto/cipher/e_ssl3.c',
'src/crypto/cipher/e_tls.c',
'src/crypto/cipher/tls_cbc.c',
- 'src/crypto/cmac/cmac.c',
'src/crypto/conf/conf.c',
'src/crypto/cpu-arm.c',
'src/crypto/cpu-intel.c',
@@ -185,7 +184,6 @@
'src/crypto/sha/sha512.c',
'src/crypto/stack/stack.c',
'src/crypto/thread.c',
- 'src/crypto/thread_none.c',
'src/crypto/thread_pthread.c',
'src/crypto/thread_win.c',
'src/crypto/time_support.c',
diff --git a/third_party/boringssl/boringssl_tests.gypi b/third_party/boringssl/boringssl_tests.gypi
index cec6780..81893db 100644
--- a/third_party/boringssl/boringssl_tests.gypi
+++ b/third_party/boringssl/boringssl_tests.gypi
@@ -2,7 +2,7 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-# This file is created by generate_build_files.py. Do not edit manually.
+# This file is created by update_gypi_and_asm.py. Do not edit manually.
{
'targets': [
@@ -14,7 +14,6 @@
],
'sources': [
'src/crypto/base64/base64_test.cc',
- '<@(boringssl_test_support_sources)',
],
# TODO(davidben): Fix size_t truncations in BoringSSL.
# https://crbug.com/429039
@@ -28,7 +27,6 @@
],
'sources': [
'src/crypto/bio/bio_test.cc',
- '<@(boringssl_test_support_sources)',
],
# TODO(davidben): Fix size_t truncations in BoringSSL.
# https://crbug.com/429039
@@ -42,7 +40,6 @@
],
'sources': [
'src/crypto/bn/bn_test.cc',
- '<@(boringssl_test_support_sources)',
],
# TODO(davidben): Fix size_t truncations in BoringSSL.
# https://crbug.com/429039
@@ -56,7 +53,6 @@
],
'sources': [
'src/crypto/bytestring/bytestring_test.cc',
- '<@(boringssl_test_support_sources)',
],
# TODO(davidben): Fix size_t truncations in BoringSSL.
# https://crbug.com/429039
@@ -69,8 +65,7 @@
'boringssl.gyp:boringssl',
],
'sources': [
- 'src/crypto/cipher/aead_test.cc',
- '<@(boringssl_test_support_sources)',
+ 'src/crypto/cipher/aead_test.c',
],
# TODO(davidben): Fix size_t truncations in BoringSSL.
# https://crbug.com/429039
@@ -84,21 +79,6 @@
],
'sources': [
'src/crypto/cipher/cipher_test.c',
- '<@(boringssl_test_support_sources)',
- ],
- # TODO(davidben): Fix size_t truncations in BoringSSL.
- # https://crbug.com/429039
- 'msvs_disabled_warnings': [ 4267, ],
- },
- {
- 'target_name': 'boringssl_cmac_test',
- 'type': 'executable',
- 'dependencies': [
- 'boringssl.gyp:boringssl',
- ],
- 'sources': [
- 'src/crypto/cmac/cmac_test.cc',
- '<@(boringssl_test_support_sources)',
],
# TODO(davidben): Fix size_t truncations in BoringSSL.
# https://crbug.com/429039
@@ -112,7 +92,6 @@
],
'sources': [
'src/crypto/constant_time_test.c',
- '<@(boringssl_test_support_sources)',
],
# TODO(davidben): Fix size_t truncations in BoringSSL.
# https://crbug.com/429039
@@ -125,8 +104,7 @@
'boringssl.gyp:boringssl',
],
'sources': [
- 'src/crypto/dh/dh_test.cc',
- '<@(boringssl_test_support_sources)',
+ 'src/crypto/dh/dh_test.c',
],
# TODO(davidben): Fix size_t truncations in BoringSSL.
# https://crbug.com/429039
@@ -140,7 +118,6 @@
],
'sources': [
'src/crypto/digest/digest_test.cc',
- '<@(boringssl_test_support_sources)',
],
# TODO(davidben): Fix size_t truncations in BoringSSL.
# https://crbug.com/429039
@@ -154,7 +131,6 @@
],
'sources': [
'src/crypto/dsa/dsa_test.c',
- '<@(boringssl_test_support_sources)',
],
# TODO(davidben): Fix size_t truncations in BoringSSL.
# https://crbug.com/429039
@@ -168,7 +144,6 @@
],
'sources': [
'src/crypto/ec/ec_test.cc',
- '<@(boringssl_test_support_sources)',
],
# TODO(davidben): Fix size_t truncations in BoringSSL.
# https://crbug.com/429039
@@ -182,7 +157,6 @@
],
'sources': [
'src/crypto/ec/example_mul.c',
- '<@(boringssl_test_support_sources)',
],
# TODO(davidben): Fix size_t truncations in BoringSSL.
# https://crbug.com/429039
@@ -196,7 +170,6 @@
],
'sources': [
'src/crypto/ecdsa/ecdsa_test.cc',
- '<@(boringssl_test_support_sources)',
],
# TODO(davidben): Fix size_t truncations in BoringSSL.
# https://crbug.com/429039
@@ -210,21 +183,6 @@
],
'sources': [
'src/crypto/err/err_test.cc',
- '<@(boringssl_test_support_sources)',
- ],
- # TODO(davidben): Fix size_t truncations in BoringSSL.
- # https://crbug.com/429039
- 'msvs_disabled_warnings': [ 4267, ],
- },
- {
- 'target_name': 'boringssl_evp_extra_test',
- 'type': 'executable',
- 'dependencies': [
- 'boringssl.gyp:boringssl',
- ],
- 'sources': [
- 'src/crypto/evp/evp_extra_test.cc',
- '<@(boringssl_test_support_sources)',
],
# TODO(davidben): Fix size_t truncations in BoringSSL.
# https://crbug.com/429039
@@ -238,7 +196,6 @@
],
'sources': [
'src/crypto/evp/evp_test.cc',
- '<@(boringssl_test_support_sources)',
],
# TODO(davidben): Fix size_t truncations in BoringSSL.
# https://crbug.com/429039
@@ -252,7 +209,6 @@
],
'sources': [
'src/crypto/evp/pbkdf_test.cc',
- '<@(boringssl_test_support_sources)',
],
# TODO(davidben): Fix size_t truncations in BoringSSL.
# https://crbug.com/429039
@@ -266,7 +222,6 @@
],
'sources': [
'src/crypto/hkdf/hkdf_test.c',
- '<@(boringssl_test_support_sources)',
],
# TODO(davidben): Fix size_t truncations in BoringSSL.
# https://crbug.com/429039
@@ -280,7 +235,6 @@
],
'sources': [
'src/crypto/hmac/hmac_test.cc',
- '<@(boringssl_test_support_sources)',
],
# TODO(davidben): Fix size_t truncations in BoringSSL.
# https://crbug.com/429039
@@ -294,7 +248,6 @@
],
'sources': [
'src/crypto/lhash/lhash_test.c',
- '<@(boringssl_test_support_sources)',
],
# TODO(davidben): Fix size_t truncations in BoringSSL.
# https://crbug.com/429039
@@ -308,7 +261,6 @@
],
'sources': [
'src/crypto/modes/gcm_test.c',
- '<@(boringssl_test_support_sources)',
],
# TODO(davidben): Fix size_t truncations in BoringSSL.
# https://crbug.com/429039
@@ -321,8 +273,7 @@
'boringssl.gyp:boringssl',
],
'sources': [
- 'src/crypto/pkcs8/pkcs12_test.cc',
- '<@(boringssl_test_support_sources)',
+ 'src/crypto/pkcs8/pkcs12_test.c',
],
# TODO(davidben): Fix size_t truncations in BoringSSL.
# https://crbug.com/429039
@@ -336,7 +287,6 @@
],
'sources': [
'src/crypto/rsa/rsa_test.c',
- '<@(boringssl_test_support_sources)',
],
# TODO(davidben): Fix size_t truncations in BoringSSL.
# https://crbug.com/429039
@@ -350,7 +300,6 @@
],
'sources': [
'src/crypto/thread_test.c',
- '<@(boringssl_test_support_sources)',
],
# TODO(davidben): Fix size_t truncations in BoringSSL.
# https://crbug.com/429039
@@ -364,7 +313,6 @@
],
'sources': [
'src/crypto/x509/pkcs7_test.c',
- '<@(boringssl_test_support_sources)',
],
# TODO(davidben): Fix size_t truncations in BoringSSL.
# https://crbug.com/429039
@@ -378,7 +326,6 @@
],
'sources': [
'src/ssl/pqueue/pqueue_test.c',
- '<@(boringssl_test_support_sources)',
],
# TODO(davidben): Fix size_t truncations in BoringSSL.
# https://crbug.com/429039
@@ -392,7 +339,6 @@
],
'sources': [
'src/ssl/ssl_test.cc',
- '<@(boringssl_test_support_sources)',
],
# TODO(davidben): Fix size_t truncations in BoringSSL.
# https://crbug.com/429039
@@ -400,9 +346,6 @@
},
],
'variables': {
- 'boringssl_test_support_sources': [
- 'src/crypto/test/file_test.cc',
- ],
'boringssl_test_targets': [
'boringssl_aead_test',
'boringssl_base64_test',
@@ -410,7 +353,6 @@
'boringssl_bn_test',
'boringssl_bytestring_test',
'boringssl_cipher_test',
- 'boringssl_cmac_test',
'boringssl_constant_time_test',
'boringssl_dh_test',
'boringssl_digest_test',
@@ -418,7 +360,6 @@
'boringssl_ec_test',
'boringssl_ecdsa_test',
'boringssl_err_test',
- 'boringssl_evp_extra_test',
'boringssl_evp_test',
'boringssl_example_mul',
'boringssl_gcm_test',
diff --git a/third_party/boringssl/boringssl_unittest.cc b/third_party/boringssl/boringssl_unittest.cc
index 3f765bf61..52bac99 100644
--- a/third_party/boringssl/boringssl_unittest.cc
+++ b/third_party/boringssl/boringssl_unittest.cc
@@ -157,6 +157,10 @@ TEST(BoringSSL, ByteString) {
TestSimple("bytestring_test");
}
+TEST(BoringSSL, ConstantTime) {
+ TestSimple("constant_time_test");
+}
+
TEST(BoringSSL, Cipher) {
base::FilePath data_file;
ASSERT_TRUE(CryptoCipherTestPath(&data_file));
@@ -168,14 +172,6 @@ TEST(BoringSSL, Cipher) {
TestProcess("cipher_test", args);
}
-TEST(BoringSSL, CMAC) {
- TestSimple("cmac_test");
-}
-
-TEST(BoringSSL, ConstantTime) {
- TestSimple("constant_time_test");
-}
-
TEST(BoringSSL, DH) {
TestSimple("dh_test");
}
@@ -205,16 +201,7 @@ TEST(BoringSSL, GCM) {
}
TEST(BoringSSL, HMAC) {
- base::FilePath data_file;
- ASSERT_TRUE(BoringSSLPath(&data_file));
- data_file = data_file.Append(FILE_PATH_LITERAL("crypto"));
- data_file = data_file.Append(FILE_PATH_LITERAL("hmac"));
- data_file = data_file.Append(FILE_PATH_LITERAL("hmac_tests.txt"));
-
- std::vector<base::CommandLine::StringType> args;
- args.push_back(data_file.value());
-
- TestProcess("hmac_test", args);
+ TestSimple("hmac_test");
}
TEST(BoringSSL, LH) {
@@ -238,34 +225,7 @@ TEST(BoringSSL, ExampleMul) {
}
TEST(BoringSSL, EVP) {
- base::FilePath data_file;
- ASSERT_TRUE(BoringSSLPath(&data_file));
- data_file = data_file.Append(FILE_PATH_LITERAL("crypto"));
- data_file = data_file.Append(FILE_PATH_LITERAL("evp"));
- data_file = data_file.Append(FILE_PATH_LITERAL("evp_tests.txt"));
-
- std::vector<base::CommandLine::StringType> args;
- args.push_back(data_file.value());
-
- TestProcess("evp_test", args);
-}
-
-// evp_test is also run on hmac_test's input.
-TEST(BoringSSL, EVPHMAC) {
- base::FilePath data_file;
- ASSERT_TRUE(BoringSSLPath(&data_file));
- data_file = data_file.Append(FILE_PATH_LITERAL("crypto"));
- data_file = data_file.Append(FILE_PATH_LITERAL("hmac"));
- data_file = data_file.Append(FILE_PATH_LITERAL("hmac_tests.txt"));
-
- std::vector<base::CommandLine::StringType> args;
- args.push_back(data_file.value());
-
- TestProcess("evp_test", args);
-}
-
-TEST(BoringSSL, EVPExtra) {
- TestSimple("evp_extra_test");
+ TestSimple("evp_test");
}
TEST(BoringSSL, SSL) {
diff --git a/third_party/boringssl/err_data.c b/third_party/boringssl/err_data.c
index 68397e4..16b52e7 100644
--- a/third_party/boringssl/err_data.c
+++ b/third_party/boringssl/err_data.c
@@ -216,65 +216,65 @@ const uint32_t kOpenSSLFunctionValues[] = {
0x28330aa9,
0x28338aae,
0x28340ab9,
- 0x2c322a70,
- 0x2c32aa7c,
- 0x2c332a8f,
- 0x2c33aaa0,
- 0x2c342ab9,
- 0x2c34aae1,
- 0x2c352af8,
- 0x2c35ab15,
- 0x2c362b32,
- 0x2c36ab4f,
- 0x2c372b68,
- 0x2c37ab81,
- 0x2c382b97,
- 0x2c38aba5,
- 0x2c392bb7,
- 0x2c39abd4,
- 0x2c3a2bf1,
- 0x2c3aabff,
- 0x2c3b2c1d,
- 0x2c3bac3b,
- 0x2c3c2c56,
- 0x2c3cac6a,
- 0x2c3d2c7c,
- 0x2c3dac8c,
- 0x2c3e2c9a,
- 0x2c3eacaa,
- 0x2c3f2cba,
- 0x2c3facd5,
- 0x2c402ce6,
- 0x2c40ad01,
- 0x2c412d15,
- 0x2c41ad28,
- 0x2c422d47,
- 0x2c42ad5b,
- 0x2c432d6e,
- 0x2c43ad7d,
- 0x2c442d8c,
- 0x2c44ada3,
- 0x2c452dbe,
- 0x2c45add6,
- 0x2c462dea,
- 0x2c46adfd,
- 0x2c472e0e,
- 0x2c47ae1f,
- 0x2c482e30,
- 0x2c48ae41,
- 0x2c492e50,
- 0x2c49ae5d,
- 0x2c4a2e6a,
- 0x2c4aae77,
- 0x2c4b2e80,
- 0x2c4bae94,
- 0x2c4c2ea3,
- 0x2c4caeb1,
- 0x2c4d2ed3,
- 0x2c4daee4,
- 0x2c4e2ef5,
- 0x2c4eaec0,
- 0x2c4f2ad2,
+ 0x2c322a27,
+ 0x2c32aa33,
+ 0x2c332a46,
+ 0x2c33aa57,
+ 0x2c342a70,
+ 0x2c34aa98,
+ 0x2c352aaf,
+ 0x2c35aacc,
+ 0x2c362ae9,
+ 0x2c36ab06,
+ 0x2c372b1f,
+ 0x2c37ab38,
+ 0x2c382b4e,
+ 0x2c38ab5c,
+ 0x2c392b6e,
+ 0x2c39ab8b,
+ 0x2c3a2ba8,
+ 0x2c3aabb6,
+ 0x2c3b2bd4,
+ 0x2c3babf2,
+ 0x2c3c2c0d,
+ 0x2c3cac21,
+ 0x2c3d2c33,
+ 0x2c3dac43,
+ 0x2c3e2c51,
+ 0x2c3eac61,
+ 0x2c3f2c71,
+ 0x2c3fac8c,
+ 0x2c402c9d,
+ 0x2c40acb8,
+ 0x2c412ccc,
+ 0x2c41acdf,
+ 0x2c422cfe,
+ 0x2c42ad12,
+ 0x2c432d25,
+ 0x2c43ad34,
+ 0x2c442d43,
+ 0x2c44ad5a,
+ 0x2c452d75,
+ 0x2c45ad8d,
+ 0x2c462da1,
+ 0x2c46adb4,
+ 0x2c472dc5,
+ 0x2c47add6,
+ 0x2c482de7,
+ 0x2c48adf8,
+ 0x2c492e07,
+ 0x2c49ae14,
+ 0x2c4a2e21,
+ 0x2c4aae2e,
+ 0x2c4b2e37,
+ 0x2c4bae4b,
+ 0x2c4c2e5a,
+ 0x2c4cae68,
+ 0x2c4d2e8a,
+ 0x2c4dae9b,
+ 0x2c4e2eac,
+ 0x2c4eae77,
+ 0x2c4f2a89,
0x30320000,
0x30328018,
0x3033002c,
@@ -414,176 +414,172 @@ const uint32_t kOpenSSLFunctionValues[] = {
0x3c521083,
0x40321b21,
0x40329b3b,
- 0x40331b63,
- 0x40339b7b,
- 0x40341b99,
- 0x40349be0,
- 0x40351bf7,
- 0x40359c13,
- 0x40361c2f,
- 0x40369c49,
- 0x40371c68,
- 0x40379c87,
- 0x40381c9f,
- 0x40389cbc,
- 0x40391cdf,
- 0x40399cfc,
- 0x403a1d1a,
- 0x403a9d2a,
- 0x403b1d3f,
- 0x403b9d5b,
- 0x403c1d75,
- 0x403c9d80,
- 0x403d1da3,
- 0x403d9dc7,
- 0x403e1ddd,
- 0x403e9de7,
- 0x403f1df3,
- 0x403f9e04,
- 0x40401e1c,
- 0x40409e24,
- 0x40411e2d,
- 0x40419e36,
- 0x40421e5e,
- 0x40429e72,
- 0x40431e7d,
- 0x40439e89,
- 0x40441edd,
- 0x40449ee9,
- 0x40451ef6,
- 0x40459f09,
- 0x40461f21,
- 0x40469f39,
- 0x40471f4f,
- 0x40479f6a,
- 0x40481f85,
- 0x40489f99,
- 0x40491fb2,
- 0x40499fcb,
- 0x404a1fe5,
- 0x404a9fef,
- 0x404b1fff,
- 0x404ba020,
- 0x404c203b,
- 0x404ca049,
- 0x404d2056,
- 0x404da06a,
- 0x404e2082,
- 0x404ea090,
- 0x404f20ba,
- 0x404fa0d1,
- 0x405020e3,
- 0x4050a114,
- 0x40512145,
- 0x4051a15a,
- 0x4052216b,
- 0x4052a18b,
- 0x405321a6,
- 0x4053a1b6,
- 0x4054a1c2,
- 0x405521d8,
- 0x4055a1f6,
- 0x40562203,
- 0x4056a20d,
- 0x4057221b,
- 0x4057a236,
- 0x40582251,
- 0x4058a270,
- 0x40592285,
- 0x4059a29a,
- 0x405a22b7,
- 0x405aa2cb,
- 0x405b22e7,
- 0x405ba2fd,
- 0x405c231a,
- 0x405ca32c,
- 0x405d2343,
- 0x405da354,
- 0x405e2370,
- 0x405ea384,
- 0x405f2394,
- 0x405fa3b0,
- 0x406023c5,
- 0x4060a3db,
- 0x406123f8,
- 0x4061a411,
- 0x4062243b,
- 0x4062a444,
- 0x40632454,
- 0x4063a48d,
- 0x406424a3,
- 0x4064a4c1,
- 0x406524d6,
- 0x4065a4f3,
- 0x4066250a,
- 0x4066a528,
- 0x40672545,
- 0x4067a55c,
- 0x4068257a,
- 0x4068a591,
- 0x406925a9,
- 0x4069a5ba,
- 0x406a25cd,
- 0x406aa5e0,
- 0x406b25f4,
- 0x406ba618,
- 0x406c2633,
- 0x406ca654,
- 0x406d2678,
- 0x406da693,
- 0x406e26b4,
- 0x406ea6c9,
- 0x406f26e2,
- 0x406fa6ef,
- 0x407026fd,
- 0x4070a70a,
- 0x40712727,
- 0x4071a747,
- 0x40722762,
- 0x4072a77b,
- 0x40732792,
- 0x4073a7ac,
- 0x407427d0,
- 0x4074a7e6,
- 0x407527fa,
- 0x4075a80f,
- 0x40762829,
- 0x4076a83b,
- 0x40772850,
- 0x4077a876,
- 0x40782893,
- 0x4078a8b6,
- 0x407928dc,
- 0x4079a8f9,
- 0x407a291c,
- 0x407aa938,
- 0x407b2954,
- 0x407ba966,
- 0x407c2973,
- 0x407e2980,
- 0x407ea996,
- 0x407f29ae,
- 0x407fa9c1,
- 0x408029d6,
- 0x4080a9ef,
- 0x40812a0d,
- 0x4081aa2d,
- 0x40822a36,
- 0x4082aa52,
- 0x40832a5b,
- 0x4083a09f,
- 0x4084212e,
- 0x4084a0fe,
- 0x4085247c,
- 0x4085a460,
- 0x40861bb8,
- 0x40869bcb,
- 0x40871ebd,
- 0x40879ecc,
- 0x40881b47,
- 0x40889e46,
- 0x40891ea4,
- 0x4089a424,
+ 0x40331b47,
+ 0x40339b5f,
+ 0x40341b7d,
+ 0x40349b9c,
+ 0x40351bb3,
+ 0x40359bcf,
+ 0x40361beb,
+ 0x40369c05,
+ 0x40371c24,
+ 0x40379c43,
+ 0x40381c5b,
+ 0x40389c78,
+ 0x40391c9b,
+ 0x40399cb8,
+ 0x403a1cd6,
+ 0x403a9ce6,
+ 0x403b1cfb,
+ 0x403b9d17,
+ 0x403c1d31,
+ 0x403c9d3c,
+ 0x403d1d5f,
+ 0x403d9d83,
+ 0x403e1d99,
+ 0x403e9da3,
+ 0x403f1daf,
+ 0x403f9dc0,
+ 0x40401dd8,
+ 0x40409de0,
+ 0x40411de9,
+ 0x40419df2,
+ 0x40421e02,
+ 0x40429e16,
+ 0x40431e21,
+ 0x40439e2d,
+ 0x40441e48,
+ 0x40449e54,
+ 0x40451e61,
+ 0x40459e74,
+ 0x40461e8c,
+ 0x40469ea4,
+ 0x40471eba,
+ 0x40479ed5,
+ 0x40481ef0,
+ 0x40489f04,
+ 0x40491f1d,
+ 0x40499f36,
+ 0x404a1f50,
+ 0x404a9f5a,
+ 0x404b1f6a,
+ 0x404b9f8b,
+ 0x404c1fa6,
+ 0x404c9fb4,
+ 0x404d1fc1,
+ 0x404d9fd5,
+ 0x404e1fed,
+ 0x404e9ffb,
+ 0x404f2025,
+ 0x404fa03c,
+ 0x4050204e,
+ 0x4050a07f,
+ 0x405120b0,
+ 0x4051a0c5,
+ 0x405220d6,
+ 0x4052a0f6,
+ 0x40532111,
+ 0x4053a121,
+ 0x4054212d,
+ 0x4054a140,
+ 0x40552156,
+ 0x4055a174,
+ 0x40562181,
+ 0x4056a18b,
+ 0x40572199,
+ 0x4057a1b4,
+ 0x405821cf,
+ 0x4058a1ee,
+ 0x40592203,
+ 0x4059a218,
+ 0x405a2235,
+ 0x405aa249,
+ 0x405b2265,
+ 0x405ba27b,
+ 0x405c2298,
+ 0x405ca2aa,
+ 0x405d22c1,
+ 0x405da2d2,
+ 0x405e22ee,
+ 0x405ea302,
+ 0x405f2312,
+ 0x405fa32e,
+ 0x40602343,
+ 0x4060a359,
+ 0x40612376,
+ 0x4061a38f,
+ 0x406223a2,
+ 0x4062a3ab,
+ 0x406323bb,
+ 0x4063a3f4,
+ 0x4064240a,
+ 0x4064a428,
+ 0x4065243d,
+ 0x4065a45a,
+ 0x40662471,
+ 0x4066a48f,
+ 0x406724ac,
+ 0x4067a4c3,
+ 0x406824e1,
+ 0x4068a4f8,
+ 0x40692510,
+ 0x4069a521,
+ 0x406a2534,
+ 0x406aa547,
+ 0x406b255b,
+ 0x406ba57f,
+ 0x406c259a,
+ 0x406ca5bb,
+ 0x406d25df,
+ 0x406da5fa,
+ 0x406e261b,
+ 0x406ea630,
+ 0x406f2649,
+ 0x406fa656,
+ 0x40702664,
+ 0x4070a671,
+ 0x4071268e,
+ 0x4071a6ae,
+ 0x407226c9,
+ 0x4072a6e2,
+ 0x407326f9,
+ 0x4073a713,
+ 0x40742737,
+ 0x4074a74d,
+ 0x40752761,
+ 0x4075a776,
+ 0x40762790,
+ 0x4076a7a2,
+ 0x407727b7,
+ 0x4077a7dd,
+ 0x407827fa,
+ 0x4078a81d,
+ 0x40792843,
+ 0x4079a860,
+ 0x407a2883,
+ 0x407aa89f,
+ 0x407b28bb,
+ 0x407ba8cd,
+ 0x407c28da,
+ 0x407ca8e7,
+ 0x407d2904,
+ 0x407da91b,
+ 0x407e2937,
+ 0x407ea94d,
+ 0x407f2965,
+ 0x407fa978,
+ 0x4080298d,
+ 0x4080a9a6,
+ 0x408129c4,
+ 0x4081a9e4,
+ 0x408229ed,
+ 0x4082aa09,
+ 0x40832a12,
+ 0x4083a00a,
+ 0x40842099,
+ 0x4084a069,
+ 0x408523e3,
+ 0x4085a3c7,
0x4432042a,
0x4432843c,
0x44330445,
@@ -620,63 +616,63 @@ const uint32_t kOpenSSLFunctionValues[] = {
0x4c3998af,
0x4c3a18c7,
0x4c3a98da,
- 0x50322f06,
- 0x5032af1b,
- 0x50332f2c,
- 0x5033af3f,
- 0x50342f50,
- 0x5034af63,
- 0x50352f72,
- 0x5035af87,
- 0x50362f97,
- 0x5036afa6,
- 0x50372fb7,
- 0x5037afc7,
- 0x50382fd8,
- 0x5038afeb,
- 0x50392ffd,
- 0x5039b013,
- 0x503a3025,
- 0x503ab036,
- 0x503b3047,
- 0x503bb058,
- 0x503c3063,
- 0x503cb06f,
- 0x503d307a,
- 0x503db085,
- 0x503e3092,
- 0x503eb0a7,
- 0x503f30b5,
- 0x503fb0c9,
- 0x504030dc,
- 0x5040b0ed,
- 0x50413107,
- 0x5041b116,
- 0x5042311f,
- 0x5042b12e,
- 0x50433140,
- 0x5043b14c,
- 0x50443154,
- 0x5044b167,
- 0x50453178,
- 0x5045b18e,
- 0x5046319a,
- 0x5046b1ae,
- 0x504731bc,
- 0x5047b1d0,
- 0x504831ea,
- 0x5048b1fe,
- 0x50493214,
- 0x5049b22b,
- 0x504a323d,
- 0x504ab251,
- 0x504b3266,
- 0x504bb27d,
- 0x504c3291,
- 0x504cb29a,
- 0x504d32a2,
- 0x504db2b1,
- 0x504e32c1,
+ 0x50322ebd,
+ 0x5032aed2,
+ 0x50332ee3,
+ 0x5033aef6,
+ 0x50342f07,
+ 0x5034af1a,
+ 0x50352f29,
+ 0x5035af3e,
+ 0x50362f4e,
+ 0x5036af5d,
+ 0x50372f6e,
+ 0x5037af7e,
+ 0x50382f8f,
+ 0x5038afa2,
+ 0x50392fb4,
+ 0x5039afca,
+ 0x503a2fdc,
+ 0x503aafed,
+ 0x503b2ffe,
+ 0x503bb00f,
+ 0x503c301a,
+ 0x503cb026,
+ 0x503d3031,
+ 0x503db03c,
+ 0x503e3049,
+ 0x503eb05e,
+ 0x503f306c,
+ 0x503fb080,
+ 0x50403093,
+ 0x5040b0a4,
+ 0x504130be,
+ 0x5041b0cd,
+ 0x504230d6,
+ 0x5042b0e5,
+ 0x504330f7,
+ 0x5043b103,
+ 0x5044310b,
+ 0x5044b11e,
+ 0x5045312f,
+ 0x5045b145,
+ 0x50463151,
+ 0x5046b165,
+ 0x50473173,
+ 0x5047b187,
+ 0x504831a1,
+ 0x5048b1b5,
+ 0x504931cb,
+ 0x5049b1e2,
+ 0x504a31f4,
+ 0x504ab208,
+ 0x504b321d,
+ 0x504bb234,
+ 0x504c3248,
+ 0x504cb251,
+ 0x504d3259,
+ 0x504db268,
+ 0x504e3278,
0x683210ba,
0x683290cb,
0x683310db,
@@ -1107,12 +1103,9 @@ const char kOpenSSLFunctionStringData[] =
"verify_raw\0"
"SSL_CTX_check_private_key\0"
"SSL_CTX_new\0"
- "SSL_CTX_set1_tls_channel_id\0"
"SSL_CTX_set_cipher_list\0"
"SSL_CTX_set_cipher_list_tls11\0"
"SSL_CTX_set_session_id_context\0"
- "SSL_CTX_set_tmp_dh\0"
- "SSL_CTX_set_tmp_ecdh\0"
"SSL_CTX_use_PrivateKey\0"
"SSL_CTX_use_PrivateKey_ASN1\0"
"SSL_CTX_use_PrivateKey_file\0"
@@ -1140,14 +1133,10 @@ const char kOpenSSLFunctionStringData[] =
"SSL_peek\0"
"SSL_read\0"
"SSL_renegotiate\0"
- "SSL_set1_tls_channel_id\0"
"SSL_set_cipher_list\0"
"SSL_set_fd\0"
"SSL_set_rfd\0"
"SSL_set_session_id_context\0"
- "SSL_set_tlsext_host_name\0"
- "SSL_set_tmp_dh\0"
- "SSL_set_tmp_ecdh\0"
"SSL_set_wfd\0"
"SSL_shutdown\0"
"SSL_use_PrivateKey\0"
@@ -1183,6 +1172,7 @@ const char kOpenSSLFunctionStringData[] =
"dtls1_write_app_data_bytes\0"
"i2d_SSL_SESSION\0"
"ssl3_accept\0"
+ "ssl3_callback_ctrl\0"
"ssl3_cert_verify_hash\0"
"ssl3_check_cert_and_algorithm\0"
"ssl3_connect\0"
@@ -1210,7 +1200,6 @@ const char kOpenSSLFunctionStringData[] =
"ssl3_get_server_key_exchange\0"
"ssl3_get_v2_client_hello\0"
"ssl3_handshake_mac\0"
- "ssl3_output_cert_chain\0"
"ssl3_prf\0"
"ssl3_read_bytes\0"
"ssl3_read_n\0"
@@ -1266,6 +1255,9 @@ const char kOpenSSLFunctionStringData[] =
"ssl_sess_cert_new\0"
"ssl_set_cert\0"
"ssl_set_pkey\0"
+ "ssl_undefined_const_function\0"
+ "ssl_undefined_function\0"
+ "ssl_undefined_void_function\0"
"ssl_verify_cert_chain\0"
"tls12_check_peer_sigalg\0"
"tls1_aead_ctx_init\0"
diff --git a/third_party/boringssl/linux-aarch64/crypto/aes/aesv8-armx.S b/third_party/boringssl/linux-aarch64/crypto/aes/aesv8-armx.S
index 9c63291..049ccb6 100644
--- a/third_party/boringssl/linux-aarch64/crypto/aes/aesv8-armx.S
+++ b/third_party/boringssl/linux-aarch64/crypto/aes/aesv8-armx.S
@@ -2,9 +2,7 @@
#if __ARM_MAX_ARCH__>=7
.text
-#if !defined(__clang__)
.arch armv8-a+crypto
-#endif
.align 5
.Lrcon:
.long 0x01,0x01,0x01,0x01
diff --git a/third_party/boringssl/linux-aarch64/crypto/modes/ghashv8-armx.S b/third_party/boringssl/linux-aarch64/crypto/modes/ghashv8-armx.S
index ad19074..adc0391 100644
--- a/third_party/boringssl/linux-aarch64/crypto/modes/ghashv8-armx.S
+++ b/third_party/boringssl/linux-aarch64/crypto/modes/ghashv8-armx.S
@@ -1,9 +1,7 @@
#include "arm_arch.h"
.text
-#if !defined(__clang__)
.arch armv8-a+crypto
-#endif
.globl gcm_init_v8
.type gcm_init_v8,%function
.align 4
diff --git a/third_party/boringssl/linux-arm/crypto/aes/aes-armv4.S b/third_party/boringssl/linux-arm/crypto/aes/aes-armv4.S
index 1135020..0b7d193 100644
--- a/third_party/boringssl/linux-arm/crypto/aes/aes-armv4.S
+++ b/third_party/boringssl/linux-arm/crypto/aes/aes-armv4.S
@@ -43,7 +43,7 @@
.code 32
#else
.syntax unified
-# if defined(__thumb2__) && !defined(__APPLE__)
+# ifdef __thumb2__
.thumb
# else
.code 32
@@ -158,9 +158,9 @@ AES_Te:
@ void asm_AES_encrypt(const unsigned char *in, unsigned char *out,
@ const AES_KEY *key) {
-.globl asm_AES_encrypt
-.hidden asm_AES_encrypt
-.type asm_AES_encrypt,%function
+.global asm_AES_encrypt
+.hidden asm_AES_encrypt
+.type asm_AES_encrypt,%function
.align 5
asm_AES_encrypt:
#if __ARM_ARCH__<7
@@ -168,14 +168,10 @@ asm_AES_encrypt:
#else
adr r3,asm_AES_encrypt
#endif
- stmdb sp!,{r1,r4-r12,lr}
-#ifdef __APPLE__
- adr r10,AES_Te
-#else
- sub r10,r3,#asm_AES_encrypt-AES_Te @ Te
-#endif
+ stmdb sp!,{r1,r4-r12,lr}
mov r12,r0 @ inp
mov r11,r2
+ sub r10,r3,#asm_AES_encrypt-AES_Te @ Te
#if __ARM_ARCH__<7
ldrb r0,[r12,#3] @ load input data in endian-neutral
ldrb r4,[r12,#2] @ manner...
@@ -262,20 +258,20 @@ asm_AES_encrypt:
strb r3,[r12,#15]
#endif
#if __ARM_ARCH__>=5
- ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc}
+ ldmia sp!,{r4-r12,pc}
#else
- ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr}
+ ldmia sp!,{r4-r12,lr}
tst lr,#1
moveq pc,lr @ be binary compatible with V4, yet
-.word 0xe12fff1e @ interoperable with Thumb ISA:-)
+ .word 0xe12fff1e @ interoperable with Thumb ISA:-)
#endif
.size asm_AES_encrypt,.-asm_AES_encrypt
-.type _armv4_AES_encrypt,%function
+.type _armv4_AES_encrypt,%function
.align 2
_armv4_AES_encrypt:
str lr,[sp,#-4]! @ push lr
- ldmia r11!,{r4,r5,r6,r7}
+ ldmia r11!,{r4-r7}
eor r0,r0,r4
ldr r12,[r11,#240-16]
eor r1,r1,r5
@@ -408,9 +404,9 @@ _armv4_AES_encrypt:
ldr pc,[sp],#4 @ pop and return
.size _armv4_AES_encrypt,.-_armv4_AES_encrypt
-.globl asm_AES_set_encrypt_key
-.hidden asm_AES_set_encrypt_key
-.type asm_AES_set_encrypt_key,%function
+.global asm_AES_set_encrypt_key
+.hidden asm_AES_set_encrypt_key
+.type asm_AES_set_encrypt_key,%function
.align 5
asm_AES_set_encrypt_key:
_armv4_AES_set_encrypt_key:
@@ -443,17 +439,13 @@ _armv4_AES_set_encrypt_key:
movne r0,#-1
bne .Labrt
-.Lok: stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr}
+.Lok: stmdb sp!,{r4-r12,lr}
+ sub r10,r3,#_armv4_AES_set_encrypt_key-AES_Te-1024 @ Te4
+
mov r12,r0 @ inp
mov lr,r1 @ bits
mov r11,r2 @ key
-#ifdef __APPLE__
- adr r10,AES_Te+1024 @ Te4
-#else
- sub r10,r3,#_armv4_AES_set_encrypt_key-AES_Te-1024 @ Te4
-#endif
-
#if __ARM_ARCH__<7
ldrb r0,[r12,#3] @ load input data in endian-neutral
ldrb r4,[r12,#2] @ manner...
@@ -704,20 +696,20 @@ _armv4_AES_set_encrypt_key:
.align 2
.Ldone: mov r0,#0
- ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr}
+ ldmia sp!,{r4-r12,lr}
.Labrt:
-#if __ARM_ARCH__>=5
- bx lr @ .word 0xe12fff1e
+#if defined(__thumb2__) && __ARM_ARCH__>=7
+ .short 0x4770 @ .word 0xe12fff1e in Thumb2 encoding
#else
tst lr,#1
moveq pc,lr @ be binary compatible with V4, yet
-.word 0xe12fff1e @ interoperable with Thumb ISA:-)
+ .word 0xe12fff1e @ interoperable with Thumb ISA:-)
#endif
.size asm_AES_set_encrypt_key,.-asm_AES_set_encrypt_key
-.globl asm_AES_set_decrypt_key
-.hidden asm_AES_set_decrypt_key
-.type asm_AES_set_decrypt_key,%function
+.global asm_AES_set_decrypt_key
+.hidden asm_AES_set_decrypt_key
+.type asm_AES_set_decrypt_key,%function
.align 5
asm_AES_set_decrypt_key:
str lr,[sp,#-4]! @ push lr
@@ -732,13 +724,13 @@ asm_AES_set_decrypt_key:
.size asm_AES_set_decrypt_key,.-asm_AES_set_decrypt_key
@ void AES_set_enc2dec_key(const AES_KEY *inp,AES_KEY *out)
-.globl AES_set_enc2dec_key
+.global AES_set_enc2dec_key
.hidden AES_set_enc2dec_key
.type AES_set_enc2dec_key,%function
.align 5
AES_set_enc2dec_key:
_armv4_AES_set_enc2dec_key:
- stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr}
+ stmdb sp!,{r4-r12,lr}
ldr r12,[r0,#240]
mov r7,r0 @ input
@@ -820,12 +812,12 @@ _armv4_AES_set_enc2dec_key:
mov r0,#0
#if __ARM_ARCH__>=5
- ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc}
+ ldmia sp!,{r4-r12,pc}
#else
- ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr}
+ ldmia sp!,{r4-r12,lr}
tst lr,#1
moveq pc,lr @ be binary compatible with V4, yet
-.word 0xe12fff1e @ interoperable with Thumb ISA:-)
+ .word 0xe12fff1e @ interoperable with Thumb ISA:-)
#endif
.size AES_set_enc2dec_key,.-AES_set_enc2dec_key
@@ -933,9 +925,9 @@ AES_Td:
@ void asm_AES_decrypt(const unsigned char *in, unsigned char *out,
@ const AES_KEY *key) {
-.globl asm_AES_decrypt
-.hidden asm_AES_decrypt
-.type asm_AES_decrypt,%function
+.global asm_AES_decrypt
+.hidden asm_AES_decrypt
+.type asm_AES_decrypt,%function
.align 5
asm_AES_decrypt:
#if __ARM_ARCH__<7
@@ -943,14 +935,10 @@ asm_AES_decrypt:
#else
adr r3,asm_AES_decrypt
#endif
- stmdb sp!,{r1,r4-r12,lr}
-#ifdef __APPLE__
- adr r10,AES_Td
-#else
- sub r10,r3,#asm_AES_decrypt-AES_Td @ Td
-#endif
+ stmdb sp!,{r1,r4-r12,lr}
mov r12,r0 @ inp
mov r11,r2
+ sub r10,r3,#asm_AES_decrypt-AES_Td @ Td
#if __ARM_ARCH__<7
ldrb r0,[r12,#3] @ load input data in endian-neutral
ldrb r4,[r12,#2] @ manner...
@@ -1037,20 +1025,20 @@ asm_AES_decrypt:
strb r3,[r12,#15]
#endif
#if __ARM_ARCH__>=5
- ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc}
+ ldmia sp!,{r4-r12,pc}
#else
- ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr}
+ ldmia sp!,{r4-r12,lr}
tst lr,#1
moveq pc,lr @ be binary compatible with V4, yet
-.word 0xe12fff1e @ interoperable with Thumb ISA:-)
+ .word 0xe12fff1e @ interoperable with Thumb ISA:-)
#endif
.size asm_AES_decrypt,.-asm_AES_decrypt
-.type _armv4_AES_decrypt,%function
+.type _armv4_AES_decrypt,%function
.align 2
_armv4_AES_decrypt:
str lr,[sp,#-4]! @ push lr
- ldmia r11!,{r4,r5,r6,r7}
+ ldmia r11!,{r4-r7}
eor r0,r0,r4
ldr r12,[r11,#240-16]
eor r1,r1,r5
@@ -1191,8 +1179,7 @@ _armv4_AES_decrypt:
sub r10,r10,#1024
ldr pc,[sp],#4 @ pop and return
.size _armv4_AES_decrypt,.-_armv4_AES_decrypt
-.byte 65,69,83,32,102,111,114,32,65,82,77,118,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
-.align 2
+.asciz "AES for ARMv4, CRYPTOGAMS by <appro@openssl.org>"
.align 2
#endif
diff --git a/third_party/boringssl/linux-arm/crypto/aes/bsaes-armv7.S b/third_party/boringssl/linux-arm/crypto/aes/bsaes-armv7.S
index 0feeab0..cbc32fb 100644
--- a/third_party/boringssl/linux-arm/crypto/aes/bsaes-armv7.S
+++ b/third_party/boringssl/linux-arm/crypto/aes/bsaes-armv7.S
@@ -60,141 +60,135 @@
# define BSAES_ASM_EXTENDED_KEY
# define XTS_CHAIN_TWEAK
# define __ARM_ARCH__ __LINUX_ARM_ARCH__
-# define __ARM_MAX_ARCH__ 7
#endif
#ifdef __thumb__
# define adrl adr
#endif
-#if __ARM_MAX_ARCH__>=7
-.arch armv7-a
-.fpu neon
-
+#if __ARM_ARCH__>=7
.text
.syntax unified @ ARMv7-capable assembler is expected to handle this
-#if defined(__thumb2__) && !defined(__APPLE__)
+#ifdef __thumb2__
.thumb
#else
-.code 32
+.code 32
#endif
+.fpu neon
+
.type _bsaes_decrypt8,%function
.align 4
_bsaes_decrypt8:
adr r6,_bsaes_decrypt8
vldmia r4!, {q9} @ round 0 key
-#ifdef __APPLE__
- adr r6,.LM0ISR
-#else
add r6,r6,#.LM0ISR-_bsaes_decrypt8
-#endif
vldmia r6!, {q8} @ .LM0ISR
veor q10, q0, q9 @ xor with round0 key
veor q11, q1, q9
- vtbl.8 d0, {q10}, d16
- vtbl.8 d1, {q10}, d17
+ vtbl.8 d0, {q10}, d16
+ vtbl.8 d1, {q10}, d17
veor q12, q2, q9
- vtbl.8 d2, {q11}, d16
- vtbl.8 d3, {q11}, d17
+ vtbl.8 d2, {q11}, d16
+ vtbl.8 d3, {q11}, d17
veor q13, q3, q9
- vtbl.8 d4, {q12}, d16
- vtbl.8 d5, {q12}, d17
+ vtbl.8 d4, {q12}, d16
+ vtbl.8 d5, {q12}, d17
veor q14, q4, q9
- vtbl.8 d6, {q13}, d16
- vtbl.8 d7, {q13}, d17
+ vtbl.8 d6, {q13}, d16
+ vtbl.8 d7, {q13}, d17
veor q15, q5, q9
- vtbl.8 d8, {q14}, d16
- vtbl.8 d9, {q14}, d17
+ vtbl.8 d8, {q14}, d16
+ vtbl.8 d9, {q14}, d17
veor q10, q6, q9
- vtbl.8 d10, {q15}, d16
- vtbl.8 d11, {q15}, d17
+ vtbl.8 d10, {q15}, d16
+ vtbl.8 d11, {q15}, d17
veor q11, q7, q9
- vtbl.8 d12, {q10}, d16
- vtbl.8 d13, {q10}, d17
- vtbl.8 d14, {q11}, d16
- vtbl.8 d15, {q11}, d17
+ vtbl.8 d12, {q10}, d16
+ vtbl.8 d13, {q10}, d17
+ vtbl.8 d14, {q11}, d16
+ vtbl.8 d15, {q11}, d17
vmov.i8 q8,#0x55 @ compose .LBS0
vmov.i8 q9,#0x33 @ compose .LBS1
vshr.u64 q10, q6, #1
- vshr.u64 q11, q4, #1
- veor q10, q10, q7
- veor q11, q11, q5
- vand q10, q10, q8
- vand q11, q11, q8
- veor q7, q7, q10
+ vshr.u64 q11, q4, #1
+ veor q10, q10, q7
+ veor q11, q11, q5
+ vand q10, q10, q8
+ vand q11, q11, q8
+ veor q7, q7, q10
vshl.u64 q10, q10, #1
- veor q5, q5, q11
- vshl.u64 q11, q11, #1
- veor q6, q6, q10
- veor q4, q4, q11
+ veor q5, q5, q11
+ vshl.u64 q11, q11, #1
+ veor q6, q6, q10
+ veor q4, q4, q11
vshr.u64 q10, q2, #1
- vshr.u64 q11, q0, #1
- veor q10, q10, q3
- veor q11, q11, q1
- vand q10, q10, q8
- vand q11, q11, q8
- veor q3, q3, q10
+ vshr.u64 q11, q0, #1
+ veor q10, q10, q3
+ veor q11, q11, q1
+ vand q10, q10, q8
+ vand q11, q11, q8
+ veor q3, q3, q10
vshl.u64 q10, q10, #1
- veor q1, q1, q11
- vshl.u64 q11, q11, #1
- veor q2, q2, q10
- veor q0, q0, q11
+ veor q1, q1, q11
+ vshl.u64 q11, q11, #1
+ veor q2, q2, q10
+ veor q0, q0, q11
vmov.i8 q8,#0x0f @ compose .LBS2
vshr.u64 q10, q5, #2
- vshr.u64 q11, q4, #2
- veor q10, q10, q7
- veor q11, q11, q6
- vand q10, q10, q9
- vand q11, q11, q9
- veor q7, q7, q10
+ vshr.u64 q11, q4, #2
+ veor q10, q10, q7
+ veor q11, q11, q6
+ vand q10, q10, q9
+ vand q11, q11, q9
+ veor q7, q7, q10
vshl.u64 q10, q10, #2
- veor q6, q6, q11
- vshl.u64 q11, q11, #2
- veor q5, q5, q10
- veor q4, q4, q11
+ veor q6, q6, q11
+ vshl.u64 q11, q11, #2
+ veor q5, q5, q10
+ veor q4, q4, q11
vshr.u64 q10, q1, #2
- vshr.u64 q11, q0, #2
- veor q10, q10, q3
- veor q11, q11, q2
- vand q10, q10, q9
- vand q11, q11, q9
- veor q3, q3, q10
+ vshr.u64 q11, q0, #2
+ veor q10, q10, q3
+ veor q11, q11, q2
+ vand q10, q10, q9
+ vand q11, q11, q9
+ veor q3, q3, q10
vshl.u64 q10, q10, #2
- veor q2, q2, q11
- vshl.u64 q11, q11, #2
- veor q1, q1, q10
- veor q0, q0, q11
+ veor q2, q2, q11
+ vshl.u64 q11, q11, #2
+ veor q1, q1, q10
+ veor q0, q0, q11
vshr.u64 q10, q3, #4
- vshr.u64 q11, q2, #4
- veor q10, q10, q7
- veor q11, q11, q6
- vand q10, q10, q8
- vand q11, q11, q8
- veor q7, q7, q10
+ vshr.u64 q11, q2, #4
+ veor q10, q10, q7
+ veor q11, q11, q6
+ vand q10, q10, q8
+ vand q11, q11, q8
+ veor q7, q7, q10
vshl.u64 q10, q10, #4
- veor q6, q6, q11
- vshl.u64 q11, q11, #4
- veor q3, q3, q10
- veor q2, q2, q11
+ veor q6, q6, q11
+ vshl.u64 q11, q11, #4
+ veor q3, q3, q10
+ veor q2, q2, q11
vshr.u64 q10, q1, #4
- vshr.u64 q11, q0, #4
- veor q10, q10, q5
- veor q11, q11, q4
- vand q10, q10, q8
- vand q11, q11, q8
- veor q5, q5, q10
+ vshr.u64 q11, q0, #4
+ veor q10, q10, q5
+ veor q11, q11, q4
+ vand q10, q10, q8
+ vand q11, q11, q8
+ veor q5, q5, q10
vshl.u64 q10, q10, #4
- veor q4, q4, q11
- vshl.u64 q11, q11, #4
- veor q1, q1, q10
- veor q0, q0, q11
+ veor q4, q4, q11
+ vshl.u64 q11, q11, #4
+ veor q1, q1, q10
+ veor q0, q0, q11
sub r5,r5,#1
b .Ldec_sbox
.align 4
.Ldec_loop:
- vldmia r4!, {q8,q9,q10,q11}
+ vldmia r4!, {q8-q11}
veor q8, q8, q0
veor q9, q9, q1
vtbl.8 d0, {q8}, d24
@@ -224,17 +218,17 @@ _bsaes_decrypt8:
vtbl.8 d14, {q11}, d24
vtbl.8 d15, {q11}, d25
.Ldec_sbox:
- veor q1, q1, q4
+ veor q1, q1, q4
veor q3, q3, q4
veor q4, q4, q7
- veor q1, q1, q6
+ veor q1, q1, q6
veor q2, q2, q7
veor q6, q6, q4
veor q0, q0, q1
veor q2, q2, q5
- veor q7, q7, q6
+ veor q7, q7, q6
veor q3, q3, q0
veor q5, q5, q0
veor q1, q1, q3
@@ -242,7 +236,7 @@ _bsaes_decrypt8:
veor q10, q7, q4
veor q9, q1, q6
veor q13, q4, q0
- vmov q8, q10
+ vmov q8, q10
veor q12, q5, q2
vorr q10, q10, q9
@@ -299,7 +293,7 @@ _bsaes_decrypt8:
veor q14, q14, q11
veor q12, q5, q2
veor q8, q1, q6
- veor q10, q15, q14
+ veor q10, q15, q14
vand q10, q10, q5
veor q5, q5, q1
vand q11, q1, q15
@@ -309,19 +303,19 @@ _bsaes_decrypt8:
veor q15, q15, q13
veor q14, q14, q9
veor q11, q15, q14
- veor q10, q13, q9
+ veor q10, q13, q9
vand q11, q11, q12
- vand q10, q10, q2
+ vand q10, q10, q2
veor q12, q12, q8
- veor q2, q2, q6
+ veor q2, q2, q6
vand q8, q8, q15
- vand q6, q6, q13
+ vand q6, q6, q13
vand q12, q12, q14
- vand q2, q2, q9
+ vand q2, q2, q9
veor q8, q8, q12
- veor q2, q2, q6
+ veor q2, q2, q6
veor q12, q12, q11
- veor q6, q6, q10
+ veor q6, q6, q10
veor q5, q5, q12
veor q2, q2, q12
veor q1, q1, q8
@@ -330,22 +324,22 @@ _bsaes_decrypt8:
veor q12, q3, q0
veor q8, q7, q4
veor q11, q15, q14
- veor q10, q13, q9
+ veor q10, q13, q9
vand q11, q11, q12
- vand q10, q10, q0
+ vand q10, q10, q0
veor q12, q12, q8
- veor q0, q0, q4
+ veor q0, q0, q4
vand q8, q8, q15
- vand q4, q4, q13
+ vand q4, q4, q13
vand q12, q12, q14
- vand q0, q0, q9
+ vand q0, q0, q9
veor q8, q8, q12
- veor q0, q0, q4
+ veor q0, q0, q4
veor q12, q12, q11
- veor q4, q4, q10
+ veor q4, q4, q10
veor q15, q15, q13
veor q14, q14, q9
- veor q10, q15, q14
+ veor q10, q15, q14
vand q10, q10, q3
veor q3, q3, q7
vand q11, q7, q15
@@ -363,10 +357,10 @@ _bsaes_decrypt8:
veor q2, q2, q7
veor q5, q5, q7
veor q4, q4, q2
- veor q7, q7, q0
+ veor q7, q7, q0
veor q4, q4, q5
- veor q3, q3, q6
- veor q6, q6, q1
+ veor q3, q3, q6
+ veor q6, q6, q1
veor q3, q3, q4
veor q4, q4, q0
@@ -391,58 +385,58 @@ _bsaes_decrypt8:
veor q12, q12, q2
veor q13, q13, q7
- veor q0, q0, q14
- veor q1, q1, q14
- veor q6, q6, q8
- veor q2, q2, q10
- veor q4, q4, q9
- veor q1, q1, q15
- veor q6, q6, q15
- veor q2, q2, q14
- veor q7, q7, q11
- veor q4, q4, q14
- veor q3, q3, q12
- veor q2, q2, q15
- veor q7, q7, q15
- veor q5, q5, q13
+ veor q0, q0, q14
+ veor q1, q1, q14
+ veor q6, q6, q8
+ veor q2, q2, q10
+ veor q4, q4, q9
+ veor q1, q1, q15
+ veor q6, q6, q15
+ veor q2, q2, q14
+ veor q7, q7, q11
+ veor q4, q4, q14
+ veor q3, q3, q12
+ veor q2, q2, q15
+ veor q7, q7, q15
+ veor q5, q5, q13
vext.8 q8, q0, q0, #12 @ x0 <<< 32
vext.8 q9, q1, q1, #12
- veor q0, q0, q8 @ x0 ^ (x0 <<< 32)
+ veor q0, q0, q8 @ x0 ^ (x0 <<< 32)
vext.8 q10, q6, q6, #12
- veor q1, q1, q9
+ veor q1, q1, q9
vext.8 q11, q4, q4, #12
- veor q6, q6, q10
+ veor q6, q6, q10
vext.8 q12, q2, q2, #12
- veor q4, q4, q11
+ veor q4, q4, q11
vext.8 q13, q7, q7, #12
- veor q2, q2, q12
+ veor q2, q2, q12
vext.8 q14, q3, q3, #12
- veor q7, q7, q13
+ veor q7, q7, q13
vext.8 q15, q5, q5, #12
- veor q3, q3, q14
+ veor q3, q3, q14
veor q9, q9, q0
- veor q5, q5, q15
- vext.8 q0, q0, q0, #8 @ (x0 ^ (x0 <<< 32)) <<< 64)
+ veor q5, q5, q15
+ vext.8 q0, q0, q0, #8 @ (x0 ^ (x0 <<< 32)) <<< 64)
veor q10, q10, q1
veor q8, q8, q5
veor q9, q9, q5
- vext.8 q1, q1, q1, #8
+ vext.8 q1, q1, q1, #8
veor q13, q13, q2
- veor q0, q0, q8
+ veor q0, q0, q8
veor q14, q14, q7
- veor q1, q1, q9
- vext.8 q8, q2, q2, #8
+ veor q1, q1, q9
+ vext.8 q8, q2, q2, #8
veor q12, q12, q4
- vext.8 q9, q7, q7, #8
+ vext.8 q9, q7, q7, #8
veor q15, q15, q3
- vext.8 q2, q4, q4, #8
+ vext.8 q2, q4, q4, #8
veor q11, q11, q6
- vext.8 q7, q5, q5, #8
+ vext.8 q7, q5, q5, #8
veor q12, q12, q5
- vext.8 q4, q3, q3, #8
+ vext.8 q4, q3, q3, #8
veor q11, q11, q5
- vext.8 q3, q6, q6, #8
+ vext.8 q3, q6, q6, #8
veor q5, q9, q13
veor q11, q11, q2
veor q7, q7, q15
@@ -462,78 +456,78 @@ _bsaes_decrypt8:
vmov.i8 q8,#0x55 @ compose .LBS0
vmov.i8 q9,#0x33 @ compose .LBS1
vshr.u64 q10, q3, #1
- vshr.u64 q11, q2, #1
- veor q10, q10, q5
- veor q11, q11, q7
- vand q10, q10, q8
- vand q11, q11, q8
- veor q5, q5, q10
+ vshr.u64 q11, q2, #1
+ veor q10, q10, q5
+ veor q11, q11, q7
+ vand q10, q10, q8
+ vand q11, q11, q8
+ veor q5, q5, q10
vshl.u64 q10, q10, #1
- veor q7, q7, q11
- vshl.u64 q11, q11, #1
- veor q3, q3, q10
- veor q2, q2, q11
+ veor q7, q7, q11
+ vshl.u64 q11, q11, #1
+ veor q3, q3, q10
+ veor q2, q2, q11
vshr.u64 q10, q6, #1
- vshr.u64 q11, q0, #1
- veor q10, q10, q4
- veor q11, q11, q1
- vand q10, q10, q8
- vand q11, q11, q8
- veor q4, q4, q10
+ vshr.u64 q11, q0, #1
+ veor q10, q10, q4
+ veor q11, q11, q1
+ vand q10, q10, q8
+ vand q11, q11, q8
+ veor q4, q4, q10
vshl.u64 q10, q10, #1
- veor q1, q1, q11
- vshl.u64 q11, q11, #1
- veor q6, q6, q10
- veor q0, q0, q11
+ veor q1, q1, q11
+ vshl.u64 q11, q11, #1
+ veor q6, q6, q10
+ veor q0, q0, q11
vmov.i8 q8,#0x0f @ compose .LBS2
vshr.u64 q10, q7, #2
- vshr.u64 q11, q2, #2
- veor q10, q10, q5
- veor q11, q11, q3
- vand q10, q10, q9
- vand q11, q11, q9
- veor q5, q5, q10
+ vshr.u64 q11, q2, #2
+ veor q10, q10, q5
+ veor q11, q11, q3
+ vand q10, q10, q9
+ vand q11, q11, q9
+ veor q5, q5, q10
vshl.u64 q10, q10, #2
- veor q3, q3, q11
- vshl.u64 q11, q11, #2
- veor q7, q7, q10
- veor q2, q2, q11
+ veor q3, q3, q11
+ vshl.u64 q11, q11, #2
+ veor q7, q7, q10
+ veor q2, q2, q11
vshr.u64 q10, q1, #2
- vshr.u64 q11, q0, #2
- veor q10, q10, q4
- veor q11, q11, q6
- vand q10, q10, q9
- vand q11, q11, q9
- veor q4, q4, q10
+ vshr.u64 q11, q0, #2
+ veor q10, q10, q4
+ veor q11, q11, q6
+ vand q10, q10, q9
+ vand q11, q11, q9
+ veor q4, q4, q10
vshl.u64 q10, q10, #2
- veor q6, q6, q11
- vshl.u64 q11, q11, #2
- veor q1, q1, q10
- veor q0, q0, q11
+ veor q6, q6, q11
+ vshl.u64 q11, q11, #2
+ veor q1, q1, q10
+ veor q0, q0, q11
vshr.u64 q10, q4, #4
- vshr.u64 q11, q6, #4
- veor q10, q10, q5
- veor q11, q11, q3
- vand q10, q10, q8
- vand q11, q11, q8
- veor q5, q5, q10
+ vshr.u64 q11, q6, #4
+ veor q10, q10, q5
+ veor q11, q11, q3
+ vand q10, q10, q8
+ vand q11, q11, q8
+ veor q5, q5, q10
vshl.u64 q10, q10, #4
- veor q3, q3, q11
- vshl.u64 q11, q11, #4
- veor q4, q4, q10
- veor q6, q6, q11
+ veor q3, q3, q11
+ vshl.u64 q11, q11, #4
+ veor q4, q4, q10
+ veor q6, q6, q11
vshr.u64 q10, q1, #4
- vshr.u64 q11, q0, #4
- veor q10, q10, q7
- veor q11, q11, q2
- vand q10, q10, q8
- vand q11, q11, q8
- veor q7, q7, q10
+ vshr.u64 q11, q0, #4
+ veor q10, q10, q7
+ veor q11, q11, q2
+ vand q10, q10, q8
+ vand q11, q11, q8
+ veor q7, q7, q10
vshl.u64 q10, q10, #4
- veor q2, q2, q11
- vshl.u64 q11, q11, #4
- veor q1, q1, q10
- veor q0, q0, q11
+ veor q2, q2, q11
+ vshl.u64 q11, q11, #4
+ veor q1, q1, q10
+ veor q0, q0, q11
vldmia r4, {q8} @ last round key
veor q6, q6, q8
veor q4, q4, q8
@@ -549,24 +543,23 @@ _bsaes_decrypt8:
.type _bsaes_const,%object
.align 6
_bsaes_const:
-.LM0ISR:@ InvShiftRows constants
-.quad 0x0a0e0206070b0f03, 0x0004080c0d010509
+.LM0ISR: @ InvShiftRows constants
+ .quad 0x0a0e0206070b0f03, 0x0004080c0d010509
.LISR:
-.quad 0x0504070602010003, 0x0f0e0d0c080b0a09
+ .quad 0x0504070602010003, 0x0f0e0d0c080b0a09
.LISRM0:
-.quad 0x01040b0e0205080f, 0x0306090c00070a0d
-.LM0SR:@ ShiftRows constants
-.quad 0x0a0e02060f03070b, 0x0004080c05090d01
+ .quad 0x01040b0e0205080f, 0x0306090c00070a0d
+.LM0SR: @ ShiftRows constants
+ .quad 0x0a0e02060f03070b, 0x0004080c05090d01
.LSR:
-.quad 0x0504070600030201, 0x0f0e0d0c0a09080b
+ .quad 0x0504070600030201, 0x0f0e0d0c0a09080b
.LSRM0:
-.quad 0x0304090e00050a0f, 0x01060b0c0207080d
+ .quad 0x0304090e00050a0f, 0x01060b0c0207080d
.LM0:
-.quad 0x02060a0e03070b0f, 0x0004080c0105090d
+ .quad 0x02060a0e03070b0f, 0x0004080c0105090d
.LREVM0SR:
-.quad 0x090d01050c000408, 0x03070b0f060a0e02
-.byte 66,105,116,45,115,108,105,99,101,100,32,65,69,83,32,102,111,114,32,78,69,79,78,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
-.align 2
+ .quad 0x090d01050c000408, 0x03070b0f060a0e02
+.asciz "Bit-sliced AES for NEON, CRYPTOGAMS by <appro@openssl.org>"
.align 6
.size _bsaes_const,.-_bsaes_const
@@ -575,119 +568,115 @@ _bsaes_const:
_bsaes_encrypt8:
adr r6,_bsaes_encrypt8
vldmia r4!, {q9} @ round 0 key
-#ifdef __APPLE__
- adr r6,.LM0SR
-#else
sub r6,r6,#_bsaes_encrypt8-.LM0SR
-#endif
vldmia r6!, {q8} @ .LM0SR
_bsaes_encrypt8_alt:
veor q10, q0, q9 @ xor with round0 key
veor q11, q1, q9
- vtbl.8 d0, {q10}, d16
- vtbl.8 d1, {q10}, d17
+ vtbl.8 d0, {q10}, d16
+ vtbl.8 d1, {q10}, d17
veor q12, q2, q9
- vtbl.8 d2, {q11}, d16
- vtbl.8 d3, {q11}, d17
+ vtbl.8 d2, {q11}, d16
+ vtbl.8 d3, {q11}, d17
veor q13, q3, q9
- vtbl.8 d4, {q12}, d16
- vtbl.8 d5, {q12}, d17
+ vtbl.8 d4, {q12}, d16
+ vtbl.8 d5, {q12}, d17
veor q14, q4, q9
- vtbl.8 d6, {q13}, d16
- vtbl.8 d7, {q13}, d17
+ vtbl.8 d6, {q13}, d16
+ vtbl.8 d7, {q13}, d17
veor q15, q5, q9
- vtbl.8 d8, {q14}, d16
- vtbl.8 d9, {q14}, d17
+ vtbl.8 d8, {q14}, d16
+ vtbl.8 d9, {q14}, d17
veor q10, q6, q9
- vtbl.8 d10, {q15}, d16
- vtbl.8 d11, {q15}, d17
+ vtbl.8 d10, {q15}, d16
+ vtbl.8 d11, {q15}, d17
veor q11, q7, q9
- vtbl.8 d12, {q10}, d16
- vtbl.8 d13, {q10}, d17
- vtbl.8 d14, {q11}, d16
- vtbl.8 d15, {q11}, d17
+ vtbl.8 d12, {q10}, d16
+ vtbl.8 d13, {q10}, d17
+ vtbl.8 d14, {q11}, d16
+ vtbl.8 d15, {q11}, d17
_bsaes_encrypt8_bitslice:
vmov.i8 q8,#0x55 @ compose .LBS0
vmov.i8 q9,#0x33 @ compose .LBS1
vshr.u64 q10, q6, #1
- vshr.u64 q11, q4, #1
- veor q10, q10, q7
- veor q11, q11, q5
- vand q10, q10, q8
- vand q11, q11, q8
- veor q7, q7, q10
+ vshr.u64 q11, q4, #1
+ veor q10, q10, q7
+ veor q11, q11, q5
+ vand q10, q10, q8
+ vand q11, q11, q8
+ veor q7, q7, q10
vshl.u64 q10, q10, #1
- veor q5, q5, q11
- vshl.u64 q11, q11, #1
- veor q6, q6, q10
- veor q4, q4, q11
+ veor q5, q5, q11
+ vshl.u64 q11, q11, #1
+ veor q6, q6, q10
+ veor q4, q4, q11
vshr.u64 q10, q2, #1
- vshr.u64 q11, q0, #1
- veor q10, q10, q3
- veor q11, q11, q1
- vand q10, q10, q8
- vand q11, q11, q8
- veor q3, q3, q10
+ vshr.u64 q11, q0, #1
+ veor q10, q10, q3
+ veor q11, q11, q1
+ vand q10, q10, q8
+ vand q11, q11, q8
+ veor q3, q3, q10
vshl.u64 q10, q10, #1
- veor q1, q1, q11
- vshl.u64 q11, q11, #1
- veor q2, q2, q10
- veor q0, q0, q11
+ veor q1, q1, q11
+ vshl.u64 q11, q11, #1
+ veor q2, q2, q10
+ veor q0, q0, q11
vmov.i8 q8,#0x0f @ compose .LBS2
vshr.u64 q10, q5, #2
- vshr.u64 q11, q4, #2
- veor q10, q10, q7
- veor q11, q11, q6
- vand q10, q10, q9
- vand q11, q11, q9
- veor q7, q7, q10
+ vshr.u64 q11, q4, #2
+ veor q10, q10, q7
+ veor q11, q11, q6
+ vand q10, q10, q9
+ vand q11, q11, q9
+ veor q7, q7, q10
vshl.u64 q10, q10, #2
- veor q6, q6, q11
- vshl.u64 q11, q11, #2
- veor q5, q5, q10
- veor q4, q4, q11
+ veor q6, q6, q11
+ vshl.u64 q11, q11, #2
+ veor q5, q5, q10
+ veor q4, q4, q11
vshr.u64 q10, q1, #2
- vshr.u64 q11, q0, #2
- veor q10, q10, q3
- veor q11, q11, q2
- vand q10, q10, q9
- vand q11, q11, q9
- veor q3, q3, q10
+ vshr.u64 q11, q0, #2
+ veor q10, q10, q3
+ veor q11, q11, q2
+ vand q10, q10, q9
+ vand q11, q11, q9
+ veor q3, q3, q10
vshl.u64 q10, q10, #2
- veor q2, q2, q11
- vshl.u64 q11, q11, #2
- veor q1, q1, q10
- veor q0, q0, q11
+ veor q2, q2, q11
+ vshl.u64 q11, q11, #2
+ veor q1, q1, q10
+ veor q0, q0, q11
vshr.u64 q10, q3, #4
- vshr.u64 q11, q2, #4
- veor q10, q10, q7
- veor q11, q11, q6
- vand q10, q10, q8
- vand q11, q11, q8
- veor q7, q7, q10
+ vshr.u64 q11, q2, #4
+ veor q10, q10, q7
+ veor q11, q11, q6
+ vand q10, q10, q8
+ vand q11, q11, q8
+ veor q7, q7, q10
vshl.u64 q10, q10, #4
- veor q6, q6, q11
- vshl.u64 q11, q11, #4
- veor q3, q3, q10
- veor q2, q2, q11
+ veor q6, q6, q11
+ vshl.u64 q11, q11, #4
+ veor q3, q3, q10
+ veor q2, q2, q11
vshr.u64 q10, q1, #4
- vshr.u64 q11, q0, #4
- veor q10, q10, q5
- veor q11, q11, q4
- vand q10, q10, q8
- vand q11, q11, q8
- veor q5, q5, q10
+ vshr.u64 q11, q0, #4
+ veor q10, q10, q5
+ veor q11, q11, q4
+ vand q10, q10, q8
+ vand q11, q11, q8
+ veor q5, q5, q10
vshl.u64 q10, q10, #4
- veor q4, q4, q11
- vshl.u64 q11, q11, #4
- veor q1, q1, q10
- veor q0, q0, q11
+ veor q4, q4, q11
+ vshl.u64 q11, q11, #4
+ veor q1, q1, q10
+ veor q0, q0, q11
sub r5,r5,#1
b .Lenc_sbox
.align 4
.Lenc_loop:
- vldmia r4!, {q8,q9,q10,q11}
+ vldmia r4!, {q8-q11}
veor q8, q8, q0
veor q9, q9, q1
vtbl.8 d0, {q8}, d24
@@ -736,7 +725,7 @@ _bsaes_encrypt8_bitslice:
veor q10, q1, q2
veor q9, q5, q3
veor q13, q2, q4
- vmov q8, q10
+ vmov q8, q10
veor q12, q6, q0
vorr q10, q10, q9
@@ -793,7 +782,7 @@ _bsaes_encrypt8_bitslice:
veor q14, q14, q11
veor q12, q6, q0
veor q8, q5, q3
- veor q10, q15, q14
+ veor q10, q15, q14
vand q10, q10, q6
veor q6, q6, q5
vand q11, q5, q15
@@ -803,19 +792,19 @@ _bsaes_encrypt8_bitslice:
veor q15, q15, q13
veor q14, q14, q9
veor q11, q15, q14
- veor q10, q13, q9
+ veor q10, q13, q9
vand q11, q11, q12
- vand q10, q10, q0
+ vand q10, q10, q0
veor q12, q12, q8
- veor q0, q0, q3
+ veor q0, q0, q3
vand q8, q8, q15
- vand q3, q3, q13
+ vand q3, q3, q13
vand q12, q12, q14
- vand q0, q0, q9
+ vand q0, q0, q9
veor q8, q8, q12
- veor q0, q0, q3
+ veor q0, q0, q3
veor q12, q12, q11
- veor q3, q3, q10
+ veor q3, q3, q10
veor q6, q6, q12
veor q0, q0, q12
veor q5, q5, q8
@@ -824,22 +813,22 @@ _bsaes_encrypt8_bitslice:
veor q12, q7, q4
veor q8, q1, q2
veor q11, q15, q14
- veor q10, q13, q9
+ veor q10, q13, q9
vand q11, q11, q12
- vand q10, q10, q4
+ vand q10, q10, q4
veor q12, q12, q8
- veor q4, q4, q2
+ veor q4, q4, q2
vand q8, q8, q15
- vand q2, q2, q13
+ vand q2, q2, q13
vand q12, q12, q14
- vand q4, q4, q9
+ vand q4, q4, q9
veor q8, q8, q12
- veor q4, q4, q2
+ veor q4, q4, q2
veor q12, q12, q11
- veor q2, q2, q10
+ veor q2, q2, q10
veor q15, q15, q13
veor q14, q14, q9
- veor q10, q15, q14
+ veor q10, q15, q14
vand q10, q10, q7
veor q7, q7, q1
vand q11, q1, q15
@@ -867,42 +856,42 @@ _bsaes_encrypt8_bitslice:
bcc .Lenc_done
vext.8 q8, q0, q0, #12 @ x0 <<< 32
vext.8 q9, q1, q1, #12
- veor q0, q0, q8 @ x0 ^ (x0 <<< 32)
+ veor q0, q0, q8 @ x0 ^ (x0 <<< 32)
vext.8 q10, q4, q4, #12
- veor q1, q1, q9
+ veor q1, q1, q9
vext.8 q11, q6, q6, #12
- veor q4, q4, q10
+ veor q4, q4, q10
vext.8 q12, q3, q3, #12
- veor q6, q6, q11
+ veor q6, q6, q11
vext.8 q13, q7, q7, #12
- veor q3, q3, q12
+ veor q3, q3, q12
vext.8 q14, q2, q2, #12
- veor q7, q7, q13
+ veor q7, q7, q13
vext.8 q15, q5, q5, #12
- veor q2, q2, q14
+ veor q2, q2, q14
veor q9, q9, q0
- veor q5, q5, q15
- vext.8 q0, q0, q0, #8 @ (x0 ^ (x0 <<< 32)) <<< 64)
+ veor q5, q5, q15
+ vext.8 q0, q0, q0, #8 @ (x0 ^ (x0 <<< 32)) <<< 64)
veor q10, q10, q1
veor q8, q8, q5
veor q9, q9, q5
- vext.8 q1, q1, q1, #8
+ vext.8 q1, q1, q1, #8
veor q13, q13, q3
- veor q0, q0, q8
+ veor q0, q0, q8
veor q14, q14, q7
- veor q1, q1, q9
- vext.8 q8, q3, q3, #8
+ veor q1, q1, q9
+ vext.8 q8, q3, q3, #8
veor q12, q12, q6
- vext.8 q9, q7, q7, #8
+ vext.8 q9, q7, q7, #8
veor q15, q15, q2
- vext.8 q3, q6, q6, #8
+ vext.8 q3, q6, q6, #8
veor q11, q11, q4
- vext.8 q7, q5, q5, #8
+ vext.8 q7, q5, q5, #8
veor q12, q12, q5
- vext.8 q6, q2, q2, #8
+ vext.8 q6, q2, q2, #8
veor q11, q11, q5
- vext.8 q2, q4, q4, #8
+ vext.8 q2, q4, q4, #8
veor q5, q9, q13
veor q4, q8, q12
veor q3, q3, q11
@@ -922,78 +911,78 @@ _bsaes_encrypt8_bitslice:
vmov.i8 q8,#0x55 @ compose .LBS0
vmov.i8 q9,#0x33 @ compose .LBS1
vshr.u64 q10, q2, #1
- vshr.u64 q11, q3, #1
- veor q10, q10, q5
- veor q11, q11, q7
- vand q10, q10, q8
- vand q11, q11, q8
- veor q5, q5, q10
+ vshr.u64 q11, q3, #1
+ veor q10, q10, q5
+ veor q11, q11, q7
+ vand q10, q10, q8
+ vand q11, q11, q8
+ veor q5, q5, q10
vshl.u64 q10, q10, #1
- veor q7, q7, q11
- vshl.u64 q11, q11, #1
- veor q2, q2, q10
- veor q3, q3, q11
+ veor q7, q7, q11
+ vshl.u64 q11, q11, #1
+ veor q2, q2, q10
+ veor q3, q3, q11
vshr.u64 q10, q4, #1
- vshr.u64 q11, q0, #1
- veor q10, q10, q6
- veor q11, q11, q1
- vand q10, q10, q8
- vand q11, q11, q8
- veor q6, q6, q10
+ vshr.u64 q11, q0, #1
+ veor q10, q10, q6
+ veor q11, q11, q1
+ vand q10, q10, q8
+ vand q11, q11, q8
+ veor q6, q6, q10
vshl.u64 q10, q10, #1
- veor q1, q1, q11
- vshl.u64 q11, q11, #1
- veor q4, q4, q10
- veor q0, q0, q11
+ veor q1, q1, q11
+ vshl.u64 q11, q11, #1
+ veor q4, q4, q10
+ veor q0, q0, q11
vmov.i8 q8,#0x0f @ compose .LBS2
vshr.u64 q10, q7, #2
- vshr.u64 q11, q3, #2
- veor q10, q10, q5
- veor q11, q11, q2
- vand q10, q10, q9
- vand q11, q11, q9
- veor q5, q5, q10
+ vshr.u64 q11, q3, #2
+ veor q10, q10, q5
+ veor q11, q11, q2
+ vand q10, q10, q9
+ vand q11, q11, q9
+ veor q5, q5, q10
vshl.u64 q10, q10, #2
- veor q2, q2, q11
- vshl.u64 q11, q11, #2
- veor q7, q7, q10
- veor q3, q3, q11
+ veor q2, q2, q11
+ vshl.u64 q11, q11, #2
+ veor q7, q7, q10
+ veor q3, q3, q11
vshr.u64 q10, q1, #2
- vshr.u64 q11, q0, #2
- veor q10, q10, q6
- veor q11, q11, q4
- vand q10, q10, q9
- vand q11, q11, q9
- veor q6, q6, q10
+ vshr.u64 q11, q0, #2
+ veor q10, q10, q6
+ veor q11, q11, q4
+ vand q10, q10, q9
+ vand q11, q11, q9
+ veor q6, q6, q10
vshl.u64 q10, q10, #2
- veor q4, q4, q11
- vshl.u64 q11, q11, #2
- veor q1, q1, q10
- veor q0, q0, q11
+ veor q4, q4, q11
+ vshl.u64 q11, q11, #2
+ veor q1, q1, q10
+ veor q0, q0, q11
vshr.u64 q10, q6, #4
- vshr.u64 q11, q4, #4
- veor q10, q10, q5
- veor q11, q11, q2
- vand q10, q10, q8
- vand q11, q11, q8
- veor q5, q5, q10
+ vshr.u64 q11, q4, #4
+ veor q10, q10, q5
+ veor q11, q11, q2
+ vand q10, q10, q8
+ vand q11, q11, q8
+ veor q5, q5, q10
vshl.u64 q10, q10, #4
- veor q2, q2, q11
- vshl.u64 q11, q11, #4
- veor q6, q6, q10
- veor q4, q4, q11
+ veor q2, q2, q11
+ vshl.u64 q11, q11, #4
+ veor q6, q6, q10
+ veor q4, q4, q11
vshr.u64 q10, q1, #4
- vshr.u64 q11, q0, #4
- veor q10, q10, q7
- veor q11, q11, q3
- vand q10, q10, q8
- vand q11, q11, q8
- veor q7, q7, q10
+ vshr.u64 q11, q0, #4
+ veor q10, q10, q7
+ veor q11, q11, q3
+ vand q10, q10, q8
+ vand q11, q11, q8
+ veor q7, q7, q10
vshl.u64 q10, q10, #4
- veor q3, q3, q11
- vshl.u64 q11, q11, #4
- veor q1, q1, q10
- veor q0, q0, q11
+ veor q3, q3, q11
+ vshl.u64 q11, q11, #4
+ veor q1, q1, q10
+ veor q0, q0, q11
vldmia r4, {q8} @ last round key
veor q4, q4, q8
veor q6, q6, q8
@@ -1010,11 +999,7 @@ _bsaes_encrypt8_bitslice:
_bsaes_key_convert:
adr r6,_bsaes_key_convert
vld1.8 {q7}, [r4]! @ load round 0 key
-#ifdef __APPLE__
- adr r6,.LM0
-#else
sub r6,r6,#_bsaes_key_convert-.LM0
-#endif
vld1.8 {q15}, [r4]! @ load round 1 key
vmov.i8 q8, #0x01 @ bit masks
@@ -1057,17 +1042,17 @@ _bsaes_key_convert:
vrev32.8 q15, q15
#endif
subs r5,r5,#1
- vstmia r12!,{q0,q1,q2,q3,q4,q5,q6,q7} @ write bit-sliced round key
+ vstmia r12!,{q0-q7} @ write bit-sliced round key
bne .Lkey_loop
vmov.i8 q7,#0x63 @ compose .L63
@ don't save last round key
bx lr
.size _bsaes_key_convert,.-_bsaes_key_convert
+.extern AES_cbc_encrypt
+.extern AES_decrypt
-
-
-.globl bsaes_cbc_encrypt
+.global bsaes_cbc_encrypt
.hidden bsaes_cbc_encrypt
.type bsaes_cbc_encrypt,%function
.align 5
@@ -1086,7 +1071,7 @@ bsaes_cbc_encrypt:
@ it is up to the caller to make sure we are called with enc == 0
mov ip, sp
- stmdb sp!, {r4,r5,r6,r7,r8,r9,r10, lr}
+ stmdb sp!, {r4-r10, lr}
VFP_ABI_PUSH
ldr r8, [ip] @ IV is 1st arg on the stack
mov r2, r2, lsr#4 @ len in 16 byte blocks
@@ -1126,7 +1111,7 @@ bsaes_cbc_encrypt:
vstmia r4, {q7}
.align 2
-
+0:
#endif
vld1.8 {q15}, [r8] @ load IV
@@ -1137,33 +1122,33 @@ bsaes_cbc_encrypt:
subs r2, r2, #0x8
bmi .Lcbc_dec_loop_finish
- vld1.8 {q0,q1}, [r0]! @ load input
- vld1.8 {q2,q3}, [r0]!
+ vld1.8 {q0-q1}, [r0]! @ load input
+ vld1.8 {q2-q3}, [r0]!
#ifndef BSAES_ASM_EXTENDED_KEY
mov r4, sp @ pass the key
#else
add r4, r3, #248
#endif
- vld1.8 {q4,q5}, [r0]!
+ vld1.8 {q4-q5}, [r0]!
mov r5, r10
- vld1.8 {q6,q7}, [r0]
+ vld1.8 {q6-q7}, [r0]
sub r0, r0, #0x60
vstmia r9, {q15} @ put aside IV
bl _bsaes_decrypt8
vldmia r9, {q14} @ reload IV
- vld1.8 {q8,q9}, [r0]! @ reload input
+ vld1.8 {q8-q9}, [r0]! @ reload input
veor q0, q0, q14 @ ^= IV
- vld1.8 {q10,q11}, [r0]!
+ vld1.8 {q10-q11}, [r0]!
veor q1, q1, q8
veor q6, q6, q9
- vld1.8 {q12,q13}, [r0]!
+ vld1.8 {q12-q13}, [r0]!
veor q4, q4, q10
veor q2, q2, q11
- vld1.8 {q14,q15}, [r0]!
+ vld1.8 {q14-q15}, [r0]!
veor q7, q7, q12
- vst1.8 {q0,q1}, [r1]! @ write output
+ vst1.8 {q0-q1}, [r1]! @ write output
veor q3, q3, q13
vst1.8 {q6}, [r1]!
veor q5, q5, q14
@@ -1207,17 +1192,17 @@ bsaes_cbc_encrypt:
bl _bsaes_decrypt8
vldmia r9, {q14} @ reload IV
- vld1.8 {q8,q9}, [r0]! @ reload input
+ vld1.8 {q8-q9}, [r0]! @ reload input
veor q0, q0, q14 @ ^= IV
- vld1.8 {q10,q11}, [r0]!
+ vld1.8 {q10-q11}, [r0]!
veor q1, q1, q8
veor q6, q6, q9
- vld1.8 {q12,q13}, [r0]!
+ vld1.8 {q12-q13}, [r0]!
veor q4, q4, q10
veor q2, q2, q11
vld1.8 {q15}, [r0]!
veor q7, q7, q12
- vst1.8 {q0,q1}, [r1]! @ write output
+ vst1.8 {q0-q1}, [r1]! @ write output
veor q3, q3, q13
vst1.8 {q6}, [r1]!
vst1.8 {q4}, [r1]!
@@ -1230,9 +1215,9 @@ bsaes_cbc_encrypt:
sub r0, r0, #0x60
bl _bsaes_decrypt8
vldmia r9,{q14} @ reload IV
- vld1.8 {q8,q9}, [r0]! @ reload input
+ vld1.8 {q8-q9}, [r0]! @ reload input
veor q0, q0, q14 @ ^= IV
- vld1.8 {q10,q11}, [r0]!
+ vld1.8 {q10-q11}, [r0]!
veor q1, q1, q8
veor q6, q6, q9
vld1.8 {q12}, [r0]!
@@ -1240,7 +1225,7 @@ bsaes_cbc_encrypt:
veor q2, q2, q11
vld1.8 {q15}, [r0]!
veor q7, q7, q12
- vst1.8 {q0,q1}, [r1]! @ write output
+ vst1.8 {q0-q1}, [r1]! @ write output
vst1.8 {q6}, [r1]!
vst1.8 {q4}, [r1]!
vst1.8 {q2}, [r1]!
@@ -1251,14 +1236,14 @@ bsaes_cbc_encrypt:
sub r0, r0, #0x50
bl _bsaes_decrypt8
vldmia r9, {q14} @ reload IV
- vld1.8 {q8,q9}, [r0]! @ reload input
+ vld1.8 {q8-q9}, [r0]! @ reload input
veor q0, q0, q14 @ ^= IV
- vld1.8 {q10,q11}, [r0]!
+ vld1.8 {q10-q11}, [r0]!
veor q1, q1, q8
veor q6, q6, q9
vld1.8 {q15}, [r0]!
veor q4, q4, q10
- vst1.8 {q0,q1}, [r1]! @ write output
+ vst1.8 {q0-q1}, [r1]! @ write output
veor q2, q2, q11
vst1.8 {q6}, [r1]!
vst1.8 {q4}, [r1]!
@@ -1269,14 +1254,14 @@ bsaes_cbc_encrypt:
sub r0, r0, #0x40
bl _bsaes_decrypt8
vldmia r9, {q14} @ reload IV
- vld1.8 {q8,q9}, [r0]! @ reload input
+ vld1.8 {q8-q9}, [r0]! @ reload input
veor q0, q0, q14 @ ^= IV
vld1.8 {q10}, [r0]!
veor q1, q1, q8
veor q6, q6, q9
vld1.8 {q15}, [r0]!
veor q4, q4, q10
- vst1.8 {q0,q1}, [r1]! @ write output
+ vst1.8 {q0-q1}, [r1]! @ write output
vst1.8 {q6}, [r1]!
vst1.8 {q4}, [r1]!
b .Lcbc_dec_done
@@ -1285,12 +1270,12 @@ bsaes_cbc_encrypt:
sub r0, r0, #0x30
bl _bsaes_decrypt8
vldmia r9, {q14} @ reload IV
- vld1.8 {q8,q9}, [r0]! @ reload input
+ vld1.8 {q8-q9}, [r0]! @ reload input
veor q0, q0, q14 @ ^= IV
vld1.8 {q15}, [r0]!
veor q1, q1, q8
veor q6, q6, q9
- vst1.8 {q0,q1}, [r1]! @ write output
+ vst1.8 {q0-q1}, [r1]! @ write output
vst1.8 {q6}, [r1]!
b .Lcbc_dec_done
.align 4
@@ -1302,7 +1287,7 @@ bsaes_cbc_encrypt:
veor q0, q0, q14 @ ^= IV
vld1.8 {q15}, [r0]! @ reload input
veor q1, q1, q8
- vst1.8 {q0,q1}, [r1]! @ write output
+ vst1.8 {q0-q1}, [r1]! @ write output
b .Lcbc_dec_done
.align 4
.Lcbc_dec_one:
@@ -1322,20 +1307,20 @@ bsaes_cbc_encrypt:
#ifndef BSAES_ASM_EXTENDED_KEY
vmov.i32 q0, #0
vmov.i32 q1, #0
-.Lcbc_dec_bzero:@ wipe key schedule [if any]
- vstmia sp!, {q0,q1}
- cmp sp, r9
- bne .Lcbc_dec_bzero
+.Lcbc_dec_bzero: @ wipe key schedule [if any]
+ vstmia sp!, {q0-q1}
+ cmp sp, r9
+ bne .Lcbc_dec_bzero
#endif
mov sp, r9
add sp, #0x10 @ add sp,r9,#0x10 is no good for thumb
vst1.8 {q15}, [r8] @ return IV
VFP_ABI_POP
- ldmia sp!, {r4,r5,r6,r7,r8,r9,r10, pc}
+ ldmia sp!, {r4-r10, pc}
.size bsaes_cbc_encrypt,.-bsaes_cbc_encrypt
-
-.globl bsaes_ctr32_encrypt_blocks
+.extern AES_encrypt
+.global bsaes_ctr32_encrypt_blocks
.hidden bsaes_ctr32_encrypt_blocks
.type bsaes_ctr32_encrypt_blocks,%function
.align 5
@@ -1344,7 +1329,7 @@ bsaes_ctr32_encrypt_blocks:
blo .Lctr_enc_short @ small sizes
mov ip, sp
- stmdb sp!, {r4,r5,r6,r7,r8,r9,r10, lr}
+ stmdb sp!, {r4-r10, lr}
VFP_ABI_PUSH
ldr r8, [ip] @ ctr is 1st arg on the stack
sub sp, sp, #0x10 @ scratch space to carry over the ctr
@@ -1365,12 +1350,7 @@ bsaes_ctr32_encrypt_blocks:
vstmia r12, {q7} @ save last round key
vld1.8 {q0}, [r8] @ load counter
-#ifdef __APPLE__
- mov r8, #.LREVM0SR-.LM0
- add r8, r6, r8
-#else
add r8, r6, #.LREVM0SR-.LM0 @ borrow r8
-#endif
vldmia sp, {q4} @ load round0 key
#else
ldr r12, [r3, #244]
@@ -1387,7 +1367,7 @@ bsaes_ctr32_encrypt_blocks:
vstmia r12, {q7} @ save last round key
.align 2
- add r12, r3, #248
+0: add r12, r3, #248
vld1.8 {q0}, [r8] @ load counter
adrl r8, .LREVM0SR @ borrow r8
vldmia r12, {q4} @ load round0 key
@@ -1395,9 +1375,9 @@ bsaes_ctr32_encrypt_blocks:
#endif
vmov.i32 q8,#1 @ compose 1<<96
- veor q9,q9,q9
+ veor q9,q9,q9
vrev32.8 q0,q0
- vext.8 q8,q9,q8,#4
+ vext.8 q8,q9,q8,#4
vrev32.8 q4,q4
vadd.u32 q9,q8,q8 @ compose 2<<96
vstmia sp, {q4} @ save adjusted round0 key
@@ -1418,122 +1398,117 @@ bsaes_ctr32_encrypt_blocks:
@ Borrow prologue from _bsaes_encrypt8 to use the opportunity
@ to flip byte order in 32-bit counter
- vldmia sp, {q9} @ load round0 key
+ vldmia sp, {q9} @ load round0 key
#ifndef BSAES_ASM_EXTENDED_KEY
- add r4, sp, #0x10 @ pass next round key
+ add r4, sp, #0x10 @ pass next round key
#else
- add r4, r3, #264
+ add r4, r3, #264
#endif
- vldmia r8, {q8} @ .LREVM0SR
- mov r5, r10 @ pass rounds
- vstmia r9, {q10} @ save next counter
-#ifdef __APPLE__
- mov r6, #.LREVM0SR-.LSR
- sub r6, r8, r6
-#else
- sub r6, r8, #.LREVM0SR-.LSR @ pass constants
-#endif
-
- bl _bsaes_encrypt8_alt
-
- subs r2, r2, #8
- blo .Lctr_enc_loop_done
-
- vld1.8 {q8,q9}, [r0]! @ load input
- vld1.8 {q10,q11}, [r0]!
- veor q0, q8
- veor q1, q9
- vld1.8 {q12,q13}, [r0]!
- veor q4, q10
- veor q6, q11
- vld1.8 {q14,q15}, [r0]!
- veor q3, q12
- vst1.8 {q0,q1}, [r1]! @ write output
- veor q7, q13
- veor q2, q14
- vst1.8 {q4}, [r1]!
- veor q5, q15
- vst1.8 {q6}, [r1]!
+ vldmia r8, {q8} @ .LREVM0SR
+ mov r5, r10 @ pass rounds
+ vstmia r9, {q10} @ save next counter
+ sub r6, r8, #.LREVM0SR-.LSR @ pass constants
+
+ bl _bsaes_encrypt8_alt
+
+ subs r2, r2, #8
+ blo .Lctr_enc_loop_done
+
+ vld1.8 {q8-q9}, [r0]! @ load input
+ vld1.8 {q10-q11}, [r0]!
+ veor q0, q8
+ veor q1, q9
+ vld1.8 {q12-q13}, [r0]!
+ veor q4, q10
+ veor q6, q11
+ vld1.8 {q14-q15}, [r0]!
+ veor q3, q12
+ vst1.8 {q0-q1}, [r1]! @ write output
+ veor q7, q13
+ veor q2, q14
+ vst1.8 {q4}, [r1]!
+ veor q5, q15
+ vst1.8 {q6}, [r1]!
vmov.i32 q8, #1 @ compose 1<<96
- vst1.8 {q3}, [r1]!
- veor q9, q9, q9
- vst1.8 {q7}, [r1]!
- vext.8 q8, q9, q8, #4
- vst1.8 {q2}, [r1]!
+ vst1.8 {q3}, [r1]!
+ veor q9, q9, q9
+ vst1.8 {q7}, [r1]!
+ vext.8 q8, q9, q8, #4
+ vst1.8 {q2}, [r1]!
vadd.u32 q9,q8,q8 @ compose 2<<96
- vst1.8 {q5}, [r1]!
- vldmia r9, {q0} @ load counter
+ vst1.8 {q5}, [r1]!
+ vldmia r9, {q0} @ load counter
- bne .Lctr_enc_loop
- b .Lctr_enc_done
+ bne .Lctr_enc_loop
+ b .Lctr_enc_done
.align 4
.Lctr_enc_loop_done:
- add r2, r2, #8
- vld1.8 {q8}, [r0]! @ load input
- veor q0, q8
- vst1.8 {q0}, [r1]! @ write output
- cmp r2, #2
- blo .Lctr_enc_done
- vld1.8 {q9}, [r0]!
- veor q1, q9
- vst1.8 {q1}, [r1]!
- beq .Lctr_enc_done
- vld1.8 {q10}, [r0]!
- veor q4, q10
- vst1.8 {q4}, [r1]!
- cmp r2, #4
- blo .Lctr_enc_done
- vld1.8 {q11}, [r0]!
- veor q6, q11
- vst1.8 {q6}, [r1]!
- beq .Lctr_enc_done
- vld1.8 {q12}, [r0]!
- veor q3, q12
- vst1.8 {q3}, [r1]!
- cmp r2, #6
- blo .Lctr_enc_done
- vld1.8 {q13}, [r0]!
- veor q7, q13
- vst1.8 {q7}, [r1]!
- beq .Lctr_enc_done
- vld1.8 {q14}, [r0]
- veor q2, q14
- vst1.8 {q2}, [r1]!
+ add r2, r2, #8
+ vld1.8 {q8}, [r0]! @ load input
+ veor q0, q8
+ vst1.8 {q0}, [r1]! @ write output
+ cmp r2, #2
+ blo .Lctr_enc_done
+ vld1.8 {q9}, [r0]!
+ veor q1, q9
+ vst1.8 {q1}, [r1]!
+ beq .Lctr_enc_done
+ vld1.8 {q10}, [r0]!
+ veor q4, q10
+ vst1.8 {q4}, [r1]!
+ cmp r2, #4
+ blo .Lctr_enc_done
+ vld1.8 {q11}, [r0]!
+ veor q6, q11
+ vst1.8 {q6}, [r1]!
+ beq .Lctr_enc_done
+ vld1.8 {q12}, [r0]!
+ veor q3, q12
+ vst1.8 {q3}, [r1]!
+ cmp r2, #6
+ blo .Lctr_enc_done
+ vld1.8 {q13}, [r0]!
+ veor q7, q13
+ vst1.8 {q7}, [r1]!
+ beq .Lctr_enc_done
+ vld1.8 {q14}, [r0]
+ veor q2, q14
+ vst1.8 {q2}, [r1]!
.Lctr_enc_done:
vmov.i32 q0, #0
vmov.i32 q1, #0
#ifndef BSAES_ASM_EXTENDED_KEY
-.Lctr_enc_bzero:@ wipe key schedule [if any]
- vstmia sp!, {q0,q1}
- cmp sp, r9
- bne .Lctr_enc_bzero
+.Lctr_enc_bzero: @ wipe key schedule [if any]
+ vstmia sp!, {q0-q1}
+ cmp sp, r9
+ bne .Lctr_enc_bzero
#else
- vstmia sp, {q0,q1}
+ vstmia sp, {q0-q1}
#endif
mov sp, r9
add sp, #0x10 @ add sp,r9,#0x10 is no good for thumb
VFP_ABI_POP
- ldmia sp!, {r4,r5,r6,r7,r8,r9,r10, pc} @ return
+ ldmia sp!, {r4-r10, pc} @ return
.align 4
.Lctr_enc_short:
ldr ip, [sp] @ ctr pointer is passed on stack
- stmdb sp!, {r4,r5,r6,r7,r8, lr}
+ stmdb sp!, {r4-r8, lr}
mov r4, r0 @ copy arguments
mov r5, r1
mov r6, r2
mov r7, r3
- ldr r8, [ip, #12] @ load counter .LSW
+ ldr r8, [ip, #12] @ load counter LSW
vld1.8 {q1}, [ip] @ load whole counter value
#ifdef __ARMEL__
rev r8, r8
#endif
sub sp, sp, #0x10
- vst1.8 {q1}, [sp] @ copy counter value
+ vst1.8 {q1}, [sp,:64] @ copy counter value
sub sp, sp, #0x10
.Lctr_enc_short_loop:
@@ -1544,7 +1519,7 @@ bsaes_ctr32_encrypt_blocks:
bl AES_encrypt
vld1.8 {q0}, [r4]! @ load input
- vld1.8 {q1}, [sp] @ load encrypted counter
+ vld1.8 {q1}, [sp,:64] @ load encrypted counter
add r8, r8, #1
#ifdef __ARMEL__
rev r0, r8
@@ -1559,9 +1534,9 @@ bsaes_ctr32_encrypt_blocks:
vmov.i32 q0, #0
vmov.i32 q1, #0
- vstmia sp!, {q0,q1}
+ vstmia sp!, {q0-q1}
- ldmia sp!, {r4,r5,r6,r7,r8, pc}
+ ldmia sp!, {r4-r8, pc}
.size bsaes_ctr32_encrypt_blocks,.-bsaes_ctr32_encrypt_blocks
.globl bsaes_xts_encrypt
.hidden bsaes_xts_encrypt
@@ -1569,7 +1544,7 @@ bsaes_ctr32_encrypt_blocks:
.align 4
bsaes_xts_encrypt:
mov ip, sp
- stmdb sp!, {r4,r5,r6,r7,r8,r9,r10, lr} @ 0x20
+ stmdb sp!, {r4-r10, lr} @ 0x20
VFP_ABI_PUSH
mov r6, sp @ future r3
@@ -1623,7 +1598,7 @@ bsaes_xts_encrypt:
vstmia r12, {q7}
.align 2
- sub sp, #0x90 @ place for tweak[9]
+0: sub sp, #0x90 @ place for tweak[9]
#endif
vld1.8 {q8}, [r0] @ initial tweak
@@ -1635,422 +1610,422 @@ bsaes_xts_encrypt:
.align 4
.Lxts_enc_loop:
- vldmia r2, {q5} @ load XTS magic
+ vldmia r2, {q5} @ load XTS magic
vshr.s64 q6, q8, #63
- mov r0, sp
- vand q6, q6, q5
+ mov r0, sp
+ vand q6, q6, q5
vadd.u64 q9, q8, q8
- vst1.64 {q8}, [r0,:128]!
- vswp d13,d12
+ vst1.64 {q8}, [r0,:128]!
+ vswp d13,d12
vshr.s64 q7, q9, #63
- veor q9, q9, q6
- vand q7, q7, q5
+ veor q9, q9, q6
+ vand q7, q7, q5
vadd.u64 q10, q9, q9
- vst1.64 {q9}, [r0,:128]!
- vswp d15,d14
+ vst1.64 {q9}, [r0,:128]!
+ vswp d15,d14
vshr.s64 q6, q10, #63
- veor q10, q10, q7
- vand q6, q6, q5
- vld1.8 {q0}, [r7]!
+ veor q10, q10, q7
+ vand q6, q6, q5
+ vld1.8 {q0}, [r7]!
vadd.u64 q11, q10, q10
- vst1.64 {q10}, [r0,:128]!
- vswp d13,d12
+ vst1.64 {q10}, [r0,:128]!
+ vswp d13,d12
vshr.s64 q7, q11, #63
- veor q11, q11, q6
- vand q7, q7, q5
- vld1.8 {q1}, [r7]!
- veor q0, q0, q8
+ veor q11, q11, q6
+ vand q7, q7, q5
+ vld1.8 {q1}, [r7]!
+ veor q0, q0, q8
vadd.u64 q12, q11, q11
- vst1.64 {q11}, [r0,:128]!
- vswp d15,d14
+ vst1.64 {q11}, [r0,:128]!
+ vswp d15,d14
vshr.s64 q6, q12, #63
- veor q12, q12, q7
- vand q6, q6, q5
- vld1.8 {q2}, [r7]!
- veor q1, q1, q9
+ veor q12, q12, q7
+ vand q6, q6, q5
+ vld1.8 {q2}, [r7]!
+ veor q1, q1, q9
vadd.u64 q13, q12, q12
- vst1.64 {q12}, [r0,:128]!
- vswp d13,d12
+ vst1.64 {q12}, [r0,:128]!
+ vswp d13,d12
vshr.s64 q7, q13, #63
- veor q13, q13, q6
- vand q7, q7, q5
- vld1.8 {q3}, [r7]!
- veor q2, q2, q10
+ veor q13, q13, q6
+ vand q7, q7, q5
+ vld1.8 {q3}, [r7]!
+ veor q2, q2, q10
vadd.u64 q14, q13, q13
- vst1.64 {q13}, [r0,:128]!
- vswp d15,d14
+ vst1.64 {q13}, [r0,:128]!
+ vswp d15,d14
vshr.s64 q6, q14, #63
- veor q14, q14, q7
- vand q6, q6, q5
- vld1.8 {q4}, [r7]!
- veor q3, q3, q11
+ veor q14, q14, q7
+ vand q6, q6, q5
+ vld1.8 {q4}, [r7]!
+ veor q3, q3, q11
vadd.u64 q15, q14, q14
- vst1.64 {q14}, [r0,:128]!
- vswp d13,d12
+ vst1.64 {q14}, [r0,:128]!
+ vswp d13,d12
vshr.s64 q7, q15, #63
- veor q15, q15, q6
- vand q7, q7, q5
- vld1.8 {q5}, [r7]!
- veor q4, q4, q12
+ veor q15, q15, q6
+ vand q7, q7, q5
+ vld1.8 {q5}, [r7]!
+ veor q4, q4, q12
vadd.u64 q8, q15, q15
- vst1.64 {q15}, [r0,:128]!
- vswp d15,d14
- veor q8, q8, q7
- vst1.64 {q8}, [r0,:128] @ next round tweak
+ vst1.64 {q15}, [r0,:128]!
+ vswp d15,d14
+ veor q8, q8, q7
+ vst1.64 {q8}, [r0,:128] @ next round tweak
- vld1.8 {q6,q7}, [r7]!
- veor q5, q5, q13
+ vld1.8 {q6-q7}, [r7]!
+ veor q5, q5, q13
#ifndef BSAES_ASM_EXTENDED_KEY
- add r4, sp, #0x90 @ pass key schedule
+ add r4, sp, #0x90 @ pass key schedule
#else
- add r4, r10, #248 @ pass key schedule
+ add r4, r10, #248 @ pass key schedule
#endif
- veor q6, q6, q14
- mov r5, r1 @ pass rounds
- veor q7, q7, q15
- mov r0, sp
-
- bl _bsaes_encrypt8
-
- vld1.64 {q8,q9}, [r0,:128]!
- vld1.64 {q10,q11}, [r0,:128]!
- veor q0, q0, q8
- vld1.64 {q12,q13}, [r0,:128]!
- veor q1, q1, q9
- veor q8, q4, q10
- vst1.8 {q0,q1}, [r8]!
- veor q9, q6, q11
- vld1.64 {q14,q15}, [r0,:128]!
- veor q10, q3, q12
- vst1.8 {q8,q9}, [r8]!
- veor q11, q7, q13
- veor q12, q2, q14
- vst1.8 {q10,q11}, [r8]!
- veor q13, q5, q15
- vst1.8 {q12,q13}, [r8]!
-
- vld1.64 {q8}, [r0,:128] @ next round tweak
-
- subs r9, #0x80
- bpl .Lxts_enc_loop
+ veor q6, q6, q14
+ mov r5, r1 @ pass rounds
+ veor q7, q7, q15
+ mov r0, sp
+
+ bl _bsaes_encrypt8
+
+ vld1.64 {q8-q9}, [r0,:128]!
+ vld1.64 {q10-q11}, [r0,:128]!
+ veor q0, q0, q8
+ vld1.64 {q12-q13}, [r0,:128]!
+ veor q1, q1, q9
+ veor q8, q4, q10
+ vst1.8 {q0-q1}, [r8]!
+ veor q9, q6, q11
+ vld1.64 {q14-q15}, [r0,:128]!
+ veor q10, q3, q12
+ vst1.8 {q8-q9}, [r8]!
+ veor q11, q7, q13
+ veor q12, q2, q14
+ vst1.8 {q10-q11}, [r8]!
+ veor q13, q5, q15
+ vst1.8 {q12-q13}, [r8]!
+
+ vld1.64 {q8}, [r0,:128] @ next round tweak
+
+ subs r9, #0x80
+ bpl .Lxts_enc_loop
.Lxts_enc_short:
- adds r9, #0x70
- bmi .Lxts_enc_done
+ adds r9, #0x70
+ bmi .Lxts_enc_done
- vldmia r2, {q5} @ load XTS magic
+ vldmia r2, {q5} @ load XTS magic
vshr.s64 q7, q8, #63
- mov r0, sp
- vand q7, q7, q5
+ mov r0, sp
+ vand q7, q7, q5
vadd.u64 q9, q8, q8
- vst1.64 {q8}, [r0,:128]!
- vswp d15,d14
+ vst1.64 {q8}, [r0,:128]!
+ vswp d15,d14
vshr.s64 q6, q9, #63
- veor q9, q9, q7
- vand q6, q6, q5
+ veor q9, q9, q7
+ vand q6, q6, q5
vadd.u64 q10, q9, q9
- vst1.64 {q9}, [r0,:128]!
- vswp d13,d12
+ vst1.64 {q9}, [r0,:128]!
+ vswp d13,d12
vshr.s64 q7, q10, #63
- veor q10, q10, q6
- vand q7, q7, q5
- vld1.8 {q0}, [r7]!
- subs r9, #0x10
- bmi .Lxts_enc_1
+ veor q10, q10, q6
+ vand q7, q7, q5
+ vld1.8 {q0}, [r7]!
+ subs r9, #0x10
+ bmi .Lxts_enc_1
vadd.u64 q11, q10, q10
- vst1.64 {q10}, [r0,:128]!
- vswp d15,d14
+ vst1.64 {q10}, [r0,:128]!
+ vswp d15,d14
vshr.s64 q6, q11, #63
- veor q11, q11, q7
- vand q6, q6, q5
- vld1.8 {q1}, [r7]!
- subs r9, #0x10
- bmi .Lxts_enc_2
- veor q0, q0, q8
+ veor q11, q11, q7
+ vand q6, q6, q5
+ vld1.8 {q1}, [r7]!
+ subs r9, #0x10
+ bmi .Lxts_enc_2
+ veor q0, q0, q8
vadd.u64 q12, q11, q11
- vst1.64 {q11}, [r0,:128]!
- vswp d13,d12
+ vst1.64 {q11}, [r0,:128]!
+ vswp d13,d12
vshr.s64 q7, q12, #63
- veor q12, q12, q6
- vand q7, q7, q5
- vld1.8 {q2}, [r7]!
- subs r9, #0x10
- bmi .Lxts_enc_3
- veor q1, q1, q9
+ veor q12, q12, q6
+ vand q7, q7, q5
+ vld1.8 {q2}, [r7]!
+ subs r9, #0x10
+ bmi .Lxts_enc_3
+ veor q1, q1, q9
vadd.u64 q13, q12, q12
- vst1.64 {q12}, [r0,:128]!
- vswp d15,d14
+ vst1.64 {q12}, [r0,:128]!
+ vswp d15,d14
vshr.s64 q6, q13, #63
- veor q13, q13, q7
- vand q6, q6, q5
- vld1.8 {q3}, [r7]!
- subs r9, #0x10
- bmi .Lxts_enc_4
- veor q2, q2, q10
+ veor q13, q13, q7
+ vand q6, q6, q5
+ vld1.8 {q3}, [r7]!
+ subs r9, #0x10
+ bmi .Lxts_enc_4
+ veor q2, q2, q10
vadd.u64 q14, q13, q13
- vst1.64 {q13}, [r0,:128]!
- vswp d13,d12
+ vst1.64 {q13}, [r0,:128]!
+ vswp d13,d12
vshr.s64 q7, q14, #63
- veor q14, q14, q6
- vand q7, q7, q5
- vld1.8 {q4}, [r7]!
- subs r9, #0x10
- bmi .Lxts_enc_5
- veor q3, q3, q11
+ veor q14, q14, q6
+ vand q7, q7, q5
+ vld1.8 {q4}, [r7]!
+ subs r9, #0x10
+ bmi .Lxts_enc_5
+ veor q3, q3, q11
vadd.u64 q15, q14, q14
- vst1.64 {q14}, [r0,:128]!
- vswp d15,d14
+ vst1.64 {q14}, [r0,:128]!
+ vswp d15,d14
vshr.s64 q6, q15, #63
- veor q15, q15, q7
- vand q6, q6, q5
- vld1.8 {q5}, [r7]!
- subs r9, #0x10
- bmi .Lxts_enc_6
- veor q4, q4, q12
- sub r9, #0x10
- vst1.64 {q15}, [r0,:128] @ next round tweak
-
- vld1.8 {q6}, [r7]!
- veor q5, q5, q13
+ veor q15, q15, q7
+ vand q6, q6, q5
+ vld1.8 {q5}, [r7]!
+ subs r9, #0x10
+ bmi .Lxts_enc_6
+ veor q4, q4, q12
+ sub r9, #0x10
+ vst1.64 {q15}, [r0,:128] @ next round tweak
+
+ vld1.8 {q6}, [r7]!
+ veor q5, q5, q13
#ifndef BSAES_ASM_EXTENDED_KEY
- add r4, sp, #0x90 @ pass key schedule
+ add r4, sp, #0x90 @ pass key schedule
#else
- add r4, r10, #248 @ pass key schedule
+ add r4, r10, #248 @ pass key schedule
#endif
- veor q6, q6, q14
- mov r5, r1 @ pass rounds
- mov r0, sp
-
- bl _bsaes_encrypt8
-
- vld1.64 {q8,q9}, [r0,:128]!
- vld1.64 {q10,q11}, [r0,:128]!
- veor q0, q0, q8
- vld1.64 {q12,q13}, [r0,:128]!
- veor q1, q1, q9
- veor q8, q4, q10
- vst1.8 {q0,q1}, [r8]!
- veor q9, q6, q11
- vld1.64 {q14}, [r0,:128]!
- veor q10, q3, q12
- vst1.8 {q8,q9}, [r8]!
- veor q11, q7, q13
- veor q12, q2, q14
- vst1.8 {q10,q11}, [r8]!
- vst1.8 {q12}, [r8]!
-
- vld1.64 {q8}, [r0,:128] @ next round tweak
- b .Lxts_enc_done
+ veor q6, q6, q14
+ mov r5, r1 @ pass rounds
+ mov r0, sp
+
+ bl _bsaes_encrypt8
+
+ vld1.64 {q8-q9}, [r0,:128]!
+ vld1.64 {q10-q11}, [r0,:128]!
+ veor q0, q0, q8
+ vld1.64 {q12-q13}, [r0,:128]!
+ veor q1, q1, q9
+ veor q8, q4, q10
+ vst1.8 {q0-q1}, [r8]!
+ veor q9, q6, q11
+ vld1.64 {q14}, [r0,:128]!
+ veor q10, q3, q12
+ vst1.8 {q8-q9}, [r8]!
+ veor q11, q7, q13
+ veor q12, q2, q14
+ vst1.8 {q10-q11}, [r8]!
+ vst1.8 {q12}, [r8]!
+
+ vld1.64 {q8}, [r0,:128] @ next round tweak
+ b .Lxts_enc_done
.align 4
.Lxts_enc_6:
- vst1.64 {q14}, [r0,:128] @ next round tweak
+ vst1.64 {q14}, [r0,:128] @ next round tweak
- veor q4, q4, q12
+ veor q4, q4, q12
#ifndef BSAES_ASM_EXTENDED_KEY
- add r4, sp, #0x90 @ pass key schedule
+ add r4, sp, #0x90 @ pass key schedule
#else
- add r4, r10, #248 @ pass key schedule
+ add r4, r10, #248 @ pass key schedule
#endif
- veor q5, q5, q13
- mov r5, r1 @ pass rounds
- mov r0, sp
-
- bl _bsaes_encrypt8
-
- vld1.64 {q8,q9}, [r0,:128]!
- vld1.64 {q10,q11}, [r0,:128]!
- veor q0, q0, q8
- vld1.64 {q12,q13}, [r0,:128]!
- veor q1, q1, q9
- veor q8, q4, q10
- vst1.8 {q0,q1}, [r8]!
- veor q9, q6, q11
- veor q10, q3, q12
- vst1.8 {q8,q9}, [r8]!
- veor q11, q7, q13
- vst1.8 {q10,q11}, [r8]!
-
- vld1.64 {q8}, [r0,:128] @ next round tweak
- b .Lxts_enc_done
+ veor q5, q5, q13
+ mov r5, r1 @ pass rounds
+ mov r0, sp
+
+ bl _bsaes_encrypt8
+
+ vld1.64 {q8-q9}, [r0,:128]!
+ vld1.64 {q10-q11}, [r0,:128]!
+ veor q0, q0, q8
+ vld1.64 {q12-q13}, [r0,:128]!
+ veor q1, q1, q9
+ veor q8, q4, q10
+ vst1.8 {q0-q1}, [r8]!
+ veor q9, q6, q11
+ veor q10, q3, q12
+ vst1.8 {q8-q9}, [r8]!
+ veor q11, q7, q13
+ vst1.8 {q10-q11}, [r8]!
+
+ vld1.64 {q8}, [r0,:128] @ next round tweak
+ b .Lxts_enc_done
@ put this in range for both ARM and Thumb mode adr instructions
.align 5
.Lxts_magic:
-.quad 1, 0x87
+ .quad 1, 0x87
.align 5
.Lxts_enc_5:
- vst1.64 {q13}, [r0,:128] @ next round tweak
+ vst1.64 {q13}, [r0,:128] @ next round tweak
- veor q3, q3, q11
+ veor q3, q3, q11
#ifndef BSAES_ASM_EXTENDED_KEY
- add r4, sp, #0x90 @ pass key schedule
+ add r4, sp, #0x90 @ pass key schedule
#else
- add r4, r10, #248 @ pass key schedule
+ add r4, r10, #248 @ pass key schedule
#endif
- veor q4, q4, q12
- mov r5, r1 @ pass rounds
- mov r0, sp
-
- bl _bsaes_encrypt8
-
- vld1.64 {q8,q9}, [r0,:128]!
- vld1.64 {q10,q11}, [r0,:128]!
- veor q0, q0, q8
- vld1.64 {q12}, [r0,:128]!
- veor q1, q1, q9
- veor q8, q4, q10
- vst1.8 {q0,q1}, [r8]!
- veor q9, q6, q11
- veor q10, q3, q12
- vst1.8 {q8,q9}, [r8]!
- vst1.8 {q10}, [r8]!
-
- vld1.64 {q8}, [r0,:128] @ next round tweak
- b .Lxts_enc_done
+ veor q4, q4, q12
+ mov r5, r1 @ pass rounds
+ mov r0, sp
+
+ bl _bsaes_encrypt8
+
+ vld1.64 {q8-q9}, [r0,:128]!
+ vld1.64 {q10-q11}, [r0,:128]!
+ veor q0, q0, q8
+ vld1.64 {q12}, [r0,:128]!
+ veor q1, q1, q9
+ veor q8, q4, q10
+ vst1.8 {q0-q1}, [r8]!
+ veor q9, q6, q11
+ veor q10, q3, q12
+ vst1.8 {q8-q9}, [r8]!
+ vst1.8 {q10}, [r8]!
+
+ vld1.64 {q8}, [r0,:128] @ next round tweak
+ b .Lxts_enc_done
.align 4
.Lxts_enc_4:
- vst1.64 {q12}, [r0,:128] @ next round tweak
+ vst1.64 {q12}, [r0,:128] @ next round tweak
- veor q2, q2, q10
+ veor q2, q2, q10
#ifndef BSAES_ASM_EXTENDED_KEY
- add r4, sp, #0x90 @ pass key schedule
+ add r4, sp, #0x90 @ pass key schedule
#else
- add r4, r10, #248 @ pass key schedule
+ add r4, r10, #248 @ pass key schedule
#endif
- veor q3, q3, q11
- mov r5, r1 @ pass rounds
- mov r0, sp
-
- bl _bsaes_encrypt8
-
- vld1.64 {q8,q9}, [r0,:128]!
- vld1.64 {q10,q11}, [r0,:128]!
- veor q0, q0, q8
- veor q1, q1, q9
- veor q8, q4, q10
- vst1.8 {q0,q1}, [r8]!
- veor q9, q6, q11
- vst1.8 {q8,q9}, [r8]!
-
- vld1.64 {q8}, [r0,:128] @ next round tweak
- b .Lxts_enc_done
+ veor q3, q3, q11
+ mov r5, r1 @ pass rounds
+ mov r0, sp
+
+ bl _bsaes_encrypt8
+
+ vld1.64 {q8-q9}, [r0,:128]!
+ vld1.64 {q10-q11}, [r0,:128]!
+ veor q0, q0, q8
+ veor q1, q1, q9
+ veor q8, q4, q10
+ vst1.8 {q0-q1}, [r8]!
+ veor q9, q6, q11
+ vst1.8 {q8-q9}, [r8]!
+
+ vld1.64 {q8}, [r0,:128] @ next round tweak
+ b .Lxts_enc_done
.align 4
.Lxts_enc_3:
- vst1.64 {q11}, [r0,:128] @ next round tweak
+ vst1.64 {q11}, [r0,:128] @ next round tweak
- veor q1, q1, q9
+ veor q1, q1, q9
#ifndef BSAES_ASM_EXTENDED_KEY
- add r4, sp, #0x90 @ pass key schedule
+ add r4, sp, #0x90 @ pass key schedule
#else
- add r4, r10, #248 @ pass key schedule
+ add r4, r10, #248 @ pass key schedule
#endif
- veor q2, q2, q10
- mov r5, r1 @ pass rounds
- mov r0, sp
-
- bl _bsaes_encrypt8
-
- vld1.64 {q8,q9}, [r0,:128]!
- vld1.64 {q10}, [r0,:128]!
- veor q0, q0, q8
- veor q1, q1, q9
- veor q8, q4, q10
- vst1.8 {q0,q1}, [r8]!
- vst1.8 {q8}, [r8]!
-
- vld1.64 {q8}, [r0,:128] @ next round tweak
- b .Lxts_enc_done
+ veor q2, q2, q10
+ mov r5, r1 @ pass rounds
+ mov r0, sp
+
+ bl _bsaes_encrypt8
+
+ vld1.64 {q8-q9}, [r0,:128]!
+ vld1.64 {q10}, [r0,:128]!
+ veor q0, q0, q8
+ veor q1, q1, q9
+ veor q8, q4, q10
+ vst1.8 {q0-q1}, [r8]!
+ vst1.8 {q8}, [r8]!
+
+ vld1.64 {q8}, [r0,:128] @ next round tweak
+ b .Lxts_enc_done
.align 4
.Lxts_enc_2:
- vst1.64 {q10}, [r0,:128] @ next round tweak
+ vst1.64 {q10}, [r0,:128] @ next round tweak
- veor q0, q0, q8
+ veor q0, q0, q8
#ifndef BSAES_ASM_EXTENDED_KEY
- add r4, sp, #0x90 @ pass key schedule
+ add r4, sp, #0x90 @ pass key schedule
#else
- add r4, r10, #248 @ pass key schedule
+ add r4, r10, #248 @ pass key schedule
#endif
- veor q1, q1, q9
- mov r5, r1 @ pass rounds
- mov r0, sp
+ veor q1, q1, q9
+ mov r5, r1 @ pass rounds
+ mov r0, sp
- bl _bsaes_encrypt8
+ bl _bsaes_encrypt8
- vld1.64 {q8,q9}, [r0,:128]!
- veor q0, q0, q8
- veor q1, q1, q9
- vst1.8 {q0,q1}, [r8]!
+ vld1.64 {q8-q9}, [r0,:128]!
+ veor q0, q0, q8
+ veor q1, q1, q9
+ vst1.8 {q0-q1}, [r8]!
- vld1.64 {q8}, [r0,:128] @ next round tweak
- b .Lxts_enc_done
+ vld1.64 {q8}, [r0,:128] @ next round tweak
+ b .Lxts_enc_done
.align 4
.Lxts_enc_1:
- mov r0, sp
- veor q0, q8
- mov r1, sp
- vst1.8 {q0}, [sp,:128]
- mov r2, r10
- mov r4, r3 @ preserve fp
+ mov r0, sp
+ veor q0, q8
+ mov r1, sp
+ vst1.8 {q0}, [sp,:128]
+ mov r2, r10
+ mov r4, r3 @ preserve fp
- bl AES_encrypt
+ bl AES_encrypt
- vld1.8 {q0}, [sp,:128]
- veor q0, q0, q8
- vst1.8 {q0}, [r8]!
- mov r3, r4
+ vld1.8 {q0}, [sp,:128]
+ veor q0, q0, q8
+ vst1.8 {q0}, [r8]!
+ mov r3, r4
- vmov q8, q9 @ next round tweak
+ vmov q8, q9 @ next round tweak
.Lxts_enc_done:
#ifndef XTS_CHAIN_TWEAK
- adds r9, #0x10
- beq .Lxts_enc_ret
- sub r6, r8, #0x10
+ adds r9, #0x10
+ beq .Lxts_enc_ret
+ sub r6, r8, #0x10
.Lxts_enc_steal:
- ldrb r0, [r7], #1
- ldrb r1, [r8, #-0x10]
- strb r0, [r8, #-0x10]
- strb r1, [r8], #1
-
- subs r9, #1
- bhi .Lxts_enc_steal
-
- vld1.8 {q0}, [r6]
- mov r0, sp
- veor q0, q0, q8
- mov r1, sp
- vst1.8 {q0}, [sp,:128]
- mov r2, r10
- mov r4, r3 @ preserve fp
-
- bl AES_encrypt
-
- vld1.8 {q0}, [sp,:128]
- veor q0, q0, q8
- vst1.8 {q0}, [r6]
- mov r3, r4
+ ldrb r0, [r7], #1
+ ldrb r1, [r8, #-0x10]
+ strb r0, [r8, #-0x10]
+ strb r1, [r8], #1
+
+ subs r9, #1
+ bhi .Lxts_enc_steal
+
+ vld1.8 {q0}, [r6]
+ mov r0, sp
+ veor q0, q0, q8
+ mov r1, sp
+ vst1.8 {q0}, [sp,:128]
+ mov r2, r10
+ mov r4, r3 @ preserve fp
+
+ bl AES_encrypt
+
+ vld1.8 {q0}, [sp,:128]
+ veor q0, q0, q8
+ vst1.8 {q0}, [r6]
+ mov r3, r4
#endif
.Lxts_enc_ret:
- bic r0, r3, #0xf
+ bic r0, r3, #0xf
vmov.i32 q0, #0
vmov.i32 q1, #0
#ifdef XTS_CHAIN_TWEAK
- ldr r1, [r3, #0x20+VFP_ABI_FRAME] @ chain tweak
+ ldr r1, [r3, #0x20+VFP_ABI_FRAME] @ chain tweak
#endif
-.Lxts_enc_bzero:@ wipe key schedule [if any]
- vstmia sp!, {q0,q1}
- cmp sp, r0
- bne .Lxts_enc_bzero
+.Lxts_enc_bzero: @ wipe key schedule [if any]
+ vstmia sp!, {q0-q1}
+ cmp sp, r0
+ bne .Lxts_enc_bzero
- mov sp, r3
+ mov sp, r3
#ifdef XTS_CHAIN_TWEAK
- vst1.8 {q8}, [r1]
+ vst1.8 {q8}, [r1]
#endif
VFP_ABI_POP
- ldmia sp!, {r4,r5,r6,r7,r8,r9,r10, pc} @ return
+ ldmia sp!, {r4-r10, pc} @ return
.size bsaes_xts_encrypt,.-bsaes_xts_encrypt
@@ -2060,7 +2035,7 @@ bsaes_xts_encrypt:
.align 4
bsaes_xts_decrypt:
mov ip, sp
- stmdb sp!, {r4,r5,r6,r7,r8,r9,r10, lr} @ 0x20
+ stmdb sp!, {r4-r10, lr} @ 0x20
VFP_ABI_PUSH
mov r6, sp @ future r3
@@ -2120,16 +2095,14 @@ bsaes_xts_decrypt:
vstmia r4, {q7}
.align 2
- sub sp, #0x90 @ place for tweak[9]
+0: sub sp, #0x90 @ place for tweak[9]
#endif
vld1.8 {q8}, [r0] @ initial tweak
adr r2, .Lxts_magic
-#ifndef XTS_CHAIN_TWEAK
tst r9, #0xf @ if not multiple of 16
it ne @ Thumb2 thing, sanity check in ARM
subne r9, #0x10 @ subtract another 16 bytes
-#endif
subs r9, #0x80
blo .Lxts_dec_short
@@ -2137,440 +2110,440 @@ bsaes_xts_decrypt:
.align 4
.Lxts_dec_loop:
- vldmia r2, {q5} @ load XTS magic
+ vldmia r2, {q5} @ load XTS magic
vshr.s64 q6, q8, #63
- mov r0, sp
- vand q6, q6, q5
+ mov r0, sp
+ vand q6, q6, q5
vadd.u64 q9, q8, q8
- vst1.64 {q8}, [r0,:128]!
- vswp d13,d12
+ vst1.64 {q8}, [r0,:128]!
+ vswp d13,d12
vshr.s64 q7, q9, #63
- veor q9, q9, q6
- vand q7, q7, q5
+ veor q9, q9, q6
+ vand q7, q7, q5
vadd.u64 q10, q9, q9
- vst1.64 {q9}, [r0,:128]!
- vswp d15,d14
+ vst1.64 {q9}, [r0,:128]!
+ vswp d15,d14
vshr.s64 q6, q10, #63
- veor q10, q10, q7
- vand q6, q6, q5
- vld1.8 {q0}, [r7]!
+ veor q10, q10, q7
+ vand q6, q6, q5
+ vld1.8 {q0}, [r7]!
vadd.u64 q11, q10, q10
- vst1.64 {q10}, [r0,:128]!
- vswp d13,d12
+ vst1.64 {q10}, [r0,:128]!
+ vswp d13,d12
vshr.s64 q7, q11, #63
- veor q11, q11, q6
- vand q7, q7, q5
- vld1.8 {q1}, [r7]!
- veor q0, q0, q8
+ veor q11, q11, q6
+ vand q7, q7, q5
+ vld1.8 {q1}, [r7]!
+ veor q0, q0, q8
vadd.u64 q12, q11, q11
- vst1.64 {q11}, [r0,:128]!
- vswp d15,d14
+ vst1.64 {q11}, [r0,:128]!
+ vswp d15,d14
vshr.s64 q6, q12, #63
- veor q12, q12, q7
- vand q6, q6, q5
- vld1.8 {q2}, [r7]!
- veor q1, q1, q9
+ veor q12, q12, q7
+ vand q6, q6, q5
+ vld1.8 {q2}, [r7]!
+ veor q1, q1, q9
vadd.u64 q13, q12, q12
- vst1.64 {q12}, [r0,:128]!
- vswp d13,d12
+ vst1.64 {q12}, [r0,:128]!
+ vswp d13,d12
vshr.s64 q7, q13, #63
- veor q13, q13, q6
- vand q7, q7, q5
- vld1.8 {q3}, [r7]!
- veor q2, q2, q10
+ veor q13, q13, q6
+ vand q7, q7, q5
+ vld1.8 {q3}, [r7]!
+ veor q2, q2, q10
vadd.u64 q14, q13, q13
- vst1.64 {q13}, [r0,:128]!
- vswp d15,d14
+ vst1.64 {q13}, [r0,:128]!
+ vswp d15,d14
vshr.s64 q6, q14, #63
- veor q14, q14, q7
- vand q6, q6, q5
- vld1.8 {q4}, [r7]!
- veor q3, q3, q11
+ veor q14, q14, q7
+ vand q6, q6, q5
+ vld1.8 {q4}, [r7]!
+ veor q3, q3, q11
vadd.u64 q15, q14, q14
- vst1.64 {q14}, [r0,:128]!
- vswp d13,d12
+ vst1.64 {q14}, [r0,:128]!
+ vswp d13,d12
vshr.s64 q7, q15, #63
- veor q15, q15, q6
- vand q7, q7, q5
- vld1.8 {q5}, [r7]!
- veor q4, q4, q12
+ veor q15, q15, q6
+ vand q7, q7, q5
+ vld1.8 {q5}, [r7]!
+ veor q4, q4, q12
vadd.u64 q8, q15, q15
- vst1.64 {q15}, [r0,:128]!
- vswp d15,d14
- veor q8, q8, q7
- vst1.64 {q8}, [r0,:128] @ next round tweak
+ vst1.64 {q15}, [r0,:128]!
+ vswp d15,d14
+ veor q8, q8, q7
+ vst1.64 {q8}, [r0,:128] @ next round tweak
- vld1.8 {q6,q7}, [r7]!
- veor q5, q5, q13
+ vld1.8 {q6-q7}, [r7]!
+ veor q5, q5, q13
#ifndef BSAES_ASM_EXTENDED_KEY
- add r4, sp, #0x90 @ pass key schedule
+ add r4, sp, #0x90 @ pass key schedule
#else
- add r4, r10, #248 @ pass key schedule
+ add r4, r10, #248 @ pass key schedule
#endif
- veor q6, q6, q14
- mov r5, r1 @ pass rounds
- veor q7, q7, q15
- mov r0, sp
-
- bl _bsaes_decrypt8
-
- vld1.64 {q8,q9}, [r0,:128]!
- vld1.64 {q10,q11}, [r0,:128]!
- veor q0, q0, q8
- vld1.64 {q12,q13}, [r0,:128]!
- veor q1, q1, q9
- veor q8, q6, q10
- vst1.8 {q0,q1}, [r8]!
- veor q9, q4, q11
- vld1.64 {q14,q15}, [r0,:128]!
- veor q10, q2, q12
- vst1.8 {q8,q9}, [r8]!
- veor q11, q7, q13
- veor q12, q3, q14
- vst1.8 {q10,q11}, [r8]!
- veor q13, q5, q15
- vst1.8 {q12,q13}, [r8]!
-
- vld1.64 {q8}, [r0,:128] @ next round tweak
-
- subs r9, #0x80
- bpl .Lxts_dec_loop
+ veor q6, q6, q14
+ mov r5, r1 @ pass rounds
+ veor q7, q7, q15
+ mov r0, sp
+
+ bl _bsaes_decrypt8
+
+ vld1.64 {q8-q9}, [r0,:128]!
+ vld1.64 {q10-q11}, [r0,:128]!
+ veor q0, q0, q8
+ vld1.64 {q12-q13}, [r0,:128]!
+ veor q1, q1, q9
+ veor q8, q6, q10
+ vst1.8 {q0-q1}, [r8]!
+ veor q9, q4, q11
+ vld1.64 {q14-q15}, [r0,:128]!
+ veor q10, q2, q12
+ vst1.8 {q8-q9}, [r8]!
+ veor q11, q7, q13
+ veor q12, q3, q14
+ vst1.8 {q10-q11}, [r8]!
+ veor q13, q5, q15
+ vst1.8 {q12-q13}, [r8]!
+
+ vld1.64 {q8}, [r0,:128] @ next round tweak
+
+ subs r9, #0x80
+ bpl .Lxts_dec_loop
.Lxts_dec_short:
- adds r9, #0x70
- bmi .Lxts_dec_done
+ adds r9, #0x70
+ bmi .Lxts_dec_done
- vldmia r2, {q5} @ load XTS magic
+ vldmia r2, {q5} @ load XTS magic
vshr.s64 q7, q8, #63
- mov r0, sp
- vand q7, q7, q5
+ mov r0, sp
+ vand q7, q7, q5
vadd.u64 q9, q8, q8
- vst1.64 {q8}, [r0,:128]!
- vswp d15,d14
+ vst1.64 {q8}, [r0,:128]!
+ vswp d15,d14
vshr.s64 q6, q9, #63
- veor q9, q9, q7
- vand q6, q6, q5
+ veor q9, q9, q7
+ vand q6, q6, q5
vadd.u64 q10, q9, q9
- vst1.64 {q9}, [r0,:128]!
- vswp d13,d12
+ vst1.64 {q9}, [r0,:128]!
+ vswp d13,d12
vshr.s64 q7, q10, #63
- veor q10, q10, q6
- vand q7, q7, q5
- vld1.8 {q0}, [r7]!
- subs r9, #0x10
- bmi .Lxts_dec_1
+ veor q10, q10, q6
+ vand q7, q7, q5
+ vld1.8 {q0}, [r7]!
+ subs r9, #0x10
+ bmi .Lxts_dec_1
vadd.u64 q11, q10, q10
- vst1.64 {q10}, [r0,:128]!
- vswp d15,d14
+ vst1.64 {q10}, [r0,:128]!
+ vswp d15,d14
vshr.s64 q6, q11, #63
- veor q11, q11, q7
- vand q6, q6, q5
- vld1.8 {q1}, [r7]!
- subs r9, #0x10
- bmi .Lxts_dec_2
- veor q0, q0, q8
+ veor q11, q11, q7
+ vand q6, q6, q5
+ vld1.8 {q1}, [r7]!
+ subs r9, #0x10
+ bmi .Lxts_dec_2
+ veor q0, q0, q8
vadd.u64 q12, q11, q11
- vst1.64 {q11}, [r0,:128]!
- vswp d13,d12
+ vst1.64 {q11}, [r0,:128]!
+ vswp d13,d12
vshr.s64 q7, q12, #63
- veor q12, q12, q6
- vand q7, q7, q5
- vld1.8 {q2}, [r7]!
- subs r9, #0x10
- bmi .Lxts_dec_3
- veor q1, q1, q9
+ veor q12, q12, q6
+ vand q7, q7, q5
+ vld1.8 {q2}, [r7]!
+ subs r9, #0x10
+ bmi .Lxts_dec_3
+ veor q1, q1, q9
vadd.u64 q13, q12, q12
- vst1.64 {q12}, [r0,:128]!
- vswp d15,d14
+ vst1.64 {q12}, [r0,:128]!
+ vswp d15,d14
vshr.s64 q6, q13, #63
- veor q13, q13, q7
- vand q6, q6, q5
- vld1.8 {q3}, [r7]!
- subs r9, #0x10
- bmi .Lxts_dec_4
- veor q2, q2, q10
+ veor q13, q13, q7
+ vand q6, q6, q5
+ vld1.8 {q3}, [r7]!
+ subs r9, #0x10
+ bmi .Lxts_dec_4
+ veor q2, q2, q10
vadd.u64 q14, q13, q13
- vst1.64 {q13}, [r0,:128]!
- vswp d13,d12
+ vst1.64 {q13}, [r0,:128]!
+ vswp d13,d12
vshr.s64 q7, q14, #63
- veor q14, q14, q6
- vand q7, q7, q5
- vld1.8 {q4}, [r7]!
- subs r9, #0x10
- bmi .Lxts_dec_5
- veor q3, q3, q11
+ veor q14, q14, q6
+ vand q7, q7, q5
+ vld1.8 {q4}, [r7]!
+ subs r9, #0x10
+ bmi .Lxts_dec_5
+ veor q3, q3, q11
vadd.u64 q15, q14, q14
- vst1.64 {q14}, [r0,:128]!
- vswp d15,d14
+ vst1.64 {q14}, [r0,:128]!
+ vswp d15,d14
vshr.s64 q6, q15, #63
- veor q15, q15, q7
- vand q6, q6, q5
- vld1.8 {q5}, [r7]!
- subs r9, #0x10
- bmi .Lxts_dec_6
- veor q4, q4, q12
- sub r9, #0x10
- vst1.64 {q15}, [r0,:128] @ next round tweak
-
- vld1.8 {q6}, [r7]!
- veor q5, q5, q13
+ veor q15, q15, q7
+ vand q6, q6, q5
+ vld1.8 {q5}, [r7]!
+ subs r9, #0x10
+ bmi .Lxts_dec_6
+ veor q4, q4, q12
+ sub r9, #0x10
+ vst1.64 {q15}, [r0,:128] @ next round tweak
+
+ vld1.8 {q6}, [r7]!
+ veor q5, q5, q13
#ifndef BSAES_ASM_EXTENDED_KEY
- add r4, sp, #0x90 @ pass key schedule
+ add r4, sp, #0x90 @ pass key schedule
#else
- add r4, r10, #248 @ pass key schedule
+ add r4, r10, #248 @ pass key schedule
#endif
- veor q6, q6, q14
- mov r5, r1 @ pass rounds
- mov r0, sp
-
- bl _bsaes_decrypt8
-
- vld1.64 {q8,q9}, [r0,:128]!
- vld1.64 {q10,q11}, [r0,:128]!
- veor q0, q0, q8
- vld1.64 {q12,q13}, [r0,:128]!
- veor q1, q1, q9
- veor q8, q6, q10
- vst1.8 {q0,q1}, [r8]!
- veor q9, q4, q11
- vld1.64 {q14}, [r0,:128]!
- veor q10, q2, q12
- vst1.8 {q8,q9}, [r8]!
- veor q11, q7, q13
- veor q12, q3, q14
- vst1.8 {q10,q11}, [r8]!
- vst1.8 {q12}, [r8]!
-
- vld1.64 {q8}, [r0,:128] @ next round tweak
- b .Lxts_dec_done
+ veor q6, q6, q14
+ mov r5, r1 @ pass rounds
+ mov r0, sp
+
+ bl _bsaes_decrypt8
+
+ vld1.64 {q8-q9}, [r0,:128]!
+ vld1.64 {q10-q11}, [r0,:128]!
+ veor q0, q0, q8
+ vld1.64 {q12-q13}, [r0,:128]!
+ veor q1, q1, q9
+ veor q8, q6, q10
+ vst1.8 {q0-q1}, [r8]!
+ veor q9, q4, q11
+ vld1.64 {q14}, [r0,:128]!
+ veor q10, q2, q12
+ vst1.8 {q8-q9}, [r8]!
+ veor q11, q7, q13
+ veor q12, q3, q14
+ vst1.8 {q10-q11}, [r8]!
+ vst1.8 {q12}, [r8]!
+
+ vld1.64 {q8}, [r0,:128] @ next round tweak
+ b .Lxts_dec_done
.align 4
.Lxts_dec_6:
- vst1.64 {q14}, [r0,:128] @ next round tweak
+ vst1.64 {q14}, [r0,:128] @ next round tweak
- veor q4, q4, q12
+ veor q4, q4, q12
#ifndef BSAES_ASM_EXTENDED_KEY
- add r4, sp, #0x90 @ pass key schedule
+ add r4, sp, #0x90 @ pass key schedule
#else
- add r4, r10, #248 @ pass key schedule
+ add r4, r10, #248 @ pass key schedule
#endif
- veor q5, q5, q13
- mov r5, r1 @ pass rounds
- mov r0, sp
-
- bl _bsaes_decrypt8
-
- vld1.64 {q8,q9}, [r0,:128]!
- vld1.64 {q10,q11}, [r0,:128]!
- veor q0, q0, q8
- vld1.64 {q12,q13}, [r0,:128]!
- veor q1, q1, q9
- veor q8, q6, q10
- vst1.8 {q0,q1}, [r8]!
- veor q9, q4, q11
- veor q10, q2, q12
- vst1.8 {q8,q9}, [r8]!
- veor q11, q7, q13
- vst1.8 {q10,q11}, [r8]!
-
- vld1.64 {q8}, [r0,:128] @ next round tweak
- b .Lxts_dec_done
+ veor q5, q5, q13
+ mov r5, r1 @ pass rounds
+ mov r0, sp
+
+ bl _bsaes_decrypt8
+
+ vld1.64 {q8-q9}, [r0,:128]!
+ vld1.64 {q10-q11}, [r0,:128]!
+ veor q0, q0, q8
+ vld1.64 {q12-q13}, [r0,:128]!
+ veor q1, q1, q9
+ veor q8, q6, q10
+ vst1.8 {q0-q1}, [r8]!
+ veor q9, q4, q11
+ veor q10, q2, q12
+ vst1.8 {q8-q9}, [r8]!
+ veor q11, q7, q13
+ vst1.8 {q10-q11}, [r8]!
+
+ vld1.64 {q8}, [r0,:128] @ next round tweak
+ b .Lxts_dec_done
.align 4
.Lxts_dec_5:
- vst1.64 {q13}, [r0,:128] @ next round tweak
+ vst1.64 {q13}, [r0,:128] @ next round tweak
- veor q3, q3, q11
+ veor q3, q3, q11
#ifndef BSAES_ASM_EXTENDED_KEY
- add r4, sp, #0x90 @ pass key schedule
+ add r4, sp, #0x90 @ pass key schedule
#else
- add r4, r10, #248 @ pass key schedule
+ add r4, r10, #248 @ pass key schedule
#endif
- veor q4, q4, q12
- mov r5, r1 @ pass rounds
- mov r0, sp
-
- bl _bsaes_decrypt8
-
- vld1.64 {q8,q9}, [r0,:128]!
- vld1.64 {q10,q11}, [r0,:128]!
- veor q0, q0, q8
- vld1.64 {q12}, [r0,:128]!
- veor q1, q1, q9
- veor q8, q6, q10
- vst1.8 {q0,q1}, [r8]!
- veor q9, q4, q11
- veor q10, q2, q12
- vst1.8 {q8,q9}, [r8]!
- vst1.8 {q10}, [r8]!
-
- vld1.64 {q8}, [r0,:128] @ next round tweak
- b .Lxts_dec_done
+ veor q4, q4, q12
+ mov r5, r1 @ pass rounds
+ mov r0, sp
+
+ bl _bsaes_decrypt8
+
+ vld1.64 {q8-q9}, [r0,:128]!
+ vld1.64 {q10-q11}, [r0,:128]!
+ veor q0, q0, q8
+ vld1.64 {q12}, [r0,:128]!
+ veor q1, q1, q9
+ veor q8, q6, q10
+ vst1.8 {q0-q1}, [r8]!
+ veor q9, q4, q11
+ veor q10, q2, q12
+ vst1.8 {q8-q9}, [r8]!
+ vst1.8 {q10}, [r8]!
+
+ vld1.64 {q8}, [r0,:128] @ next round tweak
+ b .Lxts_dec_done
.align 4
.Lxts_dec_4:
- vst1.64 {q12}, [r0,:128] @ next round tweak
+ vst1.64 {q12}, [r0,:128] @ next round tweak
- veor q2, q2, q10
+ veor q2, q2, q10
#ifndef BSAES_ASM_EXTENDED_KEY
- add r4, sp, #0x90 @ pass key schedule
+ add r4, sp, #0x90 @ pass key schedule
#else
- add r4, r10, #248 @ pass key schedule
+ add r4, r10, #248 @ pass key schedule
#endif
- veor q3, q3, q11
- mov r5, r1 @ pass rounds
- mov r0, sp
-
- bl _bsaes_decrypt8
-
- vld1.64 {q8,q9}, [r0,:128]!
- vld1.64 {q10,q11}, [r0,:128]!
- veor q0, q0, q8
- veor q1, q1, q9
- veor q8, q6, q10
- vst1.8 {q0,q1}, [r8]!
- veor q9, q4, q11
- vst1.8 {q8,q9}, [r8]!
-
- vld1.64 {q8}, [r0,:128] @ next round tweak
- b .Lxts_dec_done
+ veor q3, q3, q11
+ mov r5, r1 @ pass rounds
+ mov r0, sp
+
+ bl _bsaes_decrypt8
+
+ vld1.64 {q8-q9}, [r0,:128]!
+ vld1.64 {q10-q11}, [r0,:128]!
+ veor q0, q0, q8
+ veor q1, q1, q9
+ veor q8, q6, q10
+ vst1.8 {q0-q1}, [r8]!
+ veor q9, q4, q11
+ vst1.8 {q8-q9}, [r8]!
+
+ vld1.64 {q8}, [r0,:128] @ next round tweak
+ b .Lxts_dec_done
.align 4
.Lxts_dec_3:
- vst1.64 {q11}, [r0,:128] @ next round tweak
+ vst1.64 {q11}, [r0,:128] @ next round tweak
- veor q1, q1, q9
+ veor q1, q1, q9
#ifndef BSAES_ASM_EXTENDED_KEY
- add r4, sp, #0x90 @ pass key schedule
+ add r4, sp, #0x90 @ pass key schedule
#else
- add r4, r10, #248 @ pass key schedule
+ add r4, r10, #248 @ pass key schedule
#endif
- veor q2, q2, q10
- mov r5, r1 @ pass rounds
- mov r0, sp
-
- bl _bsaes_decrypt8
-
- vld1.64 {q8,q9}, [r0,:128]!
- vld1.64 {q10}, [r0,:128]!
- veor q0, q0, q8
- veor q1, q1, q9
- veor q8, q6, q10
- vst1.8 {q0,q1}, [r8]!
- vst1.8 {q8}, [r8]!
-
- vld1.64 {q8}, [r0,:128] @ next round tweak
- b .Lxts_dec_done
+ veor q2, q2, q10
+ mov r5, r1 @ pass rounds
+ mov r0, sp
+
+ bl _bsaes_decrypt8
+
+ vld1.64 {q8-q9}, [r0,:128]!
+ vld1.64 {q10}, [r0,:128]!
+ veor q0, q0, q8
+ veor q1, q1, q9
+ veor q8, q6, q10
+ vst1.8 {q0-q1}, [r8]!
+ vst1.8 {q8}, [r8]!
+
+ vld1.64 {q8}, [r0,:128] @ next round tweak
+ b .Lxts_dec_done
.align 4
.Lxts_dec_2:
- vst1.64 {q10}, [r0,:128] @ next round tweak
+ vst1.64 {q10}, [r0,:128] @ next round tweak
- veor q0, q0, q8
+ veor q0, q0, q8
#ifndef BSAES_ASM_EXTENDED_KEY
- add r4, sp, #0x90 @ pass key schedule
+ add r4, sp, #0x90 @ pass key schedule
#else
- add r4, r10, #248 @ pass key schedule
+ add r4, r10, #248 @ pass key schedule
#endif
- veor q1, q1, q9
- mov r5, r1 @ pass rounds
- mov r0, sp
+ veor q1, q1, q9
+ mov r5, r1 @ pass rounds
+ mov r0, sp
- bl _bsaes_decrypt8
+ bl _bsaes_decrypt8
- vld1.64 {q8,q9}, [r0,:128]!
- veor q0, q0, q8
- veor q1, q1, q9
- vst1.8 {q0,q1}, [r8]!
+ vld1.64 {q8-q9}, [r0,:128]!
+ veor q0, q0, q8
+ veor q1, q1, q9
+ vst1.8 {q0-q1}, [r8]!
- vld1.64 {q8}, [r0,:128] @ next round tweak
- b .Lxts_dec_done
+ vld1.64 {q8}, [r0,:128] @ next round tweak
+ b .Lxts_dec_done
.align 4
.Lxts_dec_1:
- mov r0, sp
- veor q0, q8
- mov r1, sp
- vst1.8 {q0}, [sp,:128]
- mov r2, r10
- mov r4, r3 @ preserve fp
- mov r5, r2 @ preserve magic
+ mov r0, sp
+ veor q0, q8
+ mov r1, sp
+ vst1.8 {q0}, [sp,:128]
+ mov r2, r10
+ mov r4, r3 @ preserve fp
+ mov r5, r2 @ preserve magic
- bl AES_decrypt
+ bl AES_decrypt
- vld1.8 {q0}, [sp,:128]
- veor q0, q0, q8
- vst1.8 {q0}, [r8]!
- mov r3, r4
- mov r2, r5
+ vld1.8 {q0}, [sp,:128]
+ veor q0, q0, q8
+ vst1.8 {q0}, [r8]!
+ mov r3, r4
+ mov r2, r5
- vmov q8, q9 @ next round tweak
+ vmov q8, q9 @ next round tweak
.Lxts_dec_done:
#ifndef XTS_CHAIN_TWEAK
- adds r9, #0x10
- beq .Lxts_dec_ret
+ adds r9, #0x10
+ beq .Lxts_dec_ret
@ calculate one round of extra tweak for the stolen ciphertext
- vldmia r2, {q5}
+ vldmia r2, {q5}
vshr.s64 q6, q8, #63
- vand q6, q6, q5
+ vand q6, q6, q5
vadd.u64 q9, q8, q8
- vswp d13,d12
- veor q9, q9, q6
+ vswp d13,d12
+ veor q9, q9, q6
@ perform the final decryption with the last tweak value
- vld1.8 {q0}, [r7]!
- mov r0, sp
- veor q0, q0, q9
- mov r1, sp
- vst1.8 {q0}, [sp,:128]
- mov r2, r10
- mov r4, r3 @ preserve fp
+ vld1.8 {q0}, [r7]!
+ mov r0, sp
+ veor q0, q0, q9
+ mov r1, sp
+ vst1.8 {q0}, [sp,:128]
+ mov r2, r10
+ mov r4, r3 @ preserve fp
- bl AES_decrypt
+ bl AES_decrypt
- vld1.8 {q0}, [sp,:128]
- veor q0, q0, q9
- vst1.8 {q0}, [r8]
+ vld1.8 {q0}, [sp,:128]
+ veor q0, q0, q9
+ vst1.8 {q0}, [r8]
- mov r6, r8
+ mov r6, r8
.Lxts_dec_steal:
- ldrb r1, [r8]
- ldrb r0, [r7], #1
- strb r1, [r8, #0x10]
- strb r0, [r8], #1
-
- subs r9, #1
- bhi .Lxts_dec_steal
-
- vld1.8 {q0}, [r6]
- mov r0, sp
- veor q0, q8
- mov r1, sp
- vst1.8 {q0}, [sp,:128]
- mov r2, r10
-
- bl AES_decrypt
-
- vld1.8 {q0}, [sp,:128]
- veor q0, q0, q8
- vst1.8 {q0}, [r6]
- mov r3, r4
+ ldrb r1, [r8]
+ ldrb r0, [r7], #1
+ strb r1, [r8, #0x10]
+ strb r0, [r8], #1
+
+ subs r9, #1
+ bhi .Lxts_dec_steal
+
+ vld1.8 {q0}, [r6]
+ mov r0, sp
+ veor q0, q8
+ mov r1, sp
+ vst1.8 {q0}, [sp,:128]
+ mov r2, r10
+
+ bl AES_decrypt
+
+ vld1.8 {q0}, [sp,:128]
+ veor q0, q0, q8
+ vst1.8 {q0}, [r6]
+ mov r3, r4
#endif
.Lxts_dec_ret:
- bic r0, r3, #0xf
+ bic r0, r3, #0xf
vmov.i32 q0, #0
vmov.i32 q1, #0
#ifdef XTS_CHAIN_TWEAK
- ldr r1, [r3, #0x20+VFP_ABI_FRAME] @ chain tweak
+ ldr r1, [r3, #0x20+VFP_ABI_FRAME] @ chain tweak
#endif
-.Lxts_dec_bzero:@ wipe key schedule [if any]
- vstmia sp!, {q0,q1}
- cmp sp, r0
- bne .Lxts_dec_bzero
+.Lxts_dec_bzero: @ wipe key schedule [if any]
+ vstmia sp!, {q0-q1}
+ cmp sp, r0
+ bne .Lxts_dec_bzero
- mov sp, r3
+ mov sp, r3
#ifdef XTS_CHAIN_TWEAK
- vst1.8 {q8}, [r1]
+ vst1.8 {q8}, [r1]
#endif
VFP_ABI_POP
- ldmia sp!, {r4,r5,r6,r7,r8,r9,r10, pc} @ return
+ ldmia sp!, {r4-r10, pc} @ return
.size bsaes_xts_decrypt,.-bsaes_xts_decrypt
#endif
diff --git a/third_party/boringssl/linux-arm/crypto/bn/armv4-mont.S b/third_party/boringssl/linux-arm/crypto/bn/armv4-mont.S
index 81dcbeb..aafc450 100644
--- a/third_party/boringssl/linux-arm/crypto/bn/armv4-mont.S
+++ b/third_party/boringssl/linux-arm/crypto/bn/armv4-mont.S
@@ -3,30 +3,26 @@
.text
.code 32
-#if __ARM_MAX_ARCH__>=7
+#if __ARM_ARCH__>=7
.align 5
.LOPENSSL_armcap:
-.word OPENSSL_armcap_P-.Lbn_mul_mont
+.word OPENSSL_armcap_P-bn_mul_mont
#endif
-.globl bn_mul_mont
+.global bn_mul_mont
.hidden bn_mul_mont
.type bn_mul_mont,%function
.align 5
bn_mul_mont:
-.Lbn_mul_mont:
ldr ip,[sp,#4] @ load num
stmdb sp!,{r0,r2} @ sp points at argument block
-#if __ARM_MAX_ARCH__>=7
+#if __ARM_ARCH__>=7
tst ip,#7
bne .Lialu
adr r0,bn_mul_mont
ldr r2,.LOPENSSL_armcap
ldr r0,[r0,r2]
-#ifdef __APPLE__
- ldr r0,[r0]
-#endif
tst r0,#1 @ NEON available?
ldmia sp, {r0,r2}
beq .Lialu
@@ -41,7 +37,7 @@ bn_mul_mont:
addlt sp,sp,#2*4
blt .Labrt
- stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} @ save 10 registers
+ stmdb sp!,{r4-r12,lr} @ save 10 registers
mov r0,r0,lsl#2 @ rescale r0 for byte count
sub sp,sp,r0 @ alloca(4*num)
@@ -85,7 +81,7 @@ bn_mul_mont:
adc r14,r14,#0
str r12,[r0] @ tp[num-1]=
str r14,[r0,#4] @ tp[num]=
-
+
.Louter:
sub r7,r0,sp @ "original" r0-1 value
sub r1,r1,r7 @ "rewind" ap to &ap[1]
@@ -133,7 +129,7 @@ bn_mul_mont:
cmp r4,r7
bne .Louter
-
+
ldr r2,[r0,#12*4] @ pull rp
add r0,r0,#4 @ r0 to point at &tp[num]
sub r5,r0,sp @ "original" num value
@@ -163,40 +159,34 @@ bn_mul_mont:
bne .Lcopy
add sp,r0,#4 @ skip over tp[num+1]
- ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} @ restore registers
+ ldmia sp!,{r4-r12,lr} @ restore registers
add sp,sp,#2*4 @ skip over {r0,r2}
mov r0,#1
-.Labrt:
-#if __ARM_ARCH__>=5
- bx lr @ .word 0xe12fff1e
-#else
- tst lr,#1
+.Labrt: tst lr,#1
moveq pc,lr @ be binary compatible with V4, yet
-.word 0xe12fff1e @ interoperable with Thumb ISA:-)
-#endif
+ .word 0xe12fff1e @ interoperable with Thumb ISA:-)
.size bn_mul_mont,.-bn_mul_mont
-#if __ARM_MAX_ARCH__>=7
-.arch armv7-a
+#if __ARM_ARCH__>=7
.fpu neon
.type bn_mul8x_mont_neon,%function
.align 5
bn_mul8x_mont_neon:
mov ip,sp
- stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11}
- vstmdb sp!,{d8,d9,d10,d11,d12,d13,d14,d15} @ ABI specification says so
- ldmia ip,{r4,r5} @ load rest of parameter block
-
- sub r7,sp,#16
- vld1.32 {d28[0]}, [r2,:32]!
- sub r7,r7,r5,lsl#4
- vld1.32 {d0,d1,d2,d3}, [r1]! @ can't specify :32 :-(
- and r7,r7,#-64
- vld1.32 {d30[0]}, [r4,:32]
- mov sp,r7 @ alloca
- veor d8,d8,d8
- subs r8,r5,#8
- vzip.16 d28,d8
+ stmdb sp!,{r4-r11}
+ vstmdb sp!,{d8-d15} @ ABI specification says so
+ ldmia ip,{r4-r5} @ load rest of parameter block
+
+ sub r7,sp,#16
+ vld1.32 {d28[0]}, [r2,:32]!
+ sub r7,r7,r5,lsl#4
+ vld1.32 {d0-d3}, [r1]! @ can't specify :32 :-(
+ and r7,r7,#-64
+ vld1.32 {d30[0]}, [r4,:32]
+ mov sp,r7 @ alloca
+ veor d8,d8,d8
+ subs r8,r5,#8
+ vzip.16 d28,d8
vmull.u32 q6,d28,d0[0]
vmull.u32 q7,d28,d0[1]
@@ -205,14 +195,14 @@ bn_mul8x_mont_neon:
vmull.u32 q9,d28,d1[1]
vadd.u64 d10,d10,d12
- veor d8,d8,d8
+ veor d8,d8,d8
vmul.u32 d29,d10,d30
vmull.u32 q10,d28,d2[0]
- vld1.32 {d4,d5,d6,d7}, [r3]!
+ vld1.32 {d4-d7}, [r3]!
vmull.u32 q11,d28,d2[1]
vmull.u32 q12,d28,d3[0]
- vzip.16 d29,d8
+ vzip.16 d29,d8
vmull.u32 q13,d28,d3[1]
bne .LNEON_1st
@@ -220,35 +210,35 @@ bn_mul8x_mont_neon:
@ special case for num=8, everything is in register bank...
vmlal.u32 q6,d29,d4[0]
- sub r9,r5,#1
+ sub r9,r5,#1
vmlal.u32 q7,d29,d4[1]
vmlal.u32 q8,d29,d5[0]
vmlal.u32 q9,d29,d5[1]
vmlal.u32 q10,d29,d6[0]
- vmov q5,q6
+ vmov q5,q6
vmlal.u32 q11,d29,d6[1]
- vmov q6,q7
+ vmov q6,q7
vmlal.u32 q12,d29,d7[0]
- vmov q7,q8
+ vmov q7,q8
vmlal.u32 q13,d29,d7[1]
- vmov q8,q9
- vmov q9,q10
+ vmov q8,q9
+ vmov q9,q10
vshr.u64 d10,d10,#16
- vmov q10,q11
- vmov q11,q12
+ vmov q10,q11
+ vmov q11,q12
vadd.u64 d10,d10,d11
- vmov q12,q13
- veor q13,q13
+ vmov q12,q13
+ veor q13,q13
vshr.u64 d10,d10,#16
b .LNEON_outer8
.align 4
.LNEON_outer8:
- vld1.32 {d28[0]}, [r2,:32]!
- veor d8,d8,d8
- vzip.16 d28,d8
+ vld1.32 {d28[0]}, [r2,:32]!
+ veor d8,d8,d8
+ vzip.16 d28,d8
vadd.u64 d12,d12,d10
vmlal.u32 q6,d28,d0[0]
@@ -258,14 +248,14 @@ bn_mul8x_mont_neon:
vmlal.u32 q9,d28,d1[1]
vadd.u64 d10,d10,d12
- veor d8,d8,d8
- subs r9,r9,#1
+ veor d8,d8,d8
+ subs r9,r9,#1
vmul.u32 d29,d10,d30
vmlal.u32 q10,d28,d2[0]
vmlal.u32 q11,d28,d2[1]
vmlal.u32 q12,d28,d3[0]
- vzip.16 d29,d8
+ vzip.16 d29,d8
vmlal.u32 q13,d28,d3[1]
vmlal.u32 q6,d29,d4[0]
@@ -274,59 +264,59 @@ bn_mul8x_mont_neon:
vmlal.u32 q9,d29,d5[1]
vmlal.u32 q10,d29,d6[0]
- vmov q5,q6
+ vmov q5,q6
vmlal.u32 q11,d29,d6[1]
- vmov q6,q7
+ vmov q6,q7
vmlal.u32 q12,d29,d7[0]
- vmov q7,q8
+ vmov q7,q8
vmlal.u32 q13,d29,d7[1]
- vmov q8,q9
- vmov q9,q10
+ vmov q8,q9
+ vmov q9,q10
vshr.u64 d10,d10,#16
- vmov q10,q11
- vmov q11,q12
+ vmov q10,q11
+ vmov q11,q12
vadd.u64 d10,d10,d11
- vmov q12,q13
- veor q13,q13
+ vmov q12,q13
+ veor q13,q13
vshr.u64 d10,d10,#16
bne .LNEON_outer8
vadd.u64 d12,d12,d10
- mov r7,sp
+ mov r7,sp
vshr.u64 d10,d12,#16
- mov r8,r5
+ mov r8,r5
vadd.u64 d13,d13,d10
- add r6,sp,#16
+ add r6,sp,#16
vshr.u64 d10,d13,#16
- vzip.16 d12,d13
+ vzip.16 d12,d13
b .LNEON_tail2
.align 4
.LNEON_1st:
vmlal.u32 q6,d29,d4[0]
- vld1.32 {d0,d1,d2,d3}, [r1]!
+ vld1.32 {d0-d3}, [r1]!
vmlal.u32 q7,d29,d4[1]
- subs r8,r8,#8
+ subs r8,r8,#8
vmlal.u32 q8,d29,d5[0]
vmlal.u32 q9,d29,d5[1]
vmlal.u32 q10,d29,d6[0]
- vld1.32 {d4,d5}, [r3]!
+ vld1.32 {d4-d5}, [r3]!
vmlal.u32 q11,d29,d6[1]
- vst1.64 {q6,q7}, [r7,:256]!
+ vst1.64 {q6-q7}, [r7,:256]!
vmlal.u32 q12,d29,d7[0]
vmlal.u32 q13,d29,d7[1]
- vst1.64 {q8,q9}, [r7,:256]!
+ vst1.64 {q8-q9}, [r7,:256]!
vmull.u32 q6,d28,d0[0]
- vld1.32 {d6,d7}, [r3]!
+ vld1.32 {d6-d7}, [r3]!
vmull.u32 q7,d28,d0[1]
- vst1.64 {q10,q11}, [r7,:256]!
+ vst1.64 {q10-q11}, [r7,:256]!
vmull.u32 q8,d28,d1[0]
vmull.u32 q9,d28,d1[1]
- vst1.64 {q12,q13}, [r7,:256]!
+ vst1.64 {q12-q13}, [r7,:256]!
vmull.u32 q10,d28,d2[0]
vmull.u32 q11,d28,d2[1]
@@ -336,93 +326,93 @@ bn_mul8x_mont_neon:
bne .LNEON_1st
vmlal.u32 q6,d29,d4[0]
- add r6,sp,#16
+ add r6,sp,#16
vmlal.u32 q7,d29,d4[1]
- sub r1,r1,r5,lsl#2 @ rewind r1
+ sub r1,r1,r5,lsl#2 @ rewind r1
vmlal.u32 q8,d29,d5[0]
- vld1.64 {q5}, [sp,:128]
+ vld1.64 {q5}, [sp,:128]
vmlal.u32 q9,d29,d5[1]
- sub r9,r5,#1
+ sub r9,r5,#1
vmlal.u32 q10,d29,d6[0]
- vst1.64 {q6,q7}, [r7,:256]!
+ vst1.64 {q6-q7}, [r7,:256]!
vmlal.u32 q11,d29,d6[1]
vshr.u64 d10,d10,#16
- vld1.64 {q6}, [r6, :128]!
+ vld1.64 {q6}, [r6, :128]!
vmlal.u32 q12,d29,d7[0]
- vst1.64 {q8,q9}, [r7,:256]!
+ vst1.64 {q8-q9}, [r7,:256]!
vmlal.u32 q13,d29,d7[1]
- vst1.64 {q10,q11}, [r7,:256]!
+ vst1.64 {q10-q11}, [r7,:256]!
vadd.u64 d10,d10,d11
- veor q4,q4,q4
- vst1.64 {q12,q13}, [r7,:256]!
- vld1.64 {q7,q8}, [r6, :256]!
- vst1.64 {q4}, [r7,:128]
+ veor q4,q4,q4
+ vst1.64 {q12-q13}, [r7,:256]!
+ vld1.64 {q7-q8}, [r6, :256]!
+ vst1.64 {q4}, [r7,:128]
vshr.u64 d10,d10,#16
- b .LNEON_outer
+ b .LNEON_outer
.align 4
.LNEON_outer:
- vld1.32 {d28[0]}, [r2,:32]!
- sub r3,r3,r5,lsl#2 @ rewind r3
- vld1.32 {d0,d1,d2,d3}, [r1]!
- veor d8,d8,d8
- mov r7,sp
- vzip.16 d28,d8
- sub r8,r5,#8
+ vld1.32 {d28[0]}, [r2,:32]!
+ sub r3,r3,r5,lsl#2 @ rewind r3
+ vld1.32 {d0-d3}, [r1]!
+ veor d8,d8,d8
+ mov r7,sp
+ vzip.16 d28,d8
+ sub r8,r5,#8
vadd.u64 d12,d12,d10
vmlal.u32 q6,d28,d0[0]
- vld1.64 {q9,q10},[r6,:256]!
+ vld1.64 {q9-q10},[r6,:256]!
vmlal.u32 q7,d28,d0[1]
vmlal.u32 q8,d28,d1[0]
- vld1.64 {q11,q12},[r6,:256]!
+ vld1.64 {q11-q12},[r6,:256]!
vmlal.u32 q9,d28,d1[1]
vshl.i64 d10,d13,#16
- veor d8,d8,d8
+ veor d8,d8,d8
vadd.u64 d10,d10,d12
- vld1.64 {q13},[r6,:128]!
+ vld1.64 {q13},[r6,:128]!
vmul.u32 d29,d10,d30
vmlal.u32 q10,d28,d2[0]
- vld1.32 {d4,d5,d6,d7}, [r3]!
+ vld1.32 {d4-d7}, [r3]!
vmlal.u32 q11,d28,d2[1]
vmlal.u32 q12,d28,d3[0]
- vzip.16 d29,d8
+ vzip.16 d29,d8
vmlal.u32 q13,d28,d3[1]
.LNEON_inner:
vmlal.u32 q6,d29,d4[0]
- vld1.32 {d0,d1,d2,d3}, [r1]!
+ vld1.32 {d0-d3}, [r1]!
vmlal.u32 q7,d29,d4[1]
- subs r8,r8,#8
+ subs r8,r8,#8
vmlal.u32 q8,d29,d5[0]
vmlal.u32 q9,d29,d5[1]
- vst1.64 {q6,q7}, [r7,:256]!
+ vst1.64 {q6-q7}, [r7,:256]!
vmlal.u32 q10,d29,d6[0]
- vld1.64 {q6}, [r6, :128]!
+ vld1.64 {q6}, [r6, :128]!
vmlal.u32 q11,d29,d6[1]
- vst1.64 {q8,q9}, [r7,:256]!
+ vst1.64 {q8-q9}, [r7,:256]!
vmlal.u32 q12,d29,d7[0]
- vld1.64 {q7,q8}, [r6, :256]!
+ vld1.64 {q7-q8}, [r6, :256]!
vmlal.u32 q13,d29,d7[1]
- vst1.64 {q10,q11}, [r7,:256]!
+ vst1.64 {q10-q11}, [r7,:256]!
vmlal.u32 q6,d28,d0[0]
- vld1.64 {q9,q10}, [r6, :256]!
+ vld1.64 {q9-q10}, [r6, :256]!
vmlal.u32 q7,d28,d0[1]
- vst1.64 {q12,q13}, [r7,:256]!
+ vst1.64 {q12-q13}, [r7,:256]!
vmlal.u32 q8,d28,d1[0]
- vld1.64 {q11,q12}, [r6, :256]!
+ vld1.64 {q11-q12}, [r6, :256]!
vmlal.u32 q9,d28,d1[1]
- vld1.32 {d4,d5,d6,d7}, [r3]!
+ vld1.32 {d4-d7}, [r3]!
vmlal.u32 q10,d28,d2[0]
- vld1.64 {q13}, [r6, :128]!
+ vld1.64 {q13}, [r6, :128]!
vmlal.u32 q11,d28,d2[1]
vmlal.u32 q12,d28,d3[0]
vmlal.u32 q13,d28,d3[1]
@@ -430,97 +420,97 @@ bn_mul8x_mont_neon:
bne .LNEON_inner
vmlal.u32 q6,d29,d4[0]
- add r6,sp,#16
+ add r6,sp,#16
vmlal.u32 q7,d29,d4[1]
- sub r1,r1,r5,lsl#2 @ rewind r1
+ sub r1,r1,r5,lsl#2 @ rewind r1
vmlal.u32 q8,d29,d5[0]
- vld1.64 {q5}, [sp,:128]
+ vld1.64 {q5}, [sp,:128]
vmlal.u32 q9,d29,d5[1]
- subs r9,r9,#1
+ subs r9,r9,#1
vmlal.u32 q10,d29,d6[0]
- vst1.64 {q6,q7}, [r7,:256]!
+ vst1.64 {q6-q7}, [r7,:256]!
vmlal.u32 q11,d29,d6[1]
- vld1.64 {q6}, [r6, :128]!
+ vld1.64 {q6}, [r6, :128]!
vshr.u64 d10,d10,#16
- vst1.64 {q8,q9}, [r7,:256]!
+ vst1.64 {q8-q9}, [r7,:256]!
vmlal.u32 q12,d29,d7[0]
- vld1.64 {q7,q8}, [r6, :256]!
+ vld1.64 {q7-q8}, [r6, :256]!
vmlal.u32 q13,d29,d7[1]
- vst1.64 {q10,q11}, [r7,:256]!
+ vst1.64 {q10-q11}, [r7,:256]!
vadd.u64 d10,d10,d11
- vst1.64 {q12,q13}, [r7,:256]!
+ vst1.64 {q12-q13}, [r7,:256]!
vshr.u64 d10,d10,#16
bne .LNEON_outer
- mov r7,sp
- mov r8,r5
+ mov r7,sp
+ mov r8,r5
.LNEON_tail:
vadd.u64 d12,d12,d10
- vld1.64 {q9,q10}, [r6, :256]!
+ vld1.64 {q9-q10}, [r6, :256]!
vshr.u64 d10,d12,#16
vadd.u64 d13,d13,d10
- vld1.64 {q11,q12}, [r6, :256]!
+ vld1.64 {q11-q12}, [r6, :256]!
vshr.u64 d10,d13,#16
- vld1.64 {q13}, [r6, :128]!
- vzip.16 d12,d13
+ vld1.64 {q13}, [r6, :128]!
+ vzip.16 d12,d13
.LNEON_tail2:
vadd.u64 d14,d14,d10
- vst1.32 {d12[0]}, [r7, :32]!
+ vst1.32 {d12[0]}, [r7, :32]!
vshr.u64 d10,d14,#16
vadd.u64 d15,d15,d10
vshr.u64 d10,d15,#16
- vzip.16 d14,d15
+ vzip.16 d14,d15
vadd.u64 d16,d16,d10
- vst1.32 {d14[0]}, [r7, :32]!
+ vst1.32 {d14[0]}, [r7, :32]!
vshr.u64 d10,d16,#16
vadd.u64 d17,d17,d10
vshr.u64 d10,d17,#16
- vzip.16 d16,d17
+ vzip.16 d16,d17
vadd.u64 d18,d18,d10
- vst1.32 {d16[0]}, [r7, :32]!
+ vst1.32 {d16[0]}, [r7, :32]!
vshr.u64 d10,d18,#16
vadd.u64 d19,d19,d10
vshr.u64 d10,d19,#16
- vzip.16 d18,d19
+ vzip.16 d18,d19
vadd.u64 d20,d20,d10
- vst1.32 {d18[0]}, [r7, :32]!
+ vst1.32 {d18[0]}, [r7, :32]!
vshr.u64 d10,d20,#16
vadd.u64 d21,d21,d10
vshr.u64 d10,d21,#16
- vzip.16 d20,d21
+ vzip.16 d20,d21
vadd.u64 d22,d22,d10
- vst1.32 {d20[0]}, [r7, :32]!
+ vst1.32 {d20[0]}, [r7, :32]!
vshr.u64 d10,d22,#16
vadd.u64 d23,d23,d10
vshr.u64 d10,d23,#16
- vzip.16 d22,d23
+ vzip.16 d22,d23
vadd.u64 d24,d24,d10
- vst1.32 {d22[0]}, [r7, :32]!
+ vst1.32 {d22[0]}, [r7, :32]!
vshr.u64 d10,d24,#16
vadd.u64 d25,d25,d10
- vld1.64 {q6}, [r6, :128]!
+ vld1.64 {q6}, [r6, :128]!
vshr.u64 d10,d25,#16
- vzip.16 d24,d25
+ vzip.16 d24,d25
vadd.u64 d26,d26,d10
- vst1.32 {d24[0]}, [r7, :32]!
+ vst1.32 {d24[0]}, [r7, :32]!
vshr.u64 d10,d26,#16
vadd.u64 d27,d27,d10
- vld1.64 {q7,q8}, [r6, :256]!
+ vld1.64 {q7-q8}, [r6, :256]!
vshr.u64 d10,d27,#16
- vzip.16 d26,d27
- subs r8,r8,#8
- vst1.32 {d26[0]}, [r7, :32]!
+ vzip.16 d26,d27
+ subs r8,r8,#8
+ vst1.32 {d26[0]}, [r7, :32]!
bne .LNEON_tail
@@ -530,14 +520,14 @@ bn_mul8x_mont_neon:
add r2,sp,r5,lsl#2
.LNEON_sub:
- ldmia r1!, {r4,r5,r6,r7}
- ldmia r3!, {r8,r9,r10,r11}
+ ldmia r1!, {r4-r7}
+ ldmia r3!, {r8-r11}
sbcs r8, r4,r8
sbcs r9, r5,r9
sbcs r10,r6,r10
sbcs r11,r7,r11
teq r1,r2 @ preserves carry
- stmia r0!, {r8,r9,r10,r11}
+ stmia r0!, {r8-r11}
bne .LNEON_sub
ldr r10, [r1] @ load top-most bit
@@ -550,38 +540,37 @@ bn_mul8x_mont_neon:
sbcs r10,r10,#0 @ result is carry flag
.LNEON_copy_n_zap:
- ldmia r1!, {r4,r5,r6,r7}
- ldmia r0, {r8,r9,r10,r11}
+ ldmia r1!, {r4-r7}
+ ldmia r0, {r8-r11}
movcc r8, r4
- vst1.64 {q0,q1}, [r3,:256]! @ wipe
+ vst1.64 {q0-q1}, [r3,:256]! @ wipe
movcc r9, r5
movcc r10,r6
- vst1.64 {q0,q1}, [r3,:256]! @ wipe
+ vst1.64 {q0-q1}, [r3,:256]! @ wipe
movcc r11,r7
- ldmia r1, {r4,r5,r6,r7}
- stmia r0!, {r8,r9,r10,r11}
+ ldmia r1, {r4-r7}
+ stmia r0!, {r8-r11}
sub r1,r1,#16
- ldmia r0, {r8,r9,r10,r11}
+ ldmia r0, {r8-r11}
movcc r8, r4
- vst1.64 {q0,q1}, [r1,:256]! @ wipe
+ vst1.64 {q0-q1}, [r1,:256]! @ wipe
movcc r9, r5
movcc r10,r6
- vst1.64 {q0,q1}, [r3,:256]! @ wipe
+ vst1.64 {q0-q1}, [r3,:256]! @ wipe
movcc r11,r7
teq r1,r2 @ preserves carry
- stmia r0!, {r8,r9,r10,r11}
+ stmia r0!, {r8-r11}
bne .LNEON_copy_n_zap
sub sp,ip,#96
- vldmia sp!,{d8,d9,d10,d11,d12,d13,d14,d15}
- ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11}
- bx lr @ .word 0xe12fff1e
+ vldmia sp!,{d8-d15}
+ ldmia sp!,{r4-r11}
+ .word 0xe12fff1e
.size bn_mul8x_mont_neon,.-bn_mul8x_mont_neon
#endif
-.byte 77,111,110,116,103,111,109,101,114,121,32,109,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,65,82,77,118,52,47,78,69,79,78,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
-.align 2
+.asciz "Montgomery multiplication for ARMv4/NEON, CRYPTOGAMS by <appro@openssl.org>"
.align 2
-#if __ARM_MAX_ARCH__>=7
+#if __ARM_ARCH__>=7
.comm OPENSSL_armcap_P,4,4
.hidden OPENSSL_armcap_P
#endif
diff --git a/third_party/boringssl/linux-arm/crypto/modes/ghash-armv4.S b/third_party/boringssl/linux-arm/crypto/modes/ghash-armv4.S
index b6c7e9b..8c81975 100644
--- a/third_party/boringssl/linux-arm/crypto/modes/ghash-armv4.S
+++ b/third_party/boringssl/linux-arm/crypto/modes/ghash-armv4.S
@@ -1,16 +1,11 @@
#if defined(__arm__)
#include "arm_arch.h"
-.syntax unified
+.syntax unified
.text
.code 32
-#ifdef __APPLE__
-#define ldrplb ldrbpl
-#define ldrneb ldrbne
-#endif
-
.type rem_4bit,%object
.align 5
rem_4bit:
@@ -28,17 +23,17 @@ rem_4bit_get:
nop
.size rem_4bit_get,.-rem_4bit_get
-.globl gcm_ghash_4bit
+.global gcm_ghash_4bit
.hidden gcm_ghash_4bit
.type gcm_ghash_4bit,%function
gcm_ghash_4bit:
sub r12,pc,#8
add r3,r2,r3 @ r3 to point at the end
- stmdb sp!,{r3,r4,r5,r6,r7,r8,r9,r10,r11,lr} @ save r3/end too
+ stmdb sp!,{r3-r11,lr} @ save r3/end too
sub r12,r12,#48 @ &rem_4bit
- ldmia r12,{r4,r5,r6,r7,r8,r9,r10,r11} @ copy rem_4bit ...
- stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11} @ ... to stack
+ ldmia r12,{r4-r11} @ copy rem_4bit ...
+ stmdb sp!,{r4-r11} @ ... to stack
ldrb r12,[r2,#15]
ldrb r14,[r0,#15]
@@ -49,12 +44,12 @@ gcm_ghash_4bit:
mov r3,#14
add r7,r1,r12,lsl#4
- ldmia r7,{r4,r5,r6,r7} @ load Htbl[nlo]
+ ldmia r7,{r4-r7} @ load Htbl[nlo]
add r11,r1,r14
ldrb r12,[r2,#14]
and r14,r4,#0xf @ rem
- ldmia r11,{r8,r9,r10,r11} @ load Htbl[nhi]
+ ldmia r11,{r8-r11} @ load Htbl[nhi]
add r14,r14,r14
eor r4,r8,r4,lsr#4
ldrh r8,[sp,r14] @ rem_4bit[rem]
@@ -75,7 +70,7 @@ gcm_ghash_4bit:
and r12,r4,#0xf @ rem
subs r3,r3,#1
add r12,r12,r12
- ldmia r11,{r8,r9,r10,r11} @ load Htbl[nlo]
+ ldmia r11,{r8-r11} @ load Htbl[nlo]
eor r4,r8,r4,lsr#4
eor r4,r4,r5,lsl#28
eor r5,r9,r5,lsr#4
@@ -90,7 +85,7 @@ gcm_ghash_4bit:
and r14,r4,#0xf @ rem
eor r7,r7,r8,lsl#16 @ ^= rem_4bit[rem]
add r14,r14,r14
- ldmia r11,{r8,r9,r10,r11} @ load Htbl[nhi]
+ ldmia r11,{r8-r11} @ load Htbl[nhi]
eor r4,r8,r4,lsr#4
ldrbpl r8,[r0,r3]
eor r4,r4,r5,lsl#28
@@ -153,7 +148,7 @@ gcm_ghash_4bit:
strb r10,[r0,#4+1]
strb r11,[r0,#4]
#endif
-
+
#if __ARM_ARCH__>=7 && defined(__ARMEL__)
rev r7,r7
str r7,[r0,#0]
@@ -168,25 +163,25 @@ gcm_ghash_4bit:
strb r10,[r0,#0+1]
strb r11,[r0,#0]
#endif
-
+
bne .Louter
add sp,sp,#36
#if __ARM_ARCH__>=5
- ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,pc}
+ ldmia sp!,{r4-r11,pc}
#else
- ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,lr}
+ ldmia sp!,{r4-r11,lr}
tst lr,#1
moveq pc,lr @ be binary compatible with V4, yet
-.word 0xe12fff1e @ interoperable with Thumb ISA:-)
+ .word 0xe12fff1e @ interoperable with Thumb ISA:-)
#endif
.size gcm_ghash_4bit,.-gcm_ghash_4bit
-.globl gcm_gmult_4bit
+.global gcm_gmult_4bit
.hidden gcm_gmult_4bit
.type gcm_gmult_4bit,%function
gcm_gmult_4bit:
- stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,lr}
+ stmdb sp!,{r4-r11,lr}
ldrb r12,[r0,#15]
b rem_4bit_get
.Lrem_4bit_got:
@@ -195,12 +190,12 @@ gcm_gmult_4bit:
mov r3,#14
add r7,r1,r12,lsl#4
- ldmia r7,{r4,r5,r6,r7} @ load Htbl[nlo]
+ ldmia r7,{r4-r7} @ load Htbl[nlo]
ldrb r12,[r0,#14]
add r11,r1,r14
and r14,r4,#0xf @ rem
- ldmia r11,{r8,r9,r10,r11} @ load Htbl[nhi]
+ ldmia r11,{r8-r11} @ load Htbl[nhi]
add r14,r14,r14
eor r4,r8,r4,lsr#4
ldrh r8,[r2,r14] @ rem_4bit[rem]
@@ -219,7 +214,7 @@ gcm_gmult_4bit:
and r12,r4,#0xf @ rem
subs r3,r3,#1
add r12,r12,r12
- ldmia r11,{r8,r9,r10,r11} @ load Htbl[nlo]
+ ldmia r11,{r8-r11} @ load Htbl[nlo]
eor r4,r8,r4,lsr#4
eor r4,r4,r5,lsl#28
eor r5,r9,r5,lsr#4
@@ -234,7 +229,7 @@ gcm_gmult_4bit:
and r14,r4,#0xf @ rem
eor r7,r7,r8,lsl#16 @ ^= rem_4bit[rem]
add r14,r14,r14
- ldmia r11,{r8,r9,r10,r11} @ load Htbl[nhi]
+ ldmia r11,{r8-r11} @ load Htbl[nhi]
eor r4,r8,r4,lsr#4
eor r4,r4,r5,lsl#28
eor r5,r9,r5,lsr#4
@@ -261,7 +256,7 @@ gcm_gmult_4bit:
strb r10,[r0,#12+1]
strb r11,[r0,#12]
#endif
-
+
#if __ARM_ARCH__>=7 && defined(__ARMEL__)
rev r5,r5
str r5,[r0,#8]
@@ -276,7 +271,7 @@ gcm_gmult_4bit:
strb r10,[r0,#8+1]
strb r11,[r0,#8]
#endif
-
+
#if __ARM_ARCH__>=7 && defined(__ARMEL__)
rev r6,r6
str r6,[r0,#4]
@@ -291,7 +286,7 @@ gcm_gmult_4bit:
strb r10,[r0,#4+1]
strb r11,[r0,#4]
#endif
-
+
#if __ARM_ARCH__>=7 && defined(__ARMEL__)
rev r7,r7
str r7,[r0,#0]
@@ -306,234 +301,232 @@ gcm_gmult_4bit:
strb r10,[r0,#0+1]
strb r11,[r0,#0]
#endif
-
+
#if __ARM_ARCH__>=5
- ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,pc}
+ ldmia sp!,{r4-r11,pc}
#else
- ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,lr}
+ ldmia sp!,{r4-r11,lr}
tst lr,#1
moveq pc,lr @ be binary compatible with V4, yet
-.word 0xe12fff1e @ interoperable with Thumb ISA:-)
+ .word 0xe12fff1e @ interoperable with Thumb ISA:-)
#endif
.size gcm_gmult_4bit,.-gcm_gmult_4bit
-#if __ARM_MAX_ARCH__>=7
-.arch armv7-a
+#if __ARM_ARCH__>=7
.fpu neon
-.globl gcm_init_neon
+.global gcm_init_neon
.hidden gcm_init_neon
.type gcm_init_neon,%function
.align 4
gcm_init_neon:
- vld1.64 d7,[r1]! @ load H
- vmov.i8 q8,#0xe1
- vld1.64 d6,[r1]
+ vld1.64 d7,[r1,:64]! @ load H
+ vmov.i8 q8,#0xe1
+ vld1.64 d6,[r1,:64]
vshl.i64 d17,#57
vshr.u64 d16,#63 @ t0=0xc2....01
- vdup.8 q9,d7[7]
+ vdup.8 q9,d7[7]
vshr.u64 d26,d6,#63
- vshr.s8 q9,#7 @ broadcast carry bit
+ vshr.s8 q9,#7 @ broadcast carry bit
vshl.i64 q3,q3,#1
- vand q8,q8,q9
- vorr d7,d26 @ H<<<=1
- veor q3,q3,q8 @ twisted H
- vstmia r0,{q3}
+ vand q8,q8,q9
+ vorr d7,d26 @ H<<<=1
+ veor q3,q3,q8 @ twisted H
+ vstmia r0,{q3}
- bx lr @ bx lr
+ .word 0xe12fff1e
.size gcm_init_neon,.-gcm_init_neon
-.globl gcm_gmult_neon
+.global gcm_gmult_neon
.hidden gcm_gmult_neon
.type gcm_gmult_neon,%function
.align 4
gcm_gmult_neon:
- vld1.64 d7,[r0]! @ load Xi
- vld1.64 d6,[r0]!
+ vld1.64 d7,[r0,:64]! @ load Xi
+ vld1.64 d6,[r0,:64]!
vmov.i64 d29,#0x0000ffffffffffff
- vldmia r1,{d26,d27} @ load twisted H
+ vldmia r1,{d26-d27} @ load twisted H
vmov.i64 d30,#0x00000000ffffffff
#ifdef __ARMEL__
vrev64.8 q3,q3
#endif
vmov.i64 d31,#0x000000000000ffff
- veor d28,d26,d27 @ Karatsuba pre-processing
- mov r3,#16
- b .Lgmult_neon
+ veor d28,d26,d27 @ Karatsuba pre-processing
+ mov r3,#16
+ b .Lgmult_neon
.size gcm_gmult_neon,.-gcm_gmult_neon
-.globl gcm_ghash_neon
+.global gcm_ghash_neon
.hidden gcm_ghash_neon
.type gcm_ghash_neon,%function
.align 4
gcm_ghash_neon:
- vld1.64 d1,[r0]! @ load Xi
- vld1.64 d0,[r0]!
+ vld1.64 d1,[r0,:64]! @ load Xi
+ vld1.64 d0,[r0,:64]!
vmov.i64 d29,#0x0000ffffffffffff
- vldmia r1,{d26,d27} @ load twisted H
+ vldmia r1,{d26-d27} @ load twisted H
vmov.i64 d30,#0x00000000ffffffff
#ifdef __ARMEL__
vrev64.8 q0,q0
#endif
vmov.i64 d31,#0x000000000000ffff
- veor d28,d26,d27 @ Karatsuba pre-processing
+ veor d28,d26,d27 @ Karatsuba pre-processing
.Loop_neon:
- vld1.64 d7,[r2]! @ load inp
- vld1.64 d6,[r2]!
+ vld1.64 d7,[r2]! @ load inp
+ vld1.64 d6,[r2]!
#ifdef __ARMEL__
vrev64.8 q3,q3
#endif
- veor q3,q0 @ inp^=Xi
+ veor q3,q0 @ inp^=Xi
.Lgmult_neon:
- vext.8 d16, d26, d26, #1 @ A1
+ vext.8 d16, d26, d26, #1 @ A1
vmull.p8 q8, d16, d6 @ F = A1*B
- vext.8 d0, d6, d6, #1 @ B1
+ vext.8 d0, d6, d6, #1 @ B1
vmull.p8 q0, d26, d0 @ E = A*B1
- vext.8 d18, d26, d26, #2 @ A2
+ vext.8 d18, d26, d26, #2 @ A2
vmull.p8 q9, d18, d6 @ H = A2*B
- vext.8 d22, d6, d6, #2 @ B2
+ vext.8 d22, d6, d6, #2 @ B2
vmull.p8 q11, d26, d22 @ G = A*B2
- vext.8 d20, d26, d26, #3 @ A3
- veor q8, q8, q0 @ L = E + F
+ vext.8 d20, d26, d26, #3 @ A3
+ veor q8, q8, q0 @ L = E + F
vmull.p8 q10, d20, d6 @ J = A3*B
- vext.8 d0, d6, d6, #3 @ B3
- veor q9, q9, q11 @ M = G + H
+ vext.8 d0, d6, d6, #3 @ B3
+ veor q9, q9, q11 @ M = G + H
vmull.p8 q0, d26, d0 @ I = A*B3
- veor d16, d16, d17 @ t0 = (L) (P0 + P1) << 8
- vand d17, d17, d29
- vext.8 d22, d6, d6, #4 @ B4
- veor d18, d18, d19 @ t1 = (M) (P2 + P3) << 16
- vand d19, d19, d30
+ veor d16, d16, d17 @ t0 = (L) (P0 + P1) << 8
+ vand d17, d17, d29
+ vext.8 d22, d6, d6, #4 @ B4
+ veor d18, d18, d19 @ t1 = (M) (P2 + P3) << 16
+ vand d19, d19, d30
vmull.p8 q11, d26, d22 @ K = A*B4
- veor q10, q10, q0 @ N = I + J
- veor d16, d16, d17
- veor d18, d18, d19
- veor d20, d20, d21 @ t2 = (N) (P4 + P5) << 24
- vand d21, d21, d31
- vext.8 q8, q8, q8, #15
- veor d22, d22, d23 @ t3 = (K) (P6 + P7) << 32
+ veor q10, q10, q0 @ N = I + J
+ veor d16, d16, d17
+ veor d18, d18, d19
+ veor d20, d20, d21 @ t2 = (N) (P4 + P5) << 24
+ vand d21, d21, d31
+ vext.8 q8, q8, q8, #15
+ veor d22, d22, d23 @ t3 = (K) (P6 + P7) << 32
vmov.i64 d23, #0
- vext.8 q9, q9, q9, #14
- veor d20, d20, d21
+ vext.8 q9, q9, q9, #14
+ veor d20, d20, d21
vmull.p8 q0, d26, d6 @ D = A*B
- vext.8 q11, q11, q11, #12
- vext.8 q10, q10, q10, #13
- veor q8, q8, q9
- veor q10, q10, q11
- veor q0, q0, q8
- veor q0, q0, q10
- veor d6,d6,d7 @ Karatsuba pre-processing
- vext.8 d16, d28, d28, #1 @ A1
+ vext.8 q11, q11, q11, #12
+ vext.8 q10, q10, q10, #13
+ veor q8, q8, q9
+ veor q10, q10, q11
+ veor q0, q0, q8
+ veor q0, q0, q10
+ veor d6,d6,d7 @ Karatsuba pre-processing
+ vext.8 d16, d28, d28, #1 @ A1
vmull.p8 q8, d16, d6 @ F = A1*B
- vext.8 d2, d6, d6, #1 @ B1
+ vext.8 d2, d6, d6, #1 @ B1
vmull.p8 q1, d28, d2 @ E = A*B1
- vext.8 d18, d28, d28, #2 @ A2
+ vext.8 d18, d28, d28, #2 @ A2
vmull.p8 q9, d18, d6 @ H = A2*B
- vext.8 d22, d6, d6, #2 @ B2
+ vext.8 d22, d6, d6, #2 @ B2
vmull.p8 q11, d28, d22 @ G = A*B2
- vext.8 d20, d28, d28, #3 @ A3
- veor q8, q8, q1 @ L = E + F
+ vext.8 d20, d28, d28, #3 @ A3
+ veor q8, q8, q1 @ L = E + F
vmull.p8 q10, d20, d6 @ J = A3*B
- vext.8 d2, d6, d6, #3 @ B3
- veor q9, q9, q11 @ M = G + H
+ vext.8 d2, d6, d6, #3 @ B3
+ veor q9, q9, q11 @ M = G + H
vmull.p8 q1, d28, d2 @ I = A*B3
- veor d16, d16, d17 @ t0 = (L) (P0 + P1) << 8
- vand d17, d17, d29
- vext.8 d22, d6, d6, #4 @ B4
- veor d18, d18, d19 @ t1 = (M) (P2 + P3) << 16
- vand d19, d19, d30
+ veor d16, d16, d17 @ t0 = (L) (P0 + P1) << 8
+ vand d17, d17, d29
+ vext.8 d22, d6, d6, #4 @ B4
+ veor d18, d18, d19 @ t1 = (M) (P2 + P3) << 16
+ vand d19, d19, d30
vmull.p8 q11, d28, d22 @ K = A*B4
- veor q10, q10, q1 @ N = I + J
- veor d16, d16, d17
- veor d18, d18, d19
- veor d20, d20, d21 @ t2 = (N) (P4 + P5) << 24
- vand d21, d21, d31
- vext.8 q8, q8, q8, #15
- veor d22, d22, d23 @ t3 = (K) (P6 + P7) << 32
+ veor q10, q10, q1 @ N = I + J
+ veor d16, d16, d17
+ veor d18, d18, d19
+ veor d20, d20, d21 @ t2 = (N) (P4 + P5) << 24
+ vand d21, d21, d31
+ vext.8 q8, q8, q8, #15
+ veor d22, d22, d23 @ t3 = (K) (P6 + P7) << 32
vmov.i64 d23, #0
- vext.8 q9, q9, q9, #14
- veor d20, d20, d21
+ vext.8 q9, q9, q9, #14
+ veor d20, d20, d21
vmull.p8 q1, d28, d6 @ D = A*B
- vext.8 q11, q11, q11, #12
- vext.8 q10, q10, q10, #13
- veor q8, q8, q9
- veor q10, q10, q11
- veor q1, q1, q8
- veor q1, q1, q10
- vext.8 d16, d27, d27, #1 @ A1
+ vext.8 q11, q11, q11, #12
+ vext.8 q10, q10, q10, #13
+ veor q8, q8, q9
+ veor q10, q10, q11
+ veor q1, q1, q8
+ veor q1, q1, q10
+ vext.8 d16, d27, d27, #1 @ A1
vmull.p8 q8, d16, d7 @ F = A1*B
- vext.8 d4, d7, d7, #1 @ B1
+ vext.8 d4, d7, d7, #1 @ B1
vmull.p8 q2, d27, d4 @ E = A*B1
- vext.8 d18, d27, d27, #2 @ A2
+ vext.8 d18, d27, d27, #2 @ A2
vmull.p8 q9, d18, d7 @ H = A2*B
- vext.8 d22, d7, d7, #2 @ B2
+ vext.8 d22, d7, d7, #2 @ B2
vmull.p8 q11, d27, d22 @ G = A*B2
- vext.8 d20, d27, d27, #3 @ A3
- veor q8, q8, q2 @ L = E + F
+ vext.8 d20, d27, d27, #3 @ A3
+ veor q8, q8, q2 @ L = E + F
vmull.p8 q10, d20, d7 @ J = A3*B
- vext.8 d4, d7, d7, #3 @ B3
- veor q9, q9, q11 @ M = G + H
+ vext.8 d4, d7, d7, #3 @ B3
+ veor q9, q9, q11 @ M = G + H
vmull.p8 q2, d27, d4 @ I = A*B3
- veor d16, d16, d17 @ t0 = (L) (P0 + P1) << 8
- vand d17, d17, d29
- vext.8 d22, d7, d7, #4 @ B4
- veor d18, d18, d19 @ t1 = (M) (P2 + P3) << 16
- vand d19, d19, d30
+ veor d16, d16, d17 @ t0 = (L) (P0 + P1) << 8
+ vand d17, d17, d29
+ vext.8 d22, d7, d7, #4 @ B4
+ veor d18, d18, d19 @ t1 = (M) (P2 + P3) << 16
+ vand d19, d19, d30
vmull.p8 q11, d27, d22 @ K = A*B4
- veor q10, q10, q2 @ N = I + J
- veor d16, d16, d17
- veor d18, d18, d19
- veor d20, d20, d21 @ t2 = (N) (P4 + P5) << 24
- vand d21, d21, d31
- vext.8 q8, q8, q8, #15
- veor d22, d22, d23 @ t3 = (K) (P6 + P7) << 32
+ veor q10, q10, q2 @ N = I + J
+ veor d16, d16, d17
+ veor d18, d18, d19
+ veor d20, d20, d21 @ t2 = (N) (P4 + P5) << 24
+ vand d21, d21, d31
+ vext.8 q8, q8, q8, #15
+ veor d22, d22, d23 @ t3 = (K) (P6 + P7) << 32
vmov.i64 d23, #0
- vext.8 q9, q9, q9, #14
- veor d20, d20, d21
+ vext.8 q9, q9, q9, #14
+ veor d20, d20, d21
vmull.p8 q2, d27, d7 @ D = A*B
- vext.8 q11, q11, q11, #12
- vext.8 q10, q10, q10, #13
- veor q8, q8, q9
- veor q10, q10, q11
- veor q2, q2, q8
- veor q2, q2, q10
- veor q1,q1,q0 @ Karatsuba post-processing
- veor q1,q1,q2
- veor d1,d1,d2
- veor d4,d4,d3 @ Xh|Xl - 256-bit result
+ vext.8 q11, q11, q11, #12
+ vext.8 q10, q10, q10, #13
+ veor q8, q8, q9
+ veor q10, q10, q11
+ veor q2, q2, q8
+ veor q2, q2, q10
+ veor q1,q1,q0 @ Karatsuba post-processing
+ veor q1,q1,q2
+ veor d1,d1,d2
+ veor d4,d4,d3 @ Xh|Xl - 256-bit result
@ equivalent of reduction_avx from ghash-x86_64.pl
vshl.i64 q9,q0,#57 @ 1st phase
vshl.i64 q10,q0,#62
- veor q10,q10,q9 @
+ veor q10,q10,q9 @
vshl.i64 q9,q0,#63
- veor q10, q10, q9 @
- veor d1,d1,d20 @
- veor d4,d4,d21
+ veor q10, q10, q9 @
+ veor d1,d1,d20 @
+ veor d4,d4,d21
vshr.u64 q10,q0,#1 @ 2nd phase
- veor q2,q2,q0
- veor q0,q0,q10 @
+ veor q2,q2,q0
+ veor q0,q0,q10 @
vshr.u64 q10,q10,#6
vshr.u64 q0,q0,#1 @
- veor q0,q0,q2 @
- veor q0,q0,q10 @
+ veor q0,q0,q2 @
+ veor q0,q0,q10 @
- subs r3,#16
- bne .Loop_neon
+ subs r3,#16
+ bne .Loop_neon
#ifdef __ARMEL__
vrev64.8 q0,q0
#endif
- sub r0,#16
- vst1.64 d1,[r0]! @ write out Xi
- vst1.64 d0,[r0]
+ sub r0,#16
+ vst1.64 d1,[r0,:64]! @ write out Xi
+ vst1.64 d0,[r0,:64]
- bx lr @ bx lr
+ .word 0xe12fff1e
.size gcm_ghash_neon,.-gcm_ghash_neon
#endif
-.byte 71,72,65,83,72,32,102,111,114,32,65,82,77,118,52,47,78,69,79,78,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
-.align 2
-.align 2
+.asciz "GHASH for ARMv4/NEON, CRYPTOGAMS by <appro@openssl.org>"
+.align 2
#endif
diff --git a/third_party/boringssl/linux-arm/crypto/sha/sha1-armv4-large.S b/third_party/boringssl/linux-arm/crypto/sha/sha1-armv4-large.S
index 52c99bf..5abc328 100644
--- a/third_party/boringssl/linux-arm/crypto/sha/sha1-armv4-large.S
+++ b/third_party/boringssl/linux-arm/crypto/sha/sha1-armv4-large.S
@@ -3,7 +3,7 @@
.text
.code 32
-.globl sha1_block_data_order
+.global sha1_block_data_order
.type sha1_block_data_order,%function
.align 5
@@ -12,15 +12,12 @@ sha1_block_data_order:
sub r3,pc,#8 @ sha1_block_data_order
ldr r12,.LOPENSSL_armcap
ldr r12,[r3,r12] @ OPENSSL_armcap_P
-#ifdef __APPLE__
- ldr r12,[r12]
-#endif
tst r12,#ARMV8_SHA1
bne .LARMv8
tst r12,#ARMV7_NEON
bne .LNEON
#endif
- stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr}
+ stmdb sp!,{r4-r12,lr}
add r2,r1,r2,lsl#6 @ r2 to point at the end of r1
ldmia r0,{r3,r4,r5,r6,r7}
.Lloop:
@@ -196,7 +193,7 @@ sha1_block_data_order:
add r6,r6,r7,ror#27 @ E+=ROR(A,27)
eor r9,r9,r11,ror#31
str r9,[r14,#-4]!
- and r10,r3,r10,ror#2 @ F_xx_xx
+ and r10,r3,r10,ror#2 @ F_xx_xx
@ F_xx_xx
add r6,r6,r9 @ E+=X[i]
eor r10,r10,r5,ror#2 @ F_00_19(B,C,D)
@@ -213,7 +210,7 @@ sha1_block_data_order:
add r5,r5,r6,ror#27 @ E+=ROR(A,27)
eor r9,r9,r11,ror#31
str r9,[r14,#-4]!
- and r10,r7,r10,ror#2 @ F_xx_xx
+ and r10,r7,r10,ror#2 @ F_xx_xx
@ F_xx_xx
add r5,r5,r9 @ E+=X[i]
eor r10,r10,r4,ror#2 @ F_00_19(B,C,D)
@@ -230,7 +227,7 @@ sha1_block_data_order:
add r4,r4,r5,ror#27 @ E+=ROR(A,27)
eor r9,r9,r11,ror#31
str r9,[r14,#-4]!
- and r10,r6,r10,ror#2 @ F_xx_xx
+ and r10,r6,r10,ror#2 @ F_xx_xx
@ F_xx_xx
add r4,r4,r9 @ E+=X[i]
eor r10,r10,r3,ror#2 @ F_00_19(B,C,D)
@@ -247,7 +244,7 @@ sha1_block_data_order:
add r3,r3,r4,ror#27 @ E+=ROR(A,27)
eor r9,r9,r11,ror#31
str r9,[r14,#-4]!
- and r10,r5,r10,ror#2 @ F_xx_xx
+ and r10,r5,r10,ror#2 @ F_xx_xx
@ F_xx_xx
add r3,r3,r9 @ E+=X[i]
eor r10,r10,r7,ror#2 @ F_00_19(B,C,D)
@@ -268,7 +265,7 @@ sha1_block_data_order:
add r7,r7,r3,ror#27 @ E+=ROR(A,27)
eor r9,r9,r11,ror#31
str r9,[r14,#-4]!
- eor r10,r4,r10,ror#2 @ F_xx_xx
+ eor r10,r4,r10,ror#2 @ F_xx_xx
@ F_xx_xx
add r7,r7,r9 @ E+=X[i]
add r7,r7,r10 @ E+=F_20_39(B,C,D)
@@ -284,7 +281,7 @@ sha1_block_data_order:
add r6,r6,r7,ror#27 @ E+=ROR(A,27)
eor r9,r9,r11,ror#31
str r9,[r14,#-4]!
- eor r10,r3,r10,ror#2 @ F_xx_xx
+ eor r10,r3,r10,ror#2 @ F_xx_xx
@ F_xx_xx
add r6,r6,r9 @ E+=X[i]
add r6,r6,r10 @ E+=F_20_39(B,C,D)
@@ -300,7 +297,7 @@ sha1_block_data_order:
add r5,r5,r6,ror#27 @ E+=ROR(A,27)
eor r9,r9,r11,ror#31
str r9,[r14,#-4]!
- eor r10,r7,r10,ror#2 @ F_xx_xx
+ eor r10,r7,r10,ror#2 @ F_xx_xx
@ F_xx_xx
add r5,r5,r9 @ E+=X[i]
add r5,r5,r10 @ E+=F_20_39(B,C,D)
@@ -316,7 +313,7 @@ sha1_block_data_order:
add r4,r4,r5,ror#27 @ E+=ROR(A,27)
eor r9,r9,r11,ror#31
str r9,[r14,#-4]!
- eor r10,r6,r10,ror#2 @ F_xx_xx
+ eor r10,r6,r10,ror#2 @ F_xx_xx
@ F_xx_xx
add r4,r4,r9 @ E+=X[i]
add r4,r4,r10 @ E+=F_20_39(B,C,D)
@@ -332,7 +329,7 @@ sha1_block_data_order:
add r3,r3,r4,ror#27 @ E+=ROR(A,27)
eor r9,r9,r11,ror#31
str r9,[r14,#-4]!
- eor r10,r5,r10,ror#2 @ F_xx_xx
+ eor r10,r5,r10,ror#2 @ F_xx_xx
@ F_xx_xx
add r3,r3,r9 @ E+=X[i]
add r3,r3,r10 @ E+=F_20_39(B,C,D)
@@ -355,8 +352,8 @@ sha1_block_data_order:
add r7,r7,r3,ror#27 @ E+=ROR(A,27)
eor r9,r9,r11,ror#31
str r9,[r14,#-4]!
- and r10,r4,r10,ror#2 @ F_xx_xx
- and r11,r5,r6 @ F_xx_xx
+ and r10,r4,r10,ror#2 @ F_xx_xx
+ and r11,r5,r6 @ F_xx_xx
add r7,r7,r9 @ E+=X[i]
add r7,r7,r10 @ E+=F_40_59(B,C,D)
add r7,r7,r11,ror#2
@@ -372,8 +369,8 @@ sha1_block_data_order:
add r6,r6,r7,ror#27 @ E+=ROR(A,27)
eor r9,r9,r11,ror#31
str r9,[r14,#-4]!
- and r10,r3,r10,ror#2 @ F_xx_xx
- and r11,r4,r5 @ F_xx_xx
+ and r10,r3,r10,ror#2 @ F_xx_xx
+ and r11,r4,r5 @ F_xx_xx
add r6,r6,r9 @ E+=X[i]
add r6,r6,r10 @ E+=F_40_59(B,C,D)
add r6,r6,r11,ror#2
@@ -389,8 +386,8 @@ sha1_block_data_order:
add r5,r5,r6,ror#27 @ E+=ROR(A,27)
eor r9,r9,r11,ror#31
str r9,[r14,#-4]!
- and r10,r7,r10,ror#2 @ F_xx_xx
- and r11,r3,r4 @ F_xx_xx
+ and r10,r7,r10,ror#2 @ F_xx_xx
+ and r11,r3,r4 @ F_xx_xx
add r5,r5,r9 @ E+=X[i]
add r5,r5,r10 @ E+=F_40_59(B,C,D)
add r5,r5,r11,ror#2
@@ -406,8 +403,8 @@ sha1_block_data_order:
add r4,r4,r5,ror#27 @ E+=ROR(A,27)
eor r9,r9,r11,ror#31
str r9,[r14,#-4]!
- and r10,r6,r10,ror#2 @ F_xx_xx
- and r11,r7,r3 @ F_xx_xx
+ and r10,r6,r10,ror#2 @ F_xx_xx
+ and r11,r7,r3 @ F_xx_xx
add r4,r4,r9 @ E+=X[i]
add r4,r4,r10 @ E+=F_40_59(B,C,D)
add r4,r4,r11,ror#2
@@ -423,8 +420,8 @@ sha1_block_data_order:
add r3,r3,r4,ror#27 @ E+=ROR(A,27)
eor r9,r9,r11,ror#31
str r9,[r14,#-4]!
- and r10,r5,r10,ror#2 @ F_xx_xx
- and r11,r6,r7 @ F_xx_xx
+ and r10,r5,r10,ror#2 @ F_xx_xx
+ and r11,r6,r7 @ F_xx_xx
add r3,r3,r9 @ E+=X[i]
add r3,r3,r10 @ E+=F_40_59(B,C,D)
add r3,r3,r11,ror#2
@@ -448,26 +445,25 @@ sha1_block_data_order:
bne .Lloop @ [+18], total 1307
#if __ARM_ARCH__>=5
- ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc}
+ ldmia sp!,{r4-r12,pc}
#else
- ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr}
+ ldmia sp!,{r4-r12,lr}
tst lr,#1
moveq pc,lr @ be binary compatible with V4, yet
-.word 0xe12fff1e @ interoperable with Thumb ISA:-)
+ .word 0xe12fff1e @ interoperable with Thumb ISA:-)
#endif
.size sha1_block_data_order,.-sha1_block_data_order
.align 5
-.LK_00_19:.word 0x5a827999
-.LK_20_39:.word 0x6ed9eba1
-.LK_40_59:.word 0x8f1bbcdc
-.LK_60_79:.word 0xca62c1d6
+.LK_00_19: .word 0x5a827999
+.LK_20_39: .word 0x6ed9eba1
+.LK_40_59: .word 0x8f1bbcdc
+.LK_60_79: .word 0xca62c1d6
#if __ARM_MAX_ARCH__>=7
.LOPENSSL_armcap:
.word OPENSSL_armcap_P-sha1_block_data_order
#endif
-.byte 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,65,82,77,118,52,47,78,69,79,78,47,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
-.align 2
+.asciz "SHA1 block transform for ARMv4/NEON/ARMv8, CRYPTOGAMS by <appro@openssl.org>"
.align 5
#if __ARM_MAX_ARCH__>=7
.arch armv7-a
@@ -477,7 +473,7 @@ sha1_block_data_order:
.align 4
sha1_block_data_order_neon:
.LNEON:
- stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr}
+ stmdb sp!,{r4-r12,lr}
add r2,r1,r2,lsl#6 @ r2 to point at the end of r1
@ dmb @ errata #451034 on early Cortex A8
@ vstmdb sp!,{d8-d15} @ ABI specification says so
@@ -489,21 +485,21 @@ sha1_block_data_order_neon:
ldmia r0,{r3,r4,r5,r6,r7} @ load context
mov r12,sp
- vld1.8 {q0,q1},[r1]! @ handles unaligned
- veor q15,q15,q15
- vld1.8 {q2,q3},[r1]!
- vld1.32 {d28[],d29[]},[r8,:32]! @ load K_00_19
+ vld1.8 {q0-q1},[r1]! @ handles unaligned
+ veor q15,q15,q15
+ vld1.8 {q2-q3},[r1]!
+ vld1.32 {d28[],d29[]},[r8,:32]! @ load K_00_19
vrev32.8 q0,q0 @ yes, even on
vrev32.8 q1,q1 @ big-endian...
vrev32.8 q2,q2
vadd.i32 q8,q0,q14
vrev32.8 q3,q3
vadd.i32 q9,q1,q14
- vst1.32 {q8},[r12,:128]!
+ vst1.32 {q8},[r12,:128]!
vadd.i32 q10,q2,q14
- vst1.32 {q9},[r12,:128]!
- vst1.32 {q10},[r12,:128]!
- ldr r9,[sp] @ big RAW stall
+ vst1.32 {q9},[r12,:128]!
+ vst1.32 {q10},[r12,:128]!
+ ldr r9,[sp] @ big RAW stall
.Loop_neon:
vext.8 q8,q0,q1,#8
@@ -1181,10 +1177,10 @@ sha1_block_data_order_neon:
teq r1,r2
sub r8,r8,#16
subeq r1,r1,#64
- vld1.8 {q0,q1},[r1]!
+ vld1.8 {q0-q1},[r1]!
ldr r9,[sp,#4]
eor r11,r10,r6
- vld1.8 {q2,q3},[r1]!
+ vld1.8 {q2-q3},[r1]!
add r3,r3,r4,ror#27
mov r5,r5,ror#2
vld1.32 {d28[],d29[]},[r8,:32]!
@@ -1317,7 +1313,7 @@ sha1_block_data_order_neon:
bne .Loop_neon
@ vldmia sp!,{d8-d15}
- ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc}
+ ldmia sp!,{r4-r12,pc}
.size sha1_block_data_order_neon,.-sha1_block_data_order_neon
#endif
#if __ARM_MAX_ARCH__>=7
@@ -1325,7 +1321,7 @@ sha1_block_data_order_neon:
.align 5
sha1_block_data_order_armv8:
.LARMv8:
- vstmdb sp!,{d8,d9,d10,d11,d12,d13,d14,d15} @ ABI specification says so
+ vstmdb sp!,{d8-d15} @ ABI specification says so
veor q1,q1,q1
adr r3,.LK_00_19
@@ -1338,119 +1334,119 @@ sha1_block_data_order_armv8:
vld1.32 {d22[],d23[]},[r3,:32]
.Loop_v8:
- vld1.8 {q4,q5},[r1]!
- vld1.8 {q6,q7},[r1]!
+ vld1.8 {q4-q5},[r1]!
+ vld1.8 {q6-q7},[r1]!
vrev32.8 q4,q4
vrev32.8 q5,q5
vadd.i32 q12,q8,q4
vrev32.8 q6,q6
- vmov q14,q0 @ offload
- subs r2,r2,#1
+ vmov q14,q0 @ offload
+ subs r2,r2,#1
vadd.i32 q13,q8,q5
vrev32.8 q7,q7
-.byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 0
-.byte 0x68,0x0c,0x02,0xf2 @ sha1c q0,q1,q12
+ .byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 0
+ .byte 0x68,0x0c,0x02,0xf2 @ sha1c q0,q1,q12
vadd.i32 q12,q8,q6
-.byte 0x4c,0x8c,0x3a,0xf2 @ sha1su0 q4,q5,q6
-.byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 1
-.byte 0x6a,0x0c,0x06,0xf2 @ sha1c q0,q3,q13
+ .byte 0x4c,0x8c,0x3a,0xf2 @ sha1su0 q4,q5,q6
+ .byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 1
+ .byte 0x6a,0x0c,0x06,0xf2 @ sha1c q0,q3,q13
vadd.i32 q13,q8,q7
-.byte 0x8e,0x83,0xba,0xf3 @ sha1su1 q4,q7
-.byte 0x4e,0xac,0x3c,0xf2 @ sha1su0 q5,q6,q7
-.byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 2
-.byte 0x68,0x0c,0x04,0xf2 @ sha1c q0,q2,q12
+ .byte 0x8e,0x83,0xba,0xf3 @ sha1su1 q4,q7
+ .byte 0x4e,0xac,0x3c,0xf2 @ sha1su0 q5,q6,q7
+ .byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 2
+ .byte 0x68,0x0c,0x04,0xf2 @ sha1c q0,q2,q12
vadd.i32 q12,q8,q4
-.byte 0x88,0xa3,0xba,0xf3 @ sha1su1 q5,q4
-.byte 0x48,0xcc,0x3e,0xf2 @ sha1su0 q6,q7,q4
-.byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 3
-.byte 0x6a,0x0c,0x06,0xf2 @ sha1c q0,q3,q13
+ .byte 0x88,0xa3,0xba,0xf3 @ sha1su1 q5,q4
+ .byte 0x48,0xcc,0x3e,0xf2 @ sha1su0 q6,q7,q4
+ .byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 3
+ .byte 0x6a,0x0c,0x06,0xf2 @ sha1c q0,q3,q13
vadd.i32 q13,q9,q5
-.byte 0x8a,0xc3,0xba,0xf3 @ sha1su1 q6,q5
-.byte 0x4a,0xec,0x38,0xf2 @ sha1su0 q7,q4,q5
-.byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 4
-.byte 0x68,0x0c,0x04,0xf2 @ sha1c q0,q2,q12
+ .byte 0x8a,0xc3,0xba,0xf3 @ sha1su1 q6,q5
+ .byte 0x4a,0xec,0x38,0xf2 @ sha1su0 q7,q4,q5
+ .byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 4
+ .byte 0x68,0x0c,0x04,0xf2 @ sha1c q0,q2,q12
vadd.i32 q12,q9,q6
-.byte 0x8c,0xe3,0xba,0xf3 @ sha1su1 q7,q6
-.byte 0x4c,0x8c,0x3a,0xf2 @ sha1su0 q4,q5,q6
-.byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 5
-.byte 0x6a,0x0c,0x16,0xf2 @ sha1p q0,q3,q13
+ .byte 0x8c,0xe3,0xba,0xf3 @ sha1su1 q7,q6
+ .byte 0x4c,0x8c,0x3a,0xf2 @ sha1su0 q4,q5,q6
+ .byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 5
+ .byte 0x6a,0x0c,0x16,0xf2 @ sha1p q0,q3,q13
vadd.i32 q13,q9,q7
-.byte 0x8e,0x83,0xba,0xf3 @ sha1su1 q4,q7
-.byte 0x4e,0xac,0x3c,0xf2 @ sha1su0 q5,q6,q7
-.byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 6
-.byte 0x68,0x0c,0x14,0xf2 @ sha1p q0,q2,q12
+ .byte 0x8e,0x83,0xba,0xf3 @ sha1su1 q4,q7
+ .byte 0x4e,0xac,0x3c,0xf2 @ sha1su0 q5,q6,q7
+ .byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 6
+ .byte 0x68,0x0c,0x14,0xf2 @ sha1p q0,q2,q12
vadd.i32 q12,q9,q4
-.byte 0x88,0xa3,0xba,0xf3 @ sha1su1 q5,q4
-.byte 0x48,0xcc,0x3e,0xf2 @ sha1su0 q6,q7,q4
-.byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 7
-.byte 0x6a,0x0c,0x16,0xf2 @ sha1p q0,q3,q13
+ .byte 0x88,0xa3,0xba,0xf3 @ sha1su1 q5,q4
+ .byte 0x48,0xcc,0x3e,0xf2 @ sha1su0 q6,q7,q4
+ .byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 7
+ .byte 0x6a,0x0c,0x16,0xf2 @ sha1p q0,q3,q13
vadd.i32 q13,q9,q5
-.byte 0x8a,0xc3,0xba,0xf3 @ sha1su1 q6,q5
-.byte 0x4a,0xec,0x38,0xf2 @ sha1su0 q7,q4,q5
-.byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 8
-.byte 0x68,0x0c,0x14,0xf2 @ sha1p q0,q2,q12
+ .byte 0x8a,0xc3,0xba,0xf3 @ sha1su1 q6,q5
+ .byte 0x4a,0xec,0x38,0xf2 @ sha1su0 q7,q4,q5
+ .byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 8
+ .byte 0x68,0x0c,0x14,0xf2 @ sha1p q0,q2,q12
vadd.i32 q12,q10,q6
-.byte 0x8c,0xe3,0xba,0xf3 @ sha1su1 q7,q6
-.byte 0x4c,0x8c,0x3a,0xf2 @ sha1su0 q4,q5,q6
-.byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 9
-.byte 0x6a,0x0c,0x16,0xf2 @ sha1p q0,q3,q13
+ .byte 0x8c,0xe3,0xba,0xf3 @ sha1su1 q7,q6
+ .byte 0x4c,0x8c,0x3a,0xf2 @ sha1su0 q4,q5,q6
+ .byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 9
+ .byte 0x6a,0x0c,0x16,0xf2 @ sha1p q0,q3,q13
vadd.i32 q13,q10,q7
-.byte 0x8e,0x83,0xba,0xf3 @ sha1su1 q4,q7
-.byte 0x4e,0xac,0x3c,0xf2 @ sha1su0 q5,q6,q7
-.byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 10
-.byte 0x68,0x0c,0x24,0xf2 @ sha1m q0,q2,q12
+ .byte 0x8e,0x83,0xba,0xf3 @ sha1su1 q4,q7
+ .byte 0x4e,0xac,0x3c,0xf2 @ sha1su0 q5,q6,q7
+ .byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 10
+ .byte 0x68,0x0c,0x24,0xf2 @ sha1m q0,q2,q12
vadd.i32 q12,q10,q4
-.byte 0x88,0xa3,0xba,0xf3 @ sha1su1 q5,q4
-.byte 0x48,0xcc,0x3e,0xf2 @ sha1su0 q6,q7,q4
-.byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 11
-.byte 0x6a,0x0c,0x26,0xf2 @ sha1m q0,q3,q13
+ .byte 0x88,0xa3,0xba,0xf3 @ sha1su1 q5,q4
+ .byte 0x48,0xcc,0x3e,0xf2 @ sha1su0 q6,q7,q4
+ .byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 11
+ .byte 0x6a,0x0c,0x26,0xf2 @ sha1m q0,q3,q13
vadd.i32 q13,q10,q5
-.byte 0x8a,0xc3,0xba,0xf3 @ sha1su1 q6,q5
-.byte 0x4a,0xec,0x38,0xf2 @ sha1su0 q7,q4,q5
-.byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 12
-.byte 0x68,0x0c,0x24,0xf2 @ sha1m q0,q2,q12
+ .byte 0x8a,0xc3,0xba,0xf3 @ sha1su1 q6,q5
+ .byte 0x4a,0xec,0x38,0xf2 @ sha1su0 q7,q4,q5
+ .byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 12
+ .byte 0x68,0x0c,0x24,0xf2 @ sha1m q0,q2,q12
vadd.i32 q12,q10,q6
-.byte 0x8c,0xe3,0xba,0xf3 @ sha1su1 q7,q6
-.byte 0x4c,0x8c,0x3a,0xf2 @ sha1su0 q4,q5,q6
-.byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 13
-.byte 0x6a,0x0c,0x26,0xf2 @ sha1m q0,q3,q13
+ .byte 0x8c,0xe3,0xba,0xf3 @ sha1su1 q7,q6
+ .byte 0x4c,0x8c,0x3a,0xf2 @ sha1su0 q4,q5,q6
+ .byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 13
+ .byte 0x6a,0x0c,0x26,0xf2 @ sha1m q0,q3,q13
vadd.i32 q13,q11,q7
-.byte 0x8e,0x83,0xba,0xf3 @ sha1su1 q4,q7
-.byte 0x4e,0xac,0x3c,0xf2 @ sha1su0 q5,q6,q7
-.byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 14
-.byte 0x68,0x0c,0x24,0xf2 @ sha1m q0,q2,q12
+ .byte 0x8e,0x83,0xba,0xf3 @ sha1su1 q4,q7
+ .byte 0x4e,0xac,0x3c,0xf2 @ sha1su0 q5,q6,q7
+ .byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 14
+ .byte 0x68,0x0c,0x24,0xf2 @ sha1m q0,q2,q12
vadd.i32 q12,q11,q4
-.byte 0x88,0xa3,0xba,0xf3 @ sha1su1 q5,q4
-.byte 0x48,0xcc,0x3e,0xf2 @ sha1su0 q6,q7,q4
-.byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 15
-.byte 0x6a,0x0c,0x16,0xf2 @ sha1p q0,q3,q13
+ .byte 0x88,0xa3,0xba,0xf3 @ sha1su1 q5,q4
+ .byte 0x48,0xcc,0x3e,0xf2 @ sha1su0 q6,q7,q4
+ .byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 15
+ .byte 0x6a,0x0c,0x16,0xf2 @ sha1p q0,q3,q13
vadd.i32 q13,q11,q5
-.byte 0x8a,0xc3,0xba,0xf3 @ sha1su1 q6,q5
-.byte 0x4a,0xec,0x38,0xf2 @ sha1su0 q7,q4,q5
-.byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 16
-.byte 0x68,0x0c,0x14,0xf2 @ sha1p q0,q2,q12
+ .byte 0x8a,0xc3,0xba,0xf3 @ sha1su1 q6,q5
+ .byte 0x4a,0xec,0x38,0xf2 @ sha1su0 q7,q4,q5
+ .byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 16
+ .byte 0x68,0x0c,0x14,0xf2 @ sha1p q0,q2,q12
vadd.i32 q12,q11,q6
-.byte 0x8c,0xe3,0xba,0xf3 @ sha1su1 q7,q6
-.byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 17
-.byte 0x6a,0x0c,0x16,0xf2 @ sha1p q0,q3,q13
+ .byte 0x8c,0xe3,0xba,0xf3 @ sha1su1 q7,q6
+ .byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 17
+ .byte 0x6a,0x0c,0x16,0xf2 @ sha1p q0,q3,q13
vadd.i32 q13,q11,q7
-.byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 18
-.byte 0x68,0x0c,0x14,0xf2 @ sha1p q0,q2,q12
+ .byte 0xc0,0x62,0xb9,0xf3 @ sha1h q3,q0 @ 18
+ .byte 0x68,0x0c,0x14,0xf2 @ sha1p q0,q2,q12
-.byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 19
-.byte 0x6a,0x0c,0x16,0xf2 @ sha1p q0,q3,q13
+ .byte 0xc0,0x42,0xb9,0xf3 @ sha1h q2,q0 @ 19
+ .byte 0x6a,0x0c,0x16,0xf2 @ sha1p q0,q3,q13
vadd.i32 q1,q1,q2
vadd.i32 q0,q0,q14
- bne .Loop_v8
+ bne .Loop_v8
- vst1.32 {q0},[r0]!
- vst1.32 {d2[0]},[r0]
+ vst1.32 {q0},[r0]!
+ vst1.32 {d2[0]},[r0]
- vldmia sp!,{d8,d9,d10,d11,d12,d13,d14,d15}
+ vldmia sp!,{d8-d15}
bx lr @ bx lr
.size sha1_block_data_order_armv8,.-sha1_block_data_order_armv8
#endif
diff --git a/third_party/boringssl/linux-arm/crypto/sha/sha256-armv4.S b/third_party/boringssl/linux-arm/crypto/sha/sha256-armv4.S
index ba37795..fa09ac0 100644
--- a/third_party/boringssl/linux-arm/crypto/sha/sha256-armv4.S
+++ b/third_party/boringssl/linux-arm/crypto/sha/sha256-armv4.S
@@ -47,12 +47,12 @@
#if __ARM_ARCH__<7
.code 32
#else
-.syntax unified
-# if defined(__thumb2__) && !defined(__APPLE__)
+.syntax unified
+# ifdef __thumb2__
# define adrl adr
.thumb
# else
-.code 32
+.code 32
# endif
#endif
@@ -79,14 +79,13 @@ K256:
.word 0 @ terminator
#if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__)
.LOPENSSL_armcap:
-.word OPENSSL_armcap_P-.Lsha256_block_data_order
+.word OPENSSL_armcap_P-sha256_block_data_order
#endif
.align 5
-.globl sha256_block_data_order
+.global sha256_block_data_order
.type sha256_block_data_order,%function
sha256_block_data_order:
-.Lsha256_block_data_order:
#if __ARM_ARCH__<7
sub r3,pc,#8 @ sha256_block_data_order
#else
@@ -95,9 +94,6 @@ sha256_block_data_order:
#if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__)
ldr r12,.LOPENSSL_armcap
ldr r12,[r3,r12] @ OPENSSL_armcap_P
-#ifdef __APPLE__
- ldr r12,[r12]
-#endif
tst r12,#ARMV8_SHA256
bne .LARMv8
tst r12,#ARMV7_NEON
@@ -1861,64 +1857,64 @@ sha256_block_data_order:
add sp,sp,#19*4 @ destroy frame
#if __ARM_ARCH__>=5
- ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,pc}
+ ldmia sp!,{r4-r11,pc}
#else
- ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,lr}
+ ldmia sp!,{r4-r11,lr}
tst lr,#1
moveq pc,lr @ be binary compatible with V4, yet
-.word 0xe12fff1e @ interoperable with Thumb ISA:-)
+ .word 0xe12fff1e @ interoperable with Thumb ISA:-)
#endif
.size sha256_block_data_order,.-sha256_block_data_order
#if __ARM_MAX_ARCH__>=7
.arch armv7-a
.fpu neon
-.globl sha256_block_data_order_neon
+.global sha256_block_data_order_neon
.type sha256_block_data_order_neon,%function
.align 4
sha256_block_data_order_neon:
.LNEON:
- stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr}
+ stmdb sp!,{r4-r12,lr}
sub r11,sp,#16*4+16
- adr r14,K256
+ adrl r14,K256
bic r11,r11,#15 @ align for 128-bit stores
mov r12,sp
mov sp,r11 @ alloca
add r2,r1,r2,lsl#6 @ len to point at the end of inp
- vld1.8 {q0},[r1]!
- vld1.8 {q1},[r1]!
- vld1.8 {q2},[r1]!
- vld1.8 {q3},[r1]!
- vld1.32 {q8},[r14,:128]!
- vld1.32 {q9},[r14,:128]!
- vld1.32 {q10},[r14,:128]!
- vld1.32 {q11},[r14,:128]!
+ vld1.8 {q0},[r1]!
+ vld1.8 {q1},[r1]!
+ vld1.8 {q2},[r1]!
+ vld1.8 {q3},[r1]!
+ vld1.32 {q8},[r14,:128]!
+ vld1.32 {q9},[r14,:128]!
+ vld1.32 {q10},[r14,:128]!
+ vld1.32 {q11},[r14,:128]!
vrev32.8 q0,q0 @ yes, even on
- str r0,[sp,#64]
+ str r0,[sp,#64]
vrev32.8 q1,q1 @ big-endian
- str r1,[sp,#68]
- mov r1,sp
+ str r1,[sp,#68]
+ mov r1,sp
vrev32.8 q2,q2
- str r2,[sp,#72]
+ str r2,[sp,#72]
vrev32.8 q3,q3
- str r12,[sp,#76] @ save original sp
+ str r12,[sp,#76] @ save original sp
vadd.i32 q8,q8,q0
vadd.i32 q9,q9,q1
- vst1.32 {q8},[r1,:128]!
+ vst1.32 {q8},[r1,:128]!
vadd.i32 q10,q10,q2
- vst1.32 {q9},[r1,:128]!
+ vst1.32 {q9},[r1,:128]!
vadd.i32 q11,q11,q3
- vst1.32 {q10},[r1,:128]!
- vst1.32 {q11},[r1,:128]!
+ vst1.32 {q10},[r1,:128]!
+ vst1.32 {q11},[r1,:128]!
- ldmia r0,{r4,r5,r6,r7,r8,r9,r10,r11}
- sub r1,r1,#64
- ldr r2,[sp,#0]
- eor r12,r12,r12
- eor r3,r5,r6
- b .L_00_48
+ ldmia r0,{r4-r11}
+ sub r1,r1,#64
+ ldr r2,[sp,#0]
+ eor r12,r12,r12
+ eor r3,r5,r6
+ b .L_00_48
.align 4
.L_00_48:
@@ -2319,19 +2315,19 @@ sha256_block_data_order_neon:
sub r1,r1,#64
bne .L_00_48
- ldr r1,[sp,#68]
- ldr r0,[sp,#72]
- sub r14,r14,#256 @ rewind r14
- teq r1,r0
- it eq
- subeq r1,r1,#64 @ avoid SEGV
- vld1.8 {q0},[r1]! @ load next input block
- vld1.8 {q1},[r1]!
- vld1.8 {q2},[r1]!
- vld1.8 {q3},[r1]!
- it ne
- strne r1,[sp,#68]
- mov r1,sp
+ ldr r1,[sp,#68]
+ ldr r0,[sp,#72]
+ sub r14,r14,#256 @ rewind r14
+ teq r1,r0
+ it eq
+ subeq r1,r1,#64 @ avoid SEGV
+ vld1.8 {q0},[r1]! @ load next input block
+ vld1.8 {q1},[r1]!
+ vld1.8 {q2},[r1]!
+ vld1.8 {q3},[r1]!
+ it ne
+ strne r1,[sp,#68]
+ mov r1,sp
add r11,r11,r2
eor r2,r9,r10
eor r0,r8,r8,ror#5
@@ -2641,7 +2637,7 @@ sha256_block_data_order_neon:
str r6,[r2],#4
add r11,r11,r1
str r7,[r2],#4
- stmia r2,{r8,r9,r10,r11}
+ stmia r2,{r8-r11}
ittte ne
movne r1,sp
@@ -2652,12 +2648,12 @@ sha256_block_data_order_neon:
eorne r3,r5,r6
bne .L_00_48
- ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc}
+ ldmia sp!,{r4-r12,pc}
.size sha256_block_data_order_neon,.-sha256_block_data_order_neon
#endif
#if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__)
-# if defined(__thumb2__) && !defined(__APPLE__)
+# ifdef __thumb2__
# define INST(a,b,c,d) .byte c,d|0xc,a,b
# else
# define INST(a,b,c,d) .byte a,b,c,d
@@ -2668,9 +2664,7 @@ sha256_block_data_order_neon:
sha256_block_data_order_armv8:
.LARMv8:
vld1.32 {q0,q1},[r0]
-# ifdef __APPLE__
- sub r3,r3,#256+32
-# elif defined(__thumb2__)
+# ifdef __thumb2__
adr r3,.LARMv8
sub r3,r3,#.LARMv8-K256
# else
@@ -2679,138 +2673,137 @@ sha256_block_data_order_armv8:
add r2,r1,r2,lsl#6 @ len to point at the end of inp
.Loop_v8:
- vld1.8 {q8,q9},[r1]!
- vld1.8 {q10,q11},[r1]!
- vld1.32 {q12},[r3]!
+ vld1.8 {q8-q9},[r1]!
+ vld1.8 {q10-q11},[r1]!
+ vld1.32 {q12},[r3]!
vrev32.8 q8,q8
vrev32.8 q9,q9
vrev32.8 q10,q10
vrev32.8 q11,q11
- vmov q14,q0 @ offload
- vmov q15,q1
- teq r1,r2
- vld1.32 {q13},[r3]!
+ vmov q14,q0 @ offload
+ vmov q15,q1
+ teq r1,r2
+ vld1.32 {q13},[r3]!
vadd.i32 q12,q12,q8
INST(0xe2,0x03,0xfa,0xf3) @ sha256su0 q8,q9
- vmov q2,q0
+ vmov q2,q0
INST(0x68,0x0c,0x02,0xf3) @ sha256h q0,q1,q12
INST(0x68,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q12
INST(0xe6,0x0c,0x64,0xf3) @ sha256su1 q8,q10,q11
- vld1.32 {q12},[r3]!
+ vld1.32 {q12},[r3]!
vadd.i32 q13,q13,q9
INST(0xe4,0x23,0xfa,0xf3) @ sha256su0 q9,q10
- vmov q2,q0
+ vmov q2,q0
INST(0x6a,0x0c,0x02,0xf3) @ sha256h q0,q1,q13
INST(0x6a,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q13
INST(0xe0,0x2c,0x66,0xf3) @ sha256su1 q9,q11,q8
- vld1.32 {q13},[r3]!
+ vld1.32 {q13},[r3]!
vadd.i32 q12,q12,q10
INST(0xe6,0x43,0xfa,0xf3) @ sha256su0 q10,q11
- vmov q2,q0
+ vmov q2,q0
INST(0x68,0x0c,0x02,0xf3) @ sha256h q0,q1,q12
INST(0x68,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q12
INST(0xe2,0x4c,0x60,0xf3) @ sha256su1 q10,q8,q9
- vld1.32 {q12},[r3]!
+ vld1.32 {q12},[r3]!
vadd.i32 q13,q13,q11
INST(0xe0,0x63,0xfa,0xf3) @ sha256su0 q11,q8
- vmov q2,q0
+ vmov q2,q0
INST(0x6a,0x0c,0x02,0xf3) @ sha256h q0,q1,q13
INST(0x6a,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q13
INST(0xe4,0x6c,0x62,0xf3) @ sha256su1 q11,q9,q10
- vld1.32 {q13},[r3]!
+ vld1.32 {q13},[r3]!
vadd.i32 q12,q12,q8
INST(0xe2,0x03,0xfa,0xf3) @ sha256su0 q8,q9
- vmov q2,q0
+ vmov q2,q0
INST(0x68,0x0c,0x02,0xf3) @ sha256h q0,q1,q12
INST(0x68,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q12
INST(0xe6,0x0c,0x64,0xf3) @ sha256su1 q8,q10,q11
- vld1.32 {q12},[r3]!
+ vld1.32 {q12},[r3]!
vadd.i32 q13,q13,q9
INST(0xe4,0x23,0xfa,0xf3) @ sha256su0 q9,q10
- vmov q2,q0
+ vmov q2,q0
INST(0x6a,0x0c,0x02,0xf3) @ sha256h q0,q1,q13
INST(0x6a,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q13
INST(0xe0,0x2c,0x66,0xf3) @ sha256su1 q9,q11,q8
- vld1.32 {q13},[r3]!
+ vld1.32 {q13},[r3]!
vadd.i32 q12,q12,q10
INST(0xe6,0x43,0xfa,0xf3) @ sha256su0 q10,q11
- vmov q2,q0
+ vmov q2,q0
INST(0x68,0x0c,0x02,0xf3) @ sha256h q0,q1,q12
INST(0x68,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q12
INST(0xe2,0x4c,0x60,0xf3) @ sha256su1 q10,q8,q9
- vld1.32 {q12},[r3]!
+ vld1.32 {q12},[r3]!
vadd.i32 q13,q13,q11
INST(0xe0,0x63,0xfa,0xf3) @ sha256su0 q11,q8
- vmov q2,q0
+ vmov q2,q0
INST(0x6a,0x0c,0x02,0xf3) @ sha256h q0,q1,q13
INST(0x6a,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q13
INST(0xe4,0x6c,0x62,0xf3) @ sha256su1 q11,q9,q10
- vld1.32 {q13},[r3]!
+ vld1.32 {q13},[r3]!
vadd.i32 q12,q12,q8
INST(0xe2,0x03,0xfa,0xf3) @ sha256su0 q8,q9
- vmov q2,q0
+ vmov q2,q0
INST(0x68,0x0c,0x02,0xf3) @ sha256h q0,q1,q12
INST(0x68,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q12
INST(0xe6,0x0c,0x64,0xf3) @ sha256su1 q8,q10,q11
- vld1.32 {q12},[r3]!
+ vld1.32 {q12},[r3]!
vadd.i32 q13,q13,q9
INST(0xe4,0x23,0xfa,0xf3) @ sha256su0 q9,q10
- vmov q2,q0
+ vmov q2,q0
INST(0x6a,0x0c,0x02,0xf3) @ sha256h q0,q1,q13
INST(0x6a,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q13
INST(0xe0,0x2c,0x66,0xf3) @ sha256su1 q9,q11,q8
- vld1.32 {q13},[r3]!
+ vld1.32 {q13},[r3]!
vadd.i32 q12,q12,q10
INST(0xe6,0x43,0xfa,0xf3) @ sha256su0 q10,q11
- vmov q2,q0
+ vmov q2,q0
INST(0x68,0x0c,0x02,0xf3) @ sha256h q0,q1,q12
INST(0x68,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q12
INST(0xe2,0x4c,0x60,0xf3) @ sha256su1 q10,q8,q9
- vld1.32 {q12},[r3]!
+ vld1.32 {q12},[r3]!
vadd.i32 q13,q13,q11
INST(0xe0,0x63,0xfa,0xf3) @ sha256su0 q11,q8
- vmov q2,q0
+ vmov q2,q0
INST(0x6a,0x0c,0x02,0xf3) @ sha256h q0,q1,q13
INST(0x6a,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q13
INST(0xe4,0x6c,0x62,0xf3) @ sha256su1 q11,q9,q10
- vld1.32 {q13},[r3]!
+ vld1.32 {q13},[r3]!
vadd.i32 q12,q12,q8
- vmov q2,q0
+ vmov q2,q0
INST(0x68,0x0c,0x02,0xf3) @ sha256h q0,q1,q12
INST(0x68,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q12
- vld1.32 {q12},[r3]!
+ vld1.32 {q12},[r3]!
vadd.i32 q13,q13,q9
- vmov q2,q0
+ vmov q2,q0
INST(0x6a,0x0c,0x02,0xf3) @ sha256h q0,q1,q13
INST(0x6a,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q13
- vld1.32 {q13},[r3]
+ vld1.32 {q13},[r3]
vadd.i32 q12,q12,q10
- sub r3,r3,#256-16 @ rewind
- vmov q2,q0
+ sub r3,r3,#256-16 @ rewind
+ vmov q2,q0
INST(0x68,0x0c,0x02,0xf3) @ sha256h q0,q1,q12
INST(0x68,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q12
vadd.i32 q13,q13,q11
- vmov q2,q0
+ vmov q2,q0
INST(0x6a,0x0c,0x02,0xf3) @ sha256h q0,q1,q13
INST(0x6a,0x2c,0x14,0xf3) @ sha256h2 q1,q2,q13
vadd.i32 q0,q0,q14
vadd.i32 q1,q1,q15
- it ne
- bne .Loop_v8
+ it ne
+ bne .Loop_v8
- vst1.32 {q0,q1},[r0]
+ vst1.32 {q0,q1},[r0]
bx lr @ bx lr
.size sha256_block_data_order_armv8,.-sha256_block_data_order_armv8
#endif
-.byte 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,65,82,77,118,52,47,78,69,79,78,47,65,82,77,118,56,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
-.align 2
+.asciz "SHA256 block transform for ARMv4/NEON/ARMv8, CRYPTOGAMS by <appro@openssl.org>"
.align 2
#if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__)
-.comm OPENSSL_armcap_P,4,4
-.hidden OPENSSL_armcap_P
+.comm OPENSSL_armcap_P,4,4
+.hidden OPENSSL_armcap_P
#endif
diff --git a/third_party/boringssl/linux-arm/crypto/sha/sha512-armv4.S b/third_party/boringssl/linux-arm/crypto/sha/sha512-armv4.S
index 1a3d467..738d126 100644
--- a/third_party/boringssl/linux-arm/crypto/sha/sha512-armv4.S
+++ b/third_party/boringssl/linux-arm/crypto/sha/sha512-armv4.S
@@ -67,74 +67,73 @@
#endif
.text
-#if __ARM_ARCH__<7 || defined(__APPLE__)
+#if __ARM_ARCH__<7
.code 32
#else
-.syntax unified
+.syntax unified
# ifdef __thumb2__
# define adrl adr
.thumb
# else
-.code 32
+.code 32
# endif
#endif
.type K512,%object
.align 5
K512:
- WORD64(0x428a2f98,0xd728ae22, 0x71374491,0x23ef65cd)
- WORD64(0xb5c0fbcf,0xec4d3b2f, 0xe9b5dba5,0x8189dbbc)
- WORD64(0x3956c25b,0xf348b538, 0x59f111f1,0xb605d019)
- WORD64(0x923f82a4,0xaf194f9b, 0xab1c5ed5,0xda6d8118)
- WORD64(0xd807aa98,0xa3030242, 0x12835b01,0x45706fbe)
- WORD64(0x243185be,0x4ee4b28c, 0x550c7dc3,0xd5ffb4e2)
- WORD64(0x72be5d74,0xf27b896f, 0x80deb1fe,0x3b1696b1)
- WORD64(0x9bdc06a7,0x25c71235, 0xc19bf174,0xcf692694)
- WORD64(0xe49b69c1,0x9ef14ad2, 0xefbe4786,0x384f25e3)
- WORD64(0x0fc19dc6,0x8b8cd5b5, 0x240ca1cc,0x77ac9c65)
- WORD64(0x2de92c6f,0x592b0275, 0x4a7484aa,0x6ea6e483)
- WORD64(0x5cb0a9dc,0xbd41fbd4, 0x76f988da,0x831153b5)
- WORD64(0x983e5152,0xee66dfab, 0xa831c66d,0x2db43210)
- WORD64(0xb00327c8,0x98fb213f, 0xbf597fc7,0xbeef0ee4)
- WORD64(0xc6e00bf3,0x3da88fc2, 0xd5a79147,0x930aa725)
- WORD64(0x06ca6351,0xe003826f, 0x14292967,0x0a0e6e70)
- WORD64(0x27b70a85,0x46d22ffc, 0x2e1b2138,0x5c26c926)
- WORD64(0x4d2c6dfc,0x5ac42aed, 0x53380d13,0x9d95b3df)
- WORD64(0x650a7354,0x8baf63de, 0x766a0abb,0x3c77b2a8)
- WORD64(0x81c2c92e,0x47edaee6, 0x92722c85,0x1482353b)
- WORD64(0xa2bfe8a1,0x4cf10364, 0xa81a664b,0xbc423001)
- WORD64(0xc24b8b70,0xd0f89791, 0xc76c51a3,0x0654be30)
- WORD64(0xd192e819,0xd6ef5218, 0xd6990624,0x5565a910)
- WORD64(0xf40e3585,0x5771202a, 0x106aa070,0x32bbd1b8)
- WORD64(0x19a4c116,0xb8d2d0c8, 0x1e376c08,0x5141ab53)
- WORD64(0x2748774c,0xdf8eeb99, 0x34b0bcb5,0xe19b48a8)
- WORD64(0x391c0cb3,0xc5c95a63, 0x4ed8aa4a,0xe3418acb)
- WORD64(0x5b9cca4f,0x7763e373, 0x682e6ff3,0xd6b2b8a3)
- WORD64(0x748f82ee,0x5defb2fc, 0x78a5636f,0x43172f60)
- WORD64(0x84c87814,0xa1f0ab72, 0x8cc70208,0x1a6439ec)
- WORD64(0x90befffa,0x23631e28, 0xa4506ceb,0xde82bde9)
- WORD64(0xbef9a3f7,0xb2c67915, 0xc67178f2,0xe372532b)
- WORD64(0xca273ece,0xea26619c, 0xd186b8c7,0x21c0c207)
- WORD64(0xeada7dd6,0xcde0eb1e, 0xf57d4f7f,0xee6ed178)
- WORD64(0x06f067aa,0x72176fba, 0x0a637dc5,0xa2c898a6)
- WORD64(0x113f9804,0xbef90dae, 0x1b710b35,0x131c471b)
- WORD64(0x28db77f5,0x23047d84, 0x32caab7b,0x40c72493)
- WORD64(0x3c9ebe0a,0x15c9bebc, 0x431d67c4,0x9c100d4c)
- WORD64(0x4cc5d4be,0xcb3e42b6, 0x597f299c,0xfc657e2a)
- WORD64(0x5fcb6fab,0x3ad6faec, 0x6c44198c,0x4a475817)
+WORD64(0x428a2f98,0xd728ae22, 0x71374491,0x23ef65cd)
+WORD64(0xb5c0fbcf,0xec4d3b2f, 0xe9b5dba5,0x8189dbbc)
+WORD64(0x3956c25b,0xf348b538, 0x59f111f1,0xb605d019)
+WORD64(0x923f82a4,0xaf194f9b, 0xab1c5ed5,0xda6d8118)
+WORD64(0xd807aa98,0xa3030242, 0x12835b01,0x45706fbe)
+WORD64(0x243185be,0x4ee4b28c, 0x550c7dc3,0xd5ffb4e2)
+WORD64(0x72be5d74,0xf27b896f, 0x80deb1fe,0x3b1696b1)
+WORD64(0x9bdc06a7,0x25c71235, 0xc19bf174,0xcf692694)
+WORD64(0xe49b69c1,0x9ef14ad2, 0xefbe4786,0x384f25e3)
+WORD64(0x0fc19dc6,0x8b8cd5b5, 0x240ca1cc,0x77ac9c65)
+WORD64(0x2de92c6f,0x592b0275, 0x4a7484aa,0x6ea6e483)
+WORD64(0x5cb0a9dc,0xbd41fbd4, 0x76f988da,0x831153b5)
+WORD64(0x983e5152,0xee66dfab, 0xa831c66d,0x2db43210)
+WORD64(0xb00327c8,0x98fb213f, 0xbf597fc7,0xbeef0ee4)
+WORD64(0xc6e00bf3,0x3da88fc2, 0xd5a79147,0x930aa725)
+WORD64(0x06ca6351,0xe003826f, 0x14292967,0x0a0e6e70)
+WORD64(0x27b70a85,0x46d22ffc, 0x2e1b2138,0x5c26c926)
+WORD64(0x4d2c6dfc,0x5ac42aed, 0x53380d13,0x9d95b3df)
+WORD64(0x650a7354,0x8baf63de, 0x766a0abb,0x3c77b2a8)
+WORD64(0x81c2c92e,0x47edaee6, 0x92722c85,0x1482353b)
+WORD64(0xa2bfe8a1,0x4cf10364, 0xa81a664b,0xbc423001)
+WORD64(0xc24b8b70,0xd0f89791, 0xc76c51a3,0x0654be30)
+WORD64(0xd192e819,0xd6ef5218, 0xd6990624,0x5565a910)
+WORD64(0xf40e3585,0x5771202a, 0x106aa070,0x32bbd1b8)
+WORD64(0x19a4c116,0xb8d2d0c8, 0x1e376c08,0x5141ab53)
+WORD64(0x2748774c,0xdf8eeb99, 0x34b0bcb5,0xe19b48a8)
+WORD64(0x391c0cb3,0xc5c95a63, 0x4ed8aa4a,0xe3418acb)
+WORD64(0x5b9cca4f,0x7763e373, 0x682e6ff3,0xd6b2b8a3)
+WORD64(0x748f82ee,0x5defb2fc, 0x78a5636f,0x43172f60)
+WORD64(0x84c87814,0xa1f0ab72, 0x8cc70208,0x1a6439ec)
+WORD64(0x90befffa,0x23631e28, 0xa4506ceb,0xde82bde9)
+WORD64(0xbef9a3f7,0xb2c67915, 0xc67178f2,0xe372532b)
+WORD64(0xca273ece,0xea26619c, 0xd186b8c7,0x21c0c207)
+WORD64(0xeada7dd6,0xcde0eb1e, 0xf57d4f7f,0xee6ed178)
+WORD64(0x06f067aa,0x72176fba, 0x0a637dc5,0xa2c898a6)
+WORD64(0x113f9804,0xbef90dae, 0x1b710b35,0x131c471b)
+WORD64(0x28db77f5,0x23047d84, 0x32caab7b,0x40c72493)
+WORD64(0x3c9ebe0a,0x15c9bebc, 0x431d67c4,0x9c100d4c)
+WORD64(0x4cc5d4be,0xcb3e42b6, 0x597f299c,0xfc657e2a)
+WORD64(0x5fcb6fab,0x3ad6faec, 0x6c44198c,0x4a475817)
.size K512,.-K512
#if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__)
.LOPENSSL_armcap:
-.word OPENSSL_armcap_P-.Lsha512_block_data_order
+.word OPENSSL_armcap_P-sha512_block_data_order
.skip 32-4
#else
.skip 32
#endif
-.globl sha512_block_data_order
+.global sha512_block_data_order
.type sha512_block_data_order,%function
sha512_block_data_order:
-.Lsha512_block_data_order:
#if __ARM_ARCH__<7
sub r3,pc,#8 @ sha512_block_data_order
#else
@@ -143,14 +142,11 @@ sha512_block_data_order:
#if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__)
ldr r12,.LOPENSSL_armcap
ldr r12,[r3,r12] @ OPENSSL_armcap_P
-#ifdef __APPLE__
- ldr r12,[r12]
-#endif
tst r12,#1
bne .LNEON
#endif
add r2,r1,r2,lsl#7 @ len to point at the end of inp
- stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr}
+ stmdb sp!,{r4-r12,lr}
sub r14,r3,#672 @ K512
sub sp,sp,#9*8
@@ -519,1347 +515,1346 @@ sha512_block_data_order:
add sp,sp,#8*9 @ destroy frame
#if __ARM_ARCH__>=5
- ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc}
+ ldmia sp!,{r4-r12,pc}
#else
- ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr}
+ ldmia sp!,{r4-r12,lr}
tst lr,#1
moveq pc,lr @ be binary compatible with V4, yet
-.word 0xe12fff1e @ interoperable with Thumb ISA:-)
+ .word 0xe12fff1e @ interoperable with Thumb ISA:-)
#endif
.size sha512_block_data_order,.-sha512_block_data_order
#if __ARM_MAX_ARCH__>=7
.arch armv7-a
.fpu neon
-.globl sha512_block_data_order_neon
+.global sha512_block_data_order_neon
.type sha512_block_data_order_neon,%function
.align 4
sha512_block_data_order_neon:
.LNEON:
- dmb @ errata #451034 on early Cortex A8
+ dmb @ errata #451034 on early Cortex A8
add r2,r1,r2,lsl#7 @ len to point at the end of inp
- adr r3,K512
VFP_ABI_PUSH
- vldmia r0,{d16,d17,d18,d19,d20,d21,d22,d23} @ load context
+ adrl r3,K512
+ vldmia r0,{d16-d23} @ load context
.Loop_neon:
vshr.u64 d24,d20,#14 @ 0
#if 0<16
- vld1.64 {d0},[r1]! @ handles unaligned
+ vld1.64 {d0},[r1]! @ handles unaligned
#endif
vshr.u64 d25,d20,#18
#if 0>0
- vadd.i64 d16,d30 @ h+=Maj from the past
+ vadd.i64 d16,d30 @ h+=Maj from the past
#endif
vshr.u64 d26,d20,#41
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d20,#50
- vsli.64 d25,d20,#46
- vmov d29,d20
- vsli.64 d26,d20,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d20,#50
+ vsli.64 d25,d20,#46
+ vmov d29,d20
+ vsli.64 d26,d20,#23
#if 0<16 && defined(__ARMEL__)
vrev64.8 d0,d0
#endif
- veor d25,d24
- vbsl d29,d21,d22 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d21,d22 @ Ch(e,f,g)
vshr.u64 d24,d16,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d23
vshr.u64 d25,d16,#34
- vsli.64 d24,d16,#36
+ vsli.64 d24,d16,#36
vadd.i64 d27,d26
vshr.u64 d26,d16,#39
vadd.i64 d28,d0
- vsli.64 d25,d16,#30
- veor d30,d16,d17
- vsli.64 d26,d16,#25
- veor d23,d24,d25
+ vsli.64 d25,d16,#30
+ veor d30,d16,d17
+ vsli.64 d26,d16,#25
+ veor d23,d24,d25
vadd.i64 d27,d28
- vbsl d30,d18,d17 @ Maj(a,b,c)
- veor d23,d26 @ Sigma0(a)
+ vbsl d30,d18,d17 @ Maj(a,b,c)
+ veor d23,d26 @ Sigma0(a)
vadd.i64 d19,d27
vadd.i64 d30,d27
@ vadd.i64 d23,d30
vshr.u64 d24,d19,#14 @ 1
#if 1<16
- vld1.64 {d1},[r1]! @ handles unaligned
+ vld1.64 {d1},[r1]! @ handles unaligned
#endif
vshr.u64 d25,d19,#18
#if 1>0
- vadd.i64 d23,d30 @ h+=Maj from the past
+ vadd.i64 d23,d30 @ h+=Maj from the past
#endif
vshr.u64 d26,d19,#41
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d19,#50
- vsli.64 d25,d19,#46
- vmov d29,d19
- vsli.64 d26,d19,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d19,#50
+ vsli.64 d25,d19,#46
+ vmov d29,d19
+ vsli.64 d26,d19,#23
#if 1<16 && defined(__ARMEL__)
vrev64.8 d1,d1
#endif
- veor d25,d24
- vbsl d29,d20,d21 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d20,d21 @ Ch(e,f,g)
vshr.u64 d24,d23,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d22
vshr.u64 d25,d23,#34
- vsli.64 d24,d23,#36
+ vsli.64 d24,d23,#36
vadd.i64 d27,d26
vshr.u64 d26,d23,#39
vadd.i64 d28,d1
- vsli.64 d25,d23,#30
- veor d30,d23,d16
- vsli.64 d26,d23,#25
- veor d22,d24,d25
+ vsli.64 d25,d23,#30
+ veor d30,d23,d16
+ vsli.64 d26,d23,#25
+ veor d22,d24,d25
vadd.i64 d27,d28
- vbsl d30,d17,d16 @ Maj(a,b,c)
- veor d22,d26 @ Sigma0(a)
+ vbsl d30,d17,d16 @ Maj(a,b,c)
+ veor d22,d26 @ Sigma0(a)
vadd.i64 d18,d27
vadd.i64 d30,d27
@ vadd.i64 d22,d30
vshr.u64 d24,d18,#14 @ 2
#if 2<16
- vld1.64 {d2},[r1]! @ handles unaligned
+ vld1.64 {d2},[r1]! @ handles unaligned
#endif
vshr.u64 d25,d18,#18
#if 2>0
- vadd.i64 d22,d30 @ h+=Maj from the past
+ vadd.i64 d22,d30 @ h+=Maj from the past
#endif
vshr.u64 d26,d18,#41
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d18,#50
- vsli.64 d25,d18,#46
- vmov d29,d18
- vsli.64 d26,d18,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d18,#50
+ vsli.64 d25,d18,#46
+ vmov d29,d18
+ vsli.64 d26,d18,#23
#if 2<16 && defined(__ARMEL__)
vrev64.8 d2,d2
#endif
- veor d25,d24
- vbsl d29,d19,d20 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d19,d20 @ Ch(e,f,g)
vshr.u64 d24,d22,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d21
vshr.u64 d25,d22,#34
- vsli.64 d24,d22,#36
+ vsli.64 d24,d22,#36
vadd.i64 d27,d26
vshr.u64 d26,d22,#39
vadd.i64 d28,d2
- vsli.64 d25,d22,#30
- veor d30,d22,d23
- vsli.64 d26,d22,#25
- veor d21,d24,d25
+ vsli.64 d25,d22,#30
+ veor d30,d22,d23
+ vsli.64 d26,d22,#25
+ veor d21,d24,d25
vadd.i64 d27,d28
- vbsl d30,d16,d23 @ Maj(a,b,c)
- veor d21,d26 @ Sigma0(a)
+ vbsl d30,d16,d23 @ Maj(a,b,c)
+ veor d21,d26 @ Sigma0(a)
vadd.i64 d17,d27
vadd.i64 d30,d27
@ vadd.i64 d21,d30
vshr.u64 d24,d17,#14 @ 3
#if 3<16
- vld1.64 {d3},[r1]! @ handles unaligned
+ vld1.64 {d3},[r1]! @ handles unaligned
#endif
vshr.u64 d25,d17,#18
#if 3>0
- vadd.i64 d21,d30 @ h+=Maj from the past
+ vadd.i64 d21,d30 @ h+=Maj from the past
#endif
vshr.u64 d26,d17,#41
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d17,#50
- vsli.64 d25,d17,#46
- vmov d29,d17
- vsli.64 d26,d17,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d17,#50
+ vsli.64 d25,d17,#46
+ vmov d29,d17
+ vsli.64 d26,d17,#23
#if 3<16 && defined(__ARMEL__)
vrev64.8 d3,d3
#endif
- veor d25,d24
- vbsl d29,d18,d19 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d18,d19 @ Ch(e,f,g)
vshr.u64 d24,d21,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d20
vshr.u64 d25,d21,#34
- vsli.64 d24,d21,#36
+ vsli.64 d24,d21,#36
vadd.i64 d27,d26
vshr.u64 d26,d21,#39
vadd.i64 d28,d3
- vsli.64 d25,d21,#30
- veor d30,d21,d22
- vsli.64 d26,d21,#25
- veor d20,d24,d25
+ vsli.64 d25,d21,#30
+ veor d30,d21,d22
+ vsli.64 d26,d21,#25
+ veor d20,d24,d25
vadd.i64 d27,d28
- vbsl d30,d23,d22 @ Maj(a,b,c)
- veor d20,d26 @ Sigma0(a)
+ vbsl d30,d23,d22 @ Maj(a,b,c)
+ veor d20,d26 @ Sigma0(a)
vadd.i64 d16,d27
vadd.i64 d30,d27
@ vadd.i64 d20,d30
vshr.u64 d24,d16,#14 @ 4
#if 4<16
- vld1.64 {d4},[r1]! @ handles unaligned
+ vld1.64 {d4},[r1]! @ handles unaligned
#endif
vshr.u64 d25,d16,#18
#if 4>0
- vadd.i64 d20,d30 @ h+=Maj from the past
+ vadd.i64 d20,d30 @ h+=Maj from the past
#endif
vshr.u64 d26,d16,#41
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d16,#50
- vsli.64 d25,d16,#46
- vmov d29,d16
- vsli.64 d26,d16,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d16,#50
+ vsli.64 d25,d16,#46
+ vmov d29,d16
+ vsli.64 d26,d16,#23
#if 4<16 && defined(__ARMEL__)
vrev64.8 d4,d4
#endif
- veor d25,d24
- vbsl d29,d17,d18 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d17,d18 @ Ch(e,f,g)
vshr.u64 d24,d20,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d19
vshr.u64 d25,d20,#34
- vsli.64 d24,d20,#36
+ vsli.64 d24,d20,#36
vadd.i64 d27,d26
vshr.u64 d26,d20,#39
vadd.i64 d28,d4
- vsli.64 d25,d20,#30
- veor d30,d20,d21
- vsli.64 d26,d20,#25
- veor d19,d24,d25
+ vsli.64 d25,d20,#30
+ veor d30,d20,d21
+ vsli.64 d26,d20,#25
+ veor d19,d24,d25
vadd.i64 d27,d28
- vbsl d30,d22,d21 @ Maj(a,b,c)
- veor d19,d26 @ Sigma0(a)
+ vbsl d30,d22,d21 @ Maj(a,b,c)
+ veor d19,d26 @ Sigma0(a)
vadd.i64 d23,d27
vadd.i64 d30,d27
@ vadd.i64 d19,d30
vshr.u64 d24,d23,#14 @ 5
#if 5<16
- vld1.64 {d5},[r1]! @ handles unaligned
+ vld1.64 {d5},[r1]! @ handles unaligned
#endif
vshr.u64 d25,d23,#18
#if 5>0
- vadd.i64 d19,d30 @ h+=Maj from the past
+ vadd.i64 d19,d30 @ h+=Maj from the past
#endif
vshr.u64 d26,d23,#41
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d23,#50
- vsli.64 d25,d23,#46
- vmov d29,d23
- vsli.64 d26,d23,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d23,#50
+ vsli.64 d25,d23,#46
+ vmov d29,d23
+ vsli.64 d26,d23,#23
#if 5<16 && defined(__ARMEL__)
vrev64.8 d5,d5
#endif
- veor d25,d24
- vbsl d29,d16,d17 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d16,d17 @ Ch(e,f,g)
vshr.u64 d24,d19,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d18
vshr.u64 d25,d19,#34
- vsli.64 d24,d19,#36
+ vsli.64 d24,d19,#36
vadd.i64 d27,d26
vshr.u64 d26,d19,#39
vadd.i64 d28,d5
- vsli.64 d25,d19,#30
- veor d30,d19,d20
- vsli.64 d26,d19,#25
- veor d18,d24,d25
+ vsli.64 d25,d19,#30
+ veor d30,d19,d20
+ vsli.64 d26,d19,#25
+ veor d18,d24,d25
vadd.i64 d27,d28
- vbsl d30,d21,d20 @ Maj(a,b,c)
- veor d18,d26 @ Sigma0(a)
+ vbsl d30,d21,d20 @ Maj(a,b,c)
+ veor d18,d26 @ Sigma0(a)
vadd.i64 d22,d27
vadd.i64 d30,d27
@ vadd.i64 d18,d30
vshr.u64 d24,d22,#14 @ 6
#if 6<16
- vld1.64 {d6},[r1]! @ handles unaligned
+ vld1.64 {d6},[r1]! @ handles unaligned
#endif
vshr.u64 d25,d22,#18
#if 6>0
- vadd.i64 d18,d30 @ h+=Maj from the past
+ vadd.i64 d18,d30 @ h+=Maj from the past
#endif
vshr.u64 d26,d22,#41
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d22,#50
- vsli.64 d25,d22,#46
- vmov d29,d22
- vsli.64 d26,d22,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d22,#50
+ vsli.64 d25,d22,#46
+ vmov d29,d22
+ vsli.64 d26,d22,#23
#if 6<16 && defined(__ARMEL__)
vrev64.8 d6,d6
#endif
- veor d25,d24
- vbsl d29,d23,d16 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d23,d16 @ Ch(e,f,g)
vshr.u64 d24,d18,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d17
vshr.u64 d25,d18,#34
- vsli.64 d24,d18,#36
+ vsli.64 d24,d18,#36
vadd.i64 d27,d26
vshr.u64 d26,d18,#39
vadd.i64 d28,d6
- vsli.64 d25,d18,#30
- veor d30,d18,d19
- vsli.64 d26,d18,#25
- veor d17,d24,d25
+ vsli.64 d25,d18,#30
+ veor d30,d18,d19
+ vsli.64 d26,d18,#25
+ veor d17,d24,d25
vadd.i64 d27,d28
- vbsl d30,d20,d19 @ Maj(a,b,c)
- veor d17,d26 @ Sigma0(a)
+ vbsl d30,d20,d19 @ Maj(a,b,c)
+ veor d17,d26 @ Sigma0(a)
vadd.i64 d21,d27
vadd.i64 d30,d27
@ vadd.i64 d17,d30
vshr.u64 d24,d21,#14 @ 7
#if 7<16
- vld1.64 {d7},[r1]! @ handles unaligned
+ vld1.64 {d7},[r1]! @ handles unaligned
#endif
vshr.u64 d25,d21,#18
#if 7>0
- vadd.i64 d17,d30 @ h+=Maj from the past
+ vadd.i64 d17,d30 @ h+=Maj from the past
#endif
vshr.u64 d26,d21,#41
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d21,#50
- vsli.64 d25,d21,#46
- vmov d29,d21
- vsli.64 d26,d21,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d21,#50
+ vsli.64 d25,d21,#46
+ vmov d29,d21
+ vsli.64 d26,d21,#23
#if 7<16 && defined(__ARMEL__)
vrev64.8 d7,d7
#endif
- veor d25,d24
- vbsl d29,d22,d23 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d22,d23 @ Ch(e,f,g)
vshr.u64 d24,d17,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d16
vshr.u64 d25,d17,#34
- vsli.64 d24,d17,#36
+ vsli.64 d24,d17,#36
vadd.i64 d27,d26
vshr.u64 d26,d17,#39
vadd.i64 d28,d7
- vsli.64 d25,d17,#30
- veor d30,d17,d18
- vsli.64 d26,d17,#25
- veor d16,d24,d25
+ vsli.64 d25,d17,#30
+ veor d30,d17,d18
+ vsli.64 d26,d17,#25
+ veor d16,d24,d25
vadd.i64 d27,d28
- vbsl d30,d19,d18 @ Maj(a,b,c)
- veor d16,d26 @ Sigma0(a)
+ vbsl d30,d19,d18 @ Maj(a,b,c)
+ veor d16,d26 @ Sigma0(a)
vadd.i64 d20,d27
vadd.i64 d30,d27
@ vadd.i64 d16,d30
vshr.u64 d24,d20,#14 @ 8
#if 8<16
- vld1.64 {d8},[r1]! @ handles unaligned
+ vld1.64 {d8},[r1]! @ handles unaligned
#endif
vshr.u64 d25,d20,#18
#if 8>0
- vadd.i64 d16,d30 @ h+=Maj from the past
+ vadd.i64 d16,d30 @ h+=Maj from the past
#endif
vshr.u64 d26,d20,#41
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d20,#50
- vsli.64 d25,d20,#46
- vmov d29,d20
- vsli.64 d26,d20,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d20,#50
+ vsli.64 d25,d20,#46
+ vmov d29,d20
+ vsli.64 d26,d20,#23
#if 8<16 && defined(__ARMEL__)
vrev64.8 d8,d8
#endif
- veor d25,d24
- vbsl d29,d21,d22 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d21,d22 @ Ch(e,f,g)
vshr.u64 d24,d16,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d23
vshr.u64 d25,d16,#34
- vsli.64 d24,d16,#36
+ vsli.64 d24,d16,#36
vadd.i64 d27,d26
vshr.u64 d26,d16,#39
vadd.i64 d28,d8
- vsli.64 d25,d16,#30
- veor d30,d16,d17
- vsli.64 d26,d16,#25
- veor d23,d24,d25
+ vsli.64 d25,d16,#30
+ veor d30,d16,d17
+ vsli.64 d26,d16,#25
+ veor d23,d24,d25
vadd.i64 d27,d28
- vbsl d30,d18,d17 @ Maj(a,b,c)
- veor d23,d26 @ Sigma0(a)
+ vbsl d30,d18,d17 @ Maj(a,b,c)
+ veor d23,d26 @ Sigma0(a)
vadd.i64 d19,d27
vadd.i64 d30,d27
@ vadd.i64 d23,d30
vshr.u64 d24,d19,#14 @ 9
#if 9<16
- vld1.64 {d9},[r1]! @ handles unaligned
+ vld1.64 {d9},[r1]! @ handles unaligned
#endif
vshr.u64 d25,d19,#18
#if 9>0
- vadd.i64 d23,d30 @ h+=Maj from the past
+ vadd.i64 d23,d30 @ h+=Maj from the past
#endif
vshr.u64 d26,d19,#41
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d19,#50
- vsli.64 d25,d19,#46
- vmov d29,d19
- vsli.64 d26,d19,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d19,#50
+ vsli.64 d25,d19,#46
+ vmov d29,d19
+ vsli.64 d26,d19,#23
#if 9<16 && defined(__ARMEL__)
vrev64.8 d9,d9
#endif
- veor d25,d24
- vbsl d29,d20,d21 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d20,d21 @ Ch(e,f,g)
vshr.u64 d24,d23,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d22
vshr.u64 d25,d23,#34
- vsli.64 d24,d23,#36
+ vsli.64 d24,d23,#36
vadd.i64 d27,d26
vshr.u64 d26,d23,#39
vadd.i64 d28,d9
- vsli.64 d25,d23,#30
- veor d30,d23,d16
- vsli.64 d26,d23,#25
- veor d22,d24,d25
+ vsli.64 d25,d23,#30
+ veor d30,d23,d16
+ vsli.64 d26,d23,#25
+ veor d22,d24,d25
vadd.i64 d27,d28
- vbsl d30,d17,d16 @ Maj(a,b,c)
- veor d22,d26 @ Sigma0(a)
+ vbsl d30,d17,d16 @ Maj(a,b,c)
+ veor d22,d26 @ Sigma0(a)
vadd.i64 d18,d27
vadd.i64 d30,d27
@ vadd.i64 d22,d30
vshr.u64 d24,d18,#14 @ 10
#if 10<16
- vld1.64 {d10},[r1]! @ handles unaligned
+ vld1.64 {d10},[r1]! @ handles unaligned
#endif
vshr.u64 d25,d18,#18
#if 10>0
- vadd.i64 d22,d30 @ h+=Maj from the past
+ vadd.i64 d22,d30 @ h+=Maj from the past
#endif
vshr.u64 d26,d18,#41
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d18,#50
- vsli.64 d25,d18,#46
- vmov d29,d18
- vsli.64 d26,d18,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d18,#50
+ vsli.64 d25,d18,#46
+ vmov d29,d18
+ vsli.64 d26,d18,#23
#if 10<16 && defined(__ARMEL__)
vrev64.8 d10,d10
#endif
- veor d25,d24
- vbsl d29,d19,d20 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d19,d20 @ Ch(e,f,g)
vshr.u64 d24,d22,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d21
vshr.u64 d25,d22,#34
- vsli.64 d24,d22,#36
+ vsli.64 d24,d22,#36
vadd.i64 d27,d26
vshr.u64 d26,d22,#39
vadd.i64 d28,d10
- vsli.64 d25,d22,#30
- veor d30,d22,d23
- vsli.64 d26,d22,#25
- veor d21,d24,d25
+ vsli.64 d25,d22,#30
+ veor d30,d22,d23
+ vsli.64 d26,d22,#25
+ veor d21,d24,d25
vadd.i64 d27,d28
- vbsl d30,d16,d23 @ Maj(a,b,c)
- veor d21,d26 @ Sigma0(a)
+ vbsl d30,d16,d23 @ Maj(a,b,c)
+ veor d21,d26 @ Sigma0(a)
vadd.i64 d17,d27
vadd.i64 d30,d27
@ vadd.i64 d21,d30
vshr.u64 d24,d17,#14 @ 11
#if 11<16
- vld1.64 {d11},[r1]! @ handles unaligned
+ vld1.64 {d11},[r1]! @ handles unaligned
#endif
vshr.u64 d25,d17,#18
#if 11>0
- vadd.i64 d21,d30 @ h+=Maj from the past
+ vadd.i64 d21,d30 @ h+=Maj from the past
#endif
vshr.u64 d26,d17,#41
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d17,#50
- vsli.64 d25,d17,#46
- vmov d29,d17
- vsli.64 d26,d17,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d17,#50
+ vsli.64 d25,d17,#46
+ vmov d29,d17
+ vsli.64 d26,d17,#23
#if 11<16 && defined(__ARMEL__)
vrev64.8 d11,d11
#endif
- veor d25,d24
- vbsl d29,d18,d19 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d18,d19 @ Ch(e,f,g)
vshr.u64 d24,d21,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d20
vshr.u64 d25,d21,#34
- vsli.64 d24,d21,#36
+ vsli.64 d24,d21,#36
vadd.i64 d27,d26
vshr.u64 d26,d21,#39
vadd.i64 d28,d11
- vsli.64 d25,d21,#30
- veor d30,d21,d22
- vsli.64 d26,d21,#25
- veor d20,d24,d25
+ vsli.64 d25,d21,#30
+ veor d30,d21,d22
+ vsli.64 d26,d21,#25
+ veor d20,d24,d25
vadd.i64 d27,d28
- vbsl d30,d23,d22 @ Maj(a,b,c)
- veor d20,d26 @ Sigma0(a)
+ vbsl d30,d23,d22 @ Maj(a,b,c)
+ veor d20,d26 @ Sigma0(a)
vadd.i64 d16,d27
vadd.i64 d30,d27
@ vadd.i64 d20,d30
vshr.u64 d24,d16,#14 @ 12
#if 12<16
- vld1.64 {d12},[r1]! @ handles unaligned
+ vld1.64 {d12},[r1]! @ handles unaligned
#endif
vshr.u64 d25,d16,#18
#if 12>0
- vadd.i64 d20,d30 @ h+=Maj from the past
+ vadd.i64 d20,d30 @ h+=Maj from the past
#endif
vshr.u64 d26,d16,#41
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d16,#50
- vsli.64 d25,d16,#46
- vmov d29,d16
- vsli.64 d26,d16,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d16,#50
+ vsli.64 d25,d16,#46
+ vmov d29,d16
+ vsli.64 d26,d16,#23
#if 12<16 && defined(__ARMEL__)
vrev64.8 d12,d12
#endif
- veor d25,d24
- vbsl d29,d17,d18 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d17,d18 @ Ch(e,f,g)
vshr.u64 d24,d20,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d19
vshr.u64 d25,d20,#34
- vsli.64 d24,d20,#36
+ vsli.64 d24,d20,#36
vadd.i64 d27,d26
vshr.u64 d26,d20,#39
vadd.i64 d28,d12
- vsli.64 d25,d20,#30
- veor d30,d20,d21
- vsli.64 d26,d20,#25
- veor d19,d24,d25
+ vsli.64 d25,d20,#30
+ veor d30,d20,d21
+ vsli.64 d26,d20,#25
+ veor d19,d24,d25
vadd.i64 d27,d28
- vbsl d30,d22,d21 @ Maj(a,b,c)
- veor d19,d26 @ Sigma0(a)
+ vbsl d30,d22,d21 @ Maj(a,b,c)
+ veor d19,d26 @ Sigma0(a)
vadd.i64 d23,d27
vadd.i64 d30,d27
@ vadd.i64 d19,d30
vshr.u64 d24,d23,#14 @ 13
#if 13<16
- vld1.64 {d13},[r1]! @ handles unaligned
+ vld1.64 {d13},[r1]! @ handles unaligned
#endif
vshr.u64 d25,d23,#18
#if 13>0
- vadd.i64 d19,d30 @ h+=Maj from the past
+ vadd.i64 d19,d30 @ h+=Maj from the past
#endif
vshr.u64 d26,d23,#41
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d23,#50
- vsli.64 d25,d23,#46
- vmov d29,d23
- vsli.64 d26,d23,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d23,#50
+ vsli.64 d25,d23,#46
+ vmov d29,d23
+ vsli.64 d26,d23,#23
#if 13<16 && defined(__ARMEL__)
vrev64.8 d13,d13
#endif
- veor d25,d24
- vbsl d29,d16,d17 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d16,d17 @ Ch(e,f,g)
vshr.u64 d24,d19,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d18
vshr.u64 d25,d19,#34
- vsli.64 d24,d19,#36
+ vsli.64 d24,d19,#36
vadd.i64 d27,d26
vshr.u64 d26,d19,#39
vadd.i64 d28,d13
- vsli.64 d25,d19,#30
- veor d30,d19,d20
- vsli.64 d26,d19,#25
- veor d18,d24,d25
+ vsli.64 d25,d19,#30
+ veor d30,d19,d20
+ vsli.64 d26,d19,#25
+ veor d18,d24,d25
vadd.i64 d27,d28
- vbsl d30,d21,d20 @ Maj(a,b,c)
- veor d18,d26 @ Sigma0(a)
+ vbsl d30,d21,d20 @ Maj(a,b,c)
+ veor d18,d26 @ Sigma0(a)
vadd.i64 d22,d27
vadd.i64 d30,d27
@ vadd.i64 d18,d30
vshr.u64 d24,d22,#14 @ 14
#if 14<16
- vld1.64 {d14},[r1]! @ handles unaligned
+ vld1.64 {d14},[r1]! @ handles unaligned
#endif
vshr.u64 d25,d22,#18
#if 14>0
- vadd.i64 d18,d30 @ h+=Maj from the past
+ vadd.i64 d18,d30 @ h+=Maj from the past
#endif
vshr.u64 d26,d22,#41
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d22,#50
- vsli.64 d25,d22,#46
- vmov d29,d22
- vsli.64 d26,d22,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d22,#50
+ vsli.64 d25,d22,#46
+ vmov d29,d22
+ vsli.64 d26,d22,#23
#if 14<16 && defined(__ARMEL__)
vrev64.8 d14,d14
#endif
- veor d25,d24
- vbsl d29,d23,d16 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d23,d16 @ Ch(e,f,g)
vshr.u64 d24,d18,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d17
vshr.u64 d25,d18,#34
- vsli.64 d24,d18,#36
+ vsli.64 d24,d18,#36
vadd.i64 d27,d26
vshr.u64 d26,d18,#39
vadd.i64 d28,d14
- vsli.64 d25,d18,#30
- veor d30,d18,d19
- vsli.64 d26,d18,#25
- veor d17,d24,d25
+ vsli.64 d25,d18,#30
+ veor d30,d18,d19
+ vsli.64 d26,d18,#25
+ veor d17,d24,d25
vadd.i64 d27,d28
- vbsl d30,d20,d19 @ Maj(a,b,c)
- veor d17,d26 @ Sigma0(a)
+ vbsl d30,d20,d19 @ Maj(a,b,c)
+ veor d17,d26 @ Sigma0(a)
vadd.i64 d21,d27
vadd.i64 d30,d27
@ vadd.i64 d17,d30
vshr.u64 d24,d21,#14 @ 15
#if 15<16
- vld1.64 {d15},[r1]! @ handles unaligned
+ vld1.64 {d15},[r1]! @ handles unaligned
#endif
vshr.u64 d25,d21,#18
#if 15>0
- vadd.i64 d17,d30 @ h+=Maj from the past
+ vadd.i64 d17,d30 @ h+=Maj from the past
#endif
vshr.u64 d26,d21,#41
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d21,#50
- vsli.64 d25,d21,#46
- vmov d29,d21
- vsli.64 d26,d21,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d21,#50
+ vsli.64 d25,d21,#46
+ vmov d29,d21
+ vsli.64 d26,d21,#23
#if 15<16 && defined(__ARMEL__)
vrev64.8 d15,d15
#endif
- veor d25,d24
- vbsl d29,d22,d23 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d22,d23 @ Ch(e,f,g)
vshr.u64 d24,d17,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d16
vshr.u64 d25,d17,#34
- vsli.64 d24,d17,#36
+ vsli.64 d24,d17,#36
vadd.i64 d27,d26
vshr.u64 d26,d17,#39
vadd.i64 d28,d15
- vsli.64 d25,d17,#30
- veor d30,d17,d18
- vsli.64 d26,d17,#25
- veor d16,d24,d25
+ vsli.64 d25,d17,#30
+ veor d30,d17,d18
+ vsli.64 d26,d17,#25
+ veor d16,d24,d25
vadd.i64 d27,d28
- vbsl d30,d19,d18 @ Maj(a,b,c)
- veor d16,d26 @ Sigma0(a)
+ vbsl d30,d19,d18 @ Maj(a,b,c)
+ veor d16,d26 @ Sigma0(a)
vadd.i64 d20,d27
vadd.i64 d30,d27
@ vadd.i64 d16,d30
- mov r12,#4
+ mov r12,#4
.L16_79_neon:
- subs r12,#1
+ subs r12,#1
vshr.u64 q12,q7,#19
vshr.u64 q13,q7,#61
- vadd.i64 d16,d30 @ h+=Maj from the past
+ vadd.i64 d16,d30 @ h+=Maj from the past
vshr.u64 q15,q7,#6
- vsli.64 q12,q7,#45
- vext.8 q14,q0,q1,#8 @ X[i+1]
- vsli.64 q13,q7,#3
- veor q15,q12
+ vsli.64 q12,q7,#45
+ vext.8 q14,q0,q1,#8 @ X[i+1]
+ vsli.64 q13,q7,#3
+ veor q15,q12
vshr.u64 q12,q14,#1
- veor q15,q13 @ sigma1(X[i+14])
+ veor q15,q13 @ sigma1(X[i+14])
vshr.u64 q13,q14,#8
vadd.i64 q0,q15
vshr.u64 q15,q14,#7
- vsli.64 q12,q14,#63
- vsli.64 q13,q14,#56
- vext.8 q14,q4,q5,#8 @ X[i+9]
- veor q15,q12
+ vsli.64 q12,q14,#63
+ vsli.64 q13,q14,#56
+ vext.8 q14,q4,q5,#8 @ X[i+9]
+ veor q15,q12
vshr.u64 d24,d20,#14 @ from NEON_00_15
vadd.i64 q0,q14
vshr.u64 d25,d20,#18 @ from NEON_00_15
- veor q15,q13 @ sigma0(X[i+1])
+ veor q15,q13 @ sigma0(X[i+1])
vshr.u64 d26,d20,#41 @ from NEON_00_15
vadd.i64 q0,q15
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d20,#50
- vsli.64 d25,d20,#46
- vmov d29,d20
- vsli.64 d26,d20,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d20,#50
+ vsli.64 d25,d20,#46
+ vmov d29,d20
+ vsli.64 d26,d20,#23
#if 16<16 && defined(__ARMEL__)
vrev64.8 ,
#endif
- veor d25,d24
- vbsl d29,d21,d22 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d21,d22 @ Ch(e,f,g)
vshr.u64 d24,d16,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d23
vshr.u64 d25,d16,#34
- vsli.64 d24,d16,#36
+ vsli.64 d24,d16,#36
vadd.i64 d27,d26
vshr.u64 d26,d16,#39
vadd.i64 d28,d0
- vsli.64 d25,d16,#30
- veor d30,d16,d17
- vsli.64 d26,d16,#25
- veor d23,d24,d25
+ vsli.64 d25,d16,#30
+ veor d30,d16,d17
+ vsli.64 d26,d16,#25
+ veor d23,d24,d25
vadd.i64 d27,d28
- vbsl d30,d18,d17 @ Maj(a,b,c)
- veor d23,d26 @ Sigma0(a)
+ vbsl d30,d18,d17 @ Maj(a,b,c)
+ veor d23,d26 @ Sigma0(a)
vadd.i64 d19,d27
vadd.i64 d30,d27
@ vadd.i64 d23,d30
vshr.u64 d24,d19,#14 @ 17
#if 17<16
- vld1.64 {d1},[r1]! @ handles unaligned
+ vld1.64 {d1},[r1]! @ handles unaligned
#endif
vshr.u64 d25,d19,#18
#if 17>0
- vadd.i64 d23,d30 @ h+=Maj from the past
+ vadd.i64 d23,d30 @ h+=Maj from the past
#endif
vshr.u64 d26,d19,#41
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d19,#50
- vsli.64 d25,d19,#46
- vmov d29,d19
- vsli.64 d26,d19,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d19,#50
+ vsli.64 d25,d19,#46
+ vmov d29,d19
+ vsli.64 d26,d19,#23
#if 17<16 && defined(__ARMEL__)
vrev64.8 ,
#endif
- veor d25,d24
- vbsl d29,d20,d21 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d20,d21 @ Ch(e,f,g)
vshr.u64 d24,d23,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d22
vshr.u64 d25,d23,#34
- vsli.64 d24,d23,#36
+ vsli.64 d24,d23,#36
vadd.i64 d27,d26
vshr.u64 d26,d23,#39
vadd.i64 d28,d1
- vsli.64 d25,d23,#30
- veor d30,d23,d16
- vsli.64 d26,d23,#25
- veor d22,d24,d25
+ vsli.64 d25,d23,#30
+ veor d30,d23,d16
+ vsli.64 d26,d23,#25
+ veor d22,d24,d25
vadd.i64 d27,d28
- vbsl d30,d17,d16 @ Maj(a,b,c)
- veor d22,d26 @ Sigma0(a)
+ vbsl d30,d17,d16 @ Maj(a,b,c)
+ veor d22,d26 @ Sigma0(a)
vadd.i64 d18,d27
vadd.i64 d30,d27
@ vadd.i64 d22,d30
vshr.u64 q12,q0,#19
vshr.u64 q13,q0,#61
- vadd.i64 d22,d30 @ h+=Maj from the past
+ vadd.i64 d22,d30 @ h+=Maj from the past
vshr.u64 q15,q0,#6
- vsli.64 q12,q0,#45
- vext.8 q14,q1,q2,#8 @ X[i+1]
- vsli.64 q13,q0,#3
- veor q15,q12
+ vsli.64 q12,q0,#45
+ vext.8 q14,q1,q2,#8 @ X[i+1]
+ vsli.64 q13,q0,#3
+ veor q15,q12
vshr.u64 q12,q14,#1
- veor q15,q13 @ sigma1(X[i+14])
+ veor q15,q13 @ sigma1(X[i+14])
vshr.u64 q13,q14,#8
vadd.i64 q1,q15
vshr.u64 q15,q14,#7
- vsli.64 q12,q14,#63
- vsli.64 q13,q14,#56
- vext.8 q14,q5,q6,#8 @ X[i+9]
- veor q15,q12
+ vsli.64 q12,q14,#63
+ vsli.64 q13,q14,#56
+ vext.8 q14,q5,q6,#8 @ X[i+9]
+ veor q15,q12
vshr.u64 d24,d18,#14 @ from NEON_00_15
vadd.i64 q1,q14
vshr.u64 d25,d18,#18 @ from NEON_00_15
- veor q15,q13 @ sigma0(X[i+1])
+ veor q15,q13 @ sigma0(X[i+1])
vshr.u64 d26,d18,#41 @ from NEON_00_15
vadd.i64 q1,q15
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d18,#50
- vsli.64 d25,d18,#46
- vmov d29,d18
- vsli.64 d26,d18,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d18,#50
+ vsli.64 d25,d18,#46
+ vmov d29,d18
+ vsli.64 d26,d18,#23
#if 18<16 && defined(__ARMEL__)
vrev64.8 ,
#endif
- veor d25,d24
- vbsl d29,d19,d20 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d19,d20 @ Ch(e,f,g)
vshr.u64 d24,d22,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d21
vshr.u64 d25,d22,#34
- vsli.64 d24,d22,#36
+ vsli.64 d24,d22,#36
vadd.i64 d27,d26
vshr.u64 d26,d22,#39
vadd.i64 d28,d2
- vsli.64 d25,d22,#30
- veor d30,d22,d23
- vsli.64 d26,d22,#25
- veor d21,d24,d25
+ vsli.64 d25,d22,#30
+ veor d30,d22,d23
+ vsli.64 d26,d22,#25
+ veor d21,d24,d25
vadd.i64 d27,d28
- vbsl d30,d16,d23 @ Maj(a,b,c)
- veor d21,d26 @ Sigma0(a)
+ vbsl d30,d16,d23 @ Maj(a,b,c)
+ veor d21,d26 @ Sigma0(a)
vadd.i64 d17,d27
vadd.i64 d30,d27
@ vadd.i64 d21,d30
vshr.u64 d24,d17,#14 @ 19
#if 19<16
- vld1.64 {d3},[r1]! @ handles unaligned
+ vld1.64 {d3},[r1]! @ handles unaligned
#endif
vshr.u64 d25,d17,#18
#if 19>0
- vadd.i64 d21,d30 @ h+=Maj from the past
+ vadd.i64 d21,d30 @ h+=Maj from the past
#endif
vshr.u64 d26,d17,#41
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d17,#50
- vsli.64 d25,d17,#46
- vmov d29,d17
- vsli.64 d26,d17,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d17,#50
+ vsli.64 d25,d17,#46
+ vmov d29,d17
+ vsli.64 d26,d17,#23
#if 19<16 && defined(__ARMEL__)
vrev64.8 ,
#endif
- veor d25,d24
- vbsl d29,d18,d19 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d18,d19 @ Ch(e,f,g)
vshr.u64 d24,d21,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d20
vshr.u64 d25,d21,#34
- vsli.64 d24,d21,#36
+ vsli.64 d24,d21,#36
vadd.i64 d27,d26
vshr.u64 d26,d21,#39
vadd.i64 d28,d3
- vsli.64 d25,d21,#30
- veor d30,d21,d22
- vsli.64 d26,d21,#25
- veor d20,d24,d25
+ vsli.64 d25,d21,#30
+ veor d30,d21,d22
+ vsli.64 d26,d21,#25
+ veor d20,d24,d25
vadd.i64 d27,d28
- vbsl d30,d23,d22 @ Maj(a,b,c)
- veor d20,d26 @ Sigma0(a)
+ vbsl d30,d23,d22 @ Maj(a,b,c)
+ veor d20,d26 @ Sigma0(a)
vadd.i64 d16,d27
vadd.i64 d30,d27
@ vadd.i64 d20,d30
vshr.u64 q12,q1,#19
vshr.u64 q13,q1,#61
- vadd.i64 d20,d30 @ h+=Maj from the past
+ vadd.i64 d20,d30 @ h+=Maj from the past
vshr.u64 q15,q1,#6
- vsli.64 q12,q1,#45
- vext.8 q14,q2,q3,#8 @ X[i+1]
- vsli.64 q13,q1,#3
- veor q15,q12
+ vsli.64 q12,q1,#45
+ vext.8 q14,q2,q3,#8 @ X[i+1]
+ vsli.64 q13,q1,#3
+ veor q15,q12
vshr.u64 q12,q14,#1
- veor q15,q13 @ sigma1(X[i+14])
+ veor q15,q13 @ sigma1(X[i+14])
vshr.u64 q13,q14,#8
vadd.i64 q2,q15
vshr.u64 q15,q14,#7
- vsli.64 q12,q14,#63
- vsli.64 q13,q14,#56
- vext.8 q14,q6,q7,#8 @ X[i+9]
- veor q15,q12
+ vsli.64 q12,q14,#63
+ vsli.64 q13,q14,#56
+ vext.8 q14,q6,q7,#8 @ X[i+9]
+ veor q15,q12
vshr.u64 d24,d16,#14 @ from NEON_00_15
vadd.i64 q2,q14
vshr.u64 d25,d16,#18 @ from NEON_00_15
- veor q15,q13 @ sigma0(X[i+1])
+ veor q15,q13 @ sigma0(X[i+1])
vshr.u64 d26,d16,#41 @ from NEON_00_15
vadd.i64 q2,q15
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d16,#50
- vsli.64 d25,d16,#46
- vmov d29,d16
- vsli.64 d26,d16,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d16,#50
+ vsli.64 d25,d16,#46
+ vmov d29,d16
+ vsli.64 d26,d16,#23
#if 20<16 && defined(__ARMEL__)
vrev64.8 ,
#endif
- veor d25,d24
- vbsl d29,d17,d18 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d17,d18 @ Ch(e,f,g)
vshr.u64 d24,d20,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d19
vshr.u64 d25,d20,#34
- vsli.64 d24,d20,#36
+ vsli.64 d24,d20,#36
vadd.i64 d27,d26
vshr.u64 d26,d20,#39
vadd.i64 d28,d4
- vsli.64 d25,d20,#30
- veor d30,d20,d21
- vsli.64 d26,d20,#25
- veor d19,d24,d25
+ vsli.64 d25,d20,#30
+ veor d30,d20,d21
+ vsli.64 d26,d20,#25
+ veor d19,d24,d25
vadd.i64 d27,d28
- vbsl d30,d22,d21 @ Maj(a,b,c)
- veor d19,d26 @ Sigma0(a)
+ vbsl d30,d22,d21 @ Maj(a,b,c)
+ veor d19,d26 @ Sigma0(a)
vadd.i64 d23,d27
vadd.i64 d30,d27
@ vadd.i64 d19,d30
vshr.u64 d24,d23,#14 @ 21
#if 21<16
- vld1.64 {d5},[r1]! @ handles unaligned
+ vld1.64 {d5},[r1]! @ handles unaligned
#endif
vshr.u64 d25,d23,#18
#if 21>0
- vadd.i64 d19,d30 @ h+=Maj from the past
+ vadd.i64 d19,d30 @ h+=Maj from the past
#endif
vshr.u64 d26,d23,#41
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d23,#50
- vsli.64 d25,d23,#46
- vmov d29,d23
- vsli.64 d26,d23,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d23,#50
+ vsli.64 d25,d23,#46
+ vmov d29,d23
+ vsli.64 d26,d23,#23
#if 21<16 && defined(__ARMEL__)
vrev64.8 ,
#endif
- veor d25,d24
- vbsl d29,d16,d17 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d16,d17 @ Ch(e,f,g)
vshr.u64 d24,d19,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d18
vshr.u64 d25,d19,#34
- vsli.64 d24,d19,#36
+ vsli.64 d24,d19,#36
vadd.i64 d27,d26
vshr.u64 d26,d19,#39
vadd.i64 d28,d5
- vsli.64 d25,d19,#30
- veor d30,d19,d20
- vsli.64 d26,d19,#25
- veor d18,d24,d25
+ vsli.64 d25,d19,#30
+ veor d30,d19,d20
+ vsli.64 d26,d19,#25
+ veor d18,d24,d25
vadd.i64 d27,d28
- vbsl d30,d21,d20 @ Maj(a,b,c)
- veor d18,d26 @ Sigma0(a)
+ vbsl d30,d21,d20 @ Maj(a,b,c)
+ veor d18,d26 @ Sigma0(a)
vadd.i64 d22,d27
vadd.i64 d30,d27
@ vadd.i64 d18,d30
vshr.u64 q12,q2,#19
vshr.u64 q13,q2,#61
- vadd.i64 d18,d30 @ h+=Maj from the past
+ vadd.i64 d18,d30 @ h+=Maj from the past
vshr.u64 q15,q2,#6
- vsli.64 q12,q2,#45
- vext.8 q14,q3,q4,#8 @ X[i+1]
- vsli.64 q13,q2,#3
- veor q15,q12
+ vsli.64 q12,q2,#45
+ vext.8 q14,q3,q4,#8 @ X[i+1]
+ vsli.64 q13,q2,#3
+ veor q15,q12
vshr.u64 q12,q14,#1
- veor q15,q13 @ sigma1(X[i+14])
+ veor q15,q13 @ sigma1(X[i+14])
vshr.u64 q13,q14,#8
vadd.i64 q3,q15
vshr.u64 q15,q14,#7
- vsli.64 q12,q14,#63
- vsli.64 q13,q14,#56
- vext.8 q14,q7,q0,#8 @ X[i+9]
- veor q15,q12
+ vsli.64 q12,q14,#63
+ vsli.64 q13,q14,#56
+ vext.8 q14,q7,q0,#8 @ X[i+9]
+ veor q15,q12
vshr.u64 d24,d22,#14 @ from NEON_00_15
vadd.i64 q3,q14
vshr.u64 d25,d22,#18 @ from NEON_00_15
- veor q15,q13 @ sigma0(X[i+1])
+ veor q15,q13 @ sigma0(X[i+1])
vshr.u64 d26,d22,#41 @ from NEON_00_15
vadd.i64 q3,q15
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d22,#50
- vsli.64 d25,d22,#46
- vmov d29,d22
- vsli.64 d26,d22,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d22,#50
+ vsli.64 d25,d22,#46
+ vmov d29,d22
+ vsli.64 d26,d22,#23
#if 22<16 && defined(__ARMEL__)
vrev64.8 ,
#endif
- veor d25,d24
- vbsl d29,d23,d16 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d23,d16 @ Ch(e,f,g)
vshr.u64 d24,d18,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d17
vshr.u64 d25,d18,#34
- vsli.64 d24,d18,#36
+ vsli.64 d24,d18,#36
vadd.i64 d27,d26
vshr.u64 d26,d18,#39
vadd.i64 d28,d6
- vsli.64 d25,d18,#30
- veor d30,d18,d19
- vsli.64 d26,d18,#25
- veor d17,d24,d25
+ vsli.64 d25,d18,#30
+ veor d30,d18,d19
+ vsli.64 d26,d18,#25
+ veor d17,d24,d25
vadd.i64 d27,d28
- vbsl d30,d20,d19 @ Maj(a,b,c)
- veor d17,d26 @ Sigma0(a)
+ vbsl d30,d20,d19 @ Maj(a,b,c)
+ veor d17,d26 @ Sigma0(a)
vadd.i64 d21,d27
vadd.i64 d30,d27
@ vadd.i64 d17,d30
vshr.u64 d24,d21,#14 @ 23
#if 23<16
- vld1.64 {d7},[r1]! @ handles unaligned
+ vld1.64 {d7},[r1]! @ handles unaligned
#endif
vshr.u64 d25,d21,#18
#if 23>0
- vadd.i64 d17,d30 @ h+=Maj from the past
+ vadd.i64 d17,d30 @ h+=Maj from the past
#endif
vshr.u64 d26,d21,#41
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d21,#50
- vsli.64 d25,d21,#46
- vmov d29,d21
- vsli.64 d26,d21,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d21,#50
+ vsli.64 d25,d21,#46
+ vmov d29,d21
+ vsli.64 d26,d21,#23
#if 23<16 && defined(__ARMEL__)
vrev64.8 ,
#endif
- veor d25,d24
- vbsl d29,d22,d23 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d22,d23 @ Ch(e,f,g)
vshr.u64 d24,d17,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d16
vshr.u64 d25,d17,#34
- vsli.64 d24,d17,#36
+ vsli.64 d24,d17,#36
vadd.i64 d27,d26
vshr.u64 d26,d17,#39
vadd.i64 d28,d7
- vsli.64 d25,d17,#30
- veor d30,d17,d18
- vsli.64 d26,d17,#25
- veor d16,d24,d25
+ vsli.64 d25,d17,#30
+ veor d30,d17,d18
+ vsli.64 d26,d17,#25
+ veor d16,d24,d25
vadd.i64 d27,d28
- vbsl d30,d19,d18 @ Maj(a,b,c)
- veor d16,d26 @ Sigma0(a)
+ vbsl d30,d19,d18 @ Maj(a,b,c)
+ veor d16,d26 @ Sigma0(a)
vadd.i64 d20,d27
vadd.i64 d30,d27
@ vadd.i64 d16,d30
vshr.u64 q12,q3,#19
vshr.u64 q13,q3,#61
- vadd.i64 d16,d30 @ h+=Maj from the past
+ vadd.i64 d16,d30 @ h+=Maj from the past
vshr.u64 q15,q3,#6
- vsli.64 q12,q3,#45
- vext.8 q14,q4,q5,#8 @ X[i+1]
- vsli.64 q13,q3,#3
- veor q15,q12
+ vsli.64 q12,q3,#45
+ vext.8 q14,q4,q5,#8 @ X[i+1]
+ vsli.64 q13,q3,#3
+ veor q15,q12
vshr.u64 q12,q14,#1
- veor q15,q13 @ sigma1(X[i+14])
+ veor q15,q13 @ sigma1(X[i+14])
vshr.u64 q13,q14,#8
vadd.i64 q4,q15
vshr.u64 q15,q14,#7
- vsli.64 q12,q14,#63
- vsli.64 q13,q14,#56
- vext.8 q14,q0,q1,#8 @ X[i+9]
- veor q15,q12
+ vsli.64 q12,q14,#63
+ vsli.64 q13,q14,#56
+ vext.8 q14,q0,q1,#8 @ X[i+9]
+ veor q15,q12
vshr.u64 d24,d20,#14 @ from NEON_00_15
vadd.i64 q4,q14
vshr.u64 d25,d20,#18 @ from NEON_00_15
- veor q15,q13 @ sigma0(X[i+1])
+ veor q15,q13 @ sigma0(X[i+1])
vshr.u64 d26,d20,#41 @ from NEON_00_15
vadd.i64 q4,q15
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d20,#50
- vsli.64 d25,d20,#46
- vmov d29,d20
- vsli.64 d26,d20,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d20,#50
+ vsli.64 d25,d20,#46
+ vmov d29,d20
+ vsli.64 d26,d20,#23
#if 24<16 && defined(__ARMEL__)
vrev64.8 ,
#endif
- veor d25,d24
- vbsl d29,d21,d22 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d21,d22 @ Ch(e,f,g)
vshr.u64 d24,d16,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d23
vshr.u64 d25,d16,#34
- vsli.64 d24,d16,#36
+ vsli.64 d24,d16,#36
vadd.i64 d27,d26
vshr.u64 d26,d16,#39
vadd.i64 d28,d8
- vsli.64 d25,d16,#30
- veor d30,d16,d17
- vsli.64 d26,d16,#25
- veor d23,d24,d25
+ vsli.64 d25,d16,#30
+ veor d30,d16,d17
+ vsli.64 d26,d16,#25
+ veor d23,d24,d25
vadd.i64 d27,d28
- vbsl d30,d18,d17 @ Maj(a,b,c)
- veor d23,d26 @ Sigma0(a)
+ vbsl d30,d18,d17 @ Maj(a,b,c)
+ veor d23,d26 @ Sigma0(a)
vadd.i64 d19,d27
vadd.i64 d30,d27
@ vadd.i64 d23,d30
vshr.u64 d24,d19,#14 @ 25
#if 25<16
- vld1.64 {d9},[r1]! @ handles unaligned
+ vld1.64 {d9},[r1]! @ handles unaligned
#endif
vshr.u64 d25,d19,#18
#if 25>0
- vadd.i64 d23,d30 @ h+=Maj from the past
+ vadd.i64 d23,d30 @ h+=Maj from the past
#endif
vshr.u64 d26,d19,#41
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d19,#50
- vsli.64 d25,d19,#46
- vmov d29,d19
- vsli.64 d26,d19,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d19,#50
+ vsli.64 d25,d19,#46
+ vmov d29,d19
+ vsli.64 d26,d19,#23
#if 25<16 && defined(__ARMEL__)
vrev64.8 ,
#endif
- veor d25,d24
- vbsl d29,d20,d21 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d20,d21 @ Ch(e,f,g)
vshr.u64 d24,d23,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d22
vshr.u64 d25,d23,#34
- vsli.64 d24,d23,#36
+ vsli.64 d24,d23,#36
vadd.i64 d27,d26
vshr.u64 d26,d23,#39
vadd.i64 d28,d9
- vsli.64 d25,d23,#30
- veor d30,d23,d16
- vsli.64 d26,d23,#25
- veor d22,d24,d25
+ vsli.64 d25,d23,#30
+ veor d30,d23,d16
+ vsli.64 d26,d23,#25
+ veor d22,d24,d25
vadd.i64 d27,d28
- vbsl d30,d17,d16 @ Maj(a,b,c)
- veor d22,d26 @ Sigma0(a)
+ vbsl d30,d17,d16 @ Maj(a,b,c)
+ veor d22,d26 @ Sigma0(a)
vadd.i64 d18,d27
vadd.i64 d30,d27
@ vadd.i64 d22,d30
vshr.u64 q12,q4,#19
vshr.u64 q13,q4,#61
- vadd.i64 d22,d30 @ h+=Maj from the past
+ vadd.i64 d22,d30 @ h+=Maj from the past
vshr.u64 q15,q4,#6
- vsli.64 q12,q4,#45
- vext.8 q14,q5,q6,#8 @ X[i+1]
- vsli.64 q13,q4,#3
- veor q15,q12
+ vsli.64 q12,q4,#45
+ vext.8 q14,q5,q6,#8 @ X[i+1]
+ vsli.64 q13,q4,#3
+ veor q15,q12
vshr.u64 q12,q14,#1
- veor q15,q13 @ sigma1(X[i+14])
+ veor q15,q13 @ sigma1(X[i+14])
vshr.u64 q13,q14,#8
vadd.i64 q5,q15
vshr.u64 q15,q14,#7
- vsli.64 q12,q14,#63
- vsli.64 q13,q14,#56
- vext.8 q14,q1,q2,#8 @ X[i+9]
- veor q15,q12
+ vsli.64 q12,q14,#63
+ vsli.64 q13,q14,#56
+ vext.8 q14,q1,q2,#8 @ X[i+9]
+ veor q15,q12
vshr.u64 d24,d18,#14 @ from NEON_00_15
vadd.i64 q5,q14
vshr.u64 d25,d18,#18 @ from NEON_00_15
- veor q15,q13 @ sigma0(X[i+1])
+ veor q15,q13 @ sigma0(X[i+1])
vshr.u64 d26,d18,#41 @ from NEON_00_15
vadd.i64 q5,q15
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d18,#50
- vsli.64 d25,d18,#46
- vmov d29,d18
- vsli.64 d26,d18,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d18,#50
+ vsli.64 d25,d18,#46
+ vmov d29,d18
+ vsli.64 d26,d18,#23
#if 26<16 && defined(__ARMEL__)
vrev64.8 ,
#endif
- veor d25,d24
- vbsl d29,d19,d20 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d19,d20 @ Ch(e,f,g)
vshr.u64 d24,d22,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d21
vshr.u64 d25,d22,#34
- vsli.64 d24,d22,#36
+ vsli.64 d24,d22,#36
vadd.i64 d27,d26
vshr.u64 d26,d22,#39
vadd.i64 d28,d10
- vsli.64 d25,d22,#30
- veor d30,d22,d23
- vsli.64 d26,d22,#25
- veor d21,d24,d25
+ vsli.64 d25,d22,#30
+ veor d30,d22,d23
+ vsli.64 d26,d22,#25
+ veor d21,d24,d25
vadd.i64 d27,d28
- vbsl d30,d16,d23 @ Maj(a,b,c)
- veor d21,d26 @ Sigma0(a)
+ vbsl d30,d16,d23 @ Maj(a,b,c)
+ veor d21,d26 @ Sigma0(a)
vadd.i64 d17,d27
vadd.i64 d30,d27
@ vadd.i64 d21,d30
vshr.u64 d24,d17,#14 @ 27
#if 27<16
- vld1.64 {d11},[r1]! @ handles unaligned
+ vld1.64 {d11},[r1]! @ handles unaligned
#endif
vshr.u64 d25,d17,#18
#if 27>0
- vadd.i64 d21,d30 @ h+=Maj from the past
+ vadd.i64 d21,d30 @ h+=Maj from the past
#endif
vshr.u64 d26,d17,#41
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d17,#50
- vsli.64 d25,d17,#46
- vmov d29,d17
- vsli.64 d26,d17,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d17,#50
+ vsli.64 d25,d17,#46
+ vmov d29,d17
+ vsli.64 d26,d17,#23
#if 27<16 && defined(__ARMEL__)
vrev64.8 ,
#endif
- veor d25,d24
- vbsl d29,d18,d19 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d18,d19 @ Ch(e,f,g)
vshr.u64 d24,d21,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d20
vshr.u64 d25,d21,#34
- vsli.64 d24,d21,#36
+ vsli.64 d24,d21,#36
vadd.i64 d27,d26
vshr.u64 d26,d21,#39
vadd.i64 d28,d11
- vsli.64 d25,d21,#30
- veor d30,d21,d22
- vsli.64 d26,d21,#25
- veor d20,d24,d25
+ vsli.64 d25,d21,#30
+ veor d30,d21,d22
+ vsli.64 d26,d21,#25
+ veor d20,d24,d25
vadd.i64 d27,d28
- vbsl d30,d23,d22 @ Maj(a,b,c)
- veor d20,d26 @ Sigma0(a)
+ vbsl d30,d23,d22 @ Maj(a,b,c)
+ veor d20,d26 @ Sigma0(a)
vadd.i64 d16,d27
vadd.i64 d30,d27
@ vadd.i64 d20,d30
vshr.u64 q12,q5,#19
vshr.u64 q13,q5,#61
- vadd.i64 d20,d30 @ h+=Maj from the past
+ vadd.i64 d20,d30 @ h+=Maj from the past
vshr.u64 q15,q5,#6
- vsli.64 q12,q5,#45
- vext.8 q14,q6,q7,#8 @ X[i+1]
- vsli.64 q13,q5,#3
- veor q15,q12
+ vsli.64 q12,q5,#45
+ vext.8 q14,q6,q7,#8 @ X[i+1]
+ vsli.64 q13,q5,#3
+ veor q15,q12
vshr.u64 q12,q14,#1
- veor q15,q13 @ sigma1(X[i+14])
+ veor q15,q13 @ sigma1(X[i+14])
vshr.u64 q13,q14,#8
vadd.i64 q6,q15
vshr.u64 q15,q14,#7
- vsli.64 q12,q14,#63
- vsli.64 q13,q14,#56
- vext.8 q14,q2,q3,#8 @ X[i+9]
- veor q15,q12
+ vsli.64 q12,q14,#63
+ vsli.64 q13,q14,#56
+ vext.8 q14,q2,q3,#8 @ X[i+9]
+ veor q15,q12
vshr.u64 d24,d16,#14 @ from NEON_00_15
vadd.i64 q6,q14
vshr.u64 d25,d16,#18 @ from NEON_00_15
- veor q15,q13 @ sigma0(X[i+1])
+ veor q15,q13 @ sigma0(X[i+1])
vshr.u64 d26,d16,#41 @ from NEON_00_15
vadd.i64 q6,q15
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d16,#50
- vsli.64 d25,d16,#46
- vmov d29,d16
- vsli.64 d26,d16,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d16,#50
+ vsli.64 d25,d16,#46
+ vmov d29,d16
+ vsli.64 d26,d16,#23
#if 28<16 && defined(__ARMEL__)
vrev64.8 ,
#endif
- veor d25,d24
- vbsl d29,d17,d18 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d17,d18 @ Ch(e,f,g)
vshr.u64 d24,d20,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d19
vshr.u64 d25,d20,#34
- vsli.64 d24,d20,#36
+ vsli.64 d24,d20,#36
vadd.i64 d27,d26
vshr.u64 d26,d20,#39
vadd.i64 d28,d12
- vsli.64 d25,d20,#30
- veor d30,d20,d21
- vsli.64 d26,d20,#25
- veor d19,d24,d25
+ vsli.64 d25,d20,#30
+ veor d30,d20,d21
+ vsli.64 d26,d20,#25
+ veor d19,d24,d25
vadd.i64 d27,d28
- vbsl d30,d22,d21 @ Maj(a,b,c)
- veor d19,d26 @ Sigma0(a)
+ vbsl d30,d22,d21 @ Maj(a,b,c)
+ veor d19,d26 @ Sigma0(a)
vadd.i64 d23,d27
vadd.i64 d30,d27
@ vadd.i64 d19,d30
vshr.u64 d24,d23,#14 @ 29
#if 29<16
- vld1.64 {d13},[r1]! @ handles unaligned
+ vld1.64 {d13},[r1]! @ handles unaligned
#endif
vshr.u64 d25,d23,#18
#if 29>0
- vadd.i64 d19,d30 @ h+=Maj from the past
+ vadd.i64 d19,d30 @ h+=Maj from the past
#endif
vshr.u64 d26,d23,#41
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d23,#50
- vsli.64 d25,d23,#46
- vmov d29,d23
- vsli.64 d26,d23,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d23,#50
+ vsli.64 d25,d23,#46
+ vmov d29,d23
+ vsli.64 d26,d23,#23
#if 29<16 && defined(__ARMEL__)
vrev64.8 ,
#endif
- veor d25,d24
- vbsl d29,d16,d17 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d16,d17 @ Ch(e,f,g)
vshr.u64 d24,d19,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d18
vshr.u64 d25,d19,#34
- vsli.64 d24,d19,#36
+ vsli.64 d24,d19,#36
vadd.i64 d27,d26
vshr.u64 d26,d19,#39
vadd.i64 d28,d13
- vsli.64 d25,d19,#30
- veor d30,d19,d20
- vsli.64 d26,d19,#25
- veor d18,d24,d25
+ vsli.64 d25,d19,#30
+ veor d30,d19,d20
+ vsli.64 d26,d19,#25
+ veor d18,d24,d25
vadd.i64 d27,d28
- vbsl d30,d21,d20 @ Maj(a,b,c)
- veor d18,d26 @ Sigma0(a)
+ vbsl d30,d21,d20 @ Maj(a,b,c)
+ veor d18,d26 @ Sigma0(a)
vadd.i64 d22,d27
vadd.i64 d30,d27
@ vadd.i64 d18,d30
vshr.u64 q12,q6,#19
vshr.u64 q13,q6,#61
- vadd.i64 d18,d30 @ h+=Maj from the past
+ vadd.i64 d18,d30 @ h+=Maj from the past
vshr.u64 q15,q6,#6
- vsli.64 q12,q6,#45
- vext.8 q14,q7,q0,#8 @ X[i+1]
- vsli.64 q13,q6,#3
- veor q15,q12
+ vsli.64 q12,q6,#45
+ vext.8 q14,q7,q0,#8 @ X[i+1]
+ vsli.64 q13,q6,#3
+ veor q15,q12
vshr.u64 q12,q14,#1
- veor q15,q13 @ sigma1(X[i+14])
+ veor q15,q13 @ sigma1(X[i+14])
vshr.u64 q13,q14,#8
vadd.i64 q7,q15
vshr.u64 q15,q14,#7
- vsli.64 q12,q14,#63
- vsli.64 q13,q14,#56
- vext.8 q14,q3,q4,#8 @ X[i+9]
- veor q15,q12
+ vsli.64 q12,q14,#63
+ vsli.64 q13,q14,#56
+ vext.8 q14,q3,q4,#8 @ X[i+9]
+ veor q15,q12
vshr.u64 d24,d22,#14 @ from NEON_00_15
vadd.i64 q7,q14
vshr.u64 d25,d22,#18 @ from NEON_00_15
- veor q15,q13 @ sigma0(X[i+1])
+ veor q15,q13 @ sigma0(X[i+1])
vshr.u64 d26,d22,#41 @ from NEON_00_15
vadd.i64 q7,q15
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d22,#50
- vsli.64 d25,d22,#46
- vmov d29,d22
- vsli.64 d26,d22,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d22,#50
+ vsli.64 d25,d22,#46
+ vmov d29,d22
+ vsli.64 d26,d22,#23
#if 30<16 && defined(__ARMEL__)
vrev64.8 ,
#endif
- veor d25,d24
- vbsl d29,d23,d16 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d23,d16 @ Ch(e,f,g)
vshr.u64 d24,d18,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d17
vshr.u64 d25,d18,#34
- vsli.64 d24,d18,#36
+ vsli.64 d24,d18,#36
vadd.i64 d27,d26
vshr.u64 d26,d18,#39
vadd.i64 d28,d14
- vsli.64 d25,d18,#30
- veor d30,d18,d19
- vsli.64 d26,d18,#25
- veor d17,d24,d25
+ vsli.64 d25,d18,#30
+ veor d30,d18,d19
+ vsli.64 d26,d18,#25
+ veor d17,d24,d25
vadd.i64 d27,d28
- vbsl d30,d20,d19 @ Maj(a,b,c)
- veor d17,d26 @ Sigma0(a)
+ vbsl d30,d20,d19 @ Maj(a,b,c)
+ veor d17,d26 @ Sigma0(a)
vadd.i64 d21,d27
vadd.i64 d30,d27
@ vadd.i64 d17,d30
vshr.u64 d24,d21,#14 @ 31
#if 31<16
- vld1.64 {d15},[r1]! @ handles unaligned
+ vld1.64 {d15},[r1]! @ handles unaligned
#endif
vshr.u64 d25,d21,#18
#if 31>0
- vadd.i64 d17,d30 @ h+=Maj from the past
+ vadd.i64 d17,d30 @ h+=Maj from the past
#endif
vshr.u64 d26,d21,#41
- vld1.64 {d28},[r3,:64]! @ K[i++]
- vsli.64 d24,d21,#50
- vsli.64 d25,d21,#46
- vmov d29,d21
- vsli.64 d26,d21,#23
+ vld1.64 {d28},[r3,:64]! @ K[i++]
+ vsli.64 d24,d21,#50
+ vsli.64 d25,d21,#46
+ vmov d29,d21
+ vsli.64 d26,d21,#23
#if 31<16 && defined(__ARMEL__)
vrev64.8 ,
#endif
- veor d25,d24
- vbsl d29,d22,d23 @ Ch(e,f,g)
+ veor d25,d24
+ vbsl d29,d22,d23 @ Ch(e,f,g)
vshr.u64 d24,d17,#28
- veor d26,d25 @ Sigma1(e)
+ veor d26,d25 @ Sigma1(e)
vadd.i64 d27,d29,d16
vshr.u64 d25,d17,#34
- vsli.64 d24,d17,#36
+ vsli.64 d24,d17,#36
vadd.i64 d27,d26
vshr.u64 d26,d17,#39
vadd.i64 d28,d15
- vsli.64 d25,d17,#30
- veor d30,d17,d18
- vsli.64 d26,d17,#25
- veor d16,d24,d25
+ vsli.64 d25,d17,#30
+ veor d30,d17,d18
+ vsli.64 d26,d17,#25
+ veor d16,d24,d25
vadd.i64 d27,d28
- vbsl d30,d19,d18 @ Maj(a,b,c)
- veor d16,d26 @ Sigma0(a)
+ vbsl d30,d19,d18 @ Maj(a,b,c)
+ veor d16,d26 @ Sigma0(a)
vadd.i64 d20,d27
vadd.i64 d30,d27
@ vadd.i64 d16,d30
- bne .L16_79_neon
+ bne .L16_79_neon
- vadd.i64 d16,d30 @ h+=Maj from the past
- vldmia r0,{d24,d25,d26,d27,d28,d29,d30,d31} @ load context to temp
+ vadd.i64 d16,d30 @ h+=Maj from the past
+ vldmia r0,{d24-d31} @ load context to temp
vadd.i64 q8,q12 @ vectorized accumulate
vadd.i64 q9,q13
vadd.i64 q10,q14
vadd.i64 q11,q15
- vstmia r0,{d16,d17,d18,d19,d20,d21,d22,d23} @ save context
- teq r1,r2
- sub r3,#640 @ rewind K512
- bne .Loop_neon
+ vstmia r0,{d16-d23} @ save context
+ teq r1,r2
+ sub r3,#640 @ rewind K512
+ bne .Loop_neon
VFP_ABI_POP
bx lr @ .word 0xe12fff1e
.size sha512_block_data_order_neon,.-sha512_block_data_order_neon
#endif
-.byte 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,65,82,77,118,52,47,78,69,79,78,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
-.align 2
+.asciz "SHA512 block transform for ARMv4/NEON, CRYPTOGAMS by <appro@openssl.org>"
.align 2
#if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__)
.comm OPENSSL_armcap_P,4,4
diff --git a/third_party/boringssl/linux-x86/crypto/aes/aesni-x86.S b/third_party/boringssl/linux-x86/crypto/aes/aesni-x86.S
index aec110d..5aee116 100644
--- a/third_party/boringssl/linux-x86/crypto/aes/aesni-x86.S
+++ b/third_party/boringssl/linux-x86/crypto/aes/aesni-x86.S
@@ -23,10 +23,7 @@ aesni_encrypt:
leal 16(%edx),%edx
jnz .L000enc1_loop_1
.byte 102,15,56,221,209
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
movups %xmm2,(%eax)
- pxor %xmm2,%xmm2
ret
.size aesni_encrypt,.-.L_aesni_encrypt_begin
.globl aesni_decrypt
@@ -51,10 +48,7 @@ aesni_decrypt:
leal 16(%edx),%edx
jnz .L001dec1_loop_2
.byte 102,15,56,223,209
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
movups %xmm2,(%eax)
- pxor %xmm2,%xmm2
ret
.size aesni_decrypt,.-.L_aesni_decrypt_begin
.hidden _aesni_encrypt2
@@ -275,15 +269,17 @@ _aesni_encrypt6:
negl %ecx
.byte 102,15,56,220,225
pxor %xmm0,%xmm7
- movups (%edx,%ecx,1),%xmm0
addl $16,%ecx
- jmp .L008_aesni_encrypt6_inner
+.byte 102,15,56,220,233
+.byte 102,15,56,220,241
+.byte 102,15,56,220,249
+ movups -16(%edx,%ecx,1),%xmm0
+ jmp .L_aesni_encrypt6_enter
.align 16
-.L009enc6_loop:
+.L008enc6_loop:
.byte 102,15,56,220,209
.byte 102,15,56,220,217
.byte 102,15,56,220,225
-.L008_aesni_encrypt6_inner:
.byte 102,15,56,220,233
.byte 102,15,56,220,241
.byte 102,15,56,220,249
@@ -297,7 +293,7 @@ _aesni_encrypt6:
.byte 102,15,56,220,240
.byte 102,15,56,220,248
movups -16(%edx,%ecx,1),%xmm0
- jnz .L009enc6_loop
+ jnz .L008enc6_loop
.byte 102,15,56,220,209
.byte 102,15,56,220,217
.byte 102,15,56,220,225
@@ -330,15 +326,17 @@ _aesni_decrypt6:
negl %ecx
.byte 102,15,56,222,225
pxor %xmm0,%xmm7
- movups (%edx,%ecx,1),%xmm0
addl $16,%ecx
- jmp .L010_aesni_decrypt6_inner
+.byte 102,15,56,222,233
+.byte 102,15,56,222,241
+.byte 102,15,56,222,249
+ movups -16(%edx,%ecx,1),%xmm0
+ jmp .L_aesni_decrypt6_enter
.align 16
-.L011dec6_loop:
+.L009dec6_loop:
.byte 102,15,56,222,209
.byte 102,15,56,222,217
.byte 102,15,56,222,225
-.L010_aesni_decrypt6_inner:
.byte 102,15,56,222,233
.byte 102,15,56,222,241
.byte 102,15,56,222,249
@@ -352,7 +350,7 @@ _aesni_decrypt6:
.byte 102,15,56,222,240
.byte 102,15,56,222,248
movups -16(%edx,%ecx,1),%xmm0
- jnz .L011dec6_loop
+ jnz .L009dec6_loop
.byte 102,15,56,222,209
.byte 102,15,56,222,217
.byte 102,15,56,222,225
@@ -383,14 +381,14 @@ aesni_ecb_encrypt:
movl 32(%esp),%edx
movl 36(%esp),%ebx
andl $-16,%eax
- jz .L012ecb_ret
+ jz .L010ecb_ret
movl 240(%edx),%ecx
testl %ebx,%ebx
- jz .L013ecb_decrypt
+ jz .L011ecb_decrypt
movl %edx,%ebp
movl %ecx,%ebx
cmpl $96,%eax
- jb .L014ecb_enc_tail
+ jb .L012ecb_enc_tail
movdqu (%esi),%xmm2
movdqu 16(%esi),%xmm3
movdqu 32(%esi),%xmm4
@@ -399,9 +397,9 @@ aesni_ecb_encrypt:
movdqu 80(%esi),%xmm7
leal 96(%esi),%esi
subl $96,%eax
- jmp .L015ecb_enc_loop6_enter
+ jmp .L013ecb_enc_loop6_enter
.align 16
-.L016ecb_enc_loop6:
+.L014ecb_enc_loop6:
movups %xmm2,(%edi)
movdqu (%esi),%xmm2
movups %xmm3,16(%edi)
@@ -416,12 +414,12 @@ aesni_ecb_encrypt:
leal 96(%edi),%edi
movdqu 80(%esi),%xmm7
leal 96(%esi),%esi
-.L015ecb_enc_loop6_enter:
+.L013ecb_enc_loop6_enter:
call _aesni_encrypt6
movl %ebp,%edx
movl %ebx,%ecx
subl $96,%eax
- jnc .L016ecb_enc_loop6
+ jnc .L014ecb_enc_loop6
movups %xmm2,(%edi)
movups %xmm3,16(%edi)
movups %xmm4,32(%edi)
@@ -430,18 +428,18 @@ aesni_ecb_encrypt:
movups %xmm7,80(%edi)
leal 96(%edi),%edi
addl $96,%eax
- jz .L012ecb_ret
-.L014ecb_enc_tail:
+ jz .L010ecb_ret
+.L012ecb_enc_tail:
movups (%esi),%xmm2
cmpl $32,%eax
- jb .L017ecb_enc_one
+ jb .L015ecb_enc_one
movups 16(%esi),%xmm3
- je .L018ecb_enc_two
+ je .L016ecb_enc_two
movups 32(%esi),%xmm4
cmpl $64,%eax
- jb .L019ecb_enc_three
+ jb .L017ecb_enc_three
movups 48(%esi),%xmm5
- je .L020ecb_enc_four
+ je .L018ecb_enc_four
movups 64(%esi),%xmm6
xorps %xmm7,%xmm7
call _aesni_encrypt6
@@ -450,49 +448,49 @@ aesni_ecb_encrypt:
movups %xmm4,32(%edi)
movups %xmm5,48(%edi)
movups %xmm6,64(%edi)
- jmp .L012ecb_ret
+ jmp .L010ecb_ret
.align 16
-.L017ecb_enc_one:
+.L015ecb_enc_one:
movups (%edx),%xmm0
movups 16(%edx),%xmm1
leal 32(%edx),%edx
xorps %xmm0,%xmm2
-.L021enc1_loop_3:
+.L019enc1_loop_3:
.byte 102,15,56,220,209
decl %ecx
movups (%edx),%xmm1
leal 16(%edx),%edx
- jnz .L021enc1_loop_3
+ jnz .L019enc1_loop_3
.byte 102,15,56,221,209
movups %xmm2,(%edi)
- jmp .L012ecb_ret
+ jmp .L010ecb_ret
.align 16
-.L018ecb_enc_two:
+.L016ecb_enc_two:
call _aesni_encrypt2
movups %xmm2,(%edi)
movups %xmm3,16(%edi)
- jmp .L012ecb_ret
+ jmp .L010ecb_ret
.align 16
-.L019ecb_enc_three:
+.L017ecb_enc_three:
call _aesni_encrypt3
movups %xmm2,(%edi)
movups %xmm3,16(%edi)
movups %xmm4,32(%edi)
- jmp .L012ecb_ret
+ jmp .L010ecb_ret
.align 16
-.L020ecb_enc_four:
+.L018ecb_enc_four:
call _aesni_encrypt4
movups %xmm2,(%edi)
movups %xmm3,16(%edi)
movups %xmm4,32(%edi)
movups %xmm5,48(%edi)
- jmp .L012ecb_ret
+ jmp .L010ecb_ret
.align 16
-.L013ecb_decrypt:
+.L011ecb_decrypt:
movl %edx,%ebp
movl %ecx,%ebx
cmpl $96,%eax
- jb .L022ecb_dec_tail
+ jb .L020ecb_dec_tail
movdqu (%esi),%xmm2
movdqu 16(%esi),%xmm3
movdqu 32(%esi),%xmm4
@@ -501,9 +499,9 @@ aesni_ecb_encrypt:
movdqu 80(%esi),%xmm7
leal 96(%esi),%esi
subl $96,%eax
- jmp .L023ecb_dec_loop6_enter
+ jmp .L021ecb_dec_loop6_enter
.align 16
-.L024ecb_dec_loop6:
+.L022ecb_dec_loop6:
movups %xmm2,(%edi)
movdqu (%esi),%xmm2
movups %xmm3,16(%edi)
@@ -518,12 +516,12 @@ aesni_ecb_encrypt:
leal 96(%edi),%edi
movdqu 80(%esi),%xmm7
leal 96(%esi),%esi
-.L023ecb_dec_loop6_enter:
+.L021ecb_dec_loop6_enter:
call _aesni_decrypt6
movl %ebp,%edx
movl %ebx,%ecx
subl $96,%eax
- jnc .L024ecb_dec_loop6
+ jnc .L022ecb_dec_loop6
movups %xmm2,(%edi)
movups %xmm3,16(%edi)
movups %xmm4,32(%edi)
@@ -532,18 +530,18 @@ aesni_ecb_encrypt:
movups %xmm7,80(%edi)
leal 96(%edi),%edi
addl $96,%eax
- jz .L012ecb_ret
-.L022ecb_dec_tail:
+ jz .L010ecb_ret
+.L020ecb_dec_tail:
movups (%esi),%xmm2
cmpl $32,%eax
- jb .L025ecb_dec_one
+ jb .L023ecb_dec_one
movups 16(%esi),%xmm3
- je .L026ecb_dec_two
+ je .L024ecb_dec_two
movups 32(%esi),%xmm4
cmpl $64,%eax
- jb .L027ecb_dec_three
+ jb .L025ecb_dec_three
movups 48(%esi),%xmm5
- je .L028ecb_dec_four
+ je .L026ecb_dec_four
movups 64(%esi),%xmm6
xorps %xmm7,%xmm7
call _aesni_decrypt6
@@ -552,51 +550,43 @@ aesni_ecb_encrypt:
movups %xmm4,32(%edi)
movups %xmm5,48(%edi)
movups %xmm6,64(%edi)
- jmp .L012ecb_ret
+ jmp .L010ecb_ret
.align 16
-.L025ecb_dec_one:
+.L023ecb_dec_one:
movups (%edx),%xmm0
movups 16(%edx),%xmm1
leal 32(%edx),%edx
xorps %xmm0,%xmm2
-.L029dec1_loop_4:
+.L027dec1_loop_4:
.byte 102,15,56,222,209
decl %ecx
movups (%edx),%xmm1
leal 16(%edx),%edx
- jnz .L029dec1_loop_4
+ jnz .L027dec1_loop_4
.byte 102,15,56,223,209
movups %xmm2,(%edi)
- jmp .L012ecb_ret
+ jmp .L010ecb_ret
.align 16
-.L026ecb_dec_two:
+.L024ecb_dec_two:
call _aesni_decrypt2
movups %xmm2,(%edi)
movups %xmm3,16(%edi)
- jmp .L012ecb_ret
+ jmp .L010ecb_ret
.align 16
-.L027ecb_dec_three:
+.L025ecb_dec_three:
call _aesni_decrypt3
movups %xmm2,(%edi)
movups %xmm3,16(%edi)
movups %xmm4,32(%edi)
- jmp .L012ecb_ret
+ jmp .L010ecb_ret
.align 16
-.L028ecb_dec_four:
+.L026ecb_dec_four:
call _aesni_decrypt4
movups %xmm2,(%edi)
movups %xmm3,16(%edi)
movups %xmm4,32(%edi)
movups %xmm5,48(%edi)
-.L012ecb_ret:
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
- pxor %xmm2,%xmm2
- pxor %xmm3,%xmm3
- pxor %xmm4,%xmm4
- pxor %xmm5,%xmm5
- pxor %xmm6,%xmm6
- pxor %xmm7,%xmm7
+.L010ecb_ret:
popl %edi
popl %esi
popl %ebx
@@ -644,7 +634,7 @@ aesni_ccm64_encrypt_blocks:
leal 32(%edx,%ecx,1),%edx
subl %ecx,%ebx
.byte 102,15,56,0,253
-.L030ccm64_enc_outer:
+.L028ccm64_enc_outer:
movups (%ebp),%xmm0
movl %ebx,%ecx
movups (%esi),%xmm6
@@ -653,7 +643,7 @@ aesni_ccm64_encrypt_blocks:
xorps %xmm6,%xmm0
xorps %xmm0,%xmm3
movups 32(%ebp),%xmm0
-.L031ccm64_enc2_loop:
+.L029ccm64_enc2_loop:
.byte 102,15,56,220,209
.byte 102,15,56,220,217
movups (%edx,%ecx,1),%xmm1
@@ -661,7 +651,7 @@ aesni_ccm64_encrypt_blocks:
.byte 102,15,56,220,208
.byte 102,15,56,220,216
movups -16(%edx,%ecx,1),%xmm0
- jnz .L031ccm64_enc2_loop
+ jnz .L029ccm64_enc2_loop
.byte 102,15,56,220,209
.byte 102,15,56,220,217
paddq 16(%esp),%xmm7
@@ -674,18 +664,10 @@ aesni_ccm64_encrypt_blocks:
movups %xmm6,(%edi)
.byte 102,15,56,0,213
leal 16(%edi),%edi
- jnz .L030ccm64_enc_outer
+ jnz .L028ccm64_enc_outer
movl 48(%esp),%esp
movl 40(%esp),%edi
movups %xmm3,(%edi)
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
- pxor %xmm2,%xmm2
- pxor %xmm3,%xmm3
- pxor %xmm4,%xmm4
- pxor %xmm5,%xmm5
- pxor %xmm6,%xmm6
- pxor %xmm7,%xmm7
popl %edi
popl %esi
popl %ebx
@@ -734,12 +716,12 @@ aesni_ccm64_decrypt_blocks:
movups 16(%edx),%xmm1
leal 32(%edx),%edx
xorps %xmm0,%xmm2
-.L032enc1_loop_5:
+.L030enc1_loop_5:
.byte 102,15,56,220,209
decl %ecx
movups (%edx),%xmm1
leal 16(%edx),%edx
- jnz .L032enc1_loop_5
+ jnz .L030enc1_loop_5
.byte 102,15,56,221,209
shll $4,%ebx
movl $16,%ecx
@@ -749,16 +731,16 @@ aesni_ccm64_decrypt_blocks:
subl %ebx,%ecx
leal 32(%ebp,%ebx,1),%edx
movl %ecx,%ebx
- jmp .L033ccm64_dec_outer
+ jmp .L031ccm64_dec_outer
.align 16
-.L033ccm64_dec_outer:
+.L031ccm64_dec_outer:
xorps %xmm2,%xmm6
movdqa %xmm7,%xmm2
movups %xmm6,(%edi)
leal 16(%edi),%edi
.byte 102,15,56,0,213
subl $1,%eax
- jz .L034ccm64_dec_break
+ jz .L032ccm64_dec_break
movups (%ebp),%xmm0
movl %ebx,%ecx
movups 16(%ebp),%xmm1
@@ -766,7 +748,7 @@ aesni_ccm64_decrypt_blocks:
xorps %xmm0,%xmm2
xorps %xmm6,%xmm3
movups 32(%ebp),%xmm0
-.L035ccm64_dec2_loop:
+.L033ccm64_dec2_loop:
.byte 102,15,56,220,209
.byte 102,15,56,220,217
movups (%edx,%ecx,1),%xmm1
@@ -774,7 +756,7 @@ aesni_ccm64_decrypt_blocks:
.byte 102,15,56,220,208
.byte 102,15,56,220,216
movups -16(%edx,%ecx,1),%xmm0
- jnz .L035ccm64_dec2_loop
+ jnz .L033ccm64_dec2_loop
movups (%esi),%xmm6
paddq 16(%esp),%xmm7
.byte 102,15,56,220,209
@@ -782,9 +764,9 @@ aesni_ccm64_decrypt_blocks:
.byte 102,15,56,221,208
.byte 102,15,56,221,216
leal 16(%esi),%esi
- jmp .L033ccm64_dec_outer
+ jmp .L031ccm64_dec_outer
.align 16
-.L034ccm64_dec_break:
+.L032ccm64_dec_break:
movl 240(%ebp),%ecx
movl %ebp,%edx
movups (%edx),%xmm0
@@ -792,24 +774,16 @@ aesni_ccm64_decrypt_blocks:
xorps %xmm0,%xmm6
leal 32(%edx),%edx
xorps %xmm6,%xmm3
-.L036enc1_loop_6:
+.L034enc1_loop_6:
.byte 102,15,56,220,217
decl %ecx
movups (%edx),%xmm1
leal 16(%edx),%edx
- jnz .L036enc1_loop_6
+ jnz .L034enc1_loop_6
.byte 102,15,56,221,217
movl 48(%esp),%esp
movl 40(%esp),%edi
movups %xmm3,(%edi)
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
- pxor %xmm2,%xmm2
- pxor %xmm3,%xmm3
- pxor %xmm4,%xmm4
- pxor %xmm5,%xmm5
- pxor %xmm6,%xmm6
- pxor %xmm7,%xmm7
popl %edi
popl %esi
popl %ebx
@@ -836,7 +810,7 @@ aesni_ctr32_encrypt_blocks:
andl $-16,%esp
movl %ebp,80(%esp)
cmpl $1,%eax
- je .L037ctr32_one_shortcut
+ je .L035ctr32_one_shortcut
movdqu (%ebx),%xmm7
movl $202182159,(%esp)
movl $134810123,4(%esp)
@@ -874,7 +848,7 @@ aesni_ctr32_encrypt_blocks:
pshufd $192,%xmm0,%xmm2
pshufd $128,%xmm0,%xmm3
cmpl $6,%eax
- jb .L038ctr32_tail
+ jb .L036ctr32_tail
pxor %xmm6,%xmm7
shll $4,%ecx
movl $16,%ebx
@@ -883,9 +857,9 @@ aesni_ctr32_encrypt_blocks:
subl %ecx,%ebx
leal 32(%edx,%ecx,1),%edx
subl $6,%eax
- jmp .L039ctr32_loop6
+ jmp .L037ctr32_loop6
.align 16
-.L039ctr32_loop6:
+.L037ctr32_loop6:
pshufd $64,%xmm0,%xmm4
movdqa 32(%esp),%xmm0
pshufd $192,%xmm1,%xmm5
@@ -939,27 +913,27 @@ aesni_ctr32_encrypt_blocks:
leal 96(%edi),%edi
pshufd $128,%xmm0,%xmm3
subl $6,%eax
- jnc .L039ctr32_loop6
+ jnc .L037ctr32_loop6
addl $6,%eax
- jz .L040ctr32_ret
+ jz .L038ctr32_ret
movdqu (%ebp),%xmm7
movl %ebp,%edx
pxor 32(%esp),%xmm7
movl 240(%ebp),%ecx
-.L038ctr32_tail:
+.L036ctr32_tail:
por %xmm7,%xmm2
cmpl $2,%eax
- jb .L041ctr32_one
+ jb .L039ctr32_one
pshufd $64,%xmm0,%xmm4
por %xmm7,%xmm3
- je .L042ctr32_two
+ je .L040ctr32_two
pshufd $192,%xmm1,%xmm5
por %xmm7,%xmm4
cmpl $4,%eax
- jb .L043ctr32_three
+ jb .L041ctr32_three
pshufd $128,%xmm1,%xmm6
por %xmm7,%xmm5
- je .L044ctr32_four
+ je .L042ctr32_four
por %xmm7,%xmm6
call _aesni_encrypt6
movups (%esi),%xmm1
@@ -977,29 +951,29 @@ aesni_ctr32_encrypt_blocks:
movups %xmm4,32(%edi)
movups %xmm5,48(%edi)
movups %xmm6,64(%edi)
- jmp .L040ctr32_ret
+ jmp .L038ctr32_ret
.align 16
-.L037ctr32_one_shortcut:
+.L035ctr32_one_shortcut:
movups (%ebx),%xmm2
movl 240(%edx),%ecx
-.L041ctr32_one:
+.L039ctr32_one:
movups (%edx),%xmm0
movups 16(%edx),%xmm1
leal 32(%edx),%edx
xorps %xmm0,%xmm2
-.L045enc1_loop_7:
+.L043enc1_loop_7:
.byte 102,15,56,220,209
decl %ecx
movups (%edx),%xmm1
leal 16(%edx),%edx
- jnz .L045enc1_loop_7
+ jnz .L043enc1_loop_7
.byte 102,15,56,221,209
movups (%esi),%xmm6
xorps %xmm2,%xmm6
movups %xmm6,(%edi)
- jmp .L040ctr32_ret
+ jmp .L038ctr32_ret
.align 16
-.L042ctr32_two:
+.L040ctr32_two:
call _aesni_encrypt2
movups (%esi),%xmm5
movups 16(%esi),%xmm6
@@ -1007,9 +981,9 @@ aesni_ctr32_encrypt_blocks:
xorps %xmm6,%xmm3
movups %xmm2,(%edi)
movups %xmm3,16(%edi)
- jmp .L040ctr32_ret
+ jmp .L038ctr32_ret
.align 16
-.L043ctr32_three:
+.L041ctr32_three:
call _aesni_encrypt3
movups (%esi),%xmm5
movups 16(%esi),%xmm6
@@ -1020,9 +994,9 @@ aesni_ctr32_encrypt_blocks:
xorps %xmm7,%xmm4
movups %xmm3,16(%edi)
movups %xmm4,32(%edi)
- jmp .L040ctr32_ret
+ jmp .L038ctr32_ret
.align 16
-.L044ctr32_four:
+.L042ctr32_four:
call _aesni_encrypt4
movups (%esi),%xmm6
movups 16(%esi),%xmm7
@@ -1036,18 +1010,7 @@ aesni_ctr32_encrypt_blocks:
xorps %xmm0,%xmm5
movups %xmm4,32(%edi)
movups %xmm5,48(%edi)
-.L040ctr32_ret:
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
- pxor %xmm2,%xmm2
- pxor %xmm3,%xmm3
- pxor %xmm4,%xmm4
- movdqa %xmm0,32(%esp)
- pxor %xmm5,%xmm5
- movdqa %xmm0,48(%esp)
- pxor %xmm6,%xmm6
- movdqa %xmm0,64(%esp)
- pxor %xmm7,%xmm7
+.L038ctr32_ret:
movl 80(%esp),%esp
popl %edi
popl %esi
@@ -1073,12 +1036,12 @@ aesni_xts_encrypt:
movups 16(%edx),%xmm1
leal 32(%edx),%edx
xorps %xmm0,%xmm2
-.L046enc1_loop_8:
+.L044enc1_loop_8:
.byte 102,15,56,220,209
decl %ecx
movups (%edx),%xmm1
leal 16(%edx),%edx
- jnz .L046enc1_loop_8
+ jnz .L044enc1_loop_8
.byte 102,15,56,221,209
movl 20(%esp),%esi
movl 24(%esp),%edi
@@ -1102,14 +1065,14 @@ aesni_xts_encrypt:
movl %edx,%ebp
movl %ecx,%ebx
subl $96,%eax
- jc .L047xts_enc_short
+ jc .L045xts_enc_short
shll $4,%ecx
movl $16,%ebx
subl %ecx,%ebx
leal 32(%edx,%ecx,1),%edx
- jmp .L048xts_enc_loop6
+ jmp .L046xts_enc_loop6
.align 16
-.L048xts_enc_loop6:
+.L046xts_enc_loop6:
pshufd $19,%xmm0,%xmm2
pxor %xmm0,%xmm0
movdqa %xmm1,(%esp)
@@ -1198,23 +1161,23 @@ aesni_xts_encrypt:
pcmpgtd %xmm1,%xmm0
pxor %xmm2,%xmm1
subl $96,%eax
- jnc .L048xts_enc_loop6
+ jnc .L046xts_enc_loop6
movl 240(%ebp),%ecx
movl %ebp,%edx
movl %ecx,%ebx
-.L047xts_enc_short:
+.L045xts_enc_short:
addl $96,%eax
- jz .L049xts_enc_done6x
+ jz .L047xts_enc_done6x
movdqa %xmm1,%xmm5
cmpl $32,%eax
- jb .L050xts_enc_one
+ jb .L048xts_enc_one
pshufd $19,%xmm0,%xmm2
pxor %xmm0,%xmm0
paddq %xmm1,%xmm1
pand %xmm3,%xmm2
pcmpgtd %xmm1,%xmm0
pxor %xmm2,%xmm1
- je .L051xts_enc_two
+ je .L049xts_enc_two
pshufd $19,%xmm0,%xmm2
pxor %xmm0,%xmm0
movdqa %xmm1,%xmm6
@@ -1223,7 +1186,7 @@ aesni_xts_encrypt:
pcmpgtd %xmm1,%xmm0
pxor %xmm2,%xmm1
cmpl $64,%eax
- jb .L052xts_enc_three
+ jb .L050xts_enc_three
pshufd $19,%xmm0,%xmm2
pxor %xmm0,%xmm0
movdqa %xmm1,%xmm7
@@ -1233,7 +1196,7 @@ aesni_xts_encrypt:
pxor %xmm2,%xmm1
movdqa %xmm5,(%esp)
movdqa %xmm6,16(%esp)
- je .L053xts_enc_four
+ je .L051xts_enc_four
movdqa %xmm7,32(%esp)
pshufd $19,%xmm0,%xmm7
movdqa %xmm1,48(%esp)
@@ -1265,9 +1228,9 @@ aesni_xts_encrypt:
movups %xmm5,48(%edi)
movups %xmm6,64(%edi)
leal 80(%edi),%edi
- jmp .L054xts_enc_done
+ jmp .L052xts_enc_done
.align 16
-.L050xts_enc_one:
+.L048xts_enc_one:
movups (%esi),%xmm2
leal 16(%esi),%esi
xorps %xmm5,%xmm2
@@ -1275,20 +1238,20 @@ aesni_xts_encrypt:
movups 16(%edx),%xmm1
leal 32(%edx),%edx
xorps %xmm0,%xmm2
-.L055enc1_loop_9:
+.L053enc1_loop_9:
.byte 102,15,56,220,209
decl %ecx
movups (%edx),%xmm1
leal 16(%edx),%edx
- jnz .L055enc1_loop_9
+ jnz .L053enc1_loop_9
.byte 102,15,56,221,209
xorps %xmm5,%xmm2
movups %xmm2,(%edi)
leal 16(%edi),%edi
movdqa %xmm5,%xmm1
- jmp .L054xts_enc_done
+ jmp .L052xts_enc_done
.align 16
-.L051xts_enc_two:
+.L049xts_enc_two:
movaps %xmm1,%xmm6
movups (%esi),%xmm2
movups 16(%esi),%xmm3
@@ -1302,9 +1265,9 @@ aesni_xts_encrypt:
movups %xmm3,16(%edi)
leal 32(%edi),%edi
movdqa %xmm6,%xmm1
- jmp .L054xts_enc_done
+ jmp .L052xts_enc_done
.align 16
-.L052xts_enc_three:
+.L050xts_enc_three:
movaps %xmm1,%xmm7
movups (%esi),%xmm2
movups 16(%esi),%xmm3
@@ -1322,9 +1285,9 @@ aesni_xts_encrypt:
movups %xmm4,32(%edi)
leal 48(%edi),%edi
movdqa %xmm7,%xmm1
- jmp .L054xts_enc_done
+ jmp .L052xts_enc_done
.align 16
-.L053xts_enc_four:
+.L051xts_enc_four:
movaps %xmm1,%xmm6
movups (%esi),%xmm2
movups 16(%esi),%xmm3
@@ -1346,28 +1309,28 @@ aesni_xts_encrypt:
movups %xmm5,48(%edi)
leal 64(%edi),%edi
movdqa %xmm6,%xmm1
- jmp .L054xts_enc_done
+ jmp .L052xts_enc_done
.align 16
-.L049xts_enc_done6x:
+.L047xts_enc_done6x:
movl 112(%esp),%eax
andl $15,%eax
- jz .L056xts_enc_ret
+ jz .L054xts_enc_ret
movdqa %xmm1,%xmm5
movl %eax,112(%esp)
- jmp .L057xts_enc_steal
+ jmp .L055xts_enc_steal
.align 16
-.L054xts_enc_done:
+.L052xts_enc_done:
movl 112(%esp),%eax
pxor %xmm0,%xmm0
andl $15,%eax
- jz .L056xts_enc_ret
+ jz .L054xts_enc_ret
pcmpgtd %xmm1,%xmm0
movl %eax,112(%esp)
pshufd $19,%xmm0,%xmm5
paddq %xmm1,%xmm1
pand 96(%esp),%xmm5
pxor %xmm1,%xmm5
-.L057xts_enc_steal:
+.L055xts_enc_steal:
movzbl (%esi),%ecx
movzbl -16(%edi),%edx
leal 1(%esi),%esi
@@ -1375,7 +1338,7 @@ aesni_xts_encrypt:
movb %dl,(%edi)
leal 1(%edi),%edi
subl $1,%eax
- jnz .L057xts_enc_steal
+ jnz .L055xts_enc_steal
subl 112(%esp),%edi
movl %ebp,%edx
movl %ebx,%ecx
@@ -1385,30 +1348,16 @@ aesni_xts_encrypt:
movups 16(%edx),%xmm1
leal 32(%edx),%edx
xorps %xmm0,%xmm2
-.L058enc1_loop_10:
+.L056enc1_loop_10:
.byte 102,15,56,220,209
decl %ecx
movups (%edx),%xmm1
leal 16(%edx),%edx
- jnz .L058enc1_loop_10
+ jnz .L056enc1_loop_10
.byte 102,15,56,221,209
xorps %xmm5,%xmm2
movups %xmm2,-16(%edi)
-.L056xts_enc_ret:
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
- pxor %xmm2,%xmm2
- movdqa %xmm0,(%esp)
- pxor %xmm3,%xmm3
- movdqa %xmm0,16(%esp)
- pxor %xmm4,%xmm4
- movdqa %xmm0,32(%esp)
- pxor %xmm5,%xmm5
- movdqa %xmm0,48(%esp)
- pxor %xmm6,%xmm6
- movdqa %xmm0,64(%esp)
- pxor %xmm7,%xmm7
- movdqa %xmm0,80(%esp)
+.L054xts_enc_ret:
movl 116(%esp),%esp
popl %edi
popl %esi
@@ -1434,12 +1383,12 @@ aesni_xts_decrypt:
movups 16(%edx),%xmm1
leal 32(%edx),%edx
xorps %xmm0,%xmm2
-.L059enc1_loop_11:
+.L057enc1_loop_11:
.byte 102,15,56,220,209
decl %ecx
movups (%edx),%xmm1
leal 16(%edx),%edx
- jnz .L059enc1_loop_11
+ jnz .L057enc1_loop_11
.byte 102,15,56,221,209
movl 20(%esp),%esi
movl 24(%esp),%edi
@@ -1468,14 +1417,14 @@ aesni_xts_decrypt:
pcmpgtd %xmm1,%xmm0
andl $-16,%eax
subl $96,%eax
- jc .L060xts_dec_short
+ jc .L058xts_dec_short
shll $4,%ecx
movl $16,%ebx
subl %ecx,%ebx
leal 32(%edx,%ecx,1),%edx
- jmp .L061xts_dec_loop6
+ jmp .L059xts_dec_loop6
.align 16
-.L061xts_dec_loop6:
+.L059xts_dec_loop6:
pshufd $19,%xmm0,%xmm2
pxor %xmm0,%xmm0
movdqa %xmm1,(%esp)
@@ -1564,23 +1513,23 @@ aesni_xts_decrypt:
pcmpgtd %xmm1,%xmm0
pxor %xmm2,%xmm1
subl $96,%eax
- jnc .L061xts_dec_loop6
+ jnc .L059xts_dec_loop6
movl 240(%ebp),%ecx
movl %ebp,%edx
movl %ecx,%ebx
-.L060xts_dec_short:
+.L058xts_dec_short:
addl $96,%eax
- jz .L062xts_dec_done6x
+ jz .L060xts_dec_done6x
movdqa %xmm1,%xmm5
cmpl $32,%eax
- jb .L063xts_dec_one
+ jb .L061xts_dec_one
pshufd $19,%xmm0,%xmm2
pxor %xmm0,%xmm0
paddq %xmm1,%xmm1
pand %xmm3,%xmm2
pcmpgtd %xmm1,%xmm0
pxor %xmm2,%xmm1
- je .L064xts_dec_two
+ je .L062xts_dec_two
pshufd $19,%xmm0,%xmm2
pxor %xmm0,%xmm0
movdqa %xmm1,%xmm6
@@ -1589,7 +1538,7 @@ aesni_xts_decrypt:
pcmpgtd %xmm1,%xmm0
pxor %xmm2,%xmm1
cmpl $64,%eax
- jb .L065xts_dec_three
+ jb .L063xts_dec_three
pshufd $19,%xmm0,%xmm2
pxor %xmm0,%xmm0
movdqa %xmm1,%xmm7
@@ -1599,7 +1548,7 @@ aesni_xts_decrypt:
pxor %xmm2,%xmm1
movdqa %xmm5,(%esp)
movdqa %xmm6,16(%esp)
- je .L066xts_dec_four
+ je .L064xts_dec_four
movdqa %xmm7,32(%esp)
pshufd $19,%xmm0,%xmm7
movdqa %xmm1,48(%esp)
@@ -1631,9 +1580,9 @@ aesni_xts_decrypt:
movups %xmm5,48(%edi)
movups %xmm6,64(%edi)
leal 80(%edi),%edi
- jmp .L067xts_dec_done
+ jmp .L065xts_dec_done
.align 16
-.L063xts_dec_one:
+.L061xts_dec_one:
movups (%esi),%xmm2
leal 16(%esi),%esi
xorps %xmm5,%xmm2
@@ -1641,20 +1590,20 @@ aesni_xts_decrypt:
movups 16(%edx),%xmm1
leal 32(%edx),%edx
xorps %xmm0,%xmm2
-.L068dec1_loop_12:
+.L066dec1_loop_12:
.byte 102,15,56,222,209
decl %ecx
movups (%edx),%xmm1
leal 16(%edx),%edx
- jnz .L068dec1_loop_12
+ jnz .L066dec1_loop_12
.byte 102,15,56,223,209
xorps %xmm5,%xmm2
movups %xmm2,(%edi)
leal 16(%edi),%edi
movdqa %xmm5,%xmm1
- jmp .L067xts_dec_done
+ jmp .L065xts_dec_done
.align 16
-.L064xts_dec_two:
+.L062xts_dec_two:
movaps %xmm1,%xmm6
movups (%esi),%xmm2
movups 16(%esi),%xmm3
@@ -1668,9 +1617,9 @@ aesni_xts_decrypt:
movups %xmm3,16(%edi)
leal 32(%edi),%edi
movdqa %xmm6,%xmm1
- jmp .L067xts_dec_done
+ jmp .L065xts_dec_done
.align 16
-.L065xts_dec_three:
+.L063xts_dec_three:
movaps %xmm1,%xmm7
movups (%esi),%xmm2
movups 16(%esi),%xmm3
@@ -1688,9 +1637,9 @@ aesni_xts_decrypt:
movups %xmm4,32(%edi)
leal 48(%edi),%edi
movdqa %xmm7,%xmm1
- jmp .L067xts_dec_done
+ jmp .L065xts_dec_done
.align 16
-.L066xts_dec_four:
+.L064xts_dec_four:
movaps %xmm1,%xmm6
movups (%esi),%xmm2
movups 16(%esi),%xmm3
@@ -1712,20 +1661,20 @@ aesni_xts_decrypt:
movups %xmm5,48(%edi)
leal 64(%edi),%edi
movdqa %xmm6,%xmm1
- jmp .L067xts_dec_done
+ jmp .L065xts_dec_done
.align 16
-.L062xts_dec_done6x:
+.L060xts_dec_done6x:
movl 112(%esp),%eax
andl $15,%eax
- jz .L069xts_dec_ret
+ jz .L067xts_dec_ret
movl %eax,112(%esp)
- jmp .L070xts_dec_only_one_more
+ jmp .L068xts_dec_only_one_more
.align 16
-.L067xts_dec_done:
+.L065xts_dec_done:
movl 112(%esp),%eax
pxor %xmm0,%xmm0
andl $15,%eax
- jz .L069xts_dec_ret
+ jz .L067xts_dec_ret
pcmpgtd %xmm1,%xmm0
movl %eax,112(%esp)
pshufd $19,%xmm0,%xmm2
@@ -1735,7 +1684,7 @@ aesni_xts_decrypt:
pand %xmm3,%xmm2
pcmpgtd %xmm1,%xmm0
pxor %xmm2,%xmm1
-.L070xts_dec_only_one_more:
+.L068xts_dec_only_one_more:
pshufd $19,%xmm0,%xmm5
movdqa %xmm1,%xmm6
paddq %xmm1,%xmm1
@@ -1749,16 +1698,16 @@ aesni_xts_decrypt:
movups 16(%edx),%xmm1
leal 32(%edx),%edx
xorps %xmm0,%xmm2
-.L071dec1_loop_13:
+.L069dec1_loop_13:
.byte 102,15,56,222,209
decl %ecx
movups (%edx),%xmm1
leal 16(%edx),%edx
- jnz .L071dec1_loop_13
+ jnz .L069dec1_loop_13
.byte 102,15,56,223,209
xorps %xmm5,%xmm2
movups %xmm2,(%edi)
-.L072xts_dec_steal:
+.L070xts_dec_steal:
movzbl 16(%esi),%ecx
movzbl (%edi),%edx
leal 1(%esi),%esi
@@ -1766,7 +1715,7 @@ aesni_xts_decrypt:
movb %dl,16(%edi)
leal 1(%edi),%edi
subl $1,%eax
- jnz .L072xts_dec_steal
+ jnz .L070xts_dec_steal
subl 112(%esp),%edi
movl %ebp,%edx
movl %ebx,%ecx
@@ -1776,30 +1725,16 @@ aesni_xts_decrypt:
movups 16(%edx),%xmm1
leal 32(%edx),%edx
xorps %xmm0,%xmm2
-.L073dec1_loop_14:
+.L071dec1_loop_14:
.byte 102,15,56,222,209
decl %ecx
movups (%edx),%xmm1
leal 16(%edx),%edx
- jnz .L073dec1_loop_14
+ jnz .L071dec1_loop_14
.byte 102,15,56,223,209
xorps %xmm6,%xmm2
movups %xmm2,(%edi)
-.L069xts_dec_ret:
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
- pxor %xmm2,%xmm2
- movdqa %xmm0,(%esp)
- pxor %xmm3,%xmm3
- movdqa %xmm0,16(%esp)
- pxor %xmm4,%xmm4
- movdqa %xmm0,32(%esp)
- pxor %xmm5,%xmm5
- movdqa %xmm0,48(%esp)
- pxor %xmm6,%xmm6
- movdqa %xmm0,64(%esp)
- pxor %xmm7,%xmm7
- movdqa %xmm0,80(%esp)
+.L067xts_dec_ret:
movl 116(%esp),%esp
popl %edi
popl %esi
@@ -1826,7 +1761,7 @@ aesni_cbc_encrypt:
movl 32(%esp),%edx
movl 36(%esp),%ebp
testl %eax,%eax
- jz .L074cbc_abort
+ jz .L072cbc_abort
cmpl $0,40(%esp)
xchgl %esp,%ebx
movups (%ebp),%xmm7
@@ -1834,14 +1769,14 @@ aesni_cbc_encrypt:
movl %edx,%ebp
movl %ebx,16(%esp)
movl %ecx,%ebx
- je .L075cbc_decrypt
+ je .L073cbc_decrypt
movaps %xmm7,%xmm2
cmpl $16,%eax
- jb .L076cbc_enc_tail
+ jb .L074cbc_enc_tail
subl $16,%eax
- jmp .L077cbc_enc_loop
+ jmp .L075cbc_enc_loop
.align 16
-.L077cbc_enc_loop:
+.L075cbc_enc_loop:
movups (%esi),%xmm7
leal 16(%esi),%esi
movups (%edx),%xmm0
@@ -1849,25 +1784,24 @@ aesni_cbc_encrypt:
xorps %xmm0,%xmm7
leal 32(%edx),%edx
xorps %xmm7,%xmm2
-.L078enc1_loop_15:
+.L076enc1_loop_15:
.byte 102,15,56,220,209
decl %ecx
movups (%edx),%xmm1
leal 16(%edx),%edx
- jnz .L078enc1_loop_15
+ jnz .L076enc1_loop_15
.byte 102,15,56,221,209
movl %ebx,%ecx
movl %ebp,%edx
movups %xmm2,(%edi)
leal 16(%edi),%edi
subl $16,%eax
- jnc .L077cbc_enc_loop
+ jnc .L075cbc_enc_loop
addl $16,%eax
- jnz .L076cbc_enc_tail
+ jnz .L074cbc_enc_tail
movaps %xmm2,%xmm7
- pxor %xmm2,%xmm2
- jmp .L079cbc_ret
-.L076cbc_enc_tail:
+ jmp .L077cbc_ret
+.L074cbc_enc_tail:
movl %eax,%ecx
.long 2767451785
movl $16,%ecx
@@ -1878,20 +1812,20 @@ aesni_cbc_encrypt:
movl %ebx,%ecx
movl %edi,%esi
movl %ebp,%edx
- jmp .L077cbc_enc_loop
+ jmp .L075cbc_enc_loop
.align 16
-.L075cbc_decrypt:
+.L073cbc_decrypt:
cmpl $80,%eax
- jbe .L080cbc_dec_tail
+ jbe .L078cbc_dec_tail
movaps %xmm7,(%esp)
subl $80,%eax
- jmp .L081cbc_dec_loop6_enter
+ jmp .L079cbc_dec_loop6_enter
.align 16
-.L082cbc_dec_loop6:
+.L080cbc_dec_loop6:
movaps %xmm0,(%esp)
movups %xmm7,(%edi)
leal 16(%edi),%edi
-.L081cbc_dec_loop6_enter:
+.L079cbc_dec_loop6_enter:
movdqu (%esi),%xmm2
movdqu 16(%esi),%xmm3
movdqu 32(%esi),%xmm4
@@ -1921,28 +1855,28 @@ aesni_cbc_encrypt:
movups %xmm6,64(%edi)
leal 80(%edi),%edi
subl $96,%eax
- ja .L082cbc_dec_loop6
+ ja .L080cbc_dec_loop6
movaps %xmm7,%xmm2
movaps %xmm0,%xmm7
addl $80,%eax
- jle .L083cbc_dec_clear_tail_collected
+ jle .L081cbc_dec_tail_collected
movups %xmm2,(%edi)
leal 16(%edi),%edi
-.L080cbc_dec_tail:
+.L078cbc_dec_tail:
movups (%esi),%xmm2
movaps %xmm2,%xmm6
cmpl $16,%eax
- jbe .L084cbc_dec_one
+ jbe .L082cbc_dec_one
movups 16(%esi),%xmm3
movaps %xmm3,%xmm5
cmpl $32,%eax
- jbe .L085cbc_dec_two
+ jbe .L083cbc_dec_two
movups 32(%esi),%xmm4
cmpl $48,%eax
- jbe .L086cbc_dec_three
+ jbe .L084cbc_dec_three
movups 48(%esi),%xmm5
cmpl $64,%eax
- jbe .L087cbc_dec_four
+ jbe .L085cbc_dec_four
movups 64(%esi),%xmm6
movaps %xmm7,(%esp)
movups (%esi),%xmm2
@@ -1960,62 +1894,55 @@ aesni_cbc_encrypt:
xorps %xmm0,%xmm6
movups %xmm2,(%edi)
movups %xmm3,16(%edi)
- pxor %xmm3,%xmm3
movups %xmm4,32(%edi)
- pxor %xmm4,%xmm4
movups %xmm5,48(%edi)
- pxor %xmm5,%xmm5
leal 64(%edi),%edi
movaps %xmm6,%xmm2
- pxor %xmm6,%xmm6
subl $80,%eax
- jmp .L088cbc_dec_tail_collected
+ jmp .L081cbc_dec_tail_collected
.align 16
-.L084cbc_dec_one:
+.L082cbc_dec_one:
movups (%edx),%xmm0
movups 16(%edx),%xmm1
leal 32(%edx),%edx
xorps %xmm0,%xmm2
-.L089dec1_loop_16:
+.L086dec1_loop_16:
.byte 102,15,56,222,209
decl %ecx
movups (%edx),%xmm1
leal 16(%edx),%edx
- jnz .L089dec1_loop_16
+ jnz .L086dec1_loop_16
.byte 102,15,56,223,209
xorps %xmm7,%xmm2
movaps %xmm6,%xmm7
subl $16,%eax
- jmp .L088cbc_dec_tail_collected
+ jmp .L081cbc_dec_tail_collected
.align 16
-.L085cbc_dec_two:
+.L083cbc_dec_two:
call _aesni_decrypt2
xorps %xmm7,%xmm2
xorps %xmm6,%xmm3
movups %xmm2,(%edi)
movaps %xmm3,%xmm2
- pxor %xmm3,%xmm3
leal 16(%edi),%edi
movaps %xmm5,%xmm7
subl $32,%eax
- jmp .L088cbc_dec_tail_collected
+ jmp .L081cbc_dec_tail_collected
.align 16
-.L086cbc_dec_three:
+.L084cbc_dec_three:
call _aesni_decrypt3
xorps %xmm7,%xmm2
xorps %xmm6,%xmm3
xorps %xmm5,%xmm4
movups %xmm2,(%edi)
movaps %xmm4,%xmm2
- pxor %xmm4,%xmm4
movups %xmm3,16(%edi)
- pxor %xmm3,%xmm3
leal 32(%edi),%edi
movups 32(%esi),%xmm7
subl $48,%eax
- jmp .L088cbc_dec_tail_collected
+ jmp .L081cbc_dec_tail_collected
.align 16
-.L087cbc_dec_four:
+.L085cbc_dec_four:
call _aesni_decrypt4
movups 16(%esi),%xmm1
movups 32(%esi),%xmm0
@@ -2025,44 +1952,28 @@ aesni_cbc_encrypt:
movups %xmm2,(%edi)
xorps %xmm1,%xmm4
movups %xmm3,16(%edi)
- pxor %xmm3,%xmm3
xorps %xmm0,%xmm5
movups %xmm4,32(%edi)
- pxor %xmm4,%xmm4
leal 48(%edi),%edi
movaps %xmm5,%xmm2
- pxor %xmm5,%xmm5
subl $64,%eax
- jmp .L088cbc_dec_tail_collected
-.align 16
-.L083cbc_dec_clear_tail_collected:
- pxor %xmm3,%xmm3
- pxor %xmm4,%xmm4
- pxor %xmm5,%xmm5
- pxor %xmm6,%xmm6
-.L088cbc_dec_tail_collected:
+.L081cbc_dec_tail_collected:
andl $15,%eax
- jnz .L090cbc_dec_tail_partial
+ jnz .L087cbc_dec_tail_partial
movups %xmm2,(%edi)
- pxor %xmm0,%xmm0
- jmp .L079cbc_ret
+ jmp .L077cbc_ret
.align 16
-.L090cbc_dec_tail_partial:
+.L087cbc_dec_tail_partial:
movaps %xmm2,(%esp)
- pxor %xmm0,%xmm0
movl $16,%ecx
movl %esp,%esi
subl %eax,%ecx
.long 2767451785
- movdqa %xmm2,(%esp)
-.L079cbc_ret:
+.L077cbc_ret:
movl 16(%esp),%esp
movl 36(%esp),%ebp
- pxor %xmm2,%xmm2
- pxor %xmm1,%xmm1
movups %xmm7,(%ebp)
- pxor %xmm7,%xmm7
-.L074cbc_abort:
+.L072cbc_abort:
popl %edi
popl %esi
popl %ebx
@@ -2073,62 +1984,52 @@ aesni_cbc_encrypt:
.type _aesni_set_encrypt_key,@function
.align 16
_aesni_set_encrypt_key:
- pushl %ebp
- pushl %ebx
testl %eax,%eax
- jz .L091bad_pointer
+ jz .L088bad_pointer
testl %edx,%edx
- jz .L091bad_pointer
- call .L092pic
-.L092pic:
- popl %ebx
- leal .Lkey_const-.L092pic(%ebx),%ebx
- leal OPENSSL_ia32cap_P-.Lkey_const(%ebx),%ebp
+ jz .L088bad_pointer
movups (%eax),%xmm0
xorps %xmm4,%xmm4
- movl 4(%ebp),%ebp
leal 16(%edx),%edx
- andl $268437504,%ebp
cmpl $256,%ecx
- je .L09314rounds
+ je .L08914rounds
cmpl $192,%ecx
- je .L09412rounds
+ je .L09012rounds
cmpl $128,%ecx
- jne .L095bad_keybits
+ jne .L091bad_keybits
.align 16
-.L09610rounds:
- cmpl $268435456,%ebp
- je .L09710rounds_alt
+.L09210rounds:
movl $9,%ecx
movups %xmm0,-16(%edx)
.byte 102,15,58,223,200,1
- call .L098key_128_cold
+ call .L093key_128_cold
.byte 102,15,58,223,200,2
- call .L099key_128
+ call .L094key_128
.byte 102,15,58,223,200,4
- call .L099key_128
+ call .L094key_128
.byte 102,15,58,223,200,8
- call .L099key_128
+ call .L094key_128
.byte 102,15,58,223,200,16
- call .L099key_128
+ call .L094key_128
.byte 102,15,58,223,200,32
- call .L099key_128
+ call .L094key_128
.byte 102,15,58,223,200,64
- call .L099key_128
+ call .L094key_128
.byte 102,15,58,223,200,128
- call .L099key_128
+ call .L094key_128
.byte 102,15,58,223,200,27
- call .L099key_128
+ call .L094key_128
.byte 102,15,58,223,200,54
- call .L099key_128
+ call .L094key_128
movups %xmm0,(%edx)
movl %ecx,80(%edx)
- jmp .L100good_key
+ xorl %eax,%eax
+ ret
.align 16
-.L099key_128:
+.L094key_128:
movups %xmm0,(%edx)
leal 16(%edx),%edx
-.L098key_128_cold:
+.L093key_128_cold:
shufps $16,%xmm0,%xmm4
xorps %xmm4,%xmm0
shufps $140,%xmm0,%xmm4
@@ -2137,91 +2038,38 @@ _aesni_set_encrypt_key:
xorps %xmm1,%xmm0
ret
.align 16
-.L09710rounds_alt:
- movdqa (%ebx),%xmm5
- movl $8,%ecx
- movdqa 32(%ebx),%xmm4
- movdqa %xmm0,%xmm2
- movdqu %xmm0,-16(%edx)
-.L101loop_key128:
-.byte 102,15,56,0,197
-.byte 102,15,56,221,196
- pslld $1,%xmm4
- leal 16(%edx),%edx
- movdqa %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm3,%xmm2
- pxor %xmm2,%xmm0
- movdqu %xmm0,-16(%edx)
- movdqa %xmm0,%xmm2
- decl %ecx
- jnz .L101loop_key128
- movdqa 48(%ebx),%xmm4
-.byte 102,15,56,0,197
-.byte 102,15,56,221,196
- pslld $1,%xmm4
- movdqa %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm3,%xmm2
- pxor %xmm2,%xmm0
- movdqu %xmm0,(%edx)
- movdqa %xmm0,%xmm2
-.byte 102,15,56,0,197
-.byte 102,15,56,221,196
- movdqa %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm3,%xmm2
- pxor %xmm2,%xmm0
- movdqu %xmm0,16(%edx)
- movl $9,%ecx
- movl %ecx,96(%edx)
- jmp .L100good_key
-.align 16
-.L09412rounds:
+.L09012rounds:
movq 16(%eax),%xmm2
- cmpl $268435456,%ebp
- je .L10212rounds_alt
movl $11,%ecx
movups %xmm0,-16(%edx)
.byte 102,15,58,223,202,1
- call .L103key_192a_cold
+ call .L095key_192a_cold
.byte 102,15,58,223,202,2
- call .L104key_192b
+ call .L096key_192b
.byte 102,15,58,223,202,4
- call .L105key_192a
+ call .L097key_192a
.byte 102,15,58,223,202,8
- call .L104key_192b
+ call .L096key_192b
.byte 102,15,58,223,202,16
- call .L105key_192a
+ call .L097key_192a
.byte 102,15,58,223,202,32
- call .L104key_192b
+ call .L096key_192b
.byte 102,15,58,223,202,64
- call .L105key_192a
+ call .L097key_192a
.byte 102,15,58,223,202,128
- call .L104key_192b
+ call .L096key_192b
movups %xmm0,(%edx)
movl %ecx,48(%edx)
- jmp .L100good_key
+ xorl %eax,%eax
+ ret
.align 16
-.L105key_192a:
+.L097key_192a:
movups %xmm0,(%edx)
leal 16(%edx),%edx
.align 16
-.L103key_192a_cold:
+.L095key_192a_cold:
movaps %xmm2,%xmm5
-.L106key_192b_warm:
+.L098key_192b_warm:
shufps $16,%xmm0,%xmm4
movdqa %xmm2,%xmm3
xorps %xmm4,%xmm0
@@ -2235,90 +2083,56 @@ _aesni_set_encrypt_key:
pxor %xmm3,%xmm2
ret
.align 16
-.L104key_192b:
+.L096key_192b:
movaps %xmm0,%xmm3
shufps $68,%xmm0,%xmm5
movups %xmm5,(%edx)
shufps $78,%xmm2,%xmm3
movups %xmm3,16(%edx)
leal 32(%edx),%edx
- jmp .L106key_192b_warm
-.align 16
-.L10212rounds_alt:
- movdqa 16(%ebx),%xmm5
- movdqa 32(%ebx),%xmm4
- movl $8,%ecx
- movdqu %xmm0,-16(%edx)
-.L107loop_key192:
- movq %xmm2,(%edx)
- movdqa %xmm2,%xmm1
-.byte 102,15,56,0,213
-.byte 102,15,56,221,212
- pslld $1,%xmm4
- leal 24(%edx),%edx
- movdqa %xmm0,%xmm3
- pslldq $4,%xmm0
- pxor %xmm0,%xmm3
- pslldq $4,%xmm0
- pxor %xmm0,%xmm3
- pslldq $4,%xmm0
- pxor %xmm3,%xmm0
- pshufd $255,%xmm0,%xmm3
- pxor %xmm1,%xmm3
- pslldq $4,%xmm1
- pxor %xmm1,%xmm3
- pxor %xmm2,%xmm0
- pxor %xmm3,%xmm2
- movdqu %xmm0,-16(%edx)
- decl %ecx
- jnz .L107loop_key192
- movl $11,%ecx
- movl %ecx,32(%edx)
- jmp .L100good_key
+ jmp .L098key_192b_warm
.align 16
-.L09314rounds:
+.L08914rounds:
movups 16(%eax),%xmm2
- leal 16(%edx),%edx
- cmpl $268435456,%ebp
- je .L10814rounds_alt
movl $13,%ecx
+ leal 16(%edx),%edx
movups %xmm0,-32(%edx)
movups %xmm2,-16(%edx)
.byte 102,15,58,223,202,1
- call .L109key_256a_cold
+ call .L099key_256a_cold
.byte 102,15,58,223,200,1
- call .L110key_256b
+ call .L100key_256b
.byte 102,15,58,223,202,2
- call .L111key_256a
+ call .L101key_256a
.byte 102,15,58,223,200,2
- call .L110key_256b
+ call .L100key_256b
.byte 102,15,58,223,202,4
- call .L111key_256a
+ call .L101key_256a
.byte 102,15,58,223,200,4
- call .L110key_256b
+ call .L100key_256b
.byte 102,15,58,223,202,8
- call .L111key_256a
+ call .L101key_256a
.byte 102,15,58,223,200,8
- call .L110key_256b
+ call .L100key_256b
.byte 102,15,58,223,202,16
- call .L111key_256a
+ call .L101key_256a
.byte 102,15,58,223,200,16
- call .L110key_256b
+ call .L100key_256b
.byte 102,15,58,223,202,32
- call .L111key_256a
+ call .L101key_256a
.byte 102,15,58,223,200,32
- call .L110key_256b
+ call .L100key_256b
.byte 102,15,58,223,202,64
- call .L111key_256a
+ call .L101key_256a
movups %xmm0,(%edx)
movl %ecx,16(%edx)
xorl %eax,%eax
- jmp .L100good_key
+ ret
.align 16
-.L111key_256a:
+.L101key_256a:
movups %xmm2,(%edx)
leal 16(%edx),%edx
-.L109key_256a_cold:
+.L099key_256a_cold:
shufps $16,%xmm0,%xmm4
xorps %xmm4,%xmm0
shufps $140,%xmm0,%xmm4
@@ -2327,7 +2141,7 @@ _aesni_set_encrypt_key:
xorps %xmm1,%xmm0
ret
.align 16
-.L110key_256b:
+.L100key_256b:
movups %xmm0,(%edx)
leal 16(%edx),%edx
shufps $16,%xmm2,%xmm4
@@ -2337,70 +2151,13 @@ _aesni_set_encrypt_key:
shufps $170,%xmm1,%xmm1
xorps %xmm1,%xmm2
ret
-.align 16
-.L10814rounds_alt:
- movdqa (%ebx),%xmm5
- movdqa 32(%ebx),%xmm4
- movl $7,%ecx
- movdqu %xmm0,-32(%edx)
- movdqa %xmm2,%xmm1
- movdqu %xmm2,-16(%edx)
-.L112loop_key256:
-.byte 102,15,56,0,213
-.byte 102,15,56,221,212
- movdqa %xmm0,%xmm3
- pslldq $4,%xmm0
- pxor %xmm0,%xmm3
- pslldq $4,%xmm0
- pxor %xmm0,%xmm3
- pslldq $4,%xmm0
- pxor %xmm3,%xmm0
- pslld $1,%xmm4
- pxor %xmm2,%xmm0
- movdqu %xmm0,(%edx)
- decl %ecx
- jz .L113done_key256
- pshufd $255,%xmm0,%xmm2
- pxor %xmm3,%xmm3
-.byte 102,15,56,221,211
- movdqa %xmm1,%xmm3
- pslldq $4,%xmm1
- pxor %xmm1,%xmm3
- pslldq $4,%xmm1
- pxor %xmm1,%xmm3
- pslldq $4,%xmm1
- pxor %xmm3,%xmm1
- pxor %xmm1,%xmm2
- movdqu %xmm2,16(%edx)
- leal 32(%edx),%edx
- movdqa %xmm2,%xmm1
- jmp .L112loop_key256
-.L113done_key256:
- movl $13,%ecx
- movl %ecx,16(%edx)
-.L100good_key:
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
- pxor %xmm2,%xmm2
- pxor %xmm3,%xmm3
- pxor %xmm4,%xmm4
- pxor %xmm5,%xmm5
- xorl %eax,%eax
- popl %ebx
- popl %ebp
- ret
.align 4
-.L091bad_pointer:
+.L088bad_pointer:
movl $-1,%eax
- popl %ebx
- popl %ebp
ret
.align 4
-.L095bad_keybits:
- pxor %xmm0,%xmm0
+.L091bad_keybits:
movl $-2,%eax
- popl %ebx
- popl %ebp
ret
.size _aesni_set_encrypt_key,.-_aesni_set_encrypt_key
.globl aesni_set_encrypt_key
@@ -2428,7 +2185,7 @@ aesni_set_decrypt_key:
movl 12(%esp),%edx
shll $4,%ecx
testl %eax,%eax
- jnz .L114dec_key_ret
+ jnz .L102dec_key_ret
leal 16(%edx,%ecx,1),%eax
movups (%edx),%xmm0
movups (%eax),%xmm1
@@ -2436,7 +2193,7 @@ aesni_set_decrypt_key:
movups %xmm1,(%edx)
leal 16(%edx),%edx
leal -16(%eax),%eax
-.L115dec_key_inverse:
+.L103dec_key_inverse:
movups (%edx),%xmm0
movups (%eax),%xmm1
.byte 102,15,56,219,192
@@ -2446,22 +2203,14 @@ aesni_set_decrypt_key:
movups %xmm0,16(%eax)
movups %xmm1,-16(%edx)
cmpl %edx,%eax
- ja .L115dec_key_inverse
+ ja .L103dec_key_inverse
movups (%edx),%xmm0
.byte 102,15,56,219,192
movups %xmm0,(%edx)
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
xorl %eax,%eax
-.L114dec_key_ret:
+.L102dec_key_ret:
ret
.size aesni_set_decrypt_key,.-.L_aesni_set_decrypt_key_begin
-.align 64
-.Lkey_const:
-.long 202313229,202313229,202313229,202313229
-.long 67569157,67569157,67569157,67569157
-.long 1,1,1,1
-.long 27,27,27,27
.byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
.byte 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83
.byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
diff --git a/third_party/boringssl/linux-x86_64/crypto/aes/aesni-x86_64.S b/third_party/boringssl/linux-x86_64/crypto/aes/aesni-x86_64.S
index 1d51d5b..ecefbe5 100644
--- a/third_party/boringssl/linux-x86_64/crypto/aes/aesni-x86_64.S
+++ b/third_party/boringssl/linux-x86_64/crypto/aes/aesni-x86_64.S
@@ -20,10 +20,7 @@ aesni_encrypt:
leaq 16(%rdx),%rdx
jnz .Loop_enc1_1
.byte 102,15,56,221,209
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
movups %xmm2,(%rsi)
- pxor %xmm2,%xmm2
.byte 0xf3,0xc3
.size aesni_encrypt,.-aesni_encrypt
@@ -45,10 +42,7 @@ aesni_decrypt:
leaq 16(%rdx),%rdx
jnz .Loop_dec1_2
.byte 102,15,56,223,209
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
movups %xmm2,(%rsi)
- pxor %xmm2,%xmm2
.byte 0xf3,0xc3
.size aesni_decrypt, .-aesni_decrypt
.type _aesni_encrypt2,@function
@@ -274,18 +268,21 @@ _aesni_encrypt6:
pxor %xmm0,%xmm6
.byte 102,15,56,220,225
pxor %xmm0,%xmm7
- movups (%rcx,%rax,1),%xmm0
addq $16,%rax
+.byte 102,15,56,220,233
+.byte 102,15,56,220,241
+.byte 102,15,56,220,249
+ movups -16(%rcx,%rax,1),%xmm0
jmp .Lenc_loop6_enter
.align 16
.Lenc_loop6:
.byte 102,15,56,220,209
.byte 102,15,56,220,217
.byte 102,15,56,220,225
-.Lenc_loop6_enter:
.byte 102,15,56,220,233
.byte 102,15,56,220,241
.byte 102,15,56,220,249
+.Lenc_loop6_enter:
movups (%rcx,%rax,1),%xmm1
addq $32,%rax
.byte 102,15,56,220,208
@@ -328,18 +325,21 @@ _aesni_decrypt6:
pxor %xmm0,%xmm6
.byte 102,15,56,222,225
pxor %xmm0,%xmm7
- movups (%rcx,%rax,1),%xmm0
addq $16,%rax
+.byte 102,15,56,222,233
+.byte 102,15,56,222,241
+.byte 102,15,56,222,249
+ movups -16(%rcx,%rax,1),%xmm0
jmp .Ldec_loop6_enter
.align 16
.Ldec_loop6:
.byte 102,15,56,222,209
.byte 102,15,56,222,217
.byte 102,15,56,222,225
-.Ldec_loop6_enter:
.byte 102,15,56,222,233
.byte 102,15,56,222,241
.byte 102,15,56,222,249
+.Ldec_loop6_enter:
movups (%rcx,%rax,1),%xmm1
addq $32,%rax
.byte 102,15,56,222,208
@@ -379,18 +379,23 @@ _aesni_encrypt8:
leaq 32(%rcx,%rax,1),%rcx
negq %rax
.byte 102,15,56,220,209
+ addq $16,%rax
pxor %xmm0,%xmm7
- pxor %xmm0,%xmm8
.byte 102,15,56,220,217
+ pxor %xmm0,%xmm8
pxor %xmm0,%xmm9
- movups (%rcx,%rax,1),%xmm0
- addq $16,%rax
- jmp .Lenc_loop8_inner
+.byte 102,15,56,220,225
+.byte 102,15,56,220,233
+.byte 102,15,56,220,241
+.byte 102,15,56,220,249
+.byte 102,68,15,56,220,193
+.byte 102,68,15,56,220,201
+ movups -16(%rcx,%rax,1),%xmm0
+ jmp .Lenc_loop8_enter
.align 16
.Lenc_loop8:
.byte 102,15,56,220,209
.byte 102,15,56,220,217
-.Lenc_loop8_inner:
.byte 102,15,56,220,225
.byte 102,15,56,220,233
.byte 102,15,56,220,241
@@ -443,18 +448,23 @@ _aesni_decrypt8:
leaq 32(%rcx,%rax,1),%rcx
negq %rax
.byte 102,15,56,222,209
+ addq $16,%rax
pxor %xmm0,%xmm7
- pxor %xmm0,%xmm8
.byte 102,15,56,222,217
+ pxor %xmm0,%xmm8
pxor %xmm0,%xmm9
- movups (%rcx,%rax,1),%xmm0
- addq $16,%rax
- jmp .Ldec_loop8_inner
+.byte 102,15,56,222,225
+.byte 102,15,56,222,233
+.byte 102,15,56,222,241
+.byte 102,15,56,222,249
+.byte 102,68,15,56,222,193
+.byte 102,68,15,56,222,201
+ movups -16(%rcx,%rax,1),%xmm0
+ jmp .Ldec_loop8_enter
.align 16
.Ldec_loop8:
.byte 102,15,56,222,209
.byte 102,15,56,222,217
-.Ldec_loop8_inner:
.byte 102,15,56,222,225
.byte 102,15,56,222,233
.byte 102,15,56,222,241
@@ -582,7 +592,6 @@ aesni_ecb_encrypt:
movups 80(%rdi),%xmm7
je .Lecb_enc_six
movdqu 96(%rdi),%xmm8
- xorps %xmm9,%xmm9
call _aesni_encrypt8
movups %xmm2,(%rsi)
movups %xmm3,16(%rsi)
@@ -696,23 +705,15 @@ aesni_ecb_encrypt:
jnc .Lecb_dec_loop8
movups %xmm2,(%rsi)
- pxor %xmm2,%xmm2
movq %r11,%rcx
movups %xmm3,16(%rsi)
- pxor %xmm3,%xmm3
movl %r10d,%eax
movups %xmm4,32(%rsi)
- pxor %xmm4,%xmm4
movups %xmm5,48(%rsi)
- pxor %xmm5,%xmm5
movups %xmm6,64(%rsi)
- pxor %xmm6,%xmm6
movups %xmm7,80(%rsi)
- pxor %xmm7,%xmm7
movups %xmm8,96(%rsi)
- pxor %xmm8,%xmm8
movups %xmm9,112(%rsi)
- pxor %xmm9,%xmm9
leaq 128(%rsi),%rsi
addq $128,%rdx
jz .Lecb_ret
@@ -735,23 +736,14 @@ aesni_ecb_encrypt:
je .Lecb_dec_six
movups 96(%rdi),%xmm8
movups (%rcx),%xmm0
- xorps %xmm9,%xmm9
call _aesni_decrypt8
movups %xmm2,(%rsi)
- pxor %xmm2,%xmm2
movups %xmm3,16(%rsi)
- pxor %xmm3,%xmm3
movups %xmm4,32(%rsi)
- pxor %xmm4,%xmm4
movups %xmm5,48(%rsi)
- pxor %xmm5,%xmm5
movups %xmm6,64(%rsi)
- pxor %xmm6,%xmm6
movups %xmm7,80(%rsi)
- pxor %xmm7,%xmm7
movups %xmm8,96(%rsi)
- pxor %xmm8,%xmm8
- pxor %xmm9,%xmm9
jmp .Lecb_ret
.align 16
.Lecb_dec_one:
@@ -767,73 +759,49 @@ aesni_ecb_encrypt:
jnz .Loop_dec1_4
.byte 102,15,56,223,209
movups %xmm2,(%rsi)
- pxor %xmm2,%xmm2
jmp .Lecb_ret
.align 16
.Lecb_dec_two:
call _aesni_decrypt2
movups %xmm2,(%rsi)
- pxor %xmm2,%xmm2
movups %xmm3,16(%rsi)
- pxor %xmm3,%xmm3
jmp .Lecb_ret
.align 16
.Lecb_dec_three:
call _aesni_decrypt3
movups %xmm2,(%rsi)
- pxor %xmm2,%xmm2
movups %xmm3,16(%rsi)
- pxor %xmm3,%xmm3
movups %xmm4,32(%rsi)
- pxor %xmm4,%xmm4
jmp .Lecb_ret
.align 16
.Lecb_dec_four:
call _aesni_decrypt4
movups %xmm2,(%rsi)
- pxor %xmm2,%xmm2
movups %xmm3,16(%rsi)
- pxor %xmm3,%xmm3
movups %xmm4,32(%rsi)
- pxor %xmm4,%xmm4
movups %xmm5,48(%rsi)
- pxor %xmm5,%xmm5
jmp .Lecb_ret
.align 16
.Lecb_dec_five:
xorps %xmm7,%xmm7
call _aesni_decrypt6
movups %xmm2,(%rsi)
- pxor %xmm2,%xmm2
movups %xmm3,16(%rsi)
- pxor %xmm3,%xmm3
movups %xmm4,32(%rsi)
- pxor %xmm4,%xmm4
movups %xmm5,48(%rsi)
- pxor %xmm5,%xmm5
movups %xmm6,64(%rsi)
- pxor %xmm6,%xmm6
- pxor %xmm7,%xmm7
jmp .Lecb_ret
.align 16
.Lecb_dec_six:
call _aesni_decrypt6
movups %xmm2,(%rsi)
- pxor %xmm2,%xmm2
movups %xmm3,16(%rsi)
- pxor %xmm3,%xmm3
movups %xmm4,32(%rsi)
- pxor %xmm4,%xmm4
movups %xmm5,48(%rsi)
- pxor %xmm5,%xmm5
movups %xmm6,64(%rsi)
- pxor %xmm6,%xmm6
movups %xmm7,80(%rsi)
- pxor %xmm7,%xmm7
.Lecb_ret:
- xorps %xmm0,%xmm0
- pxor %xmm1,%xmm1
.byte 0xf3,0xc3
.size aesni_ecb_encrypt,.-aesni_ecb_encrypt
.globl aesni_ccm64_encrypt_blocks
@@ -891,13 +859,7 @@ aesni_ccm64_encrypt_blocks:
leaq 16(%rsi),%rsi
jnz .Lccm64_enc_outer
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
- pxor %xmm2,%xmm2
movups %xmm3,(%r9)
- pxor %xmm3,%xmm3
- pxor %xmm8,%xmm8
- pxor %xmm6,%xmm6
.byte 0xf3,0xc3
.size aesni_ccm64_encrypt_blocks,.-aesni_ccm64_encrypt_blocks
.globl aesni_ccm64_decrypt_blocks
@@ -989,13 +951,7 @@ aesni_ccm64_decrypt_blocks:
leaq 16(%r11),%r11
jnz .Loop_enc1_6
.byte 102,15,56,221,217
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
- pxor %xmm2,%xmm2
movups %xmm3,(%r9)
- pxor %xmm3,%xmm3
- pxor %xmm8,%xmm8
- pxor %xmm6,%xmm6
.byte 0xf3,0xc3
.size aesni_ccm64_decrypt_blocks,.-aesni_ccm64_decrypt_blocks
.globl aesni_ctr32_encrypt_blocks
@@ -1003,43 +959,14 @@ aesni_ccm64_decrypt_blocks:
.type aesni_ctr32_encrypt_blocks,@function
.align 16
aesni_ctr32_encrypt_blocks:
- cmpq $1,%rdx
- jne .Lctr32_bulk
-
-
-
- movups (%r8),%xmm2
- movups (%rdi),%xmm3
- movl 240(%rcx),%edx
- movups (%rcx),%xmm0
- movups 16(%rcx),%xmm1
- leaq 32(%rcx),%rcx
- xorps %xmm0,%xmm2
-.Loop_enc1_7:
-.byte 102,15,56,220,209
- decl %edx
- movups (%rcx),%xmm1
- leaq 16(%rcx),%rcx
- jnz .Loop_enc1_7
-.byte 102,15,56,221,209
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
- xorps %xmm3,%xmm2
- pxor %xmm3,%xmm3
- movups %xmm2,(%rsi)
- xorps %xmm2,%xmm2
- jmp .Lctr32_epilogue
-
-.align 16
-.Lctr32_bulk:
leaq (%rsp),%rax
pushq %rbp
subq $128,%rsp
andq $-16,%rsp
leaq -8(%rax),%rbp
-
-
+ cmpq $1,%rdx
+ je .Lctr32_one_shortcut
movdqu (%r8),%xmm2
movdqu (%rcx),%xmm0
@@ -1430,14 +1357,11 @@ aesni_ctr32_encrypt_blocks:
leaq -128(%rcx),%rcx
.Lctr32_tail:
-
-
leaq 16(%rcx),%rcx
cmpq $4,%rdx
jb .Lctr32_loop3
je .Lctr32_loop4
-
shll $4,%eax
movdqa 96(%rsp),%xmm8
pxor %xmm9,%xmm9
@@ -1540,33 +1464,30 @@ aesni_ctr32_encrypt_blocks:
movups 32(%rdi),%xmm12
xorps %xmm12,%xmm4
movups %xmm4,32(%rsi)
+ jmp .Lctr32_done
+.align 16
+.Lctr32_one_shortcut:
+ movups (%r8),%xmm2
+ movups (%rdi),%xmm10
+ movl 240(%rcx),%eax
+ movups (%rcx),%xmm0
+ movups 16(%rcx),%xmm1
+ leaq 32(%rcx),%rcx
+ xorps %xmm0,%xmm2
+.Loop_enc1_7:
+.byte 102,15,56,220,209
+ decl %eax
+ movups (%rcx),%xmm1
+ leaq 16(%rcx),%rcx
+ jnz .Loop_enc1_7
+.byte 102,15,56,221,209
+ xorps %xmm10,%xmm2
+ movups %xmm2,(%rsi)
+ jmp .Lctr32_done
+
+.align 16
.Lctr32_done:
- xorps %xmm0,%xmm0
- xorl %r11d,%r11d
- pxor %xmm1,%xmm1
- pxor %xmm2,%xmm2
- pxor %xmm3,%xmm3
- pxor %xmm4,%xmm4
- pxor %xmm5,%xmm5
- pxor %xmm6,%xmm6
- pxor %xmm7,%xmm7
- movaps %xmm0,0(%rsp)
- pxor %xmm8,%xmm8
- movaps %xmm0,16(%rsp)
- pxor %xmm9,%xmm9
- movaps %xmm0,32(%rsp)
- pxor %xmm10,%xmm10
- movaps %xmm0,48(%rsp)
- pxor %xmm11,%xmm11
- movaps %xmm0,64(%rsp)
- pxor %xmm12,%xmm12
- movaps %xmm0,80(%rsp)
- pxor %xmm13,%xmm13
- movaps %xmm0,96(%rsp)
- pxor %xmm14,%xmm14
- movaps %xmm0,112(%rsp)
- pxor %xmm15,%xmm15
leaq (%rbp),%rsp
popq %rbp
.Lctr32_epilogue:
@@ -1838,7 +1759,6 @@ aesni_xts_encrypt:
shrl $4,%eax
.Lxts_enc_short:
-
movl %eax,%r10d
pxor %xmm0,%xmm10
addq $96,%rdx
@@ -1867,7 +1787,6 @@ aesni_xts_encrypt:
pxor %xmm12,%xmm4
pxor %xmm13,%xmm5
pxor %xmm14,%xmm6
- pxor %xmm7,%xmm7
call _aesni_encrypt6
@@ -2010,29 +1929,6 @@ aesni_xts_encrypt:
movups %xmm2,-16(%rsi)
.Lxts_enc_ret:
- xorps %xmm0,%xmm0
- pxor %xmm1,%xmm1
- pxor %xmm2,%xmm2
- pxor %xmm3,%xmm3
- pxor %xmm4,%xmm4
- pxor %xmm5,%xmm5
- pxor %xmm6,%xmm6
- pxor %xmm7,%xmm7
- movaps %xmm0,0(%rsp)
- pxor %xmm8,%xmm8
- movaps %xmm0,16(%rsp)
- pxor %xmm9,%xmm9
- movaps %xmm0,32(%rsp)
- pxor %xmm10,%xmm10
- movaps %xmm0,48(%rsp)
- pxor %xmm11,%xmm11
- movaps %xmm0,64(%rsp)
- pxor %xmm12,%xmm12
- movaps %xmm0,80(%rsp)
- pxor %xmm13,%xmm13
- movaps %xmm0,96(%rsp)
- pxor %xmm14,%xmm14
- pxor %xmm15,%xmm15
leaq (%rbp),%rsp
popq %rbp
.Lxts_enc_epilogue:
@@ -2310,7 +2206,6 @@ aesni_xts_decrypt:
shrl $4,%eax
.Lxts_dec_short:
-
movl %eax,%r10d
pxor %xmm0,%xmm10
pxor %xmm0,%xmm11
@@ -2513,29 +2408,6 @@ aesni_xts_decrypt:
movups %xmm2,(%rsi)
.Lxts_dec_ret:
- xorps %xmm0,%xmm0
- pxor %xmm1,%xmm1
- pxor %xmm2,%xmm2
- pxor %xmm3,%xmm3
- pxor %xmm4,%xmm4
- pxor %xmm5,%xmm5
- pxor %xmm6,%xmm6
- pxor %xmm7,%xmm7
- movaps %xmm0,0(%rsp)
- pxor %xmm8,%xmm8
- movaps %xmm0,16(%rsp)
- pxor %xmm9,%xmm9
- movaps %xmm0,32(%rsp)
- pxor %xmm10,%xmm10
- movaps %xmm0,48(%rsp)
- pxor %xmm11,%xmm11
- movaps %xmm0,64(%rsp)
- pxor %xmm12,%xmm12
- movaps %xmm0,80(%rsp)
- pxor %xmm13,%xmm13
- movaps %xmm0,96(%rsp)
- pxor %xmm14,%xmm14
- pxor %xmm15,%xmm15
leaq (%rbp),%rsp
popq %rbp
.Lxts_dec_epilogue:
@@ -2585,11 +2457,7 @@ aesni_cbc_encrypt:
jnc .Lcbc_enc_loop
addq $16,%rdx
jnz .Lcbc_enc_tail
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
movups %xmm2,(%r8)
- pxor %xmm2,%xmm2
- pxor %xmm3,%xmm3
jmp .Lcbc_ret
.Lcbc_enc_tail:
@@ -2609,35 +2477,6 @@ aesni_cbc_encrypt:
.align 16
.Lcbc_decrypt:
- cmpq $16,%rdx
- jne .Lcbc_decrypt_bulk
-
-
-
- movdqu (%rdi),%xmm2
- movdqu (%r8),%xmm3
- movdqa %xmm2,%xmm4
- movups (%rcx),%xmm0
- movups 16(%rcx),%xmm1
- leaq 32(%rcx),%rcx
- xorps %xmm0,%xmm2
-.Loop_dec1_16:
-.byte 102,15,56,222,209
- decl %r10d
- movups (%rcx),%xmm1
- leaq 16(%rcx),%rcx
- jnz .Loop_dec1_16
-.byte 102,15,56,223,209
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
- movdqu %xmm4,(%r8)
- xorps %xmm3,%xmm2
- pxor %xmm3,%xmm3
- movups %xmm2,(%rsi)
- pxor %xmm2,%xmm2
- jmp .Lcbc_ret
-.align 16
-.Lcbc_decrypt_bulk:
leaq (%rsp),%rax
pushq %rbp
subq $16,%rsp
@@ -2874,7 +2713,7 @@ aesni_cbc_encrypt:
movaps %xmm9,%xmm2
leaq -112(%rcx),%rcx
addq $112,%rdx
- jle .Lcbc_dec_clear_tail_collected
+ jle .Lcbc_dec_tail_collected
movups %xmm9,(%rsi)
leaq 16(%rsi),%rsi
cmpq $80,%rdx
@@ -2893,19 +2732,14 @@ aesni_cbc_encrypt:
movdqu %xmm2,(%rsi)
pxor %xmm12,%xmm4
movdqu %xmm3,16(%rsi)
- pxor %xmm3,%xmm3
pxor %xmm13,%xmm5
movdqu %xmm4,32(%rsi)
- pxor %xmm4,%xmm4
pxor %xmm14,%xmm6
movdqu %xmm5,48(%rsi)
- pxor %xmm5,%xmm5
pxor %xmm15,%xmm7
movdqu %xmm6,64(%rsi)
- pxor %xmm6,%xmm6
leaq 80(%rsi),%rsi
movdqa %xmm7,%xmm2
- pxor %xmm7,%xmm7
jmp .Lcbc_dec_tail_collected
.align 16
@@ -2920,23 +2754,16 @@ aesni_cbc_encrypt:
movdqu %xmm2,(%rsi)
pxor %xmm12,%xmm4
movdqu %xmm3,16(%rsi)
- pxor %xmm3,%xmm3
pxor %xmm13,%xmm5
movdqu %xmm4,32(%rsi)
- pxor %xmm4,%xmm4
pxor %xmm14,%xmm6
movdqu %xmm5,48(%rsi)
- pxor %xmm5,%xmm5
pxor %xmm15,%xmm7
movdqu %xmm6,64(%rsi)
- pxor %xmm6,%xmm6
pxor %xmm9,%xmm8
movdqu %xmm7,80(%rsi)
- pxor %xmm7,%xmm7
leaq 96(%rsi),%rsi
movdqa %xmm8,%xmm2
- pxor %xmm8,%xmm8
- pxor %xmm9,%xmm9
jmp .Lcbc_dec_tail_collected
.align 16
@@ -2980,7 +2807,7 @@ aesni_cbc_encrypt:
movdqa %xmm7,%xmm2
addq $80,%rdx
- jle .Lcbc_dec_clear_tail_collected
+ jle .Lcbc_dec_tail_collected
movups %xmm7,(%rsi)
leaq 16(%rsi),%rsi
@@ -3015,17 +2842,12 @@ aesni_cbc_encrypt:
movdqu %xmm2,(%rsi)
pxor %xmm12,%xmm4
movdqu %xmm3,16(%rsi)
- pxor %xmm3,%xmm3
pxor %xmm13,%xmm5
movdqu %xmm4,32(%rsi)
- pxor %xmm4,%xmm4
pxor %xmm14,%xmm6
movdqu %xmm5,48(%rsi)
- pxor %xmm5,%xmm5
leaq 64(%rsi),%rsi
movdqa %xmm6,%xmm2
- pxor %xmm6,%xmm6
- pxor %xmm7,%xmm7
subq $16,%rdx
jmp .Lcbc_dec_tail_collected
@@ -3036,12 +2858,12 @@ aesni_cbc_encrypt:
movups 16(%rcx),%xmm1
leaq 32(%rcx),%rcx
xorps %xmm0,%xmm2
-.Loop_dec1_17:
+.Loop_dec1_16:
.byte 102,15,56,222,209
decl %eax
movups (%rcx),%xmm1
leaq 16(%rcx),%rcx
- jnz .Loop_dec1_17
+ jnz .Loop_dec1_16
.byte 102,15,56,223,209
xorps %xmm10,%xmm2
movaps %xmm11,%xmm10
@@ -3055,7 +2877,6 @@ aesni_cbc_encrypt:
pxor %xmm11,%xmm3
movdqu %xmm2,(%rsi)
movdqa %xmm3,%xmm2
- pxor %xmm3,%xmm3
leaq 16(%rsi),%rsi
jmp .Lcbc_dec_tail_collected
.align 16
@@ -3068,9 +2889,7 @@ aesni_cbc_encrypt:
movdqu %xmm2,(%rsi)
pxor %xmm12,%xmm4
movdqu %xmm3,16(%rsi)
- pxor %xmm3,%xmm3
movdqa %xmm4,%xmm2
- pxor %xmm4,%xmm4
leaq 32(%rsi),%rsi
jmp .Lcbc_dec_tail_collected
.align 16
@@ -3083,45 +2902,29 @@ aesni_cbc_encrypt:
movdqu %xmm2,(%rsi)
pxor %xmm12,%xmm4
movdqu %xmm3,16(%rsi)
- pxor %xmm3,%xmm3
pxor %xmm13,%xmm5
movdqu %xmm4,32(%rsi)
- pxor %xmm4,%xmm4
movdqa %xmm5,%xmm2
- pxor %xmm5,%xmm5
leaq 48(%rsi),%rsi
jmp .Lcbc_dec_tail_collected
.align 16
-.Lcbc_dec_clear_tail_collected:
- pxor %xmm3,%xmm3
- pxor %xmm4,%xmm4
- pxor %xmm5,%xmm5
- pxor %xmm6,%xmm6
- pxor %xmm7,%xmm7
- pxor %xmm8,%xmm8
- pxor %xmm9,%xmm9
.Lcbc_dec_tail_collected:
movups %xmm10,(%r8)
andq $15,%rdx
jnz .Lcbc_dec_tail_partial
movups %xmm2,(%rsi)
- pxor %xmm2,%xmm2
jmp .Lcbc_dec_ret
.align 16
.Lcbc_dec_tail_partial:
movaps %xmm2,(%rsp)
- pxor %xmm2,%xmm2
movq $16,%rcx
movq %rsi,%rdi
subq %rdx,%rcx
leaq (%rsp),%rsi
.long 0x9066A4F3
- movdqa %xmm2,(%rsp)
.Lcbc_dec_ret:
- xorps %xmm0,%xmm0
- pxor %xmm1,%xmm1
leaq (%rbp),%rsp
popq %rbp
.Lcbc_ret:
@@ -3160,9 +2963,7 @@ aesni_set_decrypt_key:
movups (%rdx),%xmm0
.byte 102,15,56,219,192
- pxor %xmm1,%xmm1
movups %xmm0,(%rdi)
- pxor %xmm0,%xmm0
.Ldec_key_ret:
addq $8,%rsp
.byte 0xf3,0xc3
@@ -3181,10 +2982,8 @@ __aesni_set_encrypt_key:
testq %rdx,%rdx
jz .Lenc_key_ret
- movl $268437504,%r10d
movups (%rdi),%xmm0
xorps %xmm4,%xmm4
- andl OPENSSL_ia32cap_P+4(%rip),%r10d
leaq 16(%rdx),%rax
cmpl $256,%esi
je .L14rounds
@@ -3195,9 +2994,6 @@ __aesni_set_encrypt_key:
.L10rounds:
movl $9,%esi
- cmpl $268435456,%r10d
- je .L10rounds_alt
-
movups %xmm0,(%rdx)
.byte 102,15,58,223,200,1
call .Lkey_expansion_128_cold
@@ -3225,79 +3021,9 @@ __aesni_set_encrypt_key:
jmp .Lenc_key_ret
.align 16
-.L10rounds_alt:
- movdqa .Lkey_rotate(%rip),%xmm5
- movl $8,%r10d
- movdqa .Lkey_rcon1(%rip),%xmm4
- movdqa %xmm0,%xmm2
- movdqu %xmm0,(%rdx)
- jmp .Loop_key128
-
-.align 16
-.Loop_key128:
-.byte 102,15,56,0,197
-.byte 102,15,56,221,196
- pslld $1,%xmm4
- leaq 16(%rax),%rax
-
- movdqa %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm3,%xmm2
-
- pxor %xmm2,%xmm0
- movdqu %xmm0,-16(%rax)
- movdqa %xmm0,%xmm2
-
- decl %r10d
- jnz .Loop_key128
-
- movdqa .Lkey_rcon1b(%rip),%xmm4
-
-.byte 102,15,56,0,197
-.byte 102,15,56,221,196
- pslld $1,%xmm4
-
- movdqa %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm3,%xmm2
-
- pxor %xmm2,%xmm0
- movdqu %xmm0,(%rax)
-
- movdqa %xmm0,%xmm2
-.byte 102,15,56,0,197
-.byte 102,15,56,221,196
-
- movdqa %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm3,%xmm2
-
- pxor %xmm2,%xmm0
- movdqu %xmm0,16(%rax)
-
- movl %esi,96(%rax)
- xorl %eax,%eax
- jmp .Lenc_key_ret
-
-.align 16
.L12rounds:
movq 16(%rdi),%xmm2
movl $11,%esi
- cmpl $268435456,%r10d
- je .L12rounds_alt
-
movups %xmm0,(%rdx)
.byte 102,15,58,223,202,1
call .Lkey_expansion_192a_cold
@@ -3321,54 +3047,10 @@ __aesni_set_encrypt_key:
jmp .Lenc_key_ret
.align 16
-.L12rounds_alt:
- movdqa .Lkey_rotate192(%rip),%xmm5
- movdqa .Lkey_rcon1(%rip),%xmm4
- movl $8,%r10d
- movdqu %xmm0,(%rdx)
- jmp .Loop_key192
-
-.align 16
-.Loop_key192:
- movq %xmm2,0(%rax)
- movdqa %xmm2,%xmm1
-.byte 102,15,56,0,213
-.byte 102,15,56,221,212
- pslld $1,%xmm4
- leaq 24(%rax),%rax
-
- movdqa %xmm0,%xmm3
- pslldq $4,%xmm0
- pxor %xmm0,%xmm3
- pslldq $4,%xmm0
- pxor %xmm0,%xmm3
- pslldq $4,%xmm0
- pxor %xmm3,%xmm0
-
- pshufd $255,%xmm0,%xmm3
- pxor %xmm1,%xmm3
- pslldq $4,%xmm1
- pxor %xmm1,%xmm3
-
- pxor %xmm2,%xmm0
- pxor %xmm3,%xmm2
- movdqu %xmm0,-16(%rax)
-
- decl %r10d
- jnz .Loop_key192
-
- movl %esi,32(%rax)
- xorl %eax,%eax
- jmp .Lenc_key_ret
-
-.align 16
.L14rounds:
movups 16(%rdi),%xmm2
movl $13,%esi
leaq 16(%rax),%rax
- cmpl $268435456,%r10d
- je .L14rounds_alt
-
movups %xmm0,(%rdx)
movups %xmm2,16(%rdx)
.byte 102,15,58,223,202,1
@@ -3403,69 +3085,9 @@ __aesni_set_encrypt_key:
jmp .Lenc_key_ret
.align 16
-.L14rounds_alt:
- movdqa .Lkey_rotate(%rip),%xmm5
- movdqa .Lkey_rcon1(%rip),%xmm4
- movl $7,%r10d
- movdqu %xmm0,0(%rdx)
- movdqa %xmm2,%xmm1
- movdqu %xmm2,16(%rdx)
- jmp .Loop_key256
-
-.align 16
-.Loop_key256:
-.byte 102,15,56,0,213
-.byte 102,15,56,221,212
-
- movdqa %xmm0,%xmm3
- pslldq $4,%xmm0
- pxor %xmm0,%xmm3
- pslldq $4,%xmm0
- pxor %xmm0,%xmm3
- pslldq $4,%xmm0
- pxor %xmm3,%xmm0
- pslld $1,%xmm4
-
- pxor %xmm2,%xmm0
- movdqu %xmm0,(%rax)
-
- decl %r10d
- jz .Ldone_key256
-
- pshufd $255,%xmm0,%xmm2
- pxor %xmm3,%xmm3
-.byte 102,15,56,221,211
-
- movdqa %xmm1,%xmm3
- pslldq $4,%xmm1
- pxor %xmm1,%xmm3
- pslldq $4,%xmm1
- pxor %xmm1,%xmm3
- pslldq $4,%xmm1
- pxor %xmm3,%xmm1
-
- pxor %xmm1,%xmm2
- movdqu %xmm2,16(%rax)
- leaq 32(%rax),%rax
- movdqa %xmm2,%xmm1
-
- jmp .Loop_key256
-
-.Ldone_key256:
- movl %esi,16(%rax)
- xorl %eax,%eax
- jmp .Lenc_key_ret
-
-.align 16
.Lbad_keybits:
movq $-2,%rax
.Lenc_key_ret:
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
- pxor %xmm2,%xmm2
- pxor %xmm3,%xmm3
- pxor %xmm4,%xmm4
- pxor %xmm5,%xmm5
addq $8,%rsp
.byte 0xf3,0xc3
.LSEH_end_set_encrypt_key:
@@ -3551,14 +3173,6 @@ __aesni_set_encrypt_key:
.long 0x87,0,1,0
.Lincrement1:
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
-.Lkey_rotate:
-.long 0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d
-.Lkey_rotate192:
-.long 0x04070605,0x04070605,0x04070605,0x04070605
-.Lkey_rcon1:
-.long 1,1,1,1
-.Lkey_rcon1b:
-.long 0x1b,0x1b,0x1b,0x1b
.byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69,83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
.align 64
diff --git a/third_party/boringssl/mac-x86/crypto/aes/aesni-x86.S b/third_party/boringssl/mac-x86/crypto/aes/aesni-x86.S
index 07719ba..9000478 100644
--- a/third_party/boringssl/mac-x86/crypto/aes/aesni-x86.S
+++ b/third_party/boringssl/mac-x86/crypto/aes/aesni-x86.S
@@ -22,10 +22,7 @@ L000enc1_loop_1:
leal 16(%edx),%edx
jnz L000enc1_loop_1
.byte 102,15,56,221,209
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
movups %xmm2,(%eax)
- pxor %xmm2,%xmm2
ret
.globl _aesni_decrypt
.private_extern _aesni_decrypt
@@ -48,10 +45,7 @@ L001dec1_loop_2:
leal 16(%edx),%edx
jnz L001dec1_loop_2
.byte 102,15,56,223,209
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
movups %xmm2,(%eax)
- pxor %xmm2,%xmm2
ret
.private_extern __aesni_encrypt2
.align 4
@@ -258,15 +252,17 @@ __aesni_encrypt6:
negl %ecx
.byte 102,15,56,220,225
pxor %xmm0,%xmm7
- movups (%edx,%ecx,1),%xmm0
addl $16,%ecx
- jmp L008_aesni_encrypt6_inner
+.byte 102,15,56,220,233
+.byte 102,15,56,220,241
+.byte 102,15,56,220,249
+ movups -16(%edx,%ecx,1),%xmm0
+ jmp L_aesni_encrypt6_enter
.align 4,0x90
-L009enc6_loop:
+L008enc6_loop:
.byte 102,15,56,220,209
.byte 102,15,56,220,217
.byte 102,15,56,220,225
-L008_aesni_encrypt6_inner:
.byte 102,15,56,220,233
.byte 102,15,56,220,241
.byte 102,15,56,220,249
@@ -280,7 +276,7 @@ L_aesni_encrypt6_enter:
.byte 102,15,56,220,240
.byte 102,15,56,220,248
movups -16(%edx,%ecx,1),%xmm0
- jnz L009enc6_loop
+ jnz L008enc6_loop
.byte 102,15,56,220,209
.byte 102,15,56,220,217
.byte 102,15,56,220,225
@@ -311,15 +307,17 @@ __aesni_decrypt6:
negl %ecx
.byte 102,15,56,222,225
pxor %xmm0,%xmm7
- movups (%edx,%ecx,1),%xmm0
addl $16,%ecx
- jmp L010_aesni_decrypt6_inner
+.byte 102,15,56,222,233
+.byte 102,15,56,222,241
+.byte 102,15,56,222,249
+ movups -16(%edx,%ecx,1),%xmm0
+ jmp L_aesni_decrypt6_enter
.align 4,0x90
-L011dec6_loop:
+L009dec6_loop:
.byte 102,15,56,222,209
.byte 102,15,56,222,217
.byte 102,15,56,222,225
-L010_aesni_decrypt6_inner:
.byte 102,15,56,222,233
.byte 102,15,56,222,241
.byte 102,15,56,222,249
@@ -333,7 +331,7 @@ L_aesni_decrypt6_enter:
.byte 102,15,56,222,240
.byte 102,15,56,222,248
movups -16(%edx,%ecx,1),%xmm0
- jnz L011dec6_loop
+ jnz L009dec6_loop
.byte 102,15,56,222,209
.byte 102,15,56,222,217
.byte 102,15,56,222,225
@@ -362,14 +360,14 @@ L_aesni_ecb_encrypt_begin:
movl 32(%esp),%edx
movl 36(%esp),%ebx
andl $-16,%eax
- jz L012ecb_ret
+ jz L010ecb_ret
movl 240(%edx),%ecx
testl %ebx,%ebx
- jz L013ecb_decrypt
+ jz L011ecb_decrypt
movl %edx,%ebp
movl %ecx,%ebx
cmpl $96,%eax
- jb L014ecb_enc_tail
+ jb L012ecb_enc_tail
movdqu (%esi),%xmm2
movdqu 16(%esi),%xmm3
movdqu 32(%esi),%xmm4
@@ -378,9 +376,9 @@ L_aesni_ecb_encrypt_begin:
movdqu 80(%esi),%xmm7
leal 96(%esi),%esi
subl $96,%eax
- jmp L015ecb_enc_loop6_enter
+ jmp L013ecb_enc_loop6_enter
.align 4,0x90
-L016ecb_enc_loop6:
+L014ecb_enc_loop6:
movups %xmm2,(%edi)
movdqu (%esi),%xmm2
movups %xmm3,16(%edi)
@@ -395,12 +393,12 @@ L016ecb_enc_loop6:
leal 96(%edi),%edi
movdqu 80(%esi),%xmm7
leal 96(%esi),%esi
-L015ecb_enc_loop6_enter:
+L013ecb_enc_loop6_enter:
call __aesni_encrypt6
movl %ebp,%edx
movl %ebx,%ecx
subl $96,%eax
- jnc L016ecb_enc_loop6
+ jnc L014ecb_enc_loop6
movups %xmm2,(%edi)
movups %xmm3,16(%edi)
movups %xmm4,32(%edi)
@@ -409,18 +407,18 @@ L015ecb_enc_loop6_enter:
movups %xmm7,80(%edi)
leal 96(%edi),%edi
addl $96,%eax
- jz L012ecb_ret
-L014ecb_enc_tail:
+ jz L010ecb_ret
+L012ecb_enc_tail:
movups (%esi),%xmm2
cmpl $32,%eax
- jb L017ecb_enc_one
+ jb L015ecb_enc_one
movups 16(%esi),%xmm3
- je L018ecb_enc_two
+ je L016ecb_enc_two
movups 32(%esi),%xmm4
cmpl $64,%eax
- jb L019ecb_enc_three
+ jb L017ecb_enc_three
movups 48(%esi),%xmm5
- je L020ecb_enc_four
+ je L018ecb_enc_four
movups 64(%esi),%xmm6
xorps %xmm7,%xmm7
call __aesni_encrypt6
@@ -429,49 +427,49 @@ L014ecb_enc_tail:
movups %xmm4,32(%edi)
movups %xmm5,48(%edi)
movups %xmm6,64(%edi)
- jmp L012ecb_ret
+ jmp L010ecb_ret
.align 4,0x90
-L017ecb_enc_one:
+L015ecb_enc_one:
movups (%edx),%xmm0
movups 16(%edx),%xmm1
leal 32(%edx),%edx
xorps %xmm0,%xmm2
-L021enc1_loop_3:
+L019enc1_loop_3:
.byte 102,15,56,220,209
decl %ecx
movups (%edx),%xmm1
leal 16(%edx),%edx
- jnz L021enc1_loop_3
+ jnz L019enc1_loop_3
.byte 102,15,56,221,209
movups %xmm2,(%edi)
- jmp L012ecb_ret
+ jmp L010ecb_ret
.align 4,0x90
-L018ecb_enc_two:
+L016ecb_enc_two:
call __aesni_encrypt2
movups %xmm2,(%edi)
movups %xmm3,16(%edi)
- jmp L012ecb_ret
+ jmp L010ecb_ret
.align 4,0x90
-L019ecb_enc_three:
+L017ecb_enc_three:
call __aesni_encrypt3
movups %xmm2,(%edi)
movups %xmm3,16(%edi)
movups %xmm4,32(%edi)
- jmp L012ecb_ret
+ jmp L010ecb_ret
.align 4,0x90
-L020ecb_enc_four:
+L018ecb_enc_four:
call __aesni_encrypt4
movups %xmm2,(%edi)
movups %xmm3,16(%edi)
movups %xmm4,32(%edi)
movups %xmm5,48(%edi)
- jmp L012ecb_ret
+ jmp L010ecb_ret
.align 4,0x90
-L013ecb_decrypt:
+L011ecb_decrypt:
movl %edx,%ebp
movl %ecx,%ebx
cmpl $96,%eax
- jb L022ecb_dec_tail
+ jb L020ecb_dec_tail
movdqu (%esi),%xmm2
movdqu 16(%esi),%xmm3
movdqu 32(%esi),%xmm4
@@ -480,9 +478,9 @@ L013ecb_decrypt:
movdqu 80(%esi),%xmm7
leal 96(%esi),%esi
subl $96,%eax
- jmp L023ecb_dec_loop6_enter
+ jmp L021ecb_dec_loop6_enter
.align 4,0x90
-L024ecb_dec_loop6:
+L022ecb_dec_loop6:
movups %xmm2,(%edi)
movdqu (%esi),%xmm2
movups %xmm3,16(%edi)
@@ -497,12 +495,12 @@ L024ecb_dec_loop6:
leal 96(%edi),%edi
movdqu 80(%esi),%xmm7
leal 96(%esi),%esi
-L023ecb_dec_loop6_enter:
+L021ecb_dec_loop6_enter:
call __aesni_decrypt6
movl %ebp,%edx
movl %ebx,%ecx
subl $96,%eax
- jnc L024ecb_dec_loop6
+ jnc L022ecb_dec_loop6
movups %xmm2,(%edi)
movups %xmm3,16(%edi)
movups %xmm4,32(%edi)
@@ -511,18 +509,18 @@ L023ecb_dec_loop6_enter:
movups %xmm7,80(%edi)
leal 96(%edi),%edi
addl $96,%eax
- jz L012ecb_ret
-L022ecb_dec_tail:
+ jz L010ecb_ret
+L020ecb_dec_tail:
movups (%esi),%xmm2
cmpl $32,%eax
- jb L025ecb_dec_one
+ jb L023ecb_dec_one
movups 16(%esi),%xmm3
- je L026ecb_dec_two
+ je L024ecb_dec_two
movups 32(%esi),%xmm4
cmpl $64,%eax
- jb L027ecb_dec_three
+ jb L025ecb_dec_three
movups 48(%esi),%xmm5
- je L028ecb_dec_four
+ je L026ecb_dec_four
movups 64(%esi),%xmm6
xorps %xmm7,%xmm7
call __aesni_decrypt6
@@ -531,51 +529,43 @@ L022ecb_dec_tail:
movups %xmm4,32(%edi)
movups %xmm5,48(%edi)
movups %xmm6,64(%edi)
- jmp L012ecb_ret
+ jmp L010ecb_ret
.align 4,0x90
-L025ecb_dec_one:
+L023ecb_dec_one:
movups (%edx),%xmm0
movups 16(%edx),%xmm1
leal 32(%edx),%edx
xorps %xmm0,%xmm2
-L029dec1_loop_4:
+L027dec1_loop_4:
.byte 102,15,56,222,209
decl %ecx
movups (%edx),%xmm1
leal 16(%edx),%edx
- jnz L029dec1_loop_4
+ jnz L027dec1_loop_4
.byte 102,15,56,223,209
movups %xmm2,(%edi)
- jmp L012ecb_ret
+ jmp L010ecb_ret
.align 4,0x90
-L026ecb_dec_two:
+L024ecb_dec_two:
call __aesni_decrypt2
movups %xmm2,(%edi)
movups %xmm3,16(%edi)
- jmp L012ecb_ret
+ jmp L010ecb_ret
.align 4,0x90
-L027ecb_dec_three:
+L025ecb_dec_three:
call __aesni_decrypt3
movups %xmm2,(%edi)
movups %xmm3,16(%edi)
movups %xmm4,32(%edi)
- jmp L012ecb_ret
+ jmp L010ecb_ret
.align 4,0x90
-L028ecb_dec_four:
+L026ecb_dec_four:
call __aesni_decrypt4
movups %xmm2,(%edi)
movups %xmm3,16(%edi)
movups %xmm4,32(%edi)
movups %xmm5,48(%edi)
-L012ecb_ret:
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
- pxor %xmm2,%xmm2
- pxor %xmm3,%xmm3
- pxor %xmm4,%xmm4
- pxor %xmm5,%xmm5
- pxor %xmm6,%xmm6
- pxor %xmm7,%xmm7
+L010ecb_ret:
popl %edi
popl %esi
popl %ebx
@@ -621,7 +611,7 @@ L_aesni_ccm64_encrypt_blocks_begin:
leal 32(%edx,%ecx,1),%edx
subl %ecx,%ebx
.byte 102,15,56,0,253
-L030ccm64_enc_outer:
+L028ccm64_enc_outer:
movups (%ebp),%xmm0
movl %ebx,%ecx
movups (%esi),%xmm6
@@ -630,7 +620,7 @@ L030ccm64_enc_outer:
xorps %xmm6,%xmm0
xorps %xmm0,%xmm3
movups 32(%ebp),%xmm0
-L031ccm64_enc2_loop:
+L029ccm64_enc2_loop:
.byte 102,15,56,220,209
.byte 102,15,56,220,217
movups (%edx,%ecx,1),%xmm1
@@ -638,7 +628,7 @@ L031ccm64_enc2_loop:
.byte 102,15,56,220,208
.byte 102,15,56,220,216
movups -16(%edx,%ecx,1),%xmm0
- jnz L031ccm64_enc2_loop
+ jnz L029ccm64_enc2_loop
.byte 102,15,56,220,209
.byte 102,15,56,220,217
paddq 16(%esp),%xmm7
@@ -651,18 +641,10 @@ L031ccm64_enc2_loop:
movups %xmm6,(%edi)
.byte 102,15,56,0,213
leal 16(%edi),%edi
- jnz L030ccm64_enc_outer
+ jnz L028ccm64_enc_outer
movl 48(%esp),%esp
movl 40(%esp),%edi
movups %xmm3,(%edi)
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
- pxor %xmm2,%xmm2
- pxor %xmm3,%xmm3
- pxor %xmm4,%xmm4
- pxor %xmm5,%xmm5
- pxor %xmm6,%xmm6
- pxor %xmm7,%xmm7
popl %edi
popl %esi
popl %ebx
@@ -709,12 +691,12 @@ L_aesni_ccm64_decrypt_blocks_begin:
movups 16(%edx),%xmm1
leal 32(%edx),%edx
xorps %xmm0,%xmm2
-L032enc1_loop_5:
+L030enc1_loop_5:
.byte 102,15,56,220,209
decl %ecx
movups (%edx),%xmm1
leal 16(%edx),%edx
- jnz L032enc1_loop_5
+ jnz L030enc1_loop_5
.byte 102,15,56,221,209
shll $4,%ebx
movl $16,%ecx
@@ -724,16 +706,16 @@ L032enc1_loop_5:
subl %ebx,%ecx
leal 32(%ebp,%ebx,1),%edx
movl %ecx,%ebx
- jmp L033ccm64_dec_outer
+ jmp L031ccm64_dec_outer
.align 4,0x90
-L033ccm64_dec_outer:
+L031ccm64_dec_outer:
xorps %xmm2,%xmm6
movdqa %xmm7,%xmm2
movups %xmm6,(%edi)
leal 16(%edi),%edi
.byte 102,15,56,0,213
subl $1,%eax
- jz L034ccm64_dec_break
+ jz L032ccm64_dec_break
movups (%ebp),%xmm0
movl %ebx,%ecx
movups 16(%ebp),%xmm1
@@ -741,7 +723,7 @@ L033ccm64_dec_outer:
xorps %xmm0,%xmm2
xorps %xmm6,%xmm3
movups 32(%ebp),%xmm0
-L035ccm64_dec2_loop:
+L033ccm64_dec2_loop:
.byte 102,15,56,220,209
.byte 102,15,56,220,217
movups (%edx,%ecx,1),%xmm1
@@ -749,7 +731,7 @@ L035ccm64_dec2_loop:
.byte 102,15,56,220,208
.byte 102,15,56,220,216
movups -16(%edx,%ecx,1),%xmm0
- jnz L035ccm64_dec2_loop
+ jnz L033ccm64_dec2_loop
movups (%esi),%xmm6
paddq 16(%esp),%xmm7
.byte 102,15,56,220,209
@@ -757,9 +739,9 @@ L035ccm64_dec2_loop:
.byte 102,15,56,221,208
.byte 102,15,56,221,216
leal 16(%esi),%esi
- jmp L033ccm64_dec_outer
+ jmp L031ccm64_dec_outer
.align 4,0x90
-L034ccm64_dec_break:
+L032ccm64_dec_break:
movl 240(%ebp),%ecx
movl %ebp,%edx
movups (%edx),%xmm0
@@ -767,24 +749,16 @@ L034ccm64_dec_break:
xorps %xmm0,%xmm6
leal 32(%edx),%edx
xorps %xmm6,%xmm3
-L036enc1_loop_6:
+L034enc1_loop_6:
.byte 102,15,56,220,217
decl %ecx
movups (%edx),%xmm1
leal 16(%edx),%edx
- jnz L036enc1_loop_6
+ jnz L034enc1_loop_6
.byte 102,15,56,221,217
movl 48(%esp),%esp
movl 40(%esp),%edi
movups %xmm3,(%edi)
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
- pxor %xmm2,%xmm2
- pxor %xmm3,%xmm3
- pxor %xmm4,%xmm4
- pxor %xmm5,%xmm5
- pxor %xmm6,%xmm6
- pxor %xmm7,%xmm7
popl %edi
popl %esi
popl %ebx
@@ -809,7 +783,7 @@ L_aesni_ctr32_encrypt_blocks_begin:
andl $-16,%esp
movl %ebp,80(%esp)
cmpl $1,%eax
- je L037ctr32_one_shortcut
+ je L035ctr32_one_shortcut
movdqu (%ebx),%xmm7
movl $202182159,(%esp)
movl $134810123,4(%esp)
@@ -847,7 +821,7 @@ L_aesni_ctr32_encrypt_blocks_begin:
pshufd $192,%xmm0,%xmm2
pshufd $128,%xmm0,%xmm3
cmpl $6,%eax
- jb L038ctr32_tail
+ jb L036ctr32_tail
pxor %xmm6,%xmm7
shll $4,%ecx
movl $16,%ebx
@@ -856,9 +830,9 @@ L_aesni_ctr32_encrypt_blocks_begin:
subl %ecx,%ebx
leal 32(%edx,%ecx,1),%edx
subl $6,%eax
- jmp L039ctr32_loop6
+ jmp L037ctr32_loop6
.align 4,0x90
-L039ctr32_loop6:
+L037ctr32_loop6:
pshufd $64,%xmm0,%xmm4
movdqa 32(%esp),%xmm0
pshufd $192,%xmm1,%xmm5
@@ -912,27 +886,27 @@ L039ctr32_loop6:
leal 96(%edi),%edi
pshufd $128,%xmm0,%xmm3
subl $6,%eax
- jnc L039ctr32_loop6
+ jnc L037ctr32_loop6
addl $6,%eax
- jz L040ctr32_ret
+ jz L038ctr32_ret
movdqu (%ebp),%xmm7
movl %ebp,%edx
pxor 32(%esp),%xmm7
movl 240(%ebp),%ecx
-L038ctr32_tail:
+L036ctr32_tail:
por %xmm7,%xmm2
cmpl $2,%eax
- jb L041ctr32_one
+ jb L039ctr32_one
pshufd $64,%xmm0,%xmm4
por %xmm7,%xmm3
- je L042ctr32_two
+ je L040ctr32_two
pshufd $192,%xmm1,%xmm5
por %xmm7,%xmm4
cmpl $4,%eax
- jb L043ctr32_three
+ jb L041ctr32_three
pshufd $128,%xmm1,%xmm6
por %xmm7,%xmm5
- je L044ctr32_four
+ je L042ctr32_four
por %xmm7,%xmm6
call __aesni_encrypt6
movups (%esi),%xmm1
@@ -950,29 +924,29 @@ L038ctr32_tail:
movups %xmm4,32(%edi)
movups %xmm5,48(%edi)
movups %xmm6,64(%edi)
- jmp L040ctr32_ret
+ jmp L038ctr32_ret
.align 4,0x90
-L037ctr32_one_shortcut:
+L035ctr32_one_shortcut:
movups (%ebx),%xmm2
movl 240(%edx),%ecx
-L041ctr32_one:
+L039ctr32_one:
movups (%edx),%xmm0
movups 16(%edx),%xmm1
leal 32(%edx),%edx
xorps %xmm0,%xmm2
-L045enc1_loop_7:
+L043enc1_loop_7:
.byte 102,15,56,220,209
decl %ecx
movups (%edx),%xmm1
leal 16(%edx),%edx
- jnz L045enc1_loop_7
+ jnz L043enc1_loop_7
.byte 102,15,56,221,209
movups (%esi),%xmm6
xorps %xmm2,%xmm6
movups %xmm6,(%edi)
- jmp L040ctr32_ret
+ jmp L038ctr32_ret
.align 4,0x90
-L042ctr32_two:
+L040ctr32_two:
call __aesni_encrypt2
movups (%esi),%xmm5
movups 16(%esi),%xmm6
@@ -980,9 +954,9 @@ L042ctr32_two:
xorps %xmm6,%xmm3
movups %xmm2,(%edi)
movups %xmm3,16(%edi)
- jmp L040ctr32_ret
+ jmp L038ctr32_ret
.align 4,0x90
-L043ctr32_three:
+L041ctr32_three:
call __aesni_encrypt3
movups (%esi),%xmm5
movups 16(%esi),%xmm6
@@ -993,9 +967,9 @@ L043ctr32_three:
xorps %xmm7,%xmm4
movups %xmm3,16(%edi)
movups %xmm4,32(%edi)
- jmp L040ctr32_ret
+ jmp L038ctr32_ret
.align 4,0x90
-L044ctr32_four:
+L042ctr32_four:
call __aesni_encrypt4
movups (%esi),%xmm6
movups 16(%esi),%xmm7
@@ -1009,18 +983,7 @@ L044ctr32_four:
xorps %xmm0,%xmm5
movups %xmm4,32(%edi)
movups %xmm5,48(%edi)
-L040ctr32_ret:
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
- pxor %xmm2,%xmm2
- pxor %xmm3,%xmm3
- pxor %xmm4,%xmm4
- movdqa %xmm0,32(%esp)
- pxor %xmm5,%xmm5
- movdqa %xmm0,48(%esp)
- pxor %xmm6,%xmm6
- movdqa %xmm0,64(%esp)
- pxor %xmm7,%xmm7
+L038ctr32_ret:
movl 80(%esp),%esp
popl %edi
popl %esi
@@ -1044,12 +1007,12 @@ L_aesni_xts_encrypt_begin:
movups 16(%edx),%xmm1
leal 32(%edx),%edx
xorps %xmm0,%xmm2
-L046enc1_loop_8:
+L044enc1_loop_8:
.byte 102,15,56,220,209
decl %ecx
movups (%edx),%xmm1
leal 16(%edx),%edx
- jnz L046enc1_loop_8
+ jnz L044enc1_loop_8
.byte 102,15,56,221,209
movl 20(%esp),%esi
movl 24(%esp),%edi
@@ -1073,14 +1036,14 @@ L046enc1_loop_8:
movl %edx,%ebp
movl %ecx,%ebx
subl $96,%eax
- jc L047xts_enc_short
+ jc L045xts_enc_short
shll $4,%ecx
movl $16,%ebx
subl %ecx,%ebx
leal 32(%edx,%ecx,1),%edx
- jmp L048xts_enc_loop6
+ jmp L046xts_enc_loop6
.align 4,0x90
-L048xts_enc_loop6:
+L046xts_enc_loop6:
pshufd $19,%xmm0,%xmm2
pxor %xmm0,%xmm0
movdqa %xmm1,(%esp)
@@ -1169,23 +1132,23 @@ L048xts_enc_loop6:
pcmpgtd %xmm1,%xmm0
pxor %xmm2,%xmm1
subl $96,%eax
- jnc L048xts_enc_loop6
+ jnc L046xts_enc_loop6
movl 240(%ebp),%ecx
movl %ebp,%edx
movl %ecx,%ebx
-L047xts_enc_short:
+L045xts_enc_short:
addl $96,%eax
- jz L049xts_enc_done6x
+ jz L047xts_enc_done6x
movdqa %xmm1,%xmm5
cmpl $32,%eax
- jb L050xts_enc_one
+ jb L048xts_enc_one
pshufd $19,%xmm0,%xmm2
pxor %xmm0,%xmm0
paddq %xmm1,%xmm1
pand %xmm3,%xmm2
pcmpgtd %xmm1,%xmm0
pxor %xmm2,%xmm1
- je L051xts_enc_two
+ je L049xts_enc_two
pshufd $19,%xmm0,%xmm2
pxor %xmm0,%xmm0
movdqa %xmm1,%xmm6
@@ -1194,7 +1157,7 @@ L047xts_enc_short:
pcmpgtd %xmm1,%xmm0
pxor %xmm2,%xmm1
cmpl $64,%eax
- jb L052xts_enc_three
+ jb L050xts_enc_three
pshufd $19,%xmm0,%xmm2
pxor %xmm0,%xmm0
movdqa %xmm1,%xmm7
@@ -1204,7 +1167,7 @@ L047xts_enc_short:
pxor %xmm2,%xmm1
movdqa %xmm5,(%esp)
movdqa %xmm6,16(%esp)
- je L053xts_enc_four
+ je L051xts_enc_four
movdqa %xmm7,32(%esp)
pshufd $19,%xmm0,%xmm7
movdqa %xmm1,48(%esp)
@@ -1236,9 +1199,9 @@ L047xts_enc_short:
movups %xmm5,48(%edi)
movups %xmm6,64(%edi)
leal 80(%edi),%edi
- jmp L054xts_enc_done
+ jmp L052xts_enc_done
.align 4,0x90
-L050xts_enc_one:
+L048xts_enc_one:
movups (%esi),%xmm2
leal 16(%esi),%esi
xorps %xmm5,%xmm2
@@ -1246,20 +1209,20 @@ L050xts_enc_one:
movups 16(%edx),%xmm1
leal 32(%edx),%edx
xorps %xmm0,%xmm2
-L055enc1_loop_9:
+L053enc1_loop_9:
.byte 102,15,56,220,209
decl %ecx
movups (%edx),%xmm1
leal 16(%edx),%edx
- jnz L055enc1_loop_9
+ jnz L053enc1_loop_9
.byte 102,15,56,221,209
xorps %xmm5,%xmm2
movups %xmm2,(%edi)
leal 16(%edi),%edi
movdqa %xmm5,%xmm1
- jmp L054xts_enc_done
+ jmp L052xts_enc_done
.align 4,0x90
-L051xts_enc_two:
+L049xts_enc_two:
movaps %xmm1,%xmm6
movups (%esi),%xmm2
movups 16(%esi),%xmm3
@@ -1273,9 +1236,9 @@ L051xts_enc_two:
movups %xmm3,16(%edi)
leal 32(%edi),%edi
movdqa %xmm6,%xmm1
- jmp L054xts_enc_done
+ jmp L052xts_enc_done
.align 4,0x90
-L052xts_enc_three:
+L050xts_enc_three:
movaps %xmm1,%xmm7
movups (%esi),%xmm2
movups 16(%esi),%xmm3
@@ -1293,9 +1256,9 @@ L052xts_enc_three:
movups %xmm4,32(%edi)
leal 48(%edi),%edi
movdqa %xmm7,%xmm1
- jmp L054xts_enc_done
+ jmp L052xts_enc_done
.align 4,0x90
-L053xts_enc_four:
+L051xts_enc_four:
movaps %xmm1,%xmm6
movups (%esi),%xmm2
movups 16(%esi),%xmm3
@@ -1317,28 +1280,28 @@ L053xts_enc_four:
movups %xmm5,48(%edi)
leal 64(%edi),%edi
movdqa %xmm6,%xmm1
- jmp L054xts_enc_done
+ jmp L052xts_enc_done
.align 4,0x90
-L049xts_enc_done6x:
+L047xts_enc_done6x:
movl 112(%esp),%eax
andl $15,%eax
- jz L056xts_enc_ret
+ jz L054xts_enc_ret
movdqa %xmm1,%xmm5
movl %eax,112(%esp)
- jmp L057xts_enc_steal
+ jmp L055xts_enc_steal
.align 4,0x90
-L054xts_enc_done:
+L052xts_enc_done:
movl 112(%esp),%eax
pxor %xmm0,%xmm0
andl $15,%eax
- jz L056xts_enc_ret
+ jz L054xts_enc_ret
pcmpgtd %xmm1,%xmm0
movl %eax,112(%esp)
pshufd $19,%xmm0,%xmm5
paddq %xmm1,%xmm1
pand 96(%esp),%xmm5
pxor %xmm1,%xmm5
-L057xts_enc_steal:
+L055xts_enc_steal:
movzbl (%esi),%ecx
movzbl -16(%edi),%edx
leal 1(%esi),%esi
@@ -1346,7 +1309,7 @@ L057xts_enc_steal:
movb %dl,(%edi)
leal 1(%edi),%edi
subl $1,%eax
- jnz L057xts_enc_steal
+ jnz L055xts_enc_steal
subl 112(%esp),%edi
movl %ebp,%edx
movl %ebx,%ecx
@@ -1356,30 +1319,16 @@ L057xts_enc_steal:
movups 16(%edx),%xmm1
leal 32(%edx),%edx
xorps %xmm0,%xmm2
-L058enc1_loop_10:
+L056enc1_loop_10:
.byte 102,15,56,220,209
decl %ecx
movups (%edx),%xmm1
leal 16(%edx),%edx
- jnz L058enc1_loop_10
+ jnz L056enc1_loop_10
.byte 102,15,56,221,209
xorps %xmm5,%xmm2
movups %xmm2,-16(%edi)
-L056xts_enc_ret:
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
- pxor %xmm2,%xmm2
- movdqa %xmm0,(%esp)
- pxor %xmm3,%xmm3
- movdqa %xmm0,16(%esp)
- pxor %xmm4,%xmm4
- movdqa %xmm0,32(%esp)
- pxor %xmm5,%xmm5
- movdqa %xmm0,48(%esp)
- pxor %xmm6,%xmm6
- movdqa %xmm0,64(%esp)
- pxor %xmm7,%xmm7
- movdqa %xmm0,80(%esp)
+L054xts_enc_ret:
movl 116(%esp),%esp
popl %edi
popl %esi
@@ -1403,12 +1352,12 @@ L_aesni_xts_decrypt_begin:
movups 16(%edx),%xmm1
leal 32(%edx),%edx
xorps %xmm0,%xmm2
-L059enc1_loop_11:
+L057enc1_loop_11:
.byte 102,15,56,220,209
decl %ecx
movups (%edx),%xmm1
leal 16(%edx),%edx
- jnz L059enc1_loop_11
+ jnz L057enc1_loop_11
.byte 102,15,56,221,209
movl 20(%esp),%esi
movl 24(%esp),%edi
@@ -1437,14 +1386,14 @@ L059enc1_loop_11:
pcmpgtd %xmm1,%xmm0
andl $-16,%eax
subl $96,%eax
- jc L060xts_dec_short
+ jc L058xts_dec_short
shll $4,%ecx
movl $16,%ebx
subl %ecx,%ebx
leal 32(%edx,%ecx,1),%edx
- jmp L061xts_dec_loop6
+ jmp L059xts_dec_loop6
.align 4,0x90
-L061xts_dec_loop6:
+L059xts_dec_loop6:
pshufd $19,%xmm0,%xmm2
pxor %xmm0,%xmm0
movdqa %xmm1,(%esp)
@@ -1533,23 +1482,23 @@ L061xts_dec_loop6:
pcmpgtd %xmm1,%xmm0
pxor %xmm2,%xmm1
subl $96,%eax
- jnc L061xts_dec_loop6
+ jnc L059xts_dec_loop6
movl 240(%ebp),%ecx
movl %ebp,%edx
movl %ecx,%ebx
-L060xts_dec_short:
+L058xts_dec_short:
addl $96,%eax
- jz L062xts_dec_done6x
+ jz L060xts_dec_done6x
movdqa %xmm1,%xmm5
cmpl $32,%eax
- jb L063xts_dec_one
+ jb L061xts_dec_one
pshufd $19,%xmm0,%xmm2
pxor %xmm0,%xmm0
paddq %xmm1,%xmm1
pand %xmm3,%xmm2
pcmpgtd %xmm1,%xmm0
pxor %xmm2,%xmm1
- je L064xts_dec_two
+ je L062xts_dec_two
pshufd $19,%xmm0,%xmm2
pxor %xmm0,%xmm0
movdqa %xmm1,%xmm6
@@ -1558,7 +1507,7 @@ L060xts_dec_short:
pcmpgtd %xmm1,%xmm0
pxor %xmm2,%xmm1
cmpl $64,%eax
- jb L065xts_dec_three
+ jb L063xts_dec_three
pshufd $19,%xmm0,%xmm2
pxor %xmm0,%xmm0
movdqa %xmm1,%xmm7
@@ -1568,7 +1517,7 @@ L060xts_dec_short:
pxor %xmm2,%xmm1
movdqa %xmm5,(%esp)
movdqa %xmm6,16(%esp)
- je L066xts_dec_four
+ je L064xts_dec_four
movdqa %xmm7,32(%esp)
pshufd $19,%xmm0,%xmm7
movdqa %xmm1,48(%esp)
@@ -1600,9 +1549,9 @@ L060xts_dec_short:
movups %xmm5,48(%edi)
movups %xmm6,64(%edi)
leal 80(%edi),%edi
- jmp L067xts_dec_done
+ jmp L065xts_dec_done
.align 4,0x90
-L063xts_dec_one:
+L061xts_dec_one:
movups (%esi),%xmm2
leal 16(%esi),%esi
xorps %xmm5,%xmm2
@@ -1610,20 +1559,20 @@ L063xts_dec_one:
movups 16(%edx),%xmm1
leal 32(%edx),%edx
xorps %xmm0,%xmm2
-L068dec1_loop_12:
+L066dec1_loop_12:
.byte 102,15,56,222,209
decl %ecx
movups (%edx),%xmm1
leal 16(%edx),%edx
- jnz L068dec1_loop_12
+ jnz L066dec1_loop_12
.byte 102,15,56,223,209
xorps %xmm5,%xmm2
movups %xmm2,(%edi)
leal 16(%edi),%edi
movdqa %xmm5,%xmm1
- jmp L067xts_dec_done
+ jmp L065xts_dec_done
.align 4,0x90
-L064xts_dec_two:
+L062xts_dec_two:
movaps %xmm1,%xmm6
movups (%esi),%xmm2
movups 16(%esi),%xmm3
@@ -1637,9 +1586,9 @@ L064xts_dec_two:
movups %xmm3,16(%edi)
leal 32(%edi),%edi
movdqa %xmm6,%xmm1
- jmp L067xts_dec_done
+ jmp L065xts_dec_done
.align 4,0x90
-L065xts_dec_three:
+L063xts_dec_three:
movaps %xmm1,%xmm7
movups (%esi),%xmm2
movups 16(%esi),%xmm3
@@ -1657,9 +1606,9 @@ L065xts_dec_three:
movups %xmm4,32(%edi)
leal 48(%edi),%edi
movdqa %xmm7,%xmm1
- jmp L067xts_dec_done
+ jmp L065xts_dec_done
.align 4,0x90
-L066xts_dec_four:
+L064xts_dec_four:
movaps %xmm1,%xmm6
movups (%esi),%xmm2
movups 16(%esi),%xmm3
@@ -1681,20 +1630,20 @@ L066xts_dec_four:
movups %xmm5,48(%edi)
leal 64(%edi),%edi
movdqa %xmm6,%xmm1
- jmp L067xts_dec_done
+ jmp L065xts_dec_done
.align 4,0x90
-L062xts_dec_done6x:
+L060xts_dec_done6x:
movl 112(%esp),%eax
andl $15,%eax
- jz L069xts_dec_ret
+ jz L067xts_dec_ret
movl %eax,112(%esp)
- jmp L070xts_dec_only_one_more
+ jmp L068xts_dec_only_one_more
.align 4,0x90
-L067xts_dec_done:
+L065xts_dec_done:
movl 112(%esp),%eax
pxor %xmm0,%xmm0
andl $15,%eax
- jz L069xts_dec_ret
+ jz L067xts_dec_ret
pcmpgtd %xmm1,%xmm0
movl %eax,112(%esp)
pshufd $19,%xmm0,%xmm2
@@ -1704,7 +1653,7 @@ L067xts_dec_done:
pand %xmm3,%xmm2
pcmpgtd %xmm1,%xmm0
pxor %xmm2,%xmm1
-L070xts_dec_only_one_more:
+L068xts_dec_only_one_more:
pshufd $19,%xmm0,%xmm5
movdqa %xmm1,%xmm6
paddq %xmm1,%xmm1
@@ -1718,16 +1667,16 @@ L070xts_dec_only_one_more:
movups 16(%edx),%xmm1
leal 32(%edx),%edx
xorps %xmm0,%xmm2
-L071dec1_loop_13:
+L069dec1_loop_13:
.byte 102,15,56,222,209
decl %ecx
movups (%edx),%xmm1
leal 16(%edx),%edx
- jnz L071dec1_loop_13
+ jnz L069dec1_loop_13
.byte 102,15,56,223,209
xorps %xmm5,%xmm2
movups %xmm2,(%edi)
-L072xts_dec_steal:
+L070xts_dec_steal:
movzbl 16(%esi),%ecx
movzbl (%edi),%edx
leal 1(%esi),%esi
@@ -1735,7 +1684,7 @@ L072xts_dec_steal:
movb %dl,16(%edi)
leal 1(%edi),%edi
subl $1,%eax
- jnz L072xts_dec_steal
+ jnz L070xts_dec_steal
subl 112(%esp),%edi
movl %ebp,%edx
movl %ebx,%ecx
@@ -1745,30 +1694,16 @@ L072xts_dec_steal:
movups 16(%edx),%xmm1
leal 32(%edx),%edx
xorps %xmm0,%xmm2
-L073dec1_loop_14:
+L071dec1_loop_14:
.byte 102,15,56,222,209
decl %ecx
movups (%edx),%xmm1
leal 16(%edx),%edx
- jnz L073dec1_loop_14
+ jnz L071dec1_loop_14
.byte 102,15,56,223,209
xorps %xmm6,%xmm2
movups %xmm2,(%edi)
-L069xts_dec_ret:
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
- pxor %xmm2,%xmm2
- movdqa %xmm0,(%esp)
- pxor %xmm3,%xmm3
- movdqa %xmm0,16(%esp)
- pxor %xmm4,%xmm4
- movdqa %xmm0,32(%esp)
- pxor %xmm5,%xmm5
- movdqa %xmm0,48(%esp)
- pxor %xmm6,%xmm6
- movdqa %xmm0,64(%esp)
- pxor %xmm7,%xmm7
- movdqa %xmm0,80(%esp)
+L067xts_dec_ret:
movl 116(%esp),%esp
popl %edi
popl %esi
@@ -1793,7 +1728,7 @@ L_aesni_cbc_encrypt_begin:
movl 32(%esp),%edx
movl 36(%esp),%ebp
testl %eax,%eax
- jz L074cbc_abort
+ jz L072cbc_abort
cmpl $0,40(%esp)
xchgl %esp,%ebx
movups (%ebp),%xmm7
@@ -1801,14 +1736,14 @@ L_aesni_cbc_encrypt_begin:
movl %edx,%ebp
movl %ebx,16(%esp)
movl %ecx,%ebx
- je L075cbc_decrypt
+ je L073cbc_decrypt
movaps %xmm7,%xmm2
cmpl $16,%eax
- jb L076cbc_enc_tail
+ jb L074cbc_enc_tail
subl $16,%eax
- jmp L077cbc_enc_loop
+ jmp L075cbc_enc_loop
.align 4,0x90
-L077cbc_enc_loop:
+L075cbc_enc_loop:
movups (%esi),%xmm7
leal 16(%esi),%esi
movups (%edx),%xmm0
@@ -1816,25 +1751,24 @@ L077cbc_enc_loop:
xorps %xmm0,%xmm7
leal 32(%edx),%edx
xorps %xmm7,%xmm2
-L078enc1_loop_15:
+L076enc1_loop_15:
.byte 102,15,56,220,209
decl %ecx
movups (%edx),%xmm1
leal 16(%edx),%edx
- jnz L078enc1_loop_15
+ jnz L076enc1_loop_15
.byte 102,15,56,221,209
movl %ebx,%ecx
movl %ebp,%edx
movups %xmm2,(%edi)
leal 16(%edi),%edi
subl $16,%eax
- jnc L077cbc_enc_loop
+ jnc L075cbc_enc_loop
addl $16,%eax
- jnz L076cbc_enc_tail
+ jnz L074cbc_enc_tail
movaps %xmm2,%xmm7
- pxor %xmm2,%xmm2
- jmp L079cbc_ret
-L076cbc_enc_tail:
+ jmp L077cbc_ret
+L074cbc_enc_tail:
movl %eax,%ecx
.long 2767451785
movl $16,%ecx
@@ -1845,20 +1779,20 @@ L076cbc_enc_tail:
movl %ebx,%ecx
movl %edi,%esi
movl %ebp,%edx
- jmp L077cbc_enc_loop
+ jmp L075cbc_enc_loop
.align 4,0x90
-L075cbc_decrypt:
+L073cbc_decrypt:
cmpl $80,%eax
- jbe L080cbc_dec_tail
+ jbe L078cbc_dec_tail
movaps %xmm7,(%esp)
subl $80,%eax
- jmp L081cbc_dec_loop6_enter
+ jmp L079cbc_dec_loop6_enter
.align 4,0x90
-L082cbc_dec_loop6:
+L080cbc_dec_loop6:
movaps %xmm0,(%esp)
movups %xmm7,(%edi)
leal 16(%edi),%edi
-L081cbc_dec_loop6_enter:
+L079cbc_dec_loop6_enter:
movdqu (%esi),%xmm2
movdqu 16(%esi),%xmm3
movdqu 32(%esi),%xmm4
@@ -1888,28 +1822,28 @@ L081cbc_dec_loop6_enter:
movups %xmm6,64(%edi)
leal 80(%edi),%edi
subl $96,%eax
- ja L082cbc_dec_loop6
+ ja L080cbc_dec_loop6
movaps %xmm7,%xmm2
movaps %xmm0,%xmm7
addl $80,%eax
- jle L083cbc_dec_clear_tail_collected
+ jle L081cbc_dec_tail_collected
movups %xmm2,(%edi)
leal 16(%edi),%edi
-L080cbc_dec_tail:
+L078cbc_dec_tail:
movups (%esi),%xmm2
movaps %xmm2,%xmm6
cmpl $16,%eax
- jbe L084cbc_dec_one
+ jbe L082cbc_dec_one
movups 16(%esi),%xmm3
movaps %xmm3,%xmm5
cmpl $32,%eax
- jbe L085cbc_dec_two
+ jbe L083cbc_dec_two
movups 32(%esi),%xmm4
cmpl $48,%eax
- jbe L086cbc_dec_three
+ jbe L084cbc_dec_three
movups 48(%esi),%xmm5
cmpl $64,%eax
- jbe L087cbc_dec_four
+ jbe L085cbc_dec_four
movups 64(%esi),%xmm6
movaps %xmm7,(%esp)
movups (%esi),%xmm2
@@ -1927,62 +1861,55 @@ L080cbc_dec_tail:
xorps %xmm0,%xmm6
movups %xmm2,(%edi)
movups %xmm3,16(%edi)
- pxor %xmm3,%xmm3
movups %xmm4,32(%edi)
- pxor %xmm4,%xmm4
movups %xmm5,48(%edi)
- pxor %xmm5,%xmm5
leal 64(%edi),%edi
movaps %xmm6,%xmm2
- pxor %xmm6,%xmm6
subl $80,%eax
- jmp L088cbc_dec_tail_collected
+ jmp L081cbc_dec_tail_collected
.align 4,0x90
-L084cbc_dec_one:
+L082cbc_dec_one:
movups (%edx),%xmm0
movups 16(%edx),%xmm1
leal 32(%edx),%edx
xorps %xmm0,%xmm2
-L089dec1_loop_16:
+L086dec1_loop_16:
.byte 102,15,56,222,209
decl %ecx
movups (%edx),%xmm1
leal 16(%edx),%edx
- jnz L089dec1_loop_16
+ jnz L086dec1_loop_16
.byte 102,15,56,223,209
xorps %xmm7,%xmm2
movaps %xmm6,%xmm7
subl $16,%eax
- jmp L088cbc_dec_tail_collected
+ jmp L081cbc_dec_tail_collected
.align 4,0x90
-L085cbc_dec_two:
+L083cbc_dec_two:
call __aesni_decrypt2
xorps %xmm7,%xmm2
xorps %xmm6,%xmm3
movups %xmm2,(%edi)
movaps %xmm3,%xmm2
- pxor %xmm3,%xmm3
leal 16(%edi),%edi
movaps %xmm5,%xmm7
subl $32,%eax
- jmp L088cbc_dec_tail_collected
+ jmp L081cbc_dec_tail_collected
.align 4,0x90
-L086cbc_dec_three:
+L084cbc_dec_three:
call __aesni_decrypt3
xorps %xmm7,%xmm2
xorps %xmm6,%xmm3
xorps %xmm5,%xmm4
movups %xmm2,(%edi)
movaps %xmm4,%xmm2
- pxor %xmm4,%xmm4
movups %xmm3,16(%edi)
- pxor %xmm3,%xmm3
leal 32(%edi),%edi
movups 32(%esi),%xmm7
subl $48,%eax
- jmp L088cbc_dec_tail_collected
+ jmp L081cbc_dec_tail_collected
.align 4,0x90
-L087cbc_dec_four:
+L085cbc_dec_four:
call __aesni_decrypt4
movups 16(%esi),%xmm1
movups 32(%esi),%xmm0
@@ -1992,44 +1919,28 @@ L087cbc_dec_four:
movups %xmm2,(%edi)
xorps %xmm1,%xmm4
movups %xmm3,16(%edi)
- pxor %xmm3,%xmm3
xorps %xmm0,%xmm5
movups %xmm4,32(%edi)
- pxor %xmm4,%xmm4
leal 48(%edi),%edi
movaps %xmm5,%xmm2
- pxor %xmm5,%xmm5
subl $64,%eax
- jmp L088cbc_dec_tail_collected
-.align 4,0x90
-L083cbc_dec_clear_tail_collected:
- pxor %xmm3,%xmm3
- pxor %xmm4,%xmm4
- pxor %xmm5,%xmm5
- pxor %xmm6,%xmm6
-L088cbc_dec_tail_collected:
+L081cbc_dec_tail_collected:
andl $15,%eax
- jnz L090cbc_dec_tail_partial
+ jnz L087cbc_dec_tail_partial
movups %xmm2,(%edi)
- pxor %xmm0,%xmm0
- jmp L079cbc_ret
+ jmp L077cbc_ret
.align 4,0x90
-L090cbc_dec_tail_partial:
+L087cbc_dec_tail_partial:
movaps %xmm2,(%esp)
- pxor %xmm0,%xmm0
movl $16,%ecx
movl %esp,%esi
subl %eax,%ecx
.long 2767451785
- movdqa %xmm2,(%esp)
-L079cbc_ret:
+L077cbc_ret:
movl 16(%esp),%esp
movl 36(%esp),%ebp
- pxor %xmm2,%xmm2
- pxor %xmm1,%xmm1
movups %xmm7,(%ebp)
- pxor %xmm7,%xmm7
-L074cbc_abort:
+L072cbc_abort:
popl %edi
popl %esi
popl %ebx
@@ -2038,62 +1949,52 @@ L074cbc_abort:
.private_extern __aesni_set_encrypt_key
.align 4
__aesni_set_encrypt_key:
- pushl %ebp
- pushl %ebx
testl %eax,%eax
- jz L091bad_pointer
+ jz L088bad_pointer
testl %edx,%edx
- jz L091bad_pointer
- call L092pic
-L092pic:
- popl %ebx
- leal Lkey_const-L092pic(%ebx),%ebx
- movl L_OPENSSL_ia32cap_P$non_lazy_ptr-Lkey_const(%ebx),%ebp
+ jz L088bad_pointer
movups (%eax),%xmm0
xorps %xmm4,%xmm4
- movl 4(%ebp),%ebp
leal 16(%edx),%edx
- andl $268437504,%ebp
cmpl $256,%ecx
- je L09314rounds
+ je L08914rounds
cmpl $192,%ecx
- je L09412rounds
+ je L09012rounds
cmpl $128,%ecx
- jne L095bad_keybits
+ jne L091bad_keybits
.align 4,0x90
-L09610rounds:
- cmpl $268435456,%ebp
- je L09710rounds_alt
+L09210rounds:
movl $9,%ecx
movups %xmm0,-16(%edx)
.byte 102,15,58,223,200,1
- call L098key_128_cold
+ call L093key_128_cold
.byte 102,15,58,223,200,2
- call L099key_128
+ call L094key_128
.byte 102,15,58,223,200,4
- call L099key_128
+ call L094key_128
.byte 102,15,58,223,200,8
- call L099key_128
+ call L094key_128
.byte 102,15,58,223,200,16
- call L099key_128
+ call L094key_128
.byte 102,15,58,223,200,32
- call L099key_128
+ call L094key_128
.byte 102,15,58,223,200,64
- call L099key_128
+ call L094key_128
.byte 102,15,58,223,200,128
- call L099key_128
+ call L094key_128
.byte 102,15,58,223,200,27
- call L099key_128
+ call L094key_128
.byte 102,15,58,223,200,54
- call L099key_128
+ call L094key_128
movups %xmm0,(%edx)
movl %ecx,80(%edx)
- jmp L100good_key
+ xorl %eax,%eax
+ ret
.align 4,0x90
-L099key_128:
+L094key_128:
movups %xmm0,(%edx)
leal 16(%edx),%edx
-L098key_128_cold:
+L093key_128_cold:
shufps $16,%xmm0,%xmm4
xorps %xmm4,%xmm0
shufps $140,%xmm0,%xmm4
@@ -2102,91 +2003,38 @@ L098key_128_cold:
xorps %xmm1,%xmm0
ret
.align 4,0x90
-L09710rounds_alt:
- movdqa (%ebx),%xmm5
- movl $8,%ecx
- movdqa 32(%ebx),%xmm4
- movdqa %xmm0,%xmm2
- movdqu %xmm0,-16(%edx)
-L101loop_key128:
-.byte 102,15,56,0,197
-.byte 102,15,56,221,196
- pslld $1,%xmm4
- leal 16(%edx),%edx
- movdqa %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm3,%xmm2
- pxor %xmm2,%xmm0
- movdqu %xmm0,-16(%edx)
- movdqa %xmm0,%xmm2
- decl %ecx
- jnz L101loop_key128
- movdqa 48(%ebx),%xmm4
-.byte 102,15,56,0,197
-.byte 102,15,56,221,196
- pslld $1,%xmm4
- movdqa %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm3,%xmm2
- pxor %xmm2,%xmm0
- movdqu %xmm0,(%edx)
- movdqa %xmm0,%xmm2
-.byte 102,15,56,0,197
-.byte 102,15,56,221,196
- movdqa %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm3,%xmm2
- pxor %xmm2,%xmm0
- movdqu %xmm0,16(%edx)
- movl $9,%ecx
- movl %ecx,96(%edx)
- jmp L100good_key
-.align 4,0x90
-L09412rounds:
+L09012rounds:
movq 16(%eax),%xmm2
- cmpl $268435456,%ebp
- je L10212rounds_alt
movl $11,%ecx
movups %xmm0,-16(%edx)
.byte 102,15,58,223,202,1
- call L103key_192a_cold
+ call L095key_192a_cold
.byte 102,15,58,223,202,2
- call L104key_192b
+ call L096key_192b
.byte 102,15,58,223,202,4
- call L105key_192a
+ call L097key_192a
.byte 102,15,58,223,202,8
- call L104key_192b
+ call L096key_192b
.byte 102,15,58,223,202,16
- call L105key_192a
+ call L097key_192a
.byte 102,15,58,223,202,32
- call L104key_192b
+ call L096key_192b
.byte 102,15,58,223,202,64
- call L105key_192a
+ call L097key_192a
.byte 102,15,58,223,202,128
- call L104key_192b
+ call L096key_192b
movups %xmm0,(%edx)
movl %ecx,48(%edx)
- jmp L100good_key
+ xorl %eax,%eax
+ ret
.align 4,0x90
-L105key_192a:
+L097key_192a:
movups %xmm0,(%edx)
leal 16(%edx),%edx
.align 4,0x90
-L103key_192a_cold:
+L095key_192a_cold:
movaps %xmm2,%xmm5
-L106key_192b_warm:
+L098key_192b_warm:
shufps $16,%xmm0,%xmm4
movdqa %xmm2,%xmm3
xorps %xmm4,%xmm0
@@ -2200,90 +2048,56 @@ L106key_192b_warm:
pxor %xmm3,%xmm2
ret
.align 4,0x90
-L104key_192b:
+L096key_192b:
movaps %xmm0,%xmm3
shufps $68,%xmm0,%xmm5
movups %xmm5,(%edx)
shufps $78,%xmm2,%xmm3
movups %xmm3,16(%edx)
leal 32(%edx),%edx
- jmp L106key_192b_warm
+ jmp L098key_192b_warm
.align 4,0x90
-L10212rounds_alt:
- movdqa 16(%ebx),%xmm5
- movdqa 32(%ebx),%xmm4
- movl $8,%ecx
- movdqu %xmm0,-16(%edx)
-L107loop_key192:
- movq %xmm2,(%edx)
- movdqa %xmm2,%xmm1
-.byte 102,15,56,0,213
-.byte 102,15,56,221,212
- pslld $1,%xmm4
- leal 24(%edx),%edx
- movdqa %xmm0,%xmm3
- pslldq $4,%xmm0
- pxor %xmm0,%xmm3
- pslldq $4,%xmm0
- pxor %xmm0,%xmm3
- pslldq $4,%xmm0
- pxor %xmm3,%xmm0
- pshufd $255,%xmm0,%xmm3
- pxor %xmm1,%xmm3
- pslldq $4,%xmm1
- pxor %xmm1,%xmm3
- pxor %xmm2,%xmm0
- pxor %xmm3,%xmm2
- movdqu %xmm0,-16(%edx)
- decl %ecx
- jnz L107loop_key192
- movl $11,%ecx
- movl %ecx,32(%edx)
- jmp L100good_key
-.align 4,0x90
-L09314rounds:
+L08914rounds:
movups 16(%eax),%xmm2
- leal 16(%edx),%edx
- cmpl $268435456,%ebp
- je L10814rounds_alt
movl $13,%ecx
+ leal 16(%edx),%edx
movups %xmm0,-32(%edx)
movups %xmm2,-16(%edx)
.byte 102,15,58,223,202,1
- call L109key_256a_cold
+ call L099key_256a_cold
.byte 102,15,58,223,200,1
- call L110key_256b
+ call L100key_256b
.byte 102,15,58,223,202,2
- call L111key_256a
+ call L101key_256a
.byte 102,15,58,223,200,2
- call L110key_256b
+ call L100key_256b
.byte 102,15,58,223,202,4
- call L111key_256a
+ call L101key_256a
.byte 102,15,58,223,200,4
- call L110key_256b
+ call L100key_256b
.byte 102,15,58,223,202,8
- call L111key_256a
+ call L101key_256a
.byte 102,15,58,223,200,8
- call L110key_256b
+ call L100key_256b
.byte 102,15,58,223,202,16
- call L111key_256a
+ call L101key_256a
.byte 102,15,58,223,200,16
- call L110key_256b
+ call L100key_256b
.byte 102,15,58,223,202,32
- call L111key_256a
+ call L101key_256a
.byte 102,15,58,223,200,32
- call L110key_256b
+ call L100key_256b
.byte 102,15,58,223,202,64
- call L111key_256a
+ call L101key_256a
movups %xmm0,(%edx)
movl %ecx,16(%edx)
xorl %eax,%eax
- jmp L100good_key
+ ret
.align 4,0x90
-L111key_256a:
+L101key_256a:
movups %xmm2,(%edx)
leal 16(%edx),%edx
-L109key_256a_cold:
+L099key_256a_cold:
shufps $16,%xmm0,%xmm4
xorps %xmm4,%xmm0
shufps $140,%xmm0,%xmm4
@@ -2292,7 +2106,7 @@ L109key_256a_cold:
xorps %xmm1,%xmm0
ret
.align 4,0x90
-L110key_256b:
+L100key_256b:
movups %xmm0,(%edx)
leal 16(%edx),%edx
shufps $16,%xmm2,%xmm4
@@ -2302,70 +2116,13 @@ L110key_256b:
shufps $170,%xmm1,%xmm1
xorps %xmm1,%xmm2
ret
-.align 4,0x90
-L10814rounds_alt:
- movdqa (%ebx),%xmm5
- movdqa 32(%ebx),%xmm4
- movl $7,%ecx
- movdqu %xmm0,-32(%edx)
- movdqa %xmm2,%xmm1
- movdqu %xmm2,-16(%edx)
-L112loop_key256:
-.byte 102,15,56,0,213
-.byte 102,15,56,221,212
- movdqa %xmm0,%xmm3
- pslldq $4,%xmm0
- pxor %xmm0,%xmm3
- pslldq $4,%xmm0
- pxor %xmm0,%xmm3
- pslldq $4,%xmm0
- pxor %xmm3,%xmm0
- pslld $1,%xmm4
- pxor %xmm2,%xmm0
- movdqu %xmm0,(%edx)
- decl %ecx
- jz L113done_key256
- pshufd $255,%xmm0,%xmm2
- pxor %xmm3,%xmm3
-.byte 102,15,56,221,211
- movdqa %xmm1,%xmm3
- pslldq $4,%xmm1
- pxor %xmm1,%xmm3
- pslldq $4,%xmm1
- pxor %xmm1,%xmm3
- pslldq $4,%xmm1
- pxor %xmm3,%xmm1
- pxor %xmm1,%xmm2
- movdqu %xmm2,16(%edx)
- leal 32(%edx),%edx
- movdqa %xmm2,%xmm1
- jmp L112loop_key256
-L113done_key256:
- movl $13,%ecx
- movl %ecx,16(%edx)
-L100good_key:
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
- pxor %xmm2,%xmm2
- pxor %xmm3,%xmm3
- pxor %xmm4,%xmm4
- pxor %xmm5,%xmm5
- xorl %eax,%eax
- popl %ebx
- popl %ebp
- ret
.align 2,0x90
-L091bad_pointer:
+L088bad_pointer:
movl $-1,%eax
- popl %ebx
- popl %ebp
ret
.align 2,0x90
-L095bad_keybits:
- pxor %xmm0,%xmm0
+L091bad_keybits:
movl $-2,%eax
- popl %ebx
- popl %ebp
ret
.globl _aesni_set_encrypt_key
.private_extern _aesni_set_encrypt_key
@@ -2389,7 +2146,7 @@ L_aesni_set_decrypt_key_begin:
movl 12(%esp),%edx
shll $4,%ecx
testl %eax,%eax
- jnz L114dec_key_ret
+ jnz L102dec_key_ret
leal 16(%edx,%ecx,1),%eax
movups (%edx),%xmm0
movups (%eax),%xmm1
@@ -2397,7 +2154,7 @@ L_aesni_set_decrypt_key_begin:
movups %xmm1,(%edx)
leal 16(%edx),%edx
leal -16(%eax),%eax
-L115dec_key_inverse:
+L103dec_key_inverse:
movups (%edx),%xmm0
movups (%eax),%xmm1
.byte 102,15,56,219,192
@@ -2407,27 +2164,15 @@ L115dec_key_inverse:
movups %xmm0,16(%eax)
movups %xmm1,-16(%edx)
cmpl %edx,%eax
- ja L115dec_key_inverse
+ ja L103dec_key_inverse
movups (%edx),%xmm0
.byte 102,15,56,219,192
movups %xmm0,(%edx)
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
xorl %eax,%eax
-L114dec_key_ret:
+L102dec_key_ret:
ret
-.align 6,0x90
-Lkey_const:
-.long 202313229,202313229,202313229,202313229
-.long 67569157,67569157,67569157,67569157
-.long 1,1,1,1
-.long 27,27,27,27
.byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
.byte 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83
.byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
.byte 115,108,46,111,114,103,62,0
-.section __IMPORT,__pointers,non_lazy_symbol_pointers
-L_OPENSSL_ia32cap_P$non_lazy_ptr:
-.indirect_symbol _OPENSSL_ia32cap_P
-.long 0
#endif
diff --git a/third_party/boringssl/mac-x86_64/crypto/aes/aesni-x86_64.S b/third_party/boringssl/mac-x86_64/crypto/aes/aesni-x86_64.S
index 69b22c2..032c94d 100644
--- a/third_party/boringssl/mac-x86_64/crypto/aes/aesni-x86_64.S
+++ b/third_party/boringssl/mac-x86_64/crypto/aes/aesni-x86_64.S
@@ -19,10 +19,7 @@ L$oop_enc1_1:
leaq 16(%rdx),%rdx
jnz L$oop_enc1_1
.byte 102,15,56,221,209
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
movups %xmm2,(%rsi)
- pxor %xmm2,%xmm2
.byte 0xf3,0xc3
@@ -44,10 +41,7 @@ L$oop_dec1_2:
leaq 16(%rdx),%rdx
jnz L$oop_dec1_2
.byte 102,15,56,223,209
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
movups %xmm2,(%rsi)
- pxor %xmm2,%xmm2
.byte 0xf3,0xc3
@@ -273,18 +267,21 @@ _aesni_encrypt6:
pxor %xmm0,%xmm6
.byte 102,15,56,220,225
pxor %xmm0,%xmm7
- movups (%rcx,%rax,1),%xmm0
addq $16,%rax
+.byte 102,15,56,220,233
+.byte 102,15,56,220,241
+.byte 102,15,56,220,249
+ movups -16(%rcx,%rax,1),%xmm0
jmp L$enc_loop6_enter
.p2align 4
L$enc_loop6:
.byte 102,15,56,220,209
.byte 102,15,56,220,217
.byte 102,15,56,220,225
-L$enc_loop6_enter:
.byte 102,15,56,220,233
.byte 102,15,56,220,241
.byte 102,15,56,220,249
+L$enc_loop6_enter:
movups (%rcx,%rax,1),%xmm1
addq $32,%rax
.byte 102,15,56,220,208
@@ -327,18 +324,21 @@ _aesni_decrypt6:
pxor %xmm0,%xmm6
.byte 102,15,56,222,225
pxor %xmm0,%xmm7
- movups (%rcx,%rax,1),%xmm0
addq $16,%rax
+.byte 102,15,56,222,233
+.byte 102,15,56,222,241
+.byte 102,15,56,222,249
+ movups -16(%rcx,%rax,1),%xmm0
jmp L$dec_loop6_enter
.p2align 4
L$dec_loop6:
.byte 102,15,56,222,209
.byte 102,15,56,222,217
.byte 102,15,56,222,225
-L$dec_loop6_enter:
.byte 102,15,56,222,233
.byte 102,15,56,222,241
.byte 102,15,56,222,249
+L$dec_loop6_enter:
movups (%rcx,%rax,1),%xmm1
addq $32,%rax
.byte 102,15,56,222,208
@@ -378,18 +378,23 @@ _aesni_encrypt8:
leaq 32(%rcx,%rax,1),%rcx
negq %rax
.byte 102,15,56,220,209
+ addq $16,%rax
pxor %xmm0,%xmm7
- pxor %xmm0,%xmm8
.byte 102,15,56,220,217
+ pxor %xmm0,%xmm8
pxor %xmm0,%xmm9
- movups (%rcx,%rax,1),%xmm0
- addq $16,%rax
- jmp L$enc_loop8_inner
+.byte 102,15,56,220,225
+.byte 102,15,56,220,233
+.byte 102,15,56,220,241
+.byte 102,15,56,220,249
+.byte 102,68,15,56,220,193
+.byte 102,68,15,56,220,201
+ movups -16(%rcx,%rax,1),%xmm0
+ jmp L$enc_loop8_enter
.p2align 4
L$enc_loop8:
.byte 102,15,56,220,209
.byte 102,15,56,220,217
-L$enc_loop8_inner:
.byte 102,15,56,220,225
.byte 102,15,56,220,233
.byte 102,15,56,220,241
@@ -442,18 +447,23 @@ _aesni_decrypt8:
leaq 32(%rcx,%rax,1),%rcx
negq %rax
.byte 102,15,56,222,209
+ addq $16,%rax
pxor %xmm0,%xmm7
- pxor %xmm0,%xmm8
.byte 102,15,56,222,217
+ pxor %xmm0,%xmm8
pxor %xmm0,%xmm9
- movups (%rcx,%rax,1),%xmm0
- addq $16,%rax
- jmp L$dec_loop8_inner
+.byte 102,15,56,222,225
+.byte 102,15,56,222,233
+.byte 102,15,56,222,241
+.byte 102,15,56,222,249
+.byte 102,68,15,56,222,193
+.byte 102,68,15,56,222,201
+ movups -16(%rcx,%rax,1),%xmm0
+ jmp L$dec_loop8_enter
.p2align 4
L$dec_loop8:
.byte 102,15,56,222,209
.byte 102,15,56,222,217
-L$dec_loop8_inner:
.byte 102,15,56,222,225
.byte 102,15,56,222,233
.byte 102,15,56,222,241
@@ -581,7 +591,6 @@ L$ecb_enc_tail:
movups 80(%rdi),%xmm7
je L$ecb_enc_six
movdqu 96(%rdi),%xmm8
- xorps %xmm9,%xmm9
call _aesni_encrypt8
movups %xmm2,(%rsi)
movups %xmm3,16(%rsi)
@@ -695,23 +704,15 @@ L$ecb_dec_loop8_enter:
jnc L$ecb_dec_loop8
movups %xmm2,(%rsi)
- pxor %xmm2,%xmm2
movq %r11,%rcx
movups %xmm3,16(%rsi)
- pxor %xmm3,%xmm3
movl %r10d,%eax
movups %xmm4,32(%rsi)
- pxor %xmm4,%xmm4
movups %xmm5,48(%rsi)
- pxor %xmm5,%xmm5
movups %xmm6,64(%rsi)
- pxor %xmm6,%xmm6
movups %xmm7,80(%rsi)
- pxor %xmm7,%xmm7
movups %xmm8,96(%rsi)
- pxor %xmm8,%xmm8
movups %xmm9,112(%rsi)
- pxor %xmm9,%xmm9
leaq 128(%rsi),%rsi
addq $128,%rdx
jz L$ecb_ret
@@ -734,23 +735,14 @@ L$ecb_dec_tail:
je L$ecb_dec_six
movups 96(%rdi),%xmm8
movups (%rcx),%xmm0
- xorps %xmm9,%xmm9
call _aesni_decrypt8
movups %xmm2,(%rsi)
- pxor %xmm2,%xmm2
movups %xmm3,16(%rsi)
- pxor %xmm3,%xmm3
movups %xmm4,32(%rsi)
- pxor %xmm4,%xmm4
movups %xmm5,48(%rsi)
- pxor %xmm5,%xmm5
movups %xmm6,64(%rsi)
- pxor %xmm6,%xmm6
movups %xmm7,80(%rsi)
- pxor %xmm7,%xmm7
movups %xmm8,96(%rsi)
- pxor %xmm8,%xmm8
- pxor %xmm9,%xmm9
jmp L$ecb_ret
.p2align 4
L$ecb_dec_one:
@@ -766,73 +758,49 @@ L$oop_dec1_4:
jnz L$oop_dec1_4
.byte 102,15,56,223,209
movups %xmm2,(%rsi)
- pxor %xmm2,%xmm2
jmp L$ecb_ret
.p2align 4
L$ecb_dec_two:
call _aesni_decrypt2
movups %xmm2,(%rsi)
- pxor %xmm2,%xmm2
movups %xmm3,16(%rsi)
- pxor %xmm3,%xmm3
jmp L$ecb_ret
.p2align 4
L$ecb_dec_three:
call _aesni_decrypt3
movups %xmm2,(%rsi)
- pxor %xmm2,%xmm2
movups %xmm3,16(%rsi)
- pxor %xmm3,%xmm3
movups %xmm4,32(%rsi)
- pxor %xmm4,%xmm4
jmp L$ecb_ret
.p2align 4
L$ecb_dec_four:
call _aesni_decrypt4
movups %xmm2,(%rsi)
- pxor %xmm2,%xmm2
movups %xmm3,16(%rsi)
- pxor %xmm3,%xmm3
movups %xmm4,32(%rsi)
- pxor %xmm4,%xmm4
movups %xmm5,48(%rsi)
- pxor %xmm5,%xmm5
jmp L$ecb_ret
.p2align 4
L$ecb_dec_five:
xorps %xmm7,%xmm7
call _aesni_decrypt6
movups %xmm2,(%rsi)
- pxor %xmm2,%xmm2
movups %xmm3,16(%rsi)
- pxor %xmm3,%xmm3
movups %xmm4,32(%rsi)
- pxor %xmm4,%xmm4
movups %xmm5,48(%rsi)
- pxor %xmm5,%xmm5
movups %xmm6,64(%rsi)
- pxor %xmm6,%xmm6
- pxor %xmm7,%xmm7
jmp L$ecb_ret
.p2align 4
L$ecb_dec_six:
call _aesni_decrypt6
movups %xmm2,(%rsi)
- pxor %xmm2,%xmm2
movups %xmm3,16(%rsi)
- pxor %xmm3,%xmm3
movups %xmm4,32(%rsi)
- pxor %xmm4,%xmm4
movups %xmm5,48(%rsi)
- pxor %xmm5,%xmm5
movups %xmm6,64(%rsi)
- pxor %xmm6,%xmm6
movups %xmm7,80(%rsi)
- pxor %xmm7,%xmm7
L$ecb_ret:
- xorps %xmm0,%xmm0
- pxor %xmm1,%xmm1
.byte 0xf3,0xc3
.globl _aesni_ccm64_encrypt_blocks
@@ -890,13 +858,7 @@ L$ccm64_enc2_loop:
leaq 16(%rsi),%rsi
jnz L$ccm64_enc_outer
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
- pxor %xmm2,%xmm2
movups %xmm3,(%r9)
- pxor %xmm3,%xmm3
- pxor %xmm8,%xmm8
- pxor %xmm6,%xmm6
.byte 0xf3,0xc3
.globl _aesni_ccm64_decrypt_blocks
@@ -988,13 +950,7 @@ L$oop_enc1_6:
leaq 16(%r11),%r11
jnz L$oop_enc1_6
.byte 102,15,56,221,217
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
- pxor %xmm2,%xmm2
movups %xmm3,(%r9)
- pxor %xmm3,%xmm3
- pxor %xmm8,%xmm8
- pxor %xmm6,%xmm6
.byte 0xf3,0xc3
.globl _aesni_ctr32_encrypt_blocks
@@ -1002,43 +958,14 @@ L$oop_enc1_6:
.p2align 4
_aesni_ctr32_encrypt_blocks:
- cmpq $1,%rdx
- jne L$ctr32_bulk
-
-
-
- movups (%r8),%xmm2
- movups (%rdi),%xmm3
- movl 240(%rcx),%edx
- movups (%rcx),%xmm0
- movups 16(%rcx),%xmm1
- leaq 32(%rcx),%rcx
- xorps %xmm0,%xmm2
-L$oop_enc1_7:
-.byte 102,15,56,220,209
- decl %edx
- movups (%rcx),%xmm1
- leaq 16(%rcx),%rcx
- jnz L$oop_enc1_7
-.byte 102,15,56,221,209
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
- xorps %xmm3,%xmm2
- pxor %xmm3,%xmm3
- movups %xmm2,(%rsi)
- xorps %xmm2,%xmm2
- jmp L$ctr32_epilogue
-
-.p2align 4
-L$ctr32_bulk:
leaq (%rsp),%rax
pushq %rbp
subq $128,%rsp
andq $-16,%rsp
leaq -8(%rax),%rbp
-
-
+ cmpq $1,%rdx
+ je L$ctr32_one_shortcut
movdqu (%r8),%xmm2
movdqu (%rcx),%xmm0
@@ -1429,14 +1356,11 @@ L$ctr32_enc_done:
leaq -128(%rcx),%rcx
L$ctr32_tail:
-
-
leaq 16(%rcx),%rcx
cmpq $4,%rdx
jb L$ctr32_loop3
je L$ctr32_loop4
-
shll $4,%eax
movdqa 96(%rsp),%xmm8
pxor %xmm9,%xmm9
@@ -1539,33 +1463,30 @@ L$ctr32_loop3:
movups 32(%rdi),%xmm12
xorps %xmm12,%xmm4
movups %xmm4,32(%rsi)
+ jmp L$ctr32_done
+.p2align 4
+L$ctr32_one_shortcut:
+ movups (%r8),%xmm2
+ movups (%rdi),%xmm10
+ movl 240(%rcx),%eax
+ movups (%rcx),%xmm0
+ movups 16(%rcx),%xmm1
+ leaq 32(%rcx),%rcx
+ xorps %xmm0,%xmm2
+L$oop_enc1_7:
+.byte 102,15,56,220,209
+ decl %eax
+ movups (%rcx),%xmm1
+ leaq 16(%rcx),%rcx
+ jnz L$oop_enc1_7
+.byte 102,15,56,221,209
+ xorps %xmm10,%xmm2
+ movups %xmm2,(%rsi)
+ jmp L$ctr32_done
+
+.p2align 4
L$ctr32_done:
- xorps %xmm0,%xmm0
- xorl %r11d,%r11d
- pxor %xmm1,%xmm1
- pxor %xmm2,%xmm2
- pxor %xmm3,%xmm3
- pxor %xmm4,%xmm4
- pxor %xmm5,%xmm5
- pxor %xmm6,%xmm6
- pxor %xmm7,%xmm7
- movaps %xmm0,0(%rsp)
- pxor %xmm8,%xmm8
- movaps %xmm0,16(%rsp)
- pxor %xmm9,%xmm9
- movaps %xmm0,32(%rsp)
- pxor %xmm10,%xmm10
- movaps %xmm0,48(%rsp)
- pxor %xmm11,%xmm11
- movaps %xmm0,64(%rsp)
- pxor %xmm12,%xmm12
- movaps %xmm0,80(%rsp)
- pxor %xmm13,%xmm13
- movaps %xmm0,96(%rsp)
- pxor %xmm14,%xmm14
- movaps %xmm0,112(%rsp)
- pxor %xmm15,%xmm15
leaq (%rbp),%rsp
popq %rbp
L$ctr32_epilogue:
@@ -1837,7 +1758,6 @@ L$xts_enc_loop6:
shrl $4,%eax
L$xts_enc_short:
-
movl %eax,%r10d
pxor %xmm0,%xmm10
addq $96,%rdx
@@ -1866,7 +1786,6 @@ L$xts_enc_short:
pxor %xmm12,%xmm4
pxor %xmm13,%xmm5
pxor %xmm14,%xmm6
- pxor %xmm7,%xmm7
call _aesni_encrypt6
@@ -2009,29 +1928,6 @@ L$oop_enc1_10:
movups %xmm2,-16(%rsi)
L$xts_enc_ret:
- xorps %xmm0,%xmm0
- pxor %xmm1,%xmm1
- pxor %xmm2,%xmm2
- pxor %xmm3,%xmm3
- pxor %xmm4,%xmm4
- pxor %xmm5,%xmm5
- pxor %xmm6,%xmm6
- pxor %xmm7,%xmm7
- movaps %xmm0,0(%rsp)
- pxor %xmm8,%xmm8
- movaps %xmm0,16(%rsp)
- pxor %xmm9,%xmm9
- movaps %xmm0,32(%rsp)
- pxor %xmm10,%xmm10
- movaps %xmm0,48(%rsp)
- pxor %xmm11,%xmm11
- movaps %xmm0,64(%rsp)
- pxor %xmm12,%xmm12
- movaps %xmm0,80(%rsp)
- pxor %xmm13,%xmm13
- movaps %xmm0,96(%rsp)
- pxor %xmm14,%xmm14
- pxor %xmm15,%xmm15
leaq (%rbp),%rsp
popq %rbp
L$xts_enc_epilogue:
@@ -2309,7 +2205,6 @@ L$xts_dec_loop6:
shrl $4,%eax
L$xts_dec_short:
-
movl %eax,%r10d
pxor %xmm0,%xmm10
pxor %xmm0,%xmm11
@@ -2512,29 +2407,6 @@ L$oop_dec1_14:
movups %xmm2,(%rsi)
L$xts_dec_ret:
- xorps %xmm0,%xmm0
- pxor %xmm1,%xmm1
- pxor %xmm2,%xmm2
- pxor %xmm3,%xmm3
- pxor %xmm4,%xmm4
- pxor %xmm5,%xmm5
- pxor %xmm6,%xmm6
- pxor %xmm7,%xmm7
- movaps %xmm0,0(%rsp)
- pxor %xmm8,%xmm8
- movaps %xmm0,16(%rsp)
- pxor %xmm9,%xmm9
- movaps %xmm0,32(%rsp)
- pxor %xmm10,%xmm10
- movaps %xmm0,48(%rsp)
- pxor %xmm11,%xmm11
- movaps %xmm0,64(%rsp)
- pxor %xmm12,%xmm12
- movaps %xmm0,80(%rsp)
- pxor %xmm13,%xmm13
- movaps %xmm0,96(%rsp)
- pxor %xmm14,%xmm14
- pxor %xmm15,%xmm15
leaq (%rbp),%rsp
popq %rbp
L$xts_dec_epilogue:
@@ -2584,11 +2456,7 @@ L$oop_enc1_15:
jnc L$cbc_enc_loop
addq $16,%rdx
jnz L$cbc_enc_tail
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
movups %xmm2,(%r8)
- pxor %xmm2,%xmm2
- pxor %xmm3,%xmm3
jmp L$cbc_ret
L$cbc_enc_tail:
@@ -2608,35 +2476,6 @@ L$cbc_enc_tail:
.p2align 4
L$cbc_decrypt:
- cmpq $16,%rdx
- jne L$cbc_decrypt_bulk
-
-
-
- movdqu (%rdi),%xmm2
- movdqu (%r8),%xmm3
- movdqa %xmm2,%xmm4
- movups (%rcx),%xmm0
- movups 16(%rcx),%xmm1
- leaq 32(%rcx),%rcx
- xorps %xmm0,%xmm2
-L$oop_dec1_16:
-.byte 102,15,56,222,209
- decl %r10d
- movups (%rcx),%xmm1
- leaq 16(%rcx),%rcx
- jnz L$oop_dec1_16
-.byte 102,15,56,223,209
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
- movdqu %xmm4,(%r8)
- xorps %xmm3,%xmm2
- pxor %xmm3,%xmm3
- movups %xmm2,(%rsi)
- pxor %xmm2,%xmm2
- jmp L$cbc_ret
-.p2align 4
-L$cbc_decrypt_bulk:
leaq (%rsp),%rax
pushq %rbp
subq $16,%rsp
@@ -2873,7 +2712,7 @@ L$cbc_dec_done:
movaps %xmm9,%xmm2
leaq -112(%rcx),%rcx
addq $112,%rdx
- jle L$cbc_dec_clear_tail_collected
+ jle L$cbc_dec_tail_collected
movups %xmm9,(%rsi)
leaq 16(%rsi),%rsi
cmpq $80,%rdx
@@ -2892,19 +2731,14 @@ L$cbc_dec_six_or_seven:
movdqu %xmm2,(%rsi)
pxor %xmm12,%xmm4
movdqu %xmm3,16(%rsi)
- pxor %xmm3,%xmm3
pxor %xmm13,%xmm5
movdqu %xmm4,32(%rsi)
- pxor %xmm4,%xmm4
pxor %xmm14,%xmm6
movdqu %xmm5,48(%rsi)
- pxor %xmm5,%xmm5
pxor %xmm15,%xmm7
movdqu %xmm6,64(%rsi)
- pxor %xmm6,%xmm6
leaq 80(%rsi),%rsi
movdqa %xmm7,%xmm2
- pxor %xmm7,%xmm7
jmp L$cbc_dec_tail_collected
.p2align 4
@@ -2919,23 +2753,16 @@ L$cbc_dec_seven:
movdqu %xmm2,(%rsi)
pxor %xmm12,%xmm4
movdqu %xmm3,16(%rsi)
- pxor %xmm3,%xmm3
pxor %xmm13,%xmm5
movdqu %xmm4,32(%rsi)
- pxor %xmm4,%xmm4
pxor %xmm14,%xmm6
movdqu %xmm5,48(%rsi)
- pxor %xmm5,%xmm5
pxor %xmm15,%xmm7
movdqu %xmm6,64(%rsi)
- pxor %xmm6,%xmm6
pxor %xmm9,%xmm8
movdqu %xmm7,80(%rsi)
- pxor %xmm7,%xmm7
leaq 96(%rsi),%rsi
movdqa %xmm8,%xmm2
- pxor %xmm8,%xmm8
- pxor %xmm9,%xmm9
jmp L$cbc_dec_tail_collected
.p2align 4
@@ -2979,7 +2806,7 @@ L$cbc_dec_loop6_enter:
movdqa %xmm7,%xmm2
addq $80,%rdx
- jle L$cbc_dec_clear_tail_collected
+ jle L$cbc_dec_tail_collected
movups %xmm7,(%rsi)
leaq 16(%rsi),%rsi
@@ -3014,17 +2841,12 @@ L$cbc_dec_tail:
movdqu %xmm2,(%rsi)
pxor %xmm12,%xmm4
movdqu %xmm3,16(%rsi)
- pxor %xmm3,%xmm3
pxor %xmm13,%xmm5
movdqu %xmm4,32(%rsi)
- pxor %xmm4,%xmm4
pxor %xmm14,%xmm6
movdqu %xmm5,48(%rsi)
- pxor %xmm5,%xmm5
leaq 64(%rsi),%rsi
movdqa %xmm6,%xmm2
- pxor %xmm6,%xmm6
- pxor %xmm7,%xmm7
subq $16,%rdx
jmp L$cbc_dec_tail_collected
@@ -3035,12 +2857,12 @@ L$cbc_dec_one:
movups 16(%rcx),%xmm1
leaq 32(%rcx),%rcx
xorps %xmm0,%xmm2
-L$oop_dec1_17:
+L$oop_dec1_16:
.byte 102,15,56,222,209
decl %eax
movups (%rcx),%xmm1
leaq 16(%rcx),%rcx
- jnz L$oop_dec1_17
+ jnz L$oop_dec1_16
.byte 102,15,56,223,209
xorps %xmm10,%xmm2
movaps %xmm11,%xmm10
@@ -3054,7 +2876,6 @@ L$cbc_dec_two:
pxor %xmm11,%xmm3
movdqu %xmm2,(%rsi)
movdqa %xmm3,%xmm2
- pxor %xmm3,%xmm3
leaq 16(%rsi),%rsi
jmp L$cbc_dec_tail_collected
.p2align 4
@@ -3067,9 +2888,7 @@ L$cbc_dec_three:
movdqu %xmm2,(%rsi)
pxor %xmm12,%xmm4
movdqu %xmm3,16(%rsi)
- pxor %xmm3,%xmm3
movdqa %xmm4,%xmm2
- pxor %xmm4,%xmm4
leaq 32(%rsi),%rsi
jmp L$cbc_dec_tail_collected
.p2align 4
@@ -3082,45 +2901,29 @@ L$cbc_dec_four:
movdqu %xmm2,(%rsi)
pxor %xmm12,%xmm4
movdqu %xmm3,16(%rsi)
- pxor %xmm3,%xmm3
pxor %xmm13,%xmm5
movdqu %xmm4,32(%rsi)
- pxor %xmm4,%xmm4
movdqa %xmm5,%xmm2
- pxor %xmm5,%xmm5
leaq 48(%rsi),%rsi
jmp L$cbc_dec_tail_collected
.p2align 4
-L$cbc_dec_clear_tail_collected:
- pxor %xmm3,%xmm3
- pxor %xmm4,%xmm4
- pxor %xmm5,%xmm5
- pxor %xmm6,%xmm6
- pxor %xmm7,%xmm7
- pxor %xmm8,%xmm8
- pxor %xmm9,%xmm9
L$cbc_dec_tail_collected:
movups %xmm10,(%r8)
andq $15,%rdx
jnz L$cbc_dec_tail_partial
movups %xmm2,(%rsi)
- pxor %xmm2,%xmm2
jmp L$cbc_dec_ret
.p2align 4
L$cbc_dec_tail_partial:
movaps %xmm2,(%rsp)
- pxor %xmm2,%xmm2
movq $16,%rcx
movq %rsi,%rdi
subq %rdx,%rcx
leaq (%rsp),%rsi
.long 0x9066A4F3
- movdqa %xmm2,(%rsp)
L$cbc_dec_ret:
- xorps %xmm0,%xmm0
- pxor %xmm1,%xmm1
leaq (%rbp),%rsp
popq %rbp
L$cbc_ret:
@@ -3159,9 +2962,7 @@ L$dec_key_inverse:
movups (%rdx),%xmm0
.byte 102,15,56,219,192
- pxor %xmm1,%xmm1
movups %xmm0,(%rdi)
- pxor %xmm0,%xmm0
L$dec_key_ret:
addq $8,%rsp
.byte 0xf3,0xc3
@@ -3180,10 +2981,8 @@ __aesni_set_encrypt_key:
testq %rdx,%rdx
jz L$enc_key_ret
- movl $268437504,%r10d
movups (%rdi),%xmm0
xorps %xmm4,%xmm4
- andl _OPENSSL_ia32cap_P+4(%rip),%r10d
leaq 16(%rdx),%rax
cmpl $256,%esi
je L$14rounds
@@ -3194,9 +2993,6 @@ __aesni_set_encrypt_key:
L$10rounds:
movl $9,%esi
- cmpl $268435456,%r10d
- je L$10rounds_alt
-
movups %xmm0,(%rdx)
.byte 102,15,58,223,200,1
call L$key_expansion_128_cold
@@ -3224,79 +3020,9 @@ L$10rounds:
jmp L$enc_key_ret
.p2align 4
-L$10rounds_alt:
- movdqa L$key_rotate(%rip),%xmm5
- movl $8,%r10d
- movdqa L$key_rcon1(%rip),%xmm4
- movdqa %xmm0,%xmm2
- movdqu %xmm0,(%rdx)
- jmp L$oop_key128
-
-.p2align 4
-L$oop_key128:
-.byte 102,15,56,0,197
-.byte 102,15,56,221,196
- pslld $1,%xmm4
- leaq 16(%rax),%rax
-
- movdqa %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm3,%xmm2
-
- pxor %xmm2,%xmm0
- movdqu %xmm0,-16(%rax)
- movdqa %xmm0,%xmm2
-
- decl %r10d
- jnz L$oop_key128
-
- movdqa L$key_rcon1b(%rip),%xmm4
-
-.byte 102,15,56,0,197
-.byte 102,15,56,221,196
- pslld $1,%xmm4
-
- movdqa %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm3,%xmm2
-
- pxor %xmm2,%xmm0
- movdqu %xmm0,(%rax)
-
- movdqa %xmm0,%xmm2
-.byte 102,15,56,0,197
-.byte 102,15,56,221,196
-
- movdqa %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm2,%xmm3
- pslldq $4,%xmm2
- pxor %xmm3,%xmm2
-
- pxor %xmm2,%xmm0
- movdqu %xmm0,16(%rax)
-
- movl %esi,96(%rax)
- xorl %eax,%eax
- jmp L$enc_key_ret
-
-.p2align 4
L$12rounds:
movq 16(%rdi),%xmm2
movl $11,%esi
- cmpl $268435456,%r10d
- je L$12rounds_alt
-
movups %xmm0,(%rdx)
.byte 102,15,58,223,202,1
call L$key_expansion_192a_cold
@@ -3320,54 +3046,10 @@ L$12rounds:
jmp L$enc_key_ret
.p2align 4
-L$12rounds_alt:
- movdqa L$key_rotate192(%rip),%xmm5
- movdqa L$key_rcon1(%rip),%xmm4
- movl $8,%r10d
- movdqu %xmm0,(%rdx)
- jmp L$oop_key192
-
-.p2align 4
-L$oop_key192:
- movq %xmm2,0(%rax)
- movdqa %xmm2,%xmm1
-.byte 102,15,56,0,213
-.byte 102,15,56,221,212
- pslld $1,%xmm4
- leaq 24(%rax),%rax
-
- movdqa %xmm0,%xmm3
- pslldq $4,%xmm0
- pxor %xmm0,%xmm3
- pslldq $4,%xmm0
- pxor %xmm0,%xmm3
- pslldq $4,%xmm0
- pxor %xmm3,%xmm0
-
- pshufd $255,%xmm0,%xmm3
- pxor %xmm1,%xmm3
- pslldq $4,%xmm1
- pxor %xmm1,%xmm3
-
- pxor %xmm2,%xmm0
- pxor %xmm3,%xmm2
- movdqu %xmm0,-16(%rax)
-
- decl %r10d
- jnz L$oop_key192
-
- movl %esi,32(%rax)
- xorl %eax,%eax
- jmp L$enc_key_ret
-
-.p2align 4
L$14rounds:
movups 16(%rdi),%xmm2
movl $13,%esi
leaq 16(%rax),%rax
- cmpl $268435456,%r10d
- je L$14rounds_alt
-
movups %xmm0,(%rdx)
movups %xmm2,16(%rdx)
.byte 102,15,58,223,202,1
@@ -3402,69 +3084,9 @@ L$14rounds:
jmp L$enc_key_ret
.p2align 4
-L$14rounds_alt:
- movdqa L$key_rotate(%rip),%xmm5
- movdqa L$key_rcon1(%rip),%xmm4
- movl $7,%r10d
- movdqu %xmm0,0(%rdx)
- movdqa %xmm2,%xmm1
- movdqu %xmm2,16(%rdx)
- jmp L$oop_key256
-
-.p2align 4
-L$oop_key256:
-.byte 102,15,56,0,213
-.byte 102,15,56,221,212
-
- movdqa %xmm0,%xmm3
- pslldq $4,%xmm0
- pxor %xmm0,%xmm3
- pslldq $4,%xmm0
- pxor %xmm0,%xmm3
- pslldq $4,%xmm0
- pxor %xmm3,%xmm0
- pslld $1,%xmm4
-
- pxor %xmm2,%xmm0
- movdqu %xmm0,(%rax)
-
- decl %r10d
- jz L$done_key256
-
- pshufd $255,%xmm0,%xmm2
- pxor %xmm3,%xmm3
-.byte 102,15,56,221,211
-
- movdqa %xmm1,%xmm3
- pslldq $4,%xmm1
- pxor %xmm1,%xmm3
- pslldq $4,%xmm1
- pxor %xmm1,%xmm3
- pslldq $4,%xmm1
- pxor %xmm3,%xmm1
-
- pxor %xmm1,%xmm2
- movdqu %xmm2,16(%rax)
- leaq 32(%rax),%rax
- movdqa %xmm2,%xmm1
-
- jmp L$oop_key256
-
-L$done_key256:
- movl %esi,16(%rax)
- xorl %eax,%eax
- jmp L$enc_key_ret
-
-.p2align 4
L$bad_keybits:
movq $-2,%rax
L$enc_key_ret:
- pxor %xmm0,%xmm0
- pxor %xmm1,%xmm1
- pxor %xmm2,%xmm2
- pxor %xmm3,%xmm3
- pxor %xmm4,%xmm4
- pxor %xmm5,%xmm5
addq $8,%rsp
.byte 0xf3,0xc3
L$SEH_end_set_encrypt_key:
@@ -3550,14 +3172,6 @@ L$xts_magic:
.long 0x87,0,1,0
L$increment1:
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
-L$key_rotate:
-.long 0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d
-L$key_rotate192:
-.long 0x04070605,0x04070605,0x04070605,0x04070605
-L$key_rcon1:
-.long 1,1,1,1
-L$key_rcon1b:
-.long 0x1b,0x1b,0x1b,0x1b
.byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69,83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
.p2align 6
diff --git a/third_party/boringssl/update_gypi_and_asm.py b/third_party/boringssl/update_gypi_and_asm.py
new file mode 100644
index 0000000..30558ed
--- /dev/null
+++ b/third_party/boringssl/update_gypi_and_asm.py
@@ -0,0 +1,259 @@
+# Copyright 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can b
+# found in the LICENSE file.
+
+"""Enumerates the BoringSSL source in src/ and generates two gypi files:
+ boringssl.gypi and boringssl_tests.gypi."""
+
+import os
+import subprocess
+import sys
+
+
+# OS_ARCH_COMBOS maps from OS and platform to the OpenSSL assembly "style" for
+# that platform and the extension used by asm files.
+OS_ARCH_COMBOS = [
+ ('linux', 'arm', 'linux32', [], 'S'),
+ ('linux', 'aarch64', 'linux64', [], 'S'),
+ ('linux', 'x86', 'elf', ['-fPIC', '-DOPENSSL_IA32_SSE2'], 'S'),
+ ('linux', 'x86_64', 'elf', [], 'S'),
+ ('mac', 'x86', 'macosx', ['-fPIC', '-DOPENSSL_IA32_SSE2'], 'S'),
+ ('mac', 'x86_64', 'macosx', [], 'S'),
+ ('win', 'x86', 'win32n', ['-DOPENSSL_IA32_SSE2'], 'asm'),
+ ('win', 'x86_64', 'nasm', [], 'asm'),
+]
+
+# NON_PERL_FILES enumerates assembly files that are not processed by the
+# perlasm system.
+NON_PERL_FILES = {
+ ('linux', 'arm'): [
+ 'src/crypto/poly1305/poly1305_arm_asm.S',
+ 'src/crypto/chacha/chacha_vec_arm.S',
+ 'src/crypto/cpu-arm-asm.S',
+ ],
+}
+
+FILE_HEADER = """# Copyright (c) 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# This file is created by update_gypi_and_asm.py. Do not edit manually.
+
+"""
+
+
+def FindCMakeFiles(directory):
+ """Returns list of all CMakeLists.txt files recursively in directory."""
+ cmakefiles = []
+
+ for (path, _, filenames) in os.walk(directory):
+ for filename in filenames:
+ if filename == 'CMakeLists.txt':
+ cmakefiles.append(os.path.join(path, filename))
+
+ return cmakefiles
+
+
+def NoTests(dent, is_dir):
+ """Filter function that can be passed to FindCFiles in order to remove test
+ sources."""
+ if is_dir:
+ return dent != 'test'
+ return 'test.' not in dent and not dent.startswith('example_')
+
+
+def OnlyTests(dent, is_dir):
+ """Filter function that can be passed to FindCFiles in order to remove
+ non-test sources."""
+ if is_dir:
+ return True
+ return '_test.' in dent or dent.startswith('example_')
+
+
+def FindCFiles(directory, filter_func):
+ """Recurses through directory and returns a list of paths to all the C source
+ files that pass filter_func."""
+ cfiles = []
+
+ for (path, dirnames, filenames) in os.walk(directory):
+ for filename in filenames:
+ if not filename.endswith('.c') and not filename.endswith('.cc'):
+ continue
+ if not filter_func(filename, False):
+ continue
+ cfiles.append(os.path.join(path, filename))
+
+ for (i, dirname) in enumerate(dirnames):
+ if not filter_func(dirname, True):
+ del dirnames[i]
+
+ return cfiles
+
+
+def ExtractPerlAsmFromCMakeFile(cmakefile):
+ """Parses the contents of the CMakeLists.txt file passed as an argument and
+ returns a list of all the perlasm() directives found in the file."""
+ perlasms = []
+ with open(cmakefile) as f:
+ for line in f:
+ line = line.strip()
+ if not line.startswith('perlasm('):
+ continue
+ if not line.endswith(')'):
+ raise ValueError('Bad perlasm line in %s' % cmakefile)
+ # Remove "perlasm(" from start and ")" from end
+ params = line[8:-1].split()
+ if len(params) < 2:
+ raise ValueError('Bad perlasm line in %s' % cmakefile)
+ perlasms.append({
+ 'extra_args': params[2:],
+ 'input': os.path.join(os.path.dirname(cmakefile), params[1]),
+ 'output': os.path.join(os.path.dirname(cmakefile), params[0]),
+ })
+
+ return perlasms
+
+
+def ReadPerlAsmOperations():
+ """Returns a list of all perlasm() directives found in CMake config files in
+ src/."""
+ perlasms = []
+ cmakefiles = FindCMakeFiles('src')
+
+ for cmakefile in cmakefiles:
+ perlasms.extend(ExtractPerlAsmFromCMakeFile(cmakefile))
+
+ return perlasms
+
+
+def PerlAsm(output_filename, input_filename, perlasm_style, extra_args):
+ """Runs the a perlasm script and puts the output into output_filename."""
+ base_dir = os.path.dirname(output_filename)
+ if not os.path.isdir(base_dir):
+ os.makedirs(base_dir)
+ output = subprocess.check_output(
+ ['perl', input_filename, perlasm_style] + extra_args)
+ with open(output_filename, 'w+') as out_file:
+ out_file.write(output)
+
+
+def ArchForAsmFilename(filename):
+ """Returns the architectures that a given asm file should be compiled for
+ based on substrings in the filename."""
+
+ if 'x86_64' in filename or 'avx2' in filename:
+ return ['x86_64']
+ elif ('x86' in filename and 'x86_64' not in filename) or '586' in filename:
+ return ['x86']
+ elif 'armx' in filename:
+ return ['arm', 'aarch64']
+ elif 'armv8' in filename:
+ return ['aarch64']
+ elif 'arm' in filename:
+ return ['arm']
+ else:
+ raise ValueError('Unknown arch for asm filename: ' + filename)
+
+
+def WriteAsmFiles(perlasms):
+ """Generates asm files from perlasm directives for each supported OS x
+ platform combination."""
+ asmfiles = {}
+
+ for osarch in OS_ARCH_COMBOS:
+ (osname, arch, perlasm_style, extra_args, asm_ext) = osarch
+ key = (osname, arch)
+ outDir = '%s-%s' % key
+
+ for perlasm in perlasms:
+ filename = os.path.basename(perlasm['input'])
+ output = perlasm['output']
+ if not output.startswith('src'):
+ raise ValueError('output missing src: %s' % output)
+ output = os.path.join(outDir, output[4:])
+ output = output.replace('${ASM_EXT}', asm_ext)
+
+ if arch in ArchForAsmFilename(filename):
+ PerlAsm(output, perlasm['input'], perlasm_style,
+ perlasm['extra_args'] + extra_args)
+ asmfiles.setdefault(key, []).append(output)
+
+ for (key, non_perl_asm_files) in NON_PERL_FILES.iteritems():
+ asmfiles.setdefault(key, []).extend(non_perl_asm_files)
+
+ return asmfiles
+
+
+def PrintVariableSection(out, name, files):
+ out.write(' \'%s\': [\n' % name)
+ for f in sorted(files):
+ out.write(' \'%s\',\n' % f)
+ out.write(' ],\n')
+
+
+def main():
+ crypto_c_files = FindCFiles(os.path.join('src', 'crypto'), NoTests)
+ ssl_c_files = FindCFiles(os.path.join('src', 'ssl'), NoTests)
+
+ # Generate err_data.c
+ with open('err_data.c', 'w+') as err_data:
+ subprocess.check_call(['go', 'run', 'err_data_generate.go'],
+ cwd=os.path.join('src', 'crypto', 'err'),
+ stdout=err_data)
+ crypto_c_files.append('err_data.c')
+
+ with open('boringssl.gypi', 'w+') as gypi:
+ gypi.write(FILE_HEADER + '{\n \'variables\': {\n')
+
+ PrintVariableSection(
+ gypi, 'boringssl_lib_sources', crypto_c_files + ssl_c_files)
+
+ perlasms = ReadPerlAsmOperations()
+
+ for ((osname, arch), asm_files) in sorted(
+ WriteAsmFiles(perlasms).iteritems()):
+ PrintVariableSection(gypi, 'boringssl_%s_%s_sources' %
+ (osname, arch), asm_files)
+
+ gypi.write(' }\n}\n')
+
+ test_c_files = FindCFiles(os.path.join('src', 'crypto'), OnlyTests)
+ test_c_files += FindCFiles(os.path.join('src', 'ssl'), OnlyTests)
+
+ with open('boringssl_tests.gypi', 'w+') as test_gypi:
+ test_gypi.write(FILE_HEADER + '{\n \'targets\': [\n')
+
+ test_names = []
+ for test in sorted(test_c_files):
+ test_name = 'boringssl_%s' % os.path.splitext(os.path.basename(test))[0]
+ test_gypi.write(""" {
+ 'target_name': '%s',
+ 'type': 'executable',
+ 'dependencies': [
+ 'boringssl.gyp:boringssl',
+ ],
+ 'sources': [
+ '%s',
+ ],
+ # TODO(davidben): Fix size_t truncations in BoringSSL.
+ # https://crbug.com/429039
+ 'msvs_disabled_warnings': [ 4267, ],
+ },\n""" % (test_name, test))
+ test_names.append(test_name)
+
+ test_names.sort()
+
+ test_gypi.write(""" ],
+ 'variables': {
+ 'boringssl_test_targets': [\n""")
+
+ for test in test_names:
+ test_gypi.write(""" '%s',\n""" % test)
+
+ test_gypi.write(' ],\n }\n}\n')
+
+ return 0
+
+
+if __name__ == '__main__':
+ sys.exit(main())
diff --git a/third_party/boringssl/win-x86/crypto/aes/aesni-x86.asm b/third_party/boringssl/win-x86/crypto/aes/aesni-x86.asm
index a9a5956..845bb35 100644
--- a/third_party/boringssl/win-x86/crypto/aes/aesni-x86.asm
+++ b/third_party/boringssl/win-x86/crypto/aes/aesni-x86.asm
@@ -14,7 +14,6 @@ section .text code align=64
%else
section .text code
%endif
-;extern _OPENSSL_ia32cap_P
global _aesni_encrypt
align 16
_aesni_encrypt:
@@ -35,10 +34,7 @@ db 102,15,56,220,209
lea edx,[16+edx]
jnz NEAR L$000enc1_loop_1
db 102,15,56,221,209
- pxor xmm0,xmm0
- pxor xmm1,xmm1
movups [eax],xmm2
- pxor xmm2,xmm2
ret
global _aesni_decrypt
align 16
@@ -60,10 +56,7 @@ db 102,15,56,222,209
lea edx,[16+edx]
jnz NEAR L$001dec1_loop_2
db 102,15,56,223,209
- pxor xmm0,xmm0
- pxor xmm1,xmm1
movups [eax],xmm2
- pxor xmm2,xmm2
ret
align 16
__aesni_encrypt2:
@@ -263,15 +256,17 @@ db 102,15,56,220,217
neg ecx
db 102,15,56,220,225
pxor xmm7,xmm0
- movups xmm0,[ecx*1+edx]
add ecx,16
- jmp NEAR L$008_aesni_encrypt6_inner
+db 102,15,56,220,233
+db 102,15,56,220,241
+db 102,15,56,220,249
+ movups xmm0,[ecx*1+edx-16]
+ jmp NEAR L$_aesni_encrypt6_enter
align 16
-L$009enc6_loop:
+L$008enc6_loop:
db 102,15,56,220,209
db 102,15,56,220,217
db 102,15,56,220,225
-L$008_aesni_encrypt6_inner:
db 102,15,56,220,233
db 102,15,56,220,241
db 102,15,56,220,249
@@ -285,7 +280,7 @@ db 102,15,56,220,232
db 102,15,56,220,240
db 102,15,56,220,248
movups xmm0,[ecx*1+edx-16]
- jnz NEAR L$009enc6_loop
+ jnz NEAR L$008enc6_loop
db 102,15,56,220,209
db 102,15,56,220,217
db 102,15,56,220,225
@@ -315,15 +310,17 @@ db 102,15,56,222,217
neg ecx
db 102,15,56,222,225
pxor xmm7,xmm0
- movups xmm0,[ecx*1+edx]
add ecx,16
- jmp NEAR L$010_aesni_decrypt6_inner
+db 102,15,56,222,233
+db 102,15,56,222,241
+db 102,15,56,222,249
+ movups xmm0,[ecx*1+edx-16]
+ jmp NEAR L$_aesni_decrypt6_enter
align 16
-L$011dec6_loop:
+L$009dec6_loop:
db 102,15,56,222,209
db 102,15,56,222,217
db 102,15,56,222,225
-L$010_aesni_decrypt6_inner:
db 102,15,56,222,233
db 102,15,56,222,241
db 102,15,56,222,249
@@ -337,7 +334,7 @@ db 102,15,56,222,232
db 102,15,56,222,240
db 102,15,56,222,248
movups xmm0,[ecx*1+edx-16]
- jnz NEAR L$011dec6_loop
+ jnz NEAR L$009dec6_loop
db 102,15,56,222,209
db 102,15,56,222,217
db 102,15,56,222,225
@@ -365,14 +362,14 @@ L$_aesni_ecb_encrypt_begin:
mov edx,DWORD [32+esp]
mov ebx,DWORD [36+esp]
and eax,-16
- jz NEAR L$012ecb_ret
+ jz NEAR L$010ecb_ret
mov ecx,DWORD [240+edx]
test ebx,ebx
- jz NEAR L$013ecb_decrypt
+ jz NEAR L$011ecb_decrypt
mov ebp,edx
mov ebx,ecx
cmp eax,96
- jb NEAR L$014ecb_enc_tail
+ jb NEAR L$012ecb_enc_tail
movdqu xmm2,[esi]
movdqu xmm3,[16+esi]
movdqu xmm4,[32+esi]
@@ -381,9 +378,9 @@ L$_aesni_ecb_encrypt_begin:
movdqu xmm7,[80+esi]
lea esi,[96+esi]
sub eax,96
- jmp NEAR L$015ecb_enc_loop6_enter
+ jmp NEAR L$013ecb_enc_loop6_enter
align 16
-L$016ecb_enc_loop6:
+L$014ecb_enc_loop6:
movups [edi],xmm2
movdqu xmm2,[esi]
movups [16+edi],xmm3
@@ -398,12 +395,12 @@ L$016ecb_enc_loop6:
lea edi,[96+edi]
movdqu xmm7,[80+esi]
lea esi,[96+esi]
-L$015ecb_enc_loop6_enter:
+L$013ecb_enc_loop6_enter:
call __aesni_encrypt6
mov edx,ebp
mov ecx,ebx
sub eax,96
- jnc NEAR L$016ecb_enc_loop6
+ jnc NEAR L$014ecb_enc_loop6
movups [edi],xmm2
movups [16+edi],xmm3
movups [32+edi],xmm4
@@ -412,18 +409,18 @@ L$015ecb_enc_loop6_enter:
movups [80+edi],xmm7
lea edi,[96+edi]
add eax,96
- jz NEAR L$012ecb_ret
-L$014ecb_enc_tail:
+ jz NEAR L$010ecb_ret
+L$012ecb_enc_tail:
movups xmm2,[esi]
cmp eax,32
- jb NEAR L$017ecb_enc_one
+ jb NEAR L$015ecb_enc_one
movups xmm3,[16+esi]
- je NEAR L$018ecb_enc_two
+ je NEAR L$016ecb_enc_two
movups xmm4,[32+esi]
cmp eax,64
- jb NEAR L$019ecb_enc_three
+ jb NEAR L$017ecb_enc_three
movups xmm5,[48+esi]
- je NEAR L$020ecb_enc_four
+ je NEAR L$018ecb_enc_four
movups xmm6,[64+esi]
xorps xmm7,xmm7
call __aesni_encrypt6
@@ -432,49 +429,49 @@ L$014ecb_enc_tail:
movups [32+edi],xmm4
movups [48+edi],xmm5
movups [64+edi],xmm6
- jmp NEAR L$012ecb_ret
+ jmp NEAR L$010ecb_ret
align 16
-L$017ecb_enc_one:
+L$015ecb_enc_one:
movups xmm0,[edx]
movups xmm1,[16+edx]
lea edx,[32+edx]
xorps xmm2,xmm0
-L$021enc1_loop_3:
+L$019enc1_loop_3:
db 102,15,56,220,209
dec ecx
movups xmm1,[edx]
lea edx,[16+edx]
- jnz NEAR L$021enc1_loop_3
+ jnz NEAR L$019enc1_loop_3
db 102,15,56,221,209
movups [edi],xmm2
- jmp NEAR L$012ecb_ret
+ jmp NEAR L$010ecb_ret
align 16
-L$018ecb_enc_two:
+L$016ecb_enc_two:
call __aesni_encrypt2
movups [edi],xmm2
movups [16+edi],xmm3
- jmp NEAR L$012ecb_ret
+ jmp NEAR L$010ecb_ret
align 16
-L$019ecb_enc_three:
+L$017ecb_enc_three:
call __aesni_encrypt3
movups [edi],xmm2
movups [16+edi],xmm3
movups [32+edi],xmm4
- jmp NEAR L$012ecb_ret
+ jmp NEAR L$010ecb_ret
align 16
-L$020ecb_enc_four:
+L$018ecb_enc_four:
call __aesni_encrypt4
movups [edi],xmm2
movups [16+edi],xmm3
movups [32+edi],xmm4
movups [48+edi],xmm5
- jmp NEAR L$012ecb_ret
+ jmp NEAR L$010ecb_ret
align 16
-L$013ecb_decrypt:
+L$011ecb_decrypt:
mov ebp,edx
mov ebx,ecx
cmp eax,96
- jb NEAR L$022ecb_dec_tail
+ jb NEAR L$020ecb_dec_tail
movdqu xmm2,[esi]
movdqu xmm3,[16+esi]
movdqu xmm4,[32+esi]
@@ -483,9 +480,9 @@ L$013ecb_decrypt:
movdqu xmm7,[80+esi]
lea esi,[96+esi]
sub eax,96
- jmp NEAR L$023ecb_dec_loop6_enter
+ jmp NEAR L$021ecb_dec_loop6_enter
align 16
-L$024ecb_dec_loop6:
+L$022ecb_dec_loop6:
movups [edi],xmm2
movdqu xmm2,[esi]
movups [16+edi],xmm3
@@ -500,12 +497,12 @@ L$024ecb_dec_loop6:
lea edi,[96+edi]
movdqu xmm7,[80+esi]
lea esi,[96+esi]
-L$023ecb_dec_loop6_enter:
+L$021ecb_dec_loop6_enter:
call __aesni_decrypt6
mov edx,ebp
mov ecx,ebx
sub eax,96
- jnc NEAR L$024ecb_dec_loop6
+ jnc NEAR L$022ecb_dec_loop6
movups [edi],xmm2
movups [16+edi],xmm3
movups [32+edi],xmm4
@@ -514,18 +511,18 @@ L$023ecb_dec_loop6_enter:
movups [80+edi],xmm7
lea edi,[96+edi]
add eax,96
- jz NEAR L$012ecb_ret
-L$022ecb_dec_tail:
+ jz NEAR L$010ecb_ret
+L$020ecb_dec_tail:
movups xmm2,[esi]
cmp eax,32
- jb NEAR L$025ecb_dec_one
+ jb NEAR L$023ecb_dec_one
movups xmm3,[16+esi]
- je NEAR L$026ecb_dec_two
+ je NEAR L$024ecb_dec_two
movups xmm4,[32+esi]
cmp eax,64
- jb NEAR L$027ecb_dec_three
+ jb NEAR L$025ecb_dec_three
movups xmm5,[48+esi]
- je NEAR L$028ecb_dec_four
+ je NEAR L$026ecb_dec_four
movups xmm6,[64+esi]
xorps xmm7,xmm7
call __aesni_decrypt6
@@ -534,51 +531,43 @@ L$022ecb_dec_tail:
movups [32+edi],xmm4
movups [48+edi],xmm5
movups [64+edi],xmm6
- jmp NEAR L$012ecb_ret
+ jmp NEAR L$010ecb_ret
align 16
-L$025ecb_dec_one:
+L$023ecb_dec_one:
movups xmm0,[edx]
movups xmm1,[16+edx]
lea edx,[32+edx]
xorps xmm2,xmm0
-L$029dec1_loop_4:
+L$027dec1_loop_4:
db 102,15,56,222,209
dec ecx
movups xmm1,[edx]
lea edx,[16+edx]
- jnz NEAR L$029dec1_loop_4
+ jnz NEAR L$027dec1_loop_4
db 102,15,56,223,209
movups [edi],xmm2
- jmp NEAR L$012ecb_ret
+ jmp NEAR L$010ecb_ret
align 16
-L$026ecb_dec_two:
+L$024ecb_dec_two:
call __aesni_decrypt2
movups [edi],xmm2
movups [16+edi],xmm3
- jmp NEAR L$012ecb_ret
+ jmp NEAR L$010ecb_ret
align 16
-L$027ecb_dec_three:
+L$025ecb_dec_three:
call __aesni_decrypt3
movups [edi],xmm2
movups [16+edi],xmm3
movups [32+edi],xmm4
- jmp NEAR L$012ecb_ret
+ jmp NEAR L$010ecb_ret
align 16
-L$028ecb_dec_four:
+L$026ecb_dec_four:
call __aesni_decrypt4
movups [edi],xmm2
movups [16+edi],xmm3
movups [32+edi],xmm4
movups [48+edi],xmm5
-L$012ecb_ret:
- pxor xmm0,xmm0
- pxor xmm1,xmm1
- pxor xmm2,xmm2
- pxor xmm3,xmm3
- pxor xmm4,xmm4
- pxor xmm5,xmm5
- pxor xmm6,xmm6
- pxor xmm7,xmm7
+L$010ecb_ret:
pop edi
pop esi
pop ebx
@@ -623,7 +612,7 @@ L$_aesni_ccm64_encrypt_blocks_begin:
lea edx,[32+ecx*1+edx]
sub ebx,ecx
db 102,15,56,0,253
-L$030ccm64_enc_outer:
+L$028ccm64_enc_outer:
movups xmm0,[ebp]
mov ecx,ebx
movups xmm6,[esi]
@@ -632,7 +621,7 @@ L$030ccm64_enc_outer:
xorps xmm0,xmm6
xorps xmm3,xmm0
movups xmm0,[32+ebp]
-L$031ccm64_enc2_loop:
+L$029ccm64_enc2_loop:
db 102,15,56,220,209
db 102,15,56,220,217
movups xmm1,[ecx*1+edx]
@@ -640,7 +629,7 @@ db 102,15,56,220,217
db 102,15,56,220,208
db 102,15,56,220,216
movups xmm0,[ecx*1+edx-16]
- jnz NEAR L$031ccm64_enc2_loop
+ jnz NEAR L$029ccm64_enc2_loop
db 102,15,56,220,209
db 102,15,56,220,217
paddq xmm7,[16+esp]
@@ -653,18 +642,10 @@ db 102,15,56,221,216
movups [edi],xmm6
db 102,15,56,0,213
lea edi,[16+edi]
- jnz NEAR L$030ccm64_enc_outer
+ jnz NEAR L$028ccm64_enc_outer
mov esp,DWORD [48+esp]
mov edi,DWORD [40+esp]
movups [edi],xmm3
- pxor xmm0,xmm0
- pxor xmm1,xmm1
- pxor xmm2,xmm2
- pxor xmm3,xmm3
- pxor xmm4,xmm4
- pxor xmm5,xmm5
- pxor xmm6,xmm6
- pxor xmm7,xmm7
pop edi
pop esi
pop ebx
@@ -710,12 +691,12 @@ db 102,15,56,0,253
movups xmm1,[16+edx]
lea edx,[32+edx]
xorps xmm2,xmm0
-L$032enc1_loop_5:
+L$030enc1_loop_5:
db 102,15,56,220,209
dec ecx
movups xmm1,[edx]
lea edx,[16+edx]
- jnz NEAR L$032enc1_loop_5
+ jnz NEAR L$030enc1_loop_5
db 102,15,56,221,209
shl ebx,4
mov ecx,16
@@ -725,16 +706,16 @@ db 102,15,56,221,209
sub ecx,ebx
lea edx,[32+ebx*1+ebp]
mov ebx,ecx
- jmp NEAR L$033ccm64_dec_outer
+ jmp NEAR L$031ccm64_dec_outer
align 16
-L$033ccm64_dec_outer:
+L$031ccm64_dec_outer:
xorps xmm6,xmm2
movdqa xmm2,xmm7
movups [edi],xmm6
lea edi,[16+edi]
db 102,15,56,0,213
sub eax,1
- jz NEAR L$034ccm64_dec_break
+ jz NEAR L$032ccm64_dec_break
movups xmm0,[ebp]
mov ecx,ebx
movups xmm1,[16+ebp]
@@ -742,7 +723,7 @@ db 102,15,56,0,213
xorps xmm2,xmm0
xorps xmm3,xmm6
movups xmm0,[32+ebp]
-L$035ccm64_dec2_loop:
+L$033ccm64_dec2_loop:
db 102,15,56,220,209
db 102,15,56,220,217
movups xmm1,[ecx*1+edx]
@@ -750,7 +731,7 @@ db 102,15,56,220,217
db 102,15,56,220,208
db 102,15,56,220,216
movups xmm0,[ecx*1+edx-16]
- jnz NEAR L$035ccm64_dec2_loop
+ jnz NEAR L$033ccm64_dec2_loop
movups xmm6,[esi]
paddq xmm7,[16+esp]
db 102,15,56,220,209
@@ -758,9 +739,9 @@ db 102,15,56,220,217
db 102,15,56,221,208
db 102,15,56,221,216
lea esi,[16+esi]
- jmp NEAR L$033ccm64_dec_outer
+ jmp NEAR L$031ccm64_dec_outer
align 16
-L$034ccm64_dec_break:
+L$032ccm64_dec_break:
mov ecx,DWORD [240+ebp]
mov edx,ebp
movups xmm0,[edx]
@@ -768,24 +749,16 @@ L$034ccm64_dec_break:
xorps xmm6,xmm0
lea edx,[32+edx]
xorps xmm3,xmm6
-L$036enc1_loop_6:
+L$034enc1_loop_6:
db 102,15,56,220,217
dec ecx
movups xmm1,[edx]
lea edx,[16+edx]
- jnz NEAR L$036enc1_loop_6
+ jnz NEAR L$034enc1_loop_6
db 102,15,56,221,217
mov esp,DWORD [48+esp]
mov edi,DWORD [40+esp]
movups [edi],xmm3
- pxor xmm0,xmm0
- pxor xmm1,xmm1
- pxor xmm2,xmm2
- pxor xmm3,xmm3
- pxor xmm4,xmm4
- pxor xmm5,xmm5
- pxor xmm6,xmm6
- pxor xmm7,xmm7
pop edi
pop esi
pop ebx
@@ -809,7 +782,7 @@ L$_aesni_ctr32_encrypt_blocks_begin:
and esp,-16
mov DWORD [80+esp],ebp
cmp eax,1
- je NEAR L$037ctr32_one_shortcut
+ je NEAR L$035ctr32_one_shortcut
movdqu xmm7,[ebx]
mov DWORD [esp],202182159
mov DWORD [4+esp],134810123
@@ -847,7 +820,7 @@ db 102,15,56,0,202
pshufd xmm2,xmm0,192
pshufd xmm3,xmm0,128
cmp eax,6
- jb NEAR L$038ctr32_tail
+ jb NEAR L$036ctr32_tail
pxor xmm7,xmm6
shl ecx,4
mov ebx,16
@@ -856,9 +829,9 @@ db 102,15,56,0,202
sub ebx,ecx
lea edx,[32+ecx*1+edx]
sub eax,6
- jmp NEAR L$039ctr32_loop6
+ jmp NEAR L$037ctr32_loop6
align 16
-L$039ctr32_loop6:
+L$037ctr32_loop6:
pshufd xmm4,xmm0,64
movdqa xmm0,[32+esp]
pshufd xmm5,xmm1,192
@@ -912,27 +885,27 @@ db 102,15,56,0,202
lea edi,[96+edi]
pshufd xmm3,xmm0,128
sub eax,6
- jnc NEAR L$039ctr32_loop6
+ jnc NEAR L$037ctr32_loop6
add eax,6
- jz NEAR L$040ctr32_ret
+ jz NEAR L$038ctr32_ret
movdqu xmm7,[ebp]
mov edx,ebp
pxor xmm7,[32+esp]
mov ecx,DWORD [240+ebp]
-L$038ctr32_tail:
+L$036ctr32_tail:
por xmm2,xmm7
cmp eax,2
- jb NEAR L$041ctr32_one
+ jb NEAR L$039ctr32_one
pshufd xmm4,xmm0,64
por xmm3,xmm7
- je NEAR L$042ctr32_two
+ je NEAR L$040ctr32_two
pshufd xmm5,xmm1,192
por xmm4,xmm7
cmp eax,4
- jb NEAR L$043ctr32_three
+ jb NEAR L$041ctr32_three
pshufd xmm6,xmm1,128
por xmm5,xmm7
- je NEAR L$044ctr32_four
+ je NEAR L$042ctr32_four
por xmm6,xmm7
call __aesni_encrypt6
movups xmm1,[esi]
@@ -950,29 +923,29 @@ L$038ctr32_tail:
movups [32+edi],xmm4
movups [48+edi],xmm5
movups [64+edi],xmm6
- jmp NEAR L$040ctr32_ret
+ jmp NEAR L$038ctr32_ret
align 16
-L$037ctr32_one_shortcut:
+L$035ctr32_one_shortcut:
movups xmm2,[ebx]
mov ecx,DWORD [240+edx]
-L$041ctr32_one:
+L$039ctr32_one:
movups xmm0,[edx]
movups xmm1,[16+edx]
lea edx,[32+edx]
xorps xmm2,xmm0
-L$045enc1_loop_7:
+L$043enc1_loop_7:
db 102,15,56,220,209
dec ecx
movups xmm1,[edx]
lea edx,[16+edx]
- jnz NEAR L$045enc1_loop_7
+ jnz NEAR L$043enc1_loop_7
db 102,15,56,221,209
movups xmm6,[esi]
xorps xmm6,xmm2
movups [edi],xmm6
- jmp NEAR L$040ctr32_ret
+ jmp NEAR L$038ctr32_ret
align 16
-L$042ctr32_two:
+L$040ctr32_two:
call __aesni_encrypt2
movups xmm5,[esi]
movups xmm6,[16+esi]
@@ -980,9 +953,9 @@ L$042ctr32_two:
xorps xmm3,xmm6
movups [edi],xmm2
movups [16+edi],xmm3
- jmp NEAR L$040ctr32_ret
+ jmp NEAR L$038ctr32_ret
align 16
-L$043ctr32_three:
+L$041ctr32_three:
call __aesni_encrypt3
movups xmm5,[esi]
movups xmm6,[16+esi]
@@ -993,9 +966,9 @@ L$043ctr32_three:
xorps xmm4,xmm7
movups [16+edi],xmm3
movups [32+edi],xmm4
- jmp NEAR L$040ctr32_ret
+ jmp NEAR L$038ctr32_ret
align 16
-L$044ctr32_four:
+L$042ctr32_four:
call __aesni_encrypt4
movups xmm6,[esi]
movups xmm7,[16+esi]
@@ -1009,18 +982,7 @@ L$044ctr32_four:
xorps xmm5,xmm0
movups [32+edi],xmm4
movups [48+edi],xmm5
-L$040ctr32_ret:
- pxor xmm0,xmm0
- pxor xmm1,xmm1
- pxor xmm2,xmm2
- pxor xmm3,xmm3
- pxor xmm4,xmm4
- movdqa [32+esp],xmm0
- pxor xmm5,xmm5
- movdqa [48+esp],xmm0
- pxor xmm6,xmm6
- movdqa [64+esp],xmm0
- pxor xmm7,xmm7
+L$038ctr32_ret:
mov esp,DWORD [80+esp]
pop edi
pop esi
@@ -1043,12 +1005,12 @@ L$_aesni_xts_encrypt_begin:
movups xmm1,[16+edx]
lea edx,[32+edx]
xorps xmm2,xmm0
-L$046enc1_loop_8:
+L$044enc1_loop_8:
db 102,15,56,220,209
dec ecx
movups xmm1,[edx]
lea edx,[16+edx]
- jnz NEAR L$046enc1_loop_8
+ jnz NEAR L$044enc1_loop_8
db 102,15,56,221,209
mov esi,DWORD [20+esp]
mov edi,DWORD [24+esp]
@@ -1072,14 +1034,14 @@ db 102,15,56,221,209
mov ebp,edx
mov ebx,ecx
sub eax,96
- jc NEAR L$047xts_enc_short
+ jc NEAR L$045xts_enc_short
shl ecx,4
mov ebx,16
sub ebx,ecx
lea edx,[32+ecx*1+edx]
- jmp NEAR L$048xts_enc_loop6
+ jmp NEAR L$046xts_enc_loop6
align 16
-L$048xts_enc_loop6:
+L$046xts_enc_loop6:
pshufd xmm2,xmm0,19
pxor xmm0,xmm0
movdqa [esp],xmm1
@@ -1168,23 +1130,23 @@ db 102,15,56,220,249
pcmpgtd xmm0,xmm1
pxor xmm1,xmm2
sub eax,96
- jnc NEAR L$048xts_enc_loop6
+ jnc NEAR L$046xts_enc_loop6
mov ecx,DWORD [240+ebp]
mov edx,ebp
mov ebx,ecx
-L$047xts_enc_short:
+L$045xts_enc_short:
add eax,96
- jz NEAR L$049xts_enc_done6x
+ jz NEAR L$047xts_enc_done6x
movdqa xmm5,xmm1
cmp eax,32
- jb NEAR L$050xts_enc_one
+ jb NEAR L$048xts_enc_one
pshufd xmm2,xmm0,19
pxor xmm0,xmm0
paddq xmm1,xmm1
pand xmm2,xmm3
pcmpgtd xmm0,xmm1
pxor xmm1,xmm2
- je NEAR L$051xts_enc_two
+ je NEAR L$049xts_enc_two
pshufd xmm2,xmm0,19
pxor xmm0,xmm0
movdqa xmm6,xmm1
@@ -1193,7 +1155,7 @@ L$047xts_enc_short:
pcmpgtd xmm0,xmm1
pxor xmm1,xmm2
cmp eax,64
- jb NEAR L$052xts_enc_three
+ jb NEAR L$050xts_enc_three
pshufd xmm2,xmm0,19
pxor xmm0,xmm0
movdqa xmm7,xmm1
@@ -1203,7 +1165,7 @@ L$047xts_enc_short:
pxor xmm1,xmm2
movdqa [esp],xmm5
movdqa [16+esp],xmm6
- je NEAR L$053xts_enc_four
+ je NEAR L$051xts_enc_four
movdqa [32+esp],xmm7
pshufd xmm7,xmm0,19
movdqa [48+esp],xmm1
@@ -1235,9 +1197,9 @@ L$047xts_enc_short:
movups [48+edi],xmm5
movups [64+edi],xmm6
lea edi,[80+edi]
- jmp NEAR L$054xts_enc_done
+ jmp NEAR L$052xts_enc_done
align 16
-L$050xts_enc_one:
+L$048xts_enc_one:
movups xmm2,[esi]
lea esi,[16+esi]
xorps xmm2,xmm5
@@ -1245,20 +1207,20 @@ L$050xts_enc_one:
movups xmm1,[16+edx]
lea edx,[32+edx]
xorps xmm2,xmm0
-L$055enc1_loop_9:
+L$053enc1_loop_9:
db 102,15,56,220,209
dec ecx
movups xmm1,[edx]
lea edx,[16+edx]
- jnz NEAR L$055enc1_loop_9
+ jnz NEAR L$053enc1_loop_9
db 102,15,56,221,209
xorps xmm2,xmm5
movups [edi],xmm2
lea edi,[16+edi]
movdqa xmm1,xmm5
- jmp NEAR L$054xts_enc_done
+ jmp NEAR L$052xts_enc_done
align 16
-L$051xts_enc_two:
+L$049xts_enc_two:
movaps xmm6,xmm1
movups xmm2,[esi]
movups xmm3,[16+esi]
@@ -1272,9 +1234,9 @@ L$051xts_enc_two:
movups [16+edi],xmm3
lea edi,[32+edi]
movdqa xmm1,xmm6
- jmp NEAR L$054xts_enc_done
+ jmp NEAR L$052xts_enc_done
align 16
-L$052xts_enc_three:
+L$050xts_enc_three:
movaps xmm7,xmm1
movups xmm2,[esi]
movups xmm3,[16+esi]
@@ -1292,9 +1254,9 @@ L$052xts_enc_three:
movups [32+edi],xmm4
lea edi,[48+edi]
movdqa xmm1,xmm7
- jmp NEAR L$054xts_enc_done
+ jmp NEAR L$052xts_enc_done
align 16
-L$053xts_enc_four:
+L$051xts_enc_four:
movaps xmm6,xmm1
movups xmm2,[esi]
movups xmm3,[16+esi]
@@ -1316,28 +1278,28 @@ L$053xts_enc_four:
movups [48+edi],xmm5
lea edi,[64+edi]
movdqa xmm1,xmm6
- jmp NEAR L$054xts_enc_done
+ jmp NEAR L$052xts_enc_done
align 16
-L$049xts_enc_done6x:
+L$047xts_enc_done6x:
mov eax,DWORD [112+esp]
and eax,15
- jz NEAR L$056xts_enc_ret
+ jz NEAR L$054xts_enc_ret
movdqa xmm5,xmm1
mov DWORD [112+esp],eax
- jmp NEAR L$057xts_enc_steal
+ jmp NEAR L$055xts_enc_steal
align 16
-L$054xts_enc_done:
+L$052xts_enc_done:
mov eax,DWORD [112+esp]
pxor xmm0,xmm0
and eax,15
- jz NEAR L$056xts_enc_ret
+ jz NEAR L$054xts_enc_ret
pcmpgtd xmm0,xmm1
mov DWORD [112+esp],eax
pshufd xmm5,xmm0,19
paddq xmm1,xmm1
pand xmm5,[96+esp]
pxor xmm5,xmm1
-L$057xts_enc_steal:
+L$055xts_enc_steal:
movzx ecx,BYTE [esi]
movzx edx,BYTE [edi-16]
lea esi,[1+esi]
@@ -1345,7 +1307,7 @@ L$057xts_enc_steal:
mov BYTE [edi],dl
lea edi,[1+edi]
sub eax,1
- jnz NEAR L$057xts_enc_steal
+ jnz NEAR L$055xts_enc_steal
sub edi,DWORD [112+esp]
mov edx,ebp
mov ecx,ebx
@@ -1355,30 +1317,16 @@ L$057xts_enc_steal:
movups xmm1,[16+edx]
lea edx,[32+edx]
xorps xmm2,xmm0
-L$058enc1_loop_10:
+L$056enc1_loop_10:
db 102,15,56,220,209
dec ecx
movups xmm1,[edx]
lea edx,[16+edx]
- jnz NEAR L$058enc1_loop_10
+ jnz NEAR L$056enc1_loop_10
db 102,15,56,221,209
xorps xmm2,xmm5
movups [edi-16],xmm2
-L$056xts_enc_ret:
- pxor xmm0,xmm0
- pxor xmm1,xmm1
- pxor xmm2,xmm2
- movdqa [esp],xmm0
- pxor xmm3,xmm3
- movdqa [16+esp],xmm0
- pxor xmm4,xmm4
- movdqa [32+esp],xmm0
- pxor xmm5,xmm5
- movdqa [48+esp],xmm0
- pxor xmm6,xmm6
- movdqa [64+esp],xmm0
- pxor xmm7,xmm7
- movdqa [80+esp],xmm0
+L$054xts_enc_ret:
mov esp,DWORD [116+esp]
pop edi
pop esi
@@ -1401,12 +1349,12 @@ L$_aesni_xts_decrypt_begin:
movups xmm1,[16+edx]
lea edx,[32+edx]
xorps xmm2,xmm0
-L$059enc1_loop_11:
+L$057enc1_loop_11:
db 102,15,56,220,209
dec ecx
movups xmm1,[edx]
lea edx,[16+edx]
- jnz NEAR L$059enc1_loop_11
+ jnz NEAR L$057enc1_loop_11
db 102,15,56,221,209
mov esi,DWORD [20+esp]
mov edi,DWORD [24+esp]
@@ -1435,14 +1383,14 @@ db 102,15,56,221,209
pcmpgtd xmm0,xmm1
and eax,-16
sub eax,96
- jc NEAR L$060xts_dec_short
+ jc NEAR L$058xts_dec_short
shl ecx,4
mov ebx,16
sub ebx,ecx
lea edx,[32+ecx*1+edx]
- jmp NEAR L$061xts_dec_loop6
+ jmp NEAR L$059xts_dec_loop6
align 16
-L$061xts_dec_loop6:
+L$059xts_dec_loop6:
pshufd xmm2,xmm0,19
pxor xmm0,xmm0
movdqa [esp],xmm1
@@ -1531,23 +1479,23 @@ db 102,15,56,222,249
pcmpgtd xmm0,xmm1
pxor xmm1,xmm2
sub eax,96
- jnc NEAR L$061xts_dec_loop6
+ jnc NEAR L$059xts_dec_loop6
mov ecx,DWORD [240+ebp]
mov edx,ebp
mov ebx,ecx
-L$060xts_dec_short:
+L$058xts_dec_short:
add eax,96
- jz NEAR L$062xts_dec_done6x
+ jz NEAR L$060xts_dec_done6x
movdqa xmm5,xmm1
cmp eax,32
- jb NEAR L$063xts_dec_one
+ jb NEAR L$061xts_dec_one
pshufd xmm2,xmm0,19
pxor xmm0,xmm0
paddq xmm1,xmm1
pand xmm2,xmm3
pcmpgtd xmm0,xmm1
pxor xmm1,xmm2
- je NEAR L$064xts_dec_two
+ je NEAR L$062xts_dec_two
pshufd xmm2,xmm0,19
pxor xmm0,xmm0
movdqa xmm6,xmm1
@@ -1556,7 +1504,7 @@ L$060xts_dec_short:
pcmpgtd xmm0,xmm1
pxor xmm1,xmm2
cmp eax,64
- jb NEAR L$065xts_dec_three
+ jb NEAR L$063xts_dec_three
pshufd xmm2,xmm0,19
pxor xmm0,xmm0
movdqa xmm7,xmm1
@@ -1566,7 +1514,7 @@ L$060xts_dec_short:
pxor xmm1,xmm2
movdqa [esp],xmm5
movdqa [16+esp],xmm6
- je NEAR L$066xts_dec_four
+ je NEAR L$064xts_dec_four
movdqa [32+esp],xmm7
pshufd xmm7,xmm0,19
movdqa [48+esp],xmm1
@@ -1598,9 +1546,9 @@ L$060xts_dec_short:
movups [48+edi],xmm5
movups [64+edi],xmm6
lea edi,[80+edi]
- jmp NEAR L$067xts_dec_done
+ jmp NEAR L$065xts_dec_done
align 16
-L$063xts_dec_one:
+L$061xts_dec_one:
movups xmm2,[esi]
lea esi,[16+esi]
xorps xmm2,xmm5
@@ -1608,20 +1556,20 @@ L$063xts_dec_one:
movups xmm1,[16+edx]
lea edx,[32+edx]
xorps xmm2,xmm0
-L$068dec1_loop_12:
+L$066dec1_loop_12:
db 102,15,56,222,209
dec ecx
movups xmm1,[edx]
lea edx,[16+edx]
- jnz NEAR L$068dec1_loop_12
+ jnz NEAR L$066dec1_loop_12
db 102,15,56,223,209
xorps xmm2,xmm5
movups [edi],xmm2
lea edi,[16+edi]
movdqa xmm1,xmm5
- jmp NEAR L$067xts_dec_done
+ jmp NEAR L$065xts_dec_done
align 16
-L$064xts_dec_two:
+L$062xts_dec_two:
movaps xmm6,xmm1
movups xmm2,[esi]
movups xmm3,[16+esi]
@@ -1635,9 +1583,9 @@ L$064xts_dec_two:
movups [16+edi],xmm3
lea edi,[32+edi]
movdqa xmm1,xmm6
- jmp NEAR L$067xts_dec_done
+ jmp NEAR L$065xts_dec_done
align 16
-L$065xts_dec_three:
+L$063xts_dec_three:
movaps xmm7,xmm1
movups xmm2,[esi]
movups xmm3,[16+esi]
@@ -1655,9 +1603,9 @@ L$065xts_dec_three:
movups [32+edi],xmm4
lea edi,[48+edi]
movdqa xmm1,xmm7
- jmp NEAR L$067xts_dec_done
+ jmp NEAR L$065xts_dec_done
align 16
-L$066xts_dec_four:
+L$064xts_dec_four:
movaps xmm6,xmm1
movups xmm2,[esi]
movups xmm3,[16+esi]
@@ -1679,20 +1627,20 @@ L$066xts_dec_four:
movups [48+edi],xmm5
lea edi,[64+edi]
movdqa xmm1,xmm6
- jmp NEAR L$067xts_dec_done
+ jmp NEAR L$065xts_dec_done
align 16
-L$062xts_dec_done6x:
+L$060xts_dec_done6x:
mov eax,DWORD [112+esp]
and eax,15
- jz NEAR L$069xts_dec_ret
+ jz NEAR L$067xts_dec_ret
mov DWORD [112+esp],eax
- jmp NEAR L$070xts_dec_only_one_more
+ jmp NEAR L$068xts_dec_only_one_more
align 16
-L$067xts_dec_done:
+L$065xts_dec_done:
mov eax,DWORD [112+esp]
pxor xmm0,xmm0
and eax,15
- jz NEAR L$069xts_dec_ret
+ jz NEAR L$067xts_dec_ret
pcmpgtd xmm0,xmm1
mov DWORD [112+esp],eax
pshufd xmm2,xmm0,19
@@ -1702,7 +1650,7 @@ L$067xts_dec_done:
pand xmm2,xmm3
pcmpgtd xmm0,xmm1
pxor xmm1,xmm2
-L$070xts_dec_only_one_more:
+L$068xts_dec_only_one_more:
pshufd xmm5,xmm0,19
movdqa xmm6,xmm1
paddq xmm1,xmm1
@@ -1716,16 +1664,16 @@ L$070xts_dec_only_one_more:
movups xmm1,[16+edx]
lea edx,[32+edx]
xorps xmm2,xmm0
-L$071dec1_loop_13:
+L$069dec1_loop_13:
db 102,15,56,222,209
dec ecx
movups xmm1,[edx]
lea edx,[16+edx]
- jnz NEAR L$071dec1_loop_13
+ jnz NEAR L$069dec1_loop_13
db 102,15,56,223,209
xorps xmm2,xmm5
movups [edi],xmm2
-L$072xts_dec_steal:
+L$070xts_dec_steal:
movzx ecx,BYTE [16+esi]
movzx edx,BYTE [edi]
lea esi,[1+esi]
@@ -1733,7 +1681,7 @@ L$072xts_dec_steal:
mov BYTE [16+edi],dl
lea edi,[1+edi]
sub eax,1
- jnz NEAR L$072xts_dec_steal
+ jnz NEAR L$070xts_dec_steal
sub edi,DWORD [112+esp]
mov edx,ebp
mov ecx,ebx
@@ -1743,30 +1691,16 @@ L$072xts_dec_steal:
movups xmm1,[16+edx]
lea edx,[32+edx]
xorps xmm2,xmm0
-L$073dec1_loop_14:
+L$071dec1_loop_14:
db 102,15,56,222,209
dec ecx
movups xmm1,[edx]
lea edx,[16+edx]
- jnz NEAR L$073dec1_loop_14
+ jnz NEAR L$071dec1_loop_14
db 102,15,56,223,209
xorps xmm2,xmm6
movups [edi],xmm2
-L$069xts_dec_ret:
- pxor xmm0,xmm0
- pxor xmm1,xmm1
- pxor xmm2,xmm2
- movdqa [esp],xmm0
- pxor xmm3,xmm3
- movdqa [16+esp],xmm0
- pxor xmm4,xmm4
- movdqa [32+esp],xmm0
- pxor xmm5,xmm5
- movdqa [48+esp],xmm0
- pxor xmm6,xmm6
- movdqa [64+esp],xmm0
- pxor xmm7,xmm7
- movdqa [80+esp],xmm0
+L$067xts_dec_ret:
mov esp,DWORD [116+esp]
pop edi
pop esi
@@ -1790,7 +1724,7 @@ L$_aesni_cbc_encrypt_begin:
mov edx,DWORD [32+esp]
mov ebp,DWORD [36+esp]
test eax,eax
- jz NEAR L$074cbc_abort
+ jz NEAR L$072cbc_abort
cmp DWORD [40+esp],0
xchg ebx,esp
movups xmm7,[ebp]
@@ -1798,14 +1732,14 @@ L$_aesni_cbc_encrypt_begin:
mov ebp,edx
mov DWORD [16+esp],ebx
mov ebx,ecx
- je NEAR L$075cbc_decrypt
+ je NEAR L$073cbc_decrypt
movaps xmm2,xmm7
cmp eax,16
- jb NEAR L$076cbc_enc_tail
+ jb NEAR L$074cbc_enc_tail
sub eax,16
- jmp NEAR L$077cbc_enc_loop
+ jmp NEAR L$075cbc_enc_loop
align 16
-L$077cbc_enc_loop:
+L$075cbc_enc_loop:
movups xmm7,[esi]
lea esi,[16+esi]
movups xmm0,[edx]
@@ -1813,25 +1747,24 @@ L$077cbc_enc_loop:
xorps xmm7,xmm0
lea edx,[32+edx]
xorps xmm2,xmm7
-L$078enc1_loop_15:
+L$076enc1_loop_15:
db 102,15,56,220,209
dec ecx
movups xmm1,[edx]
lea edx,[16+edx]
- jnz NEAR L$078enc1_loop_15
+ jnz NEAR L$076enc1_loop_15
db 102,15,56,221,209
mov ecx,ebx
mov edx,ebp
movups [edi],xmm2
lea edi,[16+edi]
sub eax,16
- jnc NEAR L$077cbc_enc_loop
+ jnc NEAR L$075cbc_enc_loop
add eax,16
- jnz NEAR L$076cbc_enc_tail
+ jnz NEAR L$074cbc_enc_tail
movaps xmm7,xmm2
- pxor xmm2,xmm2
- jmp NEAR L$079cbc_ret
-L$076cbc_enc_tail:
+ jmp NEAR L$077cbc_ret
+L$074cbc_enc_tail:
mov ecx,eax
dd 2767451785
mov ecx,16
@@ -1842,20 +1775,20 @@ dd 2868115081
mov ecx,ebx
mov esi,edi
mov edx,ebp
- jmp NEAR L$077cbc_enc_loop
+ jmp NEAR L$075cbc_enc_loop
align 16
-L$075cbc_decrypt:
+L$073cbc_decrypt:
cmp eax,80
- jbe NEAR L$080cbc_dec_tail
+ jbe NEAR L$078cbc_dec_tail
movaps [esp],xmm7
sub eax,80
- jmp NEAR L$081cbc_dec_loop6_enter
+ jmp NEAR L$079cbc_dec_loop6_enter
align 16
-L$082cbc_dec_loop6:
+L$080cbc_dec_loop6:
movaps [esp],xmm0
movups [edi],xmm7
lea edi,[16+edi]
-L$081cbc_dec_loop6_enter:
+L$079cbc_dec_loop6_enter:
movdqu xmm2,[esi]
movdqu xmm3,[16+esi]
movdqu xmm4,[32+esi]
@@ -1885,28 +1818,28 @@ L$081cbc_dec_loop6_enter:
movups [64+edi],xmm6
lea edi,[80+edi]
sub eax,96
- ja NEAR L$082cbc_dec_loop6
+ ja NEAR L$080cbc_dec_loop6
movaps xmm2,xmm7
movaps xmm7,xmm0
add eax,80
- jle NEAR L$083cbc_dec_clear_tail_collected
+ jle NEAR L$081cbc_dec_tail_collected
movups [edi],xmm2
lea edi,[16+edi]
-L$080cbc_dec_tail:
+L$078cbc_dec_tail:
movups xmm2,[esi]
movaps xmm6,xmm2
cmp eax,16
- jbe NEAR L$084cbc_dec_one
+ jbe NEAR L$082cbc_dec_one
movups xmm3,[16+esi]
movaps xmm5,xmm3
cmp eax,32
- jbe NEAR L$085cbc_dec_two
+ jbe NEAR L$083cbc_dec_two
movups xmm4,[32+esi]
cmp eax,48
- jbe NEAR L$086cbc_dec_three
+ jbe NEAR L$084cbc_dec_three
movups xmm5,[48+esi]
cmp eax,64
- jbe NEAR L$087cbc_dec_four
+ jbe NEAR L$085cbc_dec_four
movups xmm6,[64+esi]
movaps [esp],xmm7
movups xmm2,[esi]
@@ -1924,62 +1857,55 @@ L$080cbc_dec_tail:
xorps xmm6,xmm0
movups [edi],xmm2
movups [16+edi],xmm3
- pxor xmm3,xmm3
movups [32+edi],xmm4
- pxor xmm4,xmm4
movups [48+edi],xmm5
- pxor xmm5,xmm5
lea edi,[64+edi]
movaps xmm2,xmm6
- pxor xmm6,xmm6
sub eax,80
- jmp NEAR L$088cbc_dec_tail_collected
+ jmp NEAR L$081cbc_dec_tail_collected
align 16
-L$084cbc_dec_one:
+L$082cbc_dec_one:
movups xmm0,[edx]
movups xmm1,[16+edx]
lea edx,[32+edx]
xorps xmm2,xmm0
-L$089dec1_loop_16:
+L$086dec1_loop_16:
db 102,15,56,222,209
dec ecx
movups xmm1,[edx]
lea edx,[16+edx]
- jnz NEAR L$089dec1_loop_16
+ jnz NEAR L$086dec1_loop_16
db 102,15,56,223,209
xorps xmm2,xmm7
movaps xmm7,xmm6
sub eax,16
- jmp NEAR L$088cbc_dec_tail_collected
+ jmp NEAR L$081cbc_dec_tail_collected
align 16
-L$085cbc_dec_two:
+L$083cbc_dec_two:
call __aesni_decrypt2
xorps xmm2,xmm7
xorps xmm3,xmm6
movups [edi],xmm2
movaps xmm2,xmm3
- pxor xmm3,xmm3
lea edi,[16+edi]
movaps xmm7,xmm5
sub eax,32
- jmp NEAR L$088cbc_dec_tail_collected
+ jmp NEAR L$081cbc_dec_tail_collected
align 16
-L$086cbc_dec_three:
+L$084cbc_dec_three:
call __aesni_decrypt3
xorps xmm2,xmm7
xorps xmm3,xmm6
xorps xmm4,xmm5
movups [edi],xmm2
movaps xmm2,xmm4
- pxor xmm4,xmm4
movups [16+edi],xmm3
- pxor xmm3,xmm3
lea edi,[32+edi]
movups xmm7,[32+esi]
sub eax,48
- jmp NEAR L$088cbc_dec_tail_collected
+ jmp NEAR L$081cbc_dec_tail_collected
align 16
-L$087cbc_dec_four:
+L$085cbc_dec_four:
call __aesni_decrypt4
movups xmm1,[16+esi]
movups xmm0,[32+esi]
@@ -1989,44 +1915,28 @@ L$087cbc_dec_four:
movups [edi],xmm2
xorps xmm4,xmm1
movups [16+edi],xmm3
- pxor xmm3,xmm3
xorps xmm5,xmm0
movups [32+edi],xmm4
- pxor xmm4,xmm4
lea edi,[48+edi]
movaps xmm2,xmm5
- pxor xmm5,xmm5
sub eax,64
- jmp NEAR L$088cbc_dec_tail_collected
-align 16
-L$083cbc_dec_clear_tail_collected:
- pxor xmm3,xmm3
- pxor xmm4,xmm4
- pxor xmm5,xmm5
- pxor xmm6,xmm6
-L$088cbc_dec_tail_collected:
+L$081cbc_dec_tail_collected:
and eax,15
- jnz NEAR L$090cbc_dec_tail_partial
+ jnz NEAR L$087cbc_dec_tail_partial
movups [edi],xmm2
- pxor xmm0,xmm0
- jmp NEAR L$079cbc_ret
+ jmp NEAR L$077cbc_ret
align 16
-L$090cbc_dec_tail_partial:
+L$087cbc_dec_tail_partial:
movaps [esp],xmm2
- pxor xmm0,xmm0
mov ecx,16
mov esi,esp
sub ecx,eax
dd 2767451785
- movdqa [esp],xmm2
-L$079cbc_ret:
+L$077cbc_ret:
mov esp,DWORD [16+esp]
mov ebp,DWORD [36+esp]
- pxor xmm2,xmm2
- pxor xmm1,xmm1
movups [ebp],xmm7
- pxor xmm7,xmm7
-L$074cbc_abort:
+L$072cbc_abort:
pop edi
pop esi
pop ebx
@@ -2034,62 +1944,52 @@ L$074cbc_abort:
ret
align 16
__aesni_set_encrypt_key:
- push ebp
- push ebx
test eax,eax
- jz NEAR L$091bad_pointer
+ jz NEAR L$088bad_pointer
test edx,edx
- jz NEAR L$091bad_pointer
- call L$092pic
-L$092pic:
- pop ebx
- lea ebx,[(L$key_const-L$092pic)+ebx]
- lea ebp,[_OPENSSL_ia32cap_P]
+ jz NEAR L$088bad_pointer
movups xmm0,[eax]
xorps xmm4,xmm4
- mov ebp,DWORD [4+ebp]
lea edx,[16+edx]
- and ebp,268437504
cmp ecx,256
- je NEAR L$09314rounds
+ je NEAR L$08914rounds
cmp ecx,192
- je NEAR L$09412rounds
+ je NEAR L$09012rounds
cmp ecx,128
- jne NEAR L$095bad_keybits
+ jne NEAR L$091bad_keybits
align 16
-L$09610rounds:
- cmp ebp,268435456
- je NEAR L$09710rounds_alt
+L$09210rounds:
mov ecx,9
movups [edx-16],xmm0
db 102,15,58,223,200,1
- call L$098key_128_cold
+ call L$093key_128_cold
db 102,15,58,223,200,2
- call L$099key_128
+ call L$094key_128
db 102,15,58,223,200,4
- call L$099key_128
+ call L$094key_128
db 102,15,58,223,200,8
- call L$099key_128
+ call L$094key_128
db 102,15,58,223,200,16
- call L$099key_128
+ call L$094key_128
db 102,15,58,223,200,32
- call L$099key_128
+ call L$094key_128
db 102,15,58,223,200,64
- call L$099key_128
+ call L$094key_128
db 102,15,58,223,200,128
- call L$099key_128
+ call L$094key_128
db 102,15,58,223,200,27
- call L$099key_128
+ call L$094key_128
db 102,15,58,223,200,54
- call L$099key_128
+ call L$094key_128
movups [edx],xmm0
mov DWORD [80+edx],ecx
- jmp NEAR L$100good_key
+ xor eax,eax
+ ret
align 16
-L$099key_128:
+L$094key_128:
movups [edx],xmm0
lea edx,[16+edx]
-L$098key_128_cold:
+L$093key_128_cold:
shufps xmm4,xmm0,16
xorps xmm0,xmm4
shufps xmm4,xmm0,140
@@ -2098,91 +1998,38 @@ L$098key_128_cold:
xorps xmm0,xmm1
ret
align 16
-L$09710rounds_alt:
- movdqa xmm5,[ebx]
- mov ecx,8
- movdqa xmm4,[32+ebx]
- movdqa xmm2,xmm0
- movdqu [edx-16],xmm0
-L$101loop_key128:
-db 102,15,56,0,197
-db 102,15,56,221,196
- pslld xmm4,1
- lea edx,[16+edx]
- movdqa xmm3,xmm2
- pslldq xmm2,4
- pxor xmm3,xmm2
- pslldq xmm2,4
- pxor xmm3,xmm2
- pslldq xmm2,4
- pxor xmm2,xmm3
- pxor xmm0,xmm2
- movdqu [edx-16],xmm0
- movdqa xmm2,xmm0
- dec ecx
- jnz NEAR L$101loop_key128
- movdqa xmm4,[48+ebx]
-db 102,15,56,0,197
-db 102,15,56,221,196
- pslld xmm4,1
- movdqa xmm3,xmm2
- pslldq xmm2,4
- pxor xmm3,xmm2
- pslldq xmm2,4
- pxor xmm3,xmm2
- pslldq xmm2,4
- pxor xmm2,xmm3
- pxor xmm0,xmm2
- movdqu [edx],xmm0
- movdqa xmm2,xmm0
-db 102,15,56,0,197
-db 102,15,56,221,196
- movdqa xmm3,xmm2
- pslldq xmm2,4
- pxor xmm3,xmm2
- pslldq xmm2,4
- pxor xmm3,xmm2
- pslldq xmm2,4
- pxor xmm2,xmm3
- pxor xmm0,xmm2
- movdqu [16+edx],xmm0
- mov ecx,9
- mov DWORD [96+edx],ecx
- jmp NEAR L$100good_key
-align 16
-L$09412rounds:
+L$09012rounds:
movq xmm2,[16+eax]
- cmp ebp,268435456
- je NEAR L$10212rounds_alt
mov ecx,11
movups [edx-16],xmm0
db 102,15,58,223,202,1
- call L$103key_192a_cold
+ call L$095key_192a_cold
db 102,15,58,223,202,2
- call L$104key_192b
+ call L$096key_192b
db 102,15,58,223,202,4
- call L$105key_192a
+ call L$097key_192a
db 102,15,58,223,202,8
- call L$104key_192b
+ call L$096key_192b
db 102,15,58,223,202,16
- call L$105key_192a
+ call L$097key_192a
db 102,15,58,223,202,32
- call L$104key_192b
+ call L$096key_192b
db 102,15,58,223,202,64
- call L$105key_192a
+ call L$097key_192a
db 102,15,58,223,202,128
- call L$104key_192b
+ call L$096key_192b
movups [edx],xmm0
mov DWORD [48+edx],ecx
- jmp NEAR L$100good_key
+ xor eax,eax
+ ret
align 16
-L$105key_192a:
+L$097key_192a:
movups [edx],xmm0
lea edx,[16+edx]
align 16
-L$103key_192a_cold:
+L$095key_192a_cold:
movaps xmm5,xmm2
-L$106key_192b_warm:
+L$098key_192b_warm:
shufps xmm4,xmm0,16
movdqa xmm3,xmm2
xorps xmm0,xmm4
@@ -2196,90 +2043,56 @@ L$106key_192b_warm:
pxor xmm2,xmm3
ret
align 16
-L$104key_192b:
+L$096key_192b:
movaps xmm3,xmm0
shufps xmm5,xmm0,68
movups [edx],xmm5
shufps xmm3,xmm2,78
movups [16+edx],xmm3
lea edx,[32+edx]
- jmp NEAR L$106key_192b_warm
-align 16
-L$10212rounds_alt:
- movdqa xmm5,[16+ebx]
- movdqa xmm4,[32+ebx]
- mov ecx,8
- movdqu [edx-16],xmm0
-L$107loop_key192:
- movq [edx],xmm2
- movdqa xmm1,xmm2
-db 102,15,56,0,213
-db 102,15,56,221,212
- pslld xmm4,1
- lea edx,[24+edx]
- movdqa xmm3,xmm0
- pslldq xmm0,4
- pxor xmm3,xmm0
- pslldq xmm0,4
- pxor xmm3,xmm0
- pslldq xmm0,4
- pxor xmm0,xmm3
- pshufd xmm3,xmm0,255
- pxor xmm3,xmm1
- pslldq xmm1,4
- pxor xmm3,xmm1
- pxor xmm0,xmm2
- pxor xmm2,xmm3
- movdqu [edx-16],xmm0
- dec ecx
- jnz NEAR L$107loop_key192
- mov ecx,11
- mov DWORD [32+edx],ecx
- jmp NEAR L$100good_key
+ jmp NEAR L$098key_192b_warm
align 16
-L$09314rounds:
+L$08914rounds:
movups xmm2,[16+eax]
- lea edx,[16+edx]
- cmp ebp,268435456
- je NEAR L$10814rounds_alt
mov ecx,13
+ lea edx,[16+edx]
movups [edx-32],xmm0
movups [edx-16],xmm2
db 102,15,58,223,202,1
- call L$109key_256a_cold
+ call L$099key_256a_cold
db 102,15,58,223,200,1
- call L$110key_256b
+ call L$100key_256b
db 102,15,58,223,202,2
- call L$111key_256a
+ call L$101key_256a
db 102,15,58,223,200,2
- call L$110key_256b
+ call L$100key_256b
db 102,15,58,223,202,4
- call L$111key_256a
+ call L$101key_256a
db 102,15,58,223,200,4
- call L$110key_256b
+ call L$100key_256b
db 102,15,58,223,202,8
- call L$111key_256a
+ call L$101key_256a
db 102,15,58,223,200,8
- call L$110key_256b
+ call L$100key_256b
db 102,15,58,223,202,16
- call L$111key_256a
+ call L$101key_256a
db 102,15,58,223,200,16
- call L$110key_256b
+ call L$100key_256b
db 102,15,58,223,202,32
- call L$111key_256a
+ call L$101key_256a
db 102,15,58,223,200,32
- call L$110key_256b
+ call L$100key_256b
db 102,15,58,223,202,64
- call L$111key_256a
+ call L$101key_256a
movups [edx],xmm0
mov DWORD [16+edx],ecx
xor eax,eax
- jmp NEAR L$100good_key
+ ret
align 16
-L$111key_256a:
+L$101key_256a:
movups [edx],xmm2
lea edx,[16+edx]
-L$109key_256a_cold:
+L$099key_256a_cold:
shufps xmm4,xmm0,16
xorps xmm0,xmm4
shufps xmm4,xmm0,140
@@ -2288,7 +2101,7 @@ L$109key_256a_cold:
xorps xmm0,xmm1
ret
align 16
-L$110key_256b:
+L$100key_256b:
movups [edx],xmm0
lea edx,[16+edx]
shufps xmm4,xmm2,16
@@ -2298,70 +2111,13 @@ L$110key_256b:
shufps xmm1,xmm1,170
xorps xmm2,xmm1
ret
-align 16
-L$10814rounds_alt:
- movdqa xmm5,[ebx]
- movdqa xmm4,[32+ebx]
- mov ecx,7
- movdqu [edx-32],xmm0
- movdqa xmm1,xmm2
- movdqu [edx-16],xmm2
-L$112loop_key256:
-db 102,15,56,0,213
-db 102,15,56,221,212
- movdqa xmm3,xmm0
- pslldq xmm0,4
- pxor xmm3,xmm0
- pslldq xmm0,4
- pxor xmm3,xmm0
- pslldq xmm0,4
- pxor xmm0,xmm3
- pslld xmm4,1
- pxor xmm0,xmm2
- movdqu [edx],xmm0
- dec ecx
- jz NEAR L$113done_key256
- pshufd xmm2,xmm0,255
- pxor xmm3,xmm3
-db 102,15,56,221,211
- movdqa xmm3,xmm1
- pslldq xmm1,4
- pxor xmm3,xmm1
- pslldq xmm1,4
- pxor xmm3,xmm1
- pslldq xmm1,4
- pxor xmm1,xmm3
- pxor xmm2,xmm1
- movdqu [16+edx],xmm2
- lea edx,[32+edx]
- movdqa xmm1,xmm2
- jmp NEAR L$112loop_key256
-L$113done_key256:
- mov ecx,13
- mov DWORD [16+edx],ecx
-L$100good_key:
- pxor xmm0,xmm0
- pxor xmm1,xmm1
- pxor xmm2,xmm2
- pxor xmm3,xmm3
- pxor xmm4,xmm4
- pxor xmm5,xmm5
- xor eax,eax
- pop ebx
- pop ebp
- ret
align 4
-L$091bad_pointer:
+L$088bad_pointer:
mov eax,-1
- pop ebx
- pop ebp
ret
align 4
-L$095bad_keybits:
- pxor xmm0,xmm0
+L$091bad_keybits:
mov eax,-2
- pop ebx
- pop ebp
ret
global _aesni_set_encrypt_key
align 16
@@ -2383,7 +2139,7 @@ L$_aesni_set_decrypt_key_begin:
mov edx,DWORD [12+esp]
shl ecx,4
test eax,eax
- jnz NEAR L$114dec_key_ret
+ jnz NEAR L$102dec_key_ret
lea eax,[16+ecx*1+edx]
movups xmm0,[edx]
movups xmm1,[eax]
@@ -2391,7 +2147,7 @@ L$_aesni_set_decrypt_key_begin:
movups [edx],xmm1
lea edx,[16+edx]
lea eax,[eax-16]
-L$115dec_key_inverse:
+L$103dec_key_inverse:
movups xmm0,[edx]
movups xmm1,[eax]
db 102,15,56,219,192
@@ -2401,24 +2157,14 @@ db 102,15,56,219,201
movups [16+eax],xmm0
movups [edx-16],xmm1
cmp eax,edx
- ja NEAR L$115dec_key_inverse
+ ja NEAR L$103dec_key_inverse
movups xmm0,[edx]
db 102,15,56,219,192
movups [edx],xmm0
- pxor xmm0,xmm0
- pxor xmm1,xmm1
xor eax,eax
-L$114dec_key_ret:
+L$102dec_key_ret:
ret
-align 64
-L$key_const:
-dd 202313229,202313229,202313229,202313229
-dd 67569157,67569157,67569157,67569157
-dd 1,1,1,1
-dd 27,27,27,27
db 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
db 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83
db 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
db 115,108,46,111,114,103,62,0
-segment .bss
-common _OPENSSL_ia32cap_P 16
diff --git a/third_party/boringssl/win-x86_64/crypto/aes/aesni-x86_64.asm b/third_party/boringssl/win-x86_64/crypto/aes/aesni-x86_64.asm
index cf313d1..e1c9e0e 100644
--- a/third_party/boringssl/win-x86_64/crypto/aes/aesni-x86_64.asm
+++ b/third_party/boringssl/win-x86_64/crypto/aes/aesni-x86_64.asm
@@ -22,10 +22,7 @@ DB 102,15,56,220,209
lea r8,[16+r8]
jnz NEAR $L$oop_enc1_1
DB 102,15,56,221,209
- pxor xmm0,xmm0
- pxor xmm1,xmm1
movups XMMWORD[rdx],xmm2
- pxor xmm2,xmm2
DB 0F3h,0C3h ;repret
@@ -46,10 +43,7 @@ DB 102,15,56,222,209
lea r8,[16+r8]
jnz NEAR $L$oop_dec1_2
DB 102,15,56,223,209
- pxor xmm0,xmm0
- pxor xmm1,xmm1
movups XMMWORD[rdx],xmm2
- pxor xmm2,xmm2
DB 0F3h,0C3h ;repret
@@ -275,18 +269,21 @@ DB 102,15,56,220,217
pxor xmm6,xmm0
DB 102,15,56,220,225
pxor xmm7,xmm0
- movups xmm0,XMMWORD[rax*1+rcx]
add rax,16
+DB 102,15,56,220,233
+DB 102,15,56,220,241
+DB 102,15,56,220,249
+ movups xmm0,XMMWORD[((-16))+rax*1+rcx]
jmp NEAR $L$enc_loop6_enter
ALIGN 16
$L$enc_loop6:
DB 102,15,56,220,209
DB 102,15,56,220,217
DB 102,15,56,220,225
-$L$enc_loop6_enter:
DB 102,15,56,220,233
DB 102,15,56,220,241
DB 102,15,56,220,249
+$L$enc_loop6_enter:
movups xmm1,XMMWORD[rax*1+rcx]
add rax,32
DB 102,15,56,220,208
@@ -329,18 +326,21 @@ DB 102,15,56,222,217
pxor xmm6,xmm0
DB 102,15,56,222,225
pxor xmm7,xmm0
- movups xmm0,XMMWORD[rax*1+rcx]
add rax,16
+DB 102,15,56,222,233
+DB 102,15,56,222,241
+DB 102,15,56,222,249
+ movups xmm0,XMMWORD[((-16))+rax*1+rcx]
jmp NEAR $L$dec_loop6_enter
ALIGN 16
$L$dec_loop6:
DB 102,15,56,222,209
DB 102,15,56,222,217
DB 102,15,56,222,225
-$L$dec_loop6_enter:
DB 102,15,56,222,233
DB 102,15,56,222,241
DB 102,15,56,222,249
+$L$dec_loop6_enter:
movups xmm1,XMMWORD[rax*1+rcx]
add rax,32
DB 102,15,56,222,208
@@ -380,18 +380,23 @@ _aesni_encrypt8:
lea rcx,[32+rax*1+rcx]
neg rax
DB 102,15,56,220,209
+ add rax,16
pxor xmm7,xmm0
- pxor xmm8,xmm0
DB 102,15,56,220,217
+ pxor xmm8,xmm0
pxor xmm9,xmm0
- movups xmm0,XMMWORD[rax*1+rcx]
- add rax,16
- jmp NEAR $L$enc_loop8_inner
+DB 102,15,56,220,225
+DB 102,15,56,220,233
+DB 102,15,56,220,241
+DB 102,15,56,220,249
+DB 102,68,15,56,220,193
+DB 102,68,15,56,220,201
+ movups xmm0,XMMWORD[((-16))+rax*1+rcx]
+ jmp NEAR $L$enc_loop8_enter
ALIGN 16
$L$enc_loop8:
DB 102,15,56,220,209
DB 102,15,56,220,217
-$L$enc_loop8_inner:
DB 102,15,56,220,225
DB 102,15,56,220,233
DB 102,15,56,220,241
@@ -444,18 +449,23 @@ _aesni_decrypt8:
lea rcx,[32+rax*1+rcx]
neg rax
DB 102,15,56,222,209
+ add rax,16
pxor xmm7,xmm0
- pxor xmm8,xmm0
DB 102,15,56,222,217
+ pxor xmm8,xmm0
pxor xmm9,xmm0
- movups xmm0,XMMWORD[rax*1+rcx]
- add rax,16
- jmp NEAR $L$dec_loop8_inner
+DB 102,15,56,222,225
+DB 102,15,56,222,233
+DB 102,15,56,222,241
+DB 102,15,56,222,249
+DB 102,68,15,56,222,193
+DB 102,68,15,56,222,201
+ movups xmm0,XMMWORD[((-16))+rax*1+rcx]
+ jmp NEAR $L$dec_loop8_enter
ALIGN 16
$L$dec_loop8:
DB 102,15,56,222,209
DB 102,15,56,222,217
-$L$dec_loop8_inner:
DB 102,15,56,222,225
DB 102,15,56,222,233
DB 102,15,56,222,241
@@ -599,7 +609,6 @@ $L$ecb_enc_tail:
movups xmm7,XMMWORD[80+rdi]
je NEAR $L$ecb_enc_six
movdqu xmm8,XMMWORD[96+rdi]
- xorps xmm9,xmm9
call _aesni_encrypt8
movups XMMWORD[rsi],xmm2
movups XMMWORD[16+rsi],xmm3
@@ -713,23 +722,15 @@ $L$ecb_dec_loop8_enter:
jnc NEAR $L$ecb_dec_loop8
movups XMMWORD[rsi],xmm2
- pxor xmm2,xmm2
mov rcx,r11
movups XMMWORD[16+rsi],xmm3
- pxor xmm3,xmm3
mov eax,r10d
movups XMMWORD[32+rsi],xmm4
- pxor xmm4,xmm4
movups XMMWORD[48+rsi],xmm5
- pxor xmm5,xmm5
movups XMMWORD[64+rsi],xmm6
- pxor xmm6,xmm6
movups XMMWORD[80+rsi],xmm7
- pxor xmm7,xmm7
movups XMMWORD[96+rsi],xmm8
- pxor xmm8,xmm8
movups XMMWORD[112+rsi],xmm9
- pxor xmm9,xmm9
lea rsi,[128+rsi]
add rdx,0x80
jz NEAR $L$ecb_ret
@@ -752,23 +753,14 @@ $L$ecb_dec_tail:
je NEAR $L$ecb_dec_six
movups xmm8,XMMWORD[96+rdi]
movups xmm0,XMMWORD[rcx]
- xorps xmm9,xmm9
call _aesni_decrypt8
movups XMMWORD[rsi],xmm2
- pxor xmm2,xmm2
movups XMMWORD[16+rsi],xmm3
- pxor xmm3,xmm3
movups XMMWORD[32+rsi],xmm4
- pxor xmm4,xmm4
movups XMMWORD[48+rsi],xmm5
- pxor xmm5,xmm5
movups XMMWORD[64+rsi],xmm6
- pxor xmm6,xmm6
movups XMMWORD[80+rsi],xmm7
- pxor xmm7,xmm7
movups XMMWORD[96+rsi],xmm8
- pxor xmm8,xmm8
- pxor xmm9,xmm9
jmp NEAR $L$ecb_ret
ALIGN 16
$L$ecb_dec_one:
@@ -784,81 +776,53 @@ DB 102,15,56,222,209
jnz NEAR $L$oop_dec1_4
DB 102,15,56,223,209
movups XMMWORD[rsi],xmm2
- pxor xmm2,xmm2
jmp NEAR $L$ecb_ret
ALIGN 16
$L$ecb_dec_two:
call _aesni_decrypt2
movups XMMWORD[rsi],xmm2
- pxor xmm2,xmm2
movups XMMWORD[16+rsi],xmm3
- pxor xmm3,xmm3
jmp NEAR $L$ecb_ret
ALIGN 16
$L$ecb_dec_three:
call _aesni_decrypt3
movups XMMWORD[rsi],xmm2
- pxor xmm2,xmm2
movups XMMWORD[16+rsi],xmm3
- pxor xmm3,xmm3
movups XMMWORD[32+rsi],xmm4
- pxor xmm4,xmm4
jmp NEAR $L$ecb_ret
ALIGN 16
$L$ecb_dec_four:
call _aesni_decrypt4
movups XMMWORD[rsi],xmm2
- pxor xmm2,xmm2
movups XMMWORD[16+rsi],xmm3
- pxor xmm3,xmm3
movups XMMWORD[32+rsi],xmm4
- pxor xmm4,xmm4
movups XMMWORD[48+rsi],xmm5
- pxor xmm5,xmm5
jmp NEAR $L$ecb_ret
ALIGN 16
$L$ecb_dec_five:
xorps xmm7,xmm7
call _aesni_decrypt6
movups XMMWORD[rsi],xmm2
- pxor xmm2,xmm2
movups XMMWORD[16+rsi],xmm3
- pxor xmm3,xmm3
movups XMMWORD[32+rsi],xmm4
- pxor xmm4,xmm4
movups XMMWORD[48+rsi],xmm5
- pxor xmm5,xmm5
movups XMMWORD[64+rsi],xmm6
- pxor xmm6,xmm6
- pxor xmm7,xmm7
jmp NEAR $L$ecb_ret
ALIGN 16
$L$ecb_dec_six:
call _aesni_decrypt6
movups XMMWORD[rsi],xmm2
- pxor xmm2,xmm2
movups XMMWORD[16+rsi],xmm3
- pxor xmm3,xmm3
movups XMMWORD[32+rsi],xmm4
- pxor xmm4,xmm4
movups XMMWORD[48+rsi],xmm5
- pxor xmm5,xmm5
movups XMMWORD[64+rsi],xmm6
- pxor xmm6,xmm6
movups XMMWORD[80+rsi],xmm7
- pxor xmm7,xmm7
$L$ecb_ret:
- xorps xmm0,xmm0
- pxor xmm1,xmm1
movaps xmm6,XMMWORD[rsp]
- movaps XMMWORD[rsp],xmm0
movaps xmm7,XMMWORD[16+rsp]
- movaps XMMWORD[16+rsp],xmm0
movaps xmm8,XMMWORD[32+rsp]
- movaps XMMWORD[32+rsp],xmm0
movaps xmm9,XMMWORD[48+rsp]
- movaps XMMWORD[48+rsp],xmm0
lea rsp,[88+rsp]
$L$ecb_enc_ret:
mov rdi,QWORD[8+rsp] ;WIN64 epilogue
@@ -937,21 +901,11 @@ DB 102,15,56,0,215
lea rsi,[16+rsi]
jnz NEAR $L$ccm64_enc_outer
- pxor xmm0,xmm0
- pxor xmm1,xmm1
- pxor xmm2,xmm2
movups XMMWORD[r9],xmm3
- pxor xmm3,xmm3
- pxor xmm8,xmm8
- pxor xmm6,xmm6
movaps xmm6,XMMWORD[rsp]
- movaps XMMWORD[rsp],xmm0
movaps xmm7,XMMWORD[16+rsp]
- movaps XMMWORD[16+rsp],xmm0
movaps xmm8,XMMWORD[32+rsp]
- movaps XMMWORD[32+rsp],xmm0
movaps xmm9,XMMWORD[48+rsp]
- movaps XMMWORD[48+rsp],xmm0
lea rsp,[88+rsp]
$L$ccm64_enc_ret:
mov rdi,QWORD[8+rsp] ;WIN64 epilogue
@@ -1064,21 +1018,11 @@ DB 102,15,56,220,217
lea r11,[16+r11]
jnz NEAR $L$oop_enc1_6
DB 102,15,56,221,217
- pxor xmm0,xmm0
- pxor xmm1,xmm1
- pxor xmm2,xmm2
movups XMMWORD[r9],xmm3
- pxor xmm3,xmm3
- pxor xmm8,xmm8
- pxor xmm6,xmm6
movaps xmm6,XMMWORD[rsp]
- movaps XMMWORD[rsp],xmm0
movaps xmm7,XMMWORD[16+rsp]
- movaps XMMWORD[16+rsp],xmm0
movaps xmm8,XMMWORD[32+rsp]
- movaps XMMWORD[32+rsp],xmm0
movaps xmm9,XMMWORD[48+rsp]
- movaps XMMWORD[48+rsp],xmm0
lea rsp,[88+rsp]
$L$ccm64_dec_ret:
mov rdi,QWORD[8+rsp] ;WIN64 epilogue
@@ -1100,35 +1044,6 @@ $L$SEH_begin_aesni_ctr32_encrypt_blocks:
mov r8,QWORD[40+rsp]
- cmp rdx,1
- jne NEAR $L$ctr32_bulk
-
-
-
- movups xmm2,XMMWORD[r8]
- movups xmm3,XMMWORD[rdi]
- mov edx,DWORD[240+rcx]
- movups xmm0,XMMWORD[rcx]
- movups xmm1,XMMWORD[16+rcx]
- lea rcx,[32+rcx]
- xorps xmm2,xmm0
-$L$oop_enc1_7:
-DB 102,15,56,220,209
- dec edx
- movups xmm1,XMMWORD[rcx]
- lea rcx,[16+rcx]
- jnz NEAR $L$oop_enc1_7
-DB 102,15,56,221,209
- pxor xmm0,xmm0
- pxor xmm1,xmm1
- xorps xmm2,xmm3
- pxor xmm3,xmm3
- movups XMMWORD[rsi],xmm2
- xorps xmm2,xmm2
- jmp NEAR $L$ctr32_epilogue
-
-ALIGN 16
-$L$ctr32_bulk:
lea rax,[rsp]
push rbp
sub rsp,288
@@ -1146,8 +1061,8 @@ $L$ctr32_bulk:
$L$ctr32_body:
lea rbp,[((-8))+rax]
-
-
+ cmp rdx,1
+ je NEAR $L$ctr32_one_shortcut
movdqu xmm2,XMMWORD[r8]
movdqu xmm0,XMMWORD[rcx]
@@ -1538,14 +1453,11 @@ DB 102,69,15,56,221,202
lea rcx,[((-128))+rcx]
$L$ctr32_tail:
-
-
lea rcx,[16+rcx]
cmp rdx,4
jb NEAR $L$ctr32_loop3
je NEAR $L$ctr32_loop4
-
shl eax,4
movdqa xmm8,XMMWORD[96+rsp]
pxor xmm9,xmm9
@@ -1648,43 +1560,40 @@ DB 102,15,56,221,225
movups xmm12,XMMWORD[32+rdi]
xorps xmm4,xmm12
movups XMMWORD[32+rsi],xmm4
+ jmp NEAR $L$ctr32_done
+ALIGN 16
+$L$ctr32_one_shortcut:
+ movups xmm2,XMMWORD[r8]
+ movups xmm10,XMMWORD[rdi]
+ mov eax,DWORD[240+rcx]
+ movups xmm0,XMMWORD[rcx]
+ movups xmm1,XMMWORD[16+rcx]
+ lea rcx,[32+rcx]
+ xorps xmm2,xmm0
+$L$oop_enc1_7:
+DB 102,15,56,220,209
+ dec eax
+ movups xmm1,XMMWORD[rcx]
+ lea rcx,[16+rcx]
+ jnz NEAR $L$oop_enc1_7
+DB 102,15,56,221,209
+ xorps xmm2,xmm10
+ movups XMMWORD[rsi],xmm2
+ jmp NEAR $L$ctr32_done
+
+ALIGN 16
$L$ctr32_done:
- xorps xmm0,xmm0
- xor r11d,r11d
- pxor xmm1,xmm1
- pxor xmm2,xmm2
- pxor xmm3,xmm3
- pxor xmm4,xmm4
- pxor xmm5,xmm5
movaps xmm6,XMMWORD[((-160))+rbp]
- movaps XMMWORD[(-160)+rbp],xmm0
movaps xmm7,XMMWORD[((-144))+rbp]
- movaps XMMWORD[(-144)+rbp],xmm0
movaps xmm8,XMMWORD[((-128))+rbp]
- movaps XMMWORD[(-128)+rbp],xmm0
movaps xmm9,XMMWORD[((-112))+rbp]
- movaps XMMWORD[(-112)+rbp],xmm0
movaps xmm10,XMMWORD[((-96))+rbp]
- movaps XMMWORD[(-96)+rbp],xmm0
movaps xmm11,XMMWORD[((-80))+rbp]
- movaps XMMWORD[(-80)+rbp],xmm0
movaps xmm12,XMMWORD[((-64))+rbp]
- movaps XMMWORD[(-64)+rbp],xmm0
movaps xmm13,XMMWORD[((-48))+rbp]
- movaps XMMWORD[(-48)+rbp],xmm0
movaps xmm14,XMMWORD[((-32))+rbp]
- movaps XMMWORD[(-32)+rbp],xmm0
movaps xmm15,XMMWORD[((-16))+rbp]
- movaps XMMWORD[(-16)+rbp],xmm0
- movaps XMMWORD[rsp],xmm0
- movaps XMMWORD[16+rsp],xmm0
- movaps XMMWORD[32+rsp],xmm0
- movaps XMMWORD[48+rsp],xmm0
- movaps XMMWORD[64+rsp],xmm0
- movaps XMMWORD[80+rsp],xmm0
- movaps XMMWORD[96+rsp],xmm0
- movaps XMMWORD[112+rsp],xmm0
lea rsp,[rbp]
pop rbp
$L$ctr32_epilogue:
@@ -1980,7 +1889,6 @@ DB 102,15,56,221,124,36,80
shr eax,4
$L$xts_enc_short:
-
mov r10d,eax
pxor xmm10,xmm0
add rdx,16*6
@@ -2009,7 +1917,6 @@ $L$xts_enc_short:
pxor xmm4,xmm12
pxor xmm5,xmm13
pxor xmm6,xmm14
- pxor xmm7,xmm7
call _aesni_encrypt6
@@ -2152,39 +2059,16 @@ DB 102,15,56,221,209
movups XMMWORD[(-16)+rsi],xmm2
$L$xts_enc_ret:
- xorps xmm0,xmm0
- pxor xmm1,xmm1
- pxor xmm2,xmm2
- pxor xmm3,xmm3
- pxor xmm4,xmm4
- pxor xmm5,xmm5
movaps xmm6,XMMWORD[((-160))+rbp]
- movaps XMMWORD[(-160)+rbp],xmm0
movaps xmm7,XMMWORD[((-144))+rbp]
- movaps XMMWORD[(-144)+rbp],xmm0
movaps xmm8,XMMWORD[((-128))+rbp]
- movaps XMMWORD[(-128)+rbp],xmm0
movaps xmm9,XMMWORD[((-112))+rbp]
- movaps XMMWORD[(-112)+rbp],xmm0
movaps xmm10,XMMWORD[((-96))+rbp]
- movaps XMMWORD[(-96)+rbp],xmm0
movaps xmm11,XMMWORD[((-80))+rbp]
- movaps XMMWORD[(-80)+rbp],xmm0
movaps xmm12,XMMWORD[((-64))+rbp]
- movaps XMMWORD[(-64)+rbp],xmm0
movaps xmm13,XMMWORD[((-48))+rbp]
- movaps XMMWORD[(-48)+rbp],xmm0
movaps xmm14,XMMWORD[((-32))+rbp]
- movaps XMMWORD[(-32)+rbp],xmm0
movaps xmm15,XMMWORD[((-16))+rbp]
- movaps XMMWORD[(-16)+rbp],xmm0
- movaps XMMWORD[rsp],xmm0
- movaps XMMWORD[16+rsp],xmm0
- movaps XMMWORD[32+rsp],xmm0
- movaps XMMWORD[48+rsp],xmm0
- movaps XMMWORD[64+rsp],xmm0
- movaps XMMWORD[80+rsp],xmm0
- movaps XMMWORD[96+rsp],xmm0
lea rsp,[rbp]
pop rbp
$L$xts_enc_epilogue:
@@ -2486,7 +2370,6 @@ DB 102,15,56,223,124,36,80
shr eax,4
$L$xts_dec_short:
-
mov r10d,eax
pxor xmm10,xmm0
pxor xmm11,xmm0
@@ -2689,39 +2572,16 @@ DB 102,15,56,223,209
movups XMMWORD[rsi],xmm2
$L$xts_dec_ret:
- xorps xmm0,xmm0
- pxor xmm1,xmm1
- pxor xmm2,xmm2
- pxor xmm3,xmm3
- pxor xmm4,xmm4
- pxor xmm5,xmm5
movaps xmm6,XMMWORD[((-160))+rbp]
- movaps XMMWORD[(-160)+rbp],xmm0
movaps xmm7,XMMWORD[((-144))+rbp]
- movaps XMMWORD[(-144)+rbp],xmm0
movaps xmm8,XMMWORD[((-128))+rbp]
- movaps XMMWORD[(-128)+rbp],xmm0
movaps xmm9,XMMWORD[((-112))+rbp]
- movaps XMMWORD[(-112)+rbp],xmm0
movaps xmm10,XMMWORD[((-96))+rbp]
- movaps XMMWORD[(-96)+rbp],xmm0
movaps xmm11,XMMWORD[((-80))+rbp]
- movaps XMMWORD[(-80)+rbp],xmm0
movaps xmm12,XMMWORD[((-64))+rbp]
- movaps XMMWORD[(-64)+rbp],xmm0
movaps xmm13,XMMWORD[((-48))+rbp]
- movaps XMMWORD[(-48)+rbp],xmm0
movaps xmm14,XMMWORD[((-32))+rbp]
- movaps XMMWORD[(-32)+rbp],xmm0
movaps xmm15,XMMWORD[((-16))+rbp]
- movaps XMMWORD[(-16)+rbp],xmm0
- movaps XMMWORD[rsp],xmm0
- movaps XMMWORD[16+rsp],xmm0
- movaps XMMWORD[32+rsp],xmm0
- movaps XMMWORD[48+rsp],xmm0
- movaps XMMWORD[64+rsp],xmm0
- movaps XMMWORD[80+rsp],xmm0
- movaps XMMWORD[96+rsp],xmm0
lea rsp,[rbp]
pop rbp
$L$xts_dec_epilogue:
@@ -2784,11 +2644,7 @@ DB 102,15,56,221,209
jnc NEAR $L$cbc_enc_loop
add rdx,16
jnz NEAR $L$cbc_enc_tail
- pxor xmm0,xmm0
- pxor xmm1,xmm1
movups XMMWORD[r8],xmm2
- pxor xmm2,xmm2
- pxor xmm3,xmm3
jmp NEAR $L$cbc_ret
$L$cbc_enc_tail:
@@ -2808,35 +2664,6 @@ $L$cbc_enc_tail:
ALIGN 16
$L$cbc_decrypt:
- cmp rdx,16
- jne NEAR $L$cbc_decrypt_bulk
-
-
-
- movdqu xmm2,XMMWORD[rdi]
- movdqu xmm3,XMMWORD[r8]
- movdqa xmm4,xmm2
- movups xmm0,XMMWORD[rcx]
- movups xmm1,XMMWORD[16+rcx]
- lea rcx,[32+rcx]
- xorps xmm2,xmm0
-$L$oop_dec1_16:
-DB 102,15,56,222,209
- dec r10d
- movups xmm1,XMMWORD[rcx]
- lea rcx,[16+rcx]
- jnz NEAR $L$oop_dec1_16
-DB 102,15,56,223,209
- pxor xmm0,xmm0
- pxor xmm1,xmm1
- movdqu XMMWORD[r8],xmm4
- xorps xmm2,xmm3
- pxor xmm3,xmm3
- movups XMMWORD[rsi],xmm2
- pxor xmm2,xmm2
- jmp NEAR $L$cbc_ret
-ALIGN 16
-$L$cbc_decrypt_bulk:
lea rax,[rsp]
push rbp
sub rsp,176
@@ -3084,7 +2911,7 @@ DB 102,69,15,56,223,202
movaps xmm2,xmm9
lea rcx,[((-112))+rcx]
add rdx,0x70
- jle NEAR $L$cbc_dec_clear_tail_collected
+ jle NEAR $L$cbc_dec_tail_collected
movups XMMWORD[rsi],xmm9
lea rsi,[16+rsi]
cmp rdx,0x50
@@ -3103,19 +2930,14 @@ $L$cbc_dec_six_or_seven:
movdqu XMMWORD[rsi],xmm2
pxor xmm4,xmm12
movdqu XMMWORD[16+rsi],xmm3
- pxor xmm3,xmm3
pxor xmm5,xmm13
movdqu XMMWORD[32+rsi],xmm4
- pxor xmm4,xmm4
pxor xmm6,xmm14
movdqu XMMWORD[48+rsi],xmm5
- pxor xmm5,xmm5
pxor xmm7,xmm15
movdqu XMMWORD[64+rsi],xmm6
- pxor xmm6,xmm6
lea rsi,[80+rsi]
movdqa xmm2,xmm7
- pxor xmm7,xmm7
jmp NEAR $L$cbc_dec_tail_collected
ALIGN 16
@@ -3130,23 +2952,16 @@ $L$cbc_dec_seven:
movdqu XMMWORD[rsi],xmm2
pxor xmm4,xmm12
movdqu XMMWORD[16+rsi],xmm3
- pxor xmm3,xmm3
pxor xmm5,xmm13
movdqu XMMWORD[32+rsi],xmm4
- pxor xmm4,xmm4
pxor xmm6,xmm14
movdqu XMMWORD[48+rsi],xmm5
- pxor xmm5,xmm5
pxor xmm7,xmm15
movdqu XMMWORD[64+rsi],xmm6
- pxor xmm6,xmm6
pxor xmm8,xmm9
movdqu XMMWORD[80+rsi],xmm7
- pxor xmm7,xmm7
lea rsi,[96+rsi]
movdqa xmm2,xmm8
- pxor xmm8,xmm8
- pxor xmm9,xmm9
jmp NEAR $L$cbc_dec_tail_collected
ALIGN 16
@@ -3190,7 +3005,7 @@ $L$cbc_dec_loop6_enter:
movdqa xmm2,xmm7
add rdx,0x50
- jle NEAR $L$cbc_dec_clear_tail_collected
+ jle NEAR $L$cbc_dec_tail_collected
movups XMMWORD[rsi],xmm7
lea rsi,[16+rsi]
@@ -3225,17 +3040,12 @@ $L$cbc_dec_tail:
movdqu XMMWORD[rsi],xmm2
pxor xmm4,xmm12
movdqu XMMWORD[16+rsi],xmm3
- pxor xmm3,xmm3
pxor xmm5,xmm13
movdqu XMMWORD[32+rsi],xmm4
- pxor xmm4,xmm4
pxor xmm6,xmm14
movdqu XMMWORD[48+rsi],xmm5
- pxor xmm5,xmm5
lea rsi,[64+rsi]
movdqa xmm2,xmm6
- pxor xmm6,xmm6
- pxor xmm7,xmm7
sub rdx,0x10
jmp NEAR $L$cbc_dec_tail_collected
@@ -3246,12 +3056,12 @@ $L$cbc_dec_one:
movups xmm1,XMMWORD[16+rcx]
lea rcx,[32+rcx]
xorps xmm2,xmm0
-$L$oop_dec1_17:
+$L$oop_dec1_16:
DB 102,15,56,222,209
dec eax
movups xmm1,XMMWORD[rcx]
lea rcx,[16+rcx]
- jnz NEAR $L$oop_dec1_17
+ jnz NEAR $L$oop_dec1_16
DB 102,15,56,223,209
xorps xmm2,xmm10
movaps xmm10,xmm11
@@ -3265,7 +3075,6 @@ $L$cbc_dec_two:
pxor xmm3,xmm11
movdqu XMMWORD[rsi],xmm2
movdqa xmm2,xmm3
- pxor xmm3,xmm3
lea rsi,[16+rsi]
jmp NEAR $L$cbc_dec_tail_collected
ALIGN 16
@@ -3278,9 +3087,7 @@ $L$cbc_dec_three:
movdqu XMMWORD[rsi],xmm2
pxor xmm4,xmm12
movdqu XMMWORD[16+rsi],xmm3
- pxor xmm3,xmm3
movdqa xmm2,xmm4
- pxor xmm4,xmm4
lea rsi,[32+rsi]
jmp NEAR $L$cbc_dec_tail_collected
ALIGN 16
@@ -3293,61 +3100,39 @@ $L$cbc_dec_four:
movdqu XMMWORD[rsi],xmm2
pxor xmm4,xmm12
movdqu XMMWORD[16+rsi],xmm3
- pxor xmm3,xmm3
pxor xmm5,xmm13
movdqu XMMWORD[32+rsi],xmm4
- pxor xmm4,xmm4
movdqa xmm2,xmm5
- pxor xmm5,xmm5
lea rsi,[48+rsi]
jmp NEAR $L$cbc_dec_tail_collected
ALIGN 16
-$L$cbc_dec_clear_tail_collected:
- pxor xmm3,xmm3
- pxor xmm4,xmm4
- pxor xmm5,xmm5
$L$cbc_dec_tail_collected:
movups XMMWORD[r8],xmm10
and rdx,15
jnz NEAR $L$cbc_dec_tail_partial
movups XMMWORD[rsi],xmm2
- pxor xmm2,xmm2
jmp NEAR $L$cbc_dec_ret
ALIGN 16
$L$cbc_dec_tail_partial:
movaps XMMWORD[rsp],xmm2
- pxor xmm2,xmm2
mov rcx,16
mov rdi,rsi
sub rcx,rdx
lea rsi,[rsp]
DD 0x9066A4F3
- movdqa XMMWORD[rsp],xmm2
$L$cbc_dec_ret:
- xorps xmm0,xmm0
- pxor xmm1,xmm1
movaps xmm6,XMMWORD[16+rsp]
- movaps XMMWORD[16+rsp],xmm0
movaps xmm7,XMMWORD[32+rsp]
- movaps XMMWORD[32+rsp],xmm0
movaps xmm8,XMMWORD[48+rsp]
- movaps XMMWORD[48+rsp],xmm0
movaps xmm9,XMMWORD[64+rsp]
- movaps XMMWORD[64+rsp],xmm0
movaps xmm10,XMMWORD[80+rsp]
- movaps XMMWORD[80+rsp],xmm0
movaps xmm11,XMMWORD[96+rsp]
- movaps XMMWORD[96+rsp],xmm0
movaps xmm12,XMMWORD[112+rsp]
- movaps XMMWORD[112+rsp],xmm0
movaps xmm13,XMMWORD[128+rsp]
- movaps XMMWORD[128+rsp],xmm0
movaps xmm14,XMMWORD[144+rsp]
- movaps XMMWORD[144+rsp],xmm0
movaps xmm15,XMMWORD[160+rsp]
- movaps XMMWORD[160+rsp],xmm0
lea rsp,[rbp]
pop rbp
$L$cbc_ret:
@@ -3387,9 +3172,7 @@ DB 102,15,56,219,201
movups xmm0,XMMWORD[r8]
DB 102,15,56,219,192
- pxor xmm1,xmm1
movups XMMWORD[rcx],xmm0
- pxor xmm0,xmm0
$L$dec_key_ret:
add rsp,8
DB 0F3h,0C3h ;repret
@@ -3407,10 +3190,8 @@ DB 0x48,0x83,0xEC,0x08
test r8,r8
jz NEAR $L$enc_key_ret
- mov r10d,268437504
movups xmm0,XMMWORD[rcx]
xorps xmm4,xmm4
- and r10d,DWORD[((OPENSSL_ia32cap_P+4))]
lea rax,[16+r8]
cmp edx,256
je NEAR $L$14rounds
@@ -3421,9 +3202,6 @@ DB 0x48,0x83,0xEC,0x08
$L$10rounds:
mov edx,9
- cmp r10d,268435456
- je NEAR $L$10rounds_alt
-
movups XMMWORD[r8],xmm0
DB 102,15,58,223,200,1
call $L$key_expansion_128_cold
@@ -3451,79 +3229,9 @@ DB 102,15,58,223,200,54
jmp NEAR $L$enc_key_ret
ALIGN 16
-$L$10rounds_alt:
- movdqa xmm5,XMMWORD[$L$key_rotate]
- mov r10d,8
- movdqa xmm4,XMMWORD[$L$key_rcon1]
- movdqa xmm2,xmm0
- movdqu XMMWORD[r8],xmm0
- jmp NEAR $L$oop_key128
-
-ALIGN 16
-$L$oop_key128:
-DB 102,15,56,0,197
-DB 102,15,56,221,196
- pslld xmm4,1
- lea rax,[16+rax]
-
- movdqa xmm3,xmm2
- pslldq xmm2,4
- pxor xmm3,xmm2
- pslldq xmm2,4
- pxor xmm3,xmm2
- pslldq xmm2,4
- pxor xmm2,xmm3
-
- pxor xmm0,xmm2
- movdqu XMMWORD[(-16)+rax],xmm0
- movdqa xmm2,xmm0
-
- dec r10d
- jnz NEAR $L$oop_key128
-
- movdqa xmm4,XMMWORD[$L$key_rcon1b]
-
-DB 102,15,56,0,197
-DB 102,15,56,221,196
- pslld xmm4,1
-
- movdqa xmm3,xmm2
- pslldq xmm2,4
- pxor xmm3,xmm2
- pslldq xmm2,4
- pxor xmm3,xmm2
- pslldq xmm2,4
- pxor xmm2,xmm3
-
- pxor xmm0,xmm2
- movdqu XMMWORD[rax],xmm0
-
- movdqa xmm2,xmm0
-DB 102,15,56,0,197
-DB 102,15,56,221,196
-
- movdqa xmm3,xmm2
- pslldq xmm2,4
- pxor xmm3,xmm2
- pslldq xmm2,4
- pxor xmm3,xmm2
- pslldq xmm2,4
- pxor xmm2,xmm3
-
- pxor xmm0,xmm2
- movdqu XMMWORD[16+rax],xmm0
-
- mov DWORD[96+rax],edx
- xor eax,eax
- jmp NEAR $L$enc_key_ret
-
-ALIGN 16
$L$12rounds:
movq xmm2,QWORD[16+rcx]
mov edx,11
- cmp r10d,268435456
- je NEAR $L$12rounds_alt
-
movups XMMWORD[r8],xmm0
DB 102,15,58,223,202,1
call $L$key_expansion_192a_cold
@@ -3547,54 +3255,10 @@ DB 102,15,58,223,202,128
jmp NEAR $L$enc_key_ret
ALIGN 16
-$L$12rounds_alt:
- movdqa xmm5,XMMWORD[$L$key_rotate192]
- movdqa xmm4,XMMWORD[$L$key_rcon1]
- mov r10d,8
- movdqu XMMWORD[r8],xmm0
- jmp NEAR $L$oop_key192
-
-ALIGN 16
-$L$oop_key192:
- movq QWORD[rax],xmm2
- movdqa xmm1,xmm2
-DB 102,15,56,0,213
-DB 102,15,56,221,212
- pslld xmm4,1
- lea rax,[24+rax]
-
- movdqa xmm3,xmm0
- pslldq xmm0,4
- pxor xmm3,xmm0
- pslldq xmm0,4
- pxor xmm3,xmm0
- pslldq xmm0,4
- pxor xmm0,xmm3
-
- pshufd xmm3,xmm0,0xff
- pxor xmm3,xmm1
- pslldq xmm1,4
- pxor xmm3,xmm1
-
- pxor xmm0,xmm2
- pxor xmm2,xmm3
- movdqu XMMWORD[(-16)+rax],xmm0
-
- dec r10d
- jnz NEAR $L$oop_key192
-
- mov DWORD[32+rax],edx
- xor eax,eax
- jmp NEAR $L$enc_key_ret
-
-ALIGN 16
$L$14rounds:
movups xmm2,XMMWORD[16+rcx]
mov edx,13
lea rax,[16+rax]
- cmp r10d,268435456
- je NEAR $L$14rounds_alt
-
movups XMMWORD[r8],xmm0
movups XMMWORD[16+r8],xmm2
DB 102,15,58,223,202,1
@@ -3629,69 +3293,9 @@ DB 102,15,58,223,202,64
jmp NEAR $L$enc_key_ret
ALIGN 16
-$L$14rounds_alt:
- movdqa xmm5,XMMWORD[$L$key_rotate]
- movdqa xmm4,XMMWORD[$L$key_rcon1]
- mov r10d,7
- movdqu XMMWORD[r8],xmm0
- movdqa xmm1,xmm2
- movdqu XMMWORD[16+r8],xmm2
- jmp NEAR $L$oop_key256
-
-ALIGN 16
-$L$oop_key256:
-DB 102,15,56,0,213
-DB 102,15,56,221,212
-
- movdqa xmm3,xmm0
- pslldq xmm0,4
- pxor xmm3,xmm0
- pslldq xmm0,4
- pxor xmm3,xmm0
- pslldq xmm0,4
- pxor xmm0,xmm3
- pslld xmm4,1
-
- pxor xmm0,xmm2
- movdqu XMMWORD[rax],xmm0
-
- dec r10d
- jz NEAR $L$done_key256
-
- pshufd xmm2,xmm0,0xff
- pxor xmm3,xmm3
-DB 102,15,56,221,211
-
- movdqa xmm3,xmm1
- pslldq xmm1,4
- pxor xmm3,xmm1
- pslldq xmm1,4
- pxor xmm3,xmm1
- pslldq xmm1,4
- pxor xmm1,xmm3
-
- pxor xmm2,xmm1
- movdqu XMMWORD[16+rax],xmm2
- lea rax,[32+rax]
- movdqa xmm1,xmm2
-
- jmp NEAR $L$oop_key256
-
-$L$done_key256:
- mov DWORD[16+rax],edx
- xor eax,eax
- jmp NEAR $L$enc_key_ret
-
-ALIGN 16
$L$bad_keybits:
mov rax,-2
$L$enc_key_ret:
- pxor xmm0,xmm0
- pxor xmm1,xmm1
- pxor xmm2,xmm2
- pxor xmm3,xmm3
- pxor xmm4,xmm4
- pxor xmm5,xmm5
add rsp,8
DB 0F3h,0C3h ;repret
$L$SEH_end_set_encrypt_key:
@@ -3777,14 +3381,6 @@ $L$xts_magic:
DD 0x87,0,1,0
$L$increment1:
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
-$L$key_rotate:
- DD 0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d
-$L$key_rotate192:
- DD 0x04070605,0x04070605,0x04070605,0x04070605
-$L$key_rcon1:
- DD 1,1,1,1
-$L$key_rcon1b:
- DD 0x1b,0x1b,0x1b,0x1b
DB 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
DB 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83
@@ -3890,7 +3486,7 @@ cbc_se_handler:
mov rax,QWORD[152+r8]
mov rbx,QWORD[248+r8]
- lea r10,[$L$cbc_decrypt_bulk]
+ lea r10,[$L$cbc_decrypt]
cmp rbx,r10
jb NEAR $L$common_seh_tail