)]}'
{
  "commit": "3b6e1be4391d96e81cee022f77f7bab85d51cf4e",
  "tree": "ea3ac43c00b15fed50fa3f0ee9f4be0900bdb7da",
  "parents": [
    "e869bfb4141ece8bc180fc4faeeaa07c4e87f53f"
  ],
  "author": {
    "name": "Eric Biggers",
    "email": "ebiggers@google.com",
    "time": "Tue Dec 17 03:54:56 2024 +0000"
  },
  "committer": {
    "name": "Boringssl LUCI CQ",
    "email": "boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Mon Jan 06 14:14:57 2025 -0800"
  },
  "message": "Add VAES + AVX2 optimized AES-GCM\n\nAdd a VAES-optimized AES-GCM implementation that is optimized for AMD\nZen 3 processors, using AVX2 instead of AVX512 / AVX10.  With AVX2 only\n16 vector registers are available and some instructions are missing,\nwhich is inconvenient and makes the code not easily sharable with the\nAVX512 / AVX10 version.  However, using VAES still gives a significant\nperformance improvement, about 80-85% on long messages as shown by the\nfollowing tables which show the change in AES-256-GCM throughput in MB/s\non a Zen 3 \"Milan\" processor for various message lengths in bytes.\n\nEncryption:\n\n            | 16384 |  4096 |  4095 |  1420 |   512 |   500 |\n    --------+-------+-------+-------+-------+-------+-------+\n    Before  |  3955 |  3749 |  3597 |  3054 |  2411 |  2038 |\n    After   |  7128 |  6631 |  5975 |  4788 |  3807 |  2676 |\n\n            |   300 |   200 |    64 |    63 |    16 |\n    --------+-------+-------+-------+-------+-------+\n    Before  |  1757 |  1405 |   856 |   602 |   356 |\n    After   |  1885 |  1430 |   940 |   593 |   381 |\n\nDecryption:\n\n            | 16384 |  4096 |  4095 |  1420 |   512 |   500 |\n    --------+-------+-------+-------+-------+-------+-------+\n    Before  |  3962 |  3774 |  3593 |  2978 |  2510 |  1998 |\n    After   |  7378 |  6836 |  6282 |  4826 |  3868 |  2753 |\n\n            |   300 |   200 |    64 |    63 |    16 |\n    --------+-------+-------+-------+-------+-------+\n    Before  |  1742 |  1428 |   856 |   535 |   383 |\n    After   |  1940 |  1534 |   940 |   573 |   383 |\n\nChange-Id: I583dd6b48b81ab3c6df51bfe8729366cad500537\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/74368\nReviewed-by: David Benjamin \u003cdavidben@google.com\u003e\nCommit-Queue: David Benjamin \u003cdavidben@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4d3fb4ecef9d27ed52a1a3d483e87b3876c3d34d",
      "old_mode": 33188,
      "old_path": "build.json",
      "new_id": "71489c9dfa7dc599b0ce0c17a963cece32b59557",
      "new_mode": 33188,
      "new_path": "build.json"
    },
    {
      "type": "modify",
      "old_id": "912a993c26eaa8da46556196f432e300a2bae831",
      "old_mode": 33188,
      "old_path": "crypto/crypto.cc",
      "new_id": "ac0928f0eb2dd4b7fa8e2a686609f35986339b8b",
      "new_mode": 33188,
      "new_path": "crypto/crypto.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6ea956bc8e1a9ff672a7d730ebf845252be7fc31",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/modes/asm/aes-gcm-avx2-x86_64.pl"
    },
    {
      "type": "modify",
      "old_id": "d3c829a9dc9f5c8fe58df7450cdd9b5876648bff",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/modes/gcm.cc.inc",
      "new_id": "e77c52589a1ba280896b846d5bd5a1548dafb906",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/modes/gcm.cc.inc"
    },
    {
      "type": "modify",
      "old_id": "fafde9c7f2a51a6527e425cffe2fc28e5a6e13e9",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/modes/gcm_test.cc",
      "new_id": "d19552626949b79b09c090495212c267167bf16e",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/modes/gcm_test.cc"
    },
    {
      "type": "modify",
      "old_id": "a1f7bf577744445e31fc58eb0df6257430809300",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/modes/internal.h",
      "new_id": "f041bf8edd50fff4a3a86784f48f8063ac04904e",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/modes/internal.h"
    },
    {
      "type": "modify",
      "old_id": "8c8d1d10d26df2f1d8e1a124158ff9ed34f86414",
      "old_mode": 33188,
      "old_path": "crypto/impl_dispatch_test.cc",
      "new_id": "bfd004521ba68616f484b33f7d09514aabf31979",
      "new_mode": 33188,
      "new_path": "crypto/impl_dispatch_test.cc"
    },
    {
      "type": "modify",
      "old_id": "d50e755baef76e456741ab0ab8a092f98bf85956",
      "old_mode": 33188,
      "old_path": "crypto/internal.h",
      "new_id": "62273c6b26b8d39b520f3cd15391db2cb5862664",
      "new_mode": 33188,
      "new_path": "crypto/internal.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e401e660424d5d5fc9d26398d65730fd2123cd5e",
      "new_mode": 33188,
      "new_path": "gen/bcm/aes-gcm-avx2-x86_64-apple.S"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b7816cfc5ae318c6f5afff7d8a88cbed87d21d33",
      "new_mode": 33188,
      "new_path": "gen/bcm/aes-gcm-avx2-x86_64-linux.S"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "92015534baedd4598f32e95e696582a7bbf567a3",
      "new_mode": 33188,
      "new_path": "gen/bcm/aes-gcm-avx2-x86_64-win.asm"
    },
    {
      "type": "modify",
      "old_id": "f91b49e00d9bb7ca1c04252268ea5eb2b792e88d",
      "old_mode": 33188,
      "old_path": "gen/sources.bzl",
      "new_id": "5af0dd23f55da7ced48cfa8a1209a652dfeb10c3",
      "new_mode": 33188,
      "new_path": "gen/sources.bzl"
    },
    {
      "type": "modify",
      "old_id": "369a9e658e39e67d3c14f1ef2af86566e47ac397",
      "old_mode": 33188,
      "old_path": "gen/sources.cmake",
      "new_id": "bbbb9c244900eb9c3af31f33ec78ec7312dd1204",
      "new_mode": 33188,
      "new_path": "gen/sources.cmake"
    },
    {
      "type": "modify",
      "old_id": "d9862d97a935889c9d3f596e8a0bb90559839649",
      "old_mode": 33188,
      "old_path": "gen/sources.gni",
      "new_id": "b5c3d54223ea28d6f066807c874d49ccfa038fc5",
      "new_mode": 33188,
      "new_path": "gen/sources.gni"
    },
    {
      "type": "modify",
      "old_id": "1b482e1bd448227d21b34ae52d8d194bdbdb1305",
      "old_mode": 33188,
      "old_path": "gen/sources.json",
      "new_id": "c4604c83654cc0318c1a0ca3995b971662b470af",
      "new_mode": 33188,
      "new_path": "gen/sources.json"
    }
  ]
}
