)]}'
{
  "commit": "d8beaa340640f8742b81721cc756309f69ecd579",
  "tree": "2648865cbedc9c56ef9e2b7bdeba4b02c9577eca",
  "parents": [
    "b803ed04706c772335abce3fb8b2c1cc43ca2cd4"
  ],
  "author": {
    "name": "Eric Biggers",
    "email": "ebiggers@google.com",
    "time": "Mon Mar 10 10:27:59 2025 -0700"
  },
  "committer": {
    "name": "Boringssl LUCI CQ",
    "email": "boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Mon Mar 10 15:04:25 2025 -0700"
  },
  "message": "Fix missing vzeroupper in gcm_ghash_vpclmulqdq_avx2() for len\u003d16\n\ngcm_ghash_vpclmulqdq_avx2() executes vzeroupper only when len \u003e\u003d 32, as\nit was supposed to use only xmm registers for len \u003d\u003d 16.  But actually\nit was writing to two ymm registers unconditionally for $BSWAP_MASK and\n$GFPOLY.  Therefore, there could be a slow-down in later code using\nlegacy SSE instructions, in the (probably rare) case where\ngcm_ghash_vpclmulqdq_avx2() was called with len\u003d16 *and* wasn\u0027t followed\nby a function that does vzeroupper, e.g. aes_gcm_enc_update_vaes_avx2().\n\n(The Windows xmm register restore epilogue of\ngcm_ghash_vpclmulqdq_avx2() itself does use legacy SSE instructions, so\nprobably was slowed down by this, but that\u0027s just 8 instructions.)\n\nFix this by updating gcm_ghash_vpclmulqdq_avx2() to correctly use only\nxmm registers when len\u003d16.  This makes it match the similar code in\naes-gcm-avx10-x86_64.pl, which does do it correctly, more closely.\n\nAlso, make both functions just execute vzeroupper unconditionally, so\nthat it won\u0027t be missed again.  It\u0027s actually only 1 cycle on the CPUs\nthis code runs on, and it no longer seems worth executing conditionally.\n\nChange-Id: I975cd5b526e5cdae1a567f4085c2484552bf6bea\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/77227\nReviewed-by: David Benjamin \u003cdavidben@google.com\u003e\nCommit-Queue: David Benjamin \u003cdavidben@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e8cf3be7828698767f6971f1de1bb82a7c28ee85",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/aes/asm/aes-gcm-avx10-x86_64.pl",
      "new_id": "2f35323bb8cc0fcdb7cc70bf49388741074d1670",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/aes/asm/aes-gcm-avx10-x86_64.pl"
    },
    {
      "type": "modify",
      "old_id": "ebbd0dd119fdcbfb56115b94a1625c9a37ee8253",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/aes/asm/aes-gcm-avx2-x86_64.pl",
      "new_id": "deec30952021ac5ea63682c8e194ea3d12702964",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/aes/asm/aes-gcm-avx2-x86_64.pl"
    },
    {
      "type": "modify",
      "old_id": "a7ec87e43f40952142ac2ff809b531a45e885c23",
      "old_mode": 33188,
      "old_path": "gen/bcm/aes-gcm-avx10-x86_64-apple.S",
      "new_id": "54091294caa8de5dba7f6e668529e34238aac013",
      "new_mode": 33188,
      "new_path": "gen/bcm/aes-gcm-avx10-x86_64-apple.S"
    },
    {
      "type": "modify",
      "old_id": "0ffc7c7619a0f40896fe677f1f0baefad4c8853d",
      "old_mode": 33188,
      "old_path": "gen/bcm/aes-gcm-avx10-x86_64-linux.S",
      "new_id": "c319b72177171b31f4f22e4a3367605309a25d18",
      "new_mode": 33188,
      "new_path": "gen/bcm/aes-gcm-avx10-x86_64-linux.S"
    },
    {
      "type": "modify",
      "old_id": "051a53072fb6f56c91786b3da0d3b0edfcab0ea4",
      "old_mode": 33188,
      "old_path": "gen/bcm/aes-gcm-avx10-x86_64-win.asm",
      "new_id": "f2073e7dd5c9f1ab2f7f2f5d11ef14344852a687",
      "new_mode": 33188,
      "new_path": "gen/bcm/aes-gcm-avx10-x86_64-win.asm"
    },
    {
      "type": "modify",
      "old_id": "d896f2a6e69b39f285defbce2fee143287d5adb7",
      "old_mode": 33188,
      "old_path": "gen/bcm/aes-gcm-avx2-x86_64-apple.S",
      "new_id": "431c816de65c7a4df8bd7f968b02a03f3c79f626",
      "new_mode": 33188,
      "new_path": "gen/bcm/aes-gcm-avx2-x86_64-apple.S"
    },
    {
      "type": "modify",
      "old_id": "583f02fc529300e614d74995a0a904777cb13040",
      "old_mode": 33188,
      "old_path": "gen/bcm/aes-gcm-avx2-x86_64-linux.S",
      "new_id": "a27a8042c21f74ec623d9badf8690e5e97053ee4",
      "new_mode": 33188,
      "new_path": "gen/bcm/aes-gcm-avx2-x86_64-linux.S"
    },
    {
      "type": "modify",
      "old_id": "00e2a2bf82a8bd44d2d8e53d80f38106e8c077d7",
      "old_mode": 33188,
      "old_path": "gen/bcm/aes-gcm-avx2-x86_64-win.asm",
      "new_id": "aec14b3a077ad7190f15e3a86f490a5703e5aa00",
      "new_mode": 33188,
      "new_path": "gen/bcm/aes-gcm-avx2-x86_64-win.asm"
    }
  ]
}
