)]}'
{
  "commit": "d5f3a9e82fc6735eff5733f51b892d776f4a84eb",
  "tree": "ac9e839e0bc970005b65547cc0a63749edcb8685",
  "parents": [
    "4b6d950d8921d6dd5365de0797fcc97302b9561b"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Tue Apr 25 18:01:14 2023 -0400"
  },
  "committer": {
    "name": "Boringssl LUCI CQ",
    "email": "boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Tue Apr 25 23:07:53 2023 +0000"
  },
  "message": "Squeeze a block at a time when computing the matrix in Kyber\n\nWe were currently squeezing 3 bytes at a time. And because kyber.c and\nkeccak.c are separate files, we\u0027ve got an optimization barrier, at least\nin non-LTO builds, at a very inconvenient place.\n\nInstead, extract the full 168 bytes (SHAKE-128 rate) at a time. This is\nconveniently a multiple of three, so we don\u0027t need to worry about\npartial coefficients. We\u0027re still doing a copy due to the Keccak\nabstraction, but it should extend cleanly to either LTO or a different\nabstraction to read from the state directly. Even without that, it\u0027s a\nsignificant perf win.\n\nBenchmarks on an M1:\n\nBefore:\nDid 87390 Kyber generate + decap operations in 4001590us (21838.8 ops/sec)\nDid 119000 Kyber parse + encap operations in 4009460us (29679.8 ops/sec)\n\nAfter:\nDid 96747 Kyber generate + decap operations in 4003687us (24164.5 ops/sec) [+10.6%]\nDid 152000 Kyber parse + encap operations in 4018360us (37826.4 ops/sec) [+27.4%]\n\nChange-Id: Iada393edf0c634b7410a34374fb90242a392a9d3\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/59265\nCommit-Queue: Adam Langley \u003cagl@google.com\u003e\nReviewed-by: Adam Langley \u003cagl@google.com\u003e\nAuto-Submit: David Benjamin \u003cdavidben@google.com\u003e\nCommit-Queue: David Benjamin \u003cdavidben@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f2ac30bd314acb93e76e81bef9d69279a25d10e3",
      "old_mode": 33188,
      "old_path": "crypto/kyber/kyber.c",
      "new_id": "010d9d4c7a53e9913fbb9d1ac132c62d7197b4d9",
      "new_mode": 33188,
      "new_path": "crypto/kyber/kyber.c"
    }
  ]
}
