)]}'
{
  "commit": "cf44c6429335d03ebe546bd86ecc1d8f805bede5",
  "tree": "9995b5dc23aff1d3ecba4b1b95341dbe1b4e0b8d",
  "parents": [
    "3c7d22421d28c924f98c4f6f9911065a65adc7a8"
  ],
  "author": {
    "name": "Rudolf Polzer",
    "email": "rpolzer@google.com",
    "time": "Mon Aug 31 01:58:03 2026 -0700"
  },
  "committer": {
    "name": "boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Mon Aug 31 09:37:24 2026 -0700"
  },
  "message": "Leave intermediates partially reduced in ML-KEM NTT\n\nThis ports a074f282d026a0ebbed7c9efef5a0cf63f72338d\u0027s change to ML-DSA.\n\nChanges relative to the ML-DSA changes:\n\n- Barrett reduction needed to be adjusted from 24 to 32 bits so it can\n  successfully reduce any uint32_t to 0..2*kPrime range.\n- NTT using partial reduction uses intermediates of up to 15*kPrime,\n  which fits in uint16_t.\n- INTT using partial reduction uses intermediates of up to 128*kPrime,\n  which required storing intermediates in an uint32_t array. This wasn\u0027t\n  a problem in ML-DSA as it already stores vectors of uint32_t to begin\n  with.\n\nSaves about 4.9% to 8.1% for TLS ML-KEM operations (most savings being\nin Encap and Decap, namely 11.0% to 14.7%) on aarch64 Apple M1 Pro:\n\nDid 27910 BM_SpeedMLKEM768KeyGenDecap/threads:1 operations (39989.3 ops/sec) [+4.9%]\nDid 48780 BM_SpeedMLKEM768ParseEncap/threads:1 operations (69751.4 ops/sec) [+7.6%]\nDid 19862 BM_SpeedMLKEM1024KeyGenDecap/threads:1 operations (28153.9 ops/sec) [+5.1%]\nDid 33890 BM_SpeedMLKEM1024ParseEncap/threads:1 operations (48063.6 ops/sec) [+8.1%]\nDid 46596 BM_SpeedMLKEM768KeyGenOnly/threads:1 operations (66675.0 ops/sec) [+2.9%]\nDid 45743 BM_SpeedMLKEM768PrivateKeyFromSeedOnly/threads:1 operations (65436.1 ops/sec) [+1.9%]\nDid 68136 BM_SpeedMLKEM768DecapOnly/threads:1 operations (96674.0 ops/sec) [+11.0%]\nDid 85036 BM_SpeedMLKEM768ParseOnly/threads:1 operations (120954.2 ops/sec) [+2.7%]\nDid 105067 BM_SpeedMLKEM768EncapOnly/threads:1 operations (150126.4 ops/sec) [+14.4%]\nDid 30992 BM_SpeedMLKEM1024KeyGenOnly/threads:1 operations (44467.0 ops/sec) [+3.2%]\nDid 30577 BM_SpeedMLKEM1024PrivateKeyFromSeedOnly/threads:1 operations (43805.5 ops/sec) [+2.9%]\nDid 50684 BM_SpeedMLKEM1024DecapOnly/threads:1 operations (73954.1 ops/sec) [+14.7%]\nDid 54923 BM_SpeedMLKEM1024ParseOnly/threads:1 operations (77869.7 ops/sec) [+2.6%]\nDid 82865 BM_SpeedMLKEM1024EncapOnly/threads:1 operations (118470.5 ops/sec) [+14.1%]\n\nMinor improvements (2.9% to 4.5% but only for parse/encap) on AMD EPYC 7B13:\n\nDid 12436 BM_SpeedMLKEM768KeyGenDecap/threads:1 operations (17751.4 ops/sec) [+0.0%]\nDid 22079 BM_SpeedMLKEM768ParseEncap/threads:1 operations (31509.8 ops/sec) [+2.9%]\nDid 8851 BM_SpeedMLKEM1024KeyGenDecap/threads:1 operations (12692.4 ops/sec) [-0.2%]\nDid 15821 BM_SpeedMLKEM1024ParseEncap/threads:1 operations (22667.0 ops/sec) [+4.5%]\nDid 23994 BM_SpeedMLKEM768KeyGenOnly/threads:1 operations (34374.9 ops/sec) [-1.9%]\nDid 23451 BM_SpeedMLKEM768PrivateKeyFromSeedOnly/threads:1 operations (33470.7 ops/sec) [-1.7%]\nDid 24538 BM_SpeedMLKEM768DecapOnly/threads:1 operations (35050.9 ops/sec) [+1.9%]\nDid 50112 BM_SpeedMLKEM768ParseOnly/threads:1 operations (71421.1 ops/sec) [+1.1%]\nDid 36402 BM_SpeedMLKEM768EncapOnly/threads:1 operations (52087.7 ops/sec) [+4.9%]\nDid 16656 BM_SpeedMLKEM1024KeyGenOnly/threads:1 operations (23778.1 ops/sec) [-0.7%]\nDid 16274 BM_SpeedMLKEM1024PrivateKeyFromSeedOnly/threads:1 operations (23304.1 ops/sec) [-0.5%]\nDid 18824 BM_SpeedMLKEM1024DecapOnly/threads:1 operations (26908.8 ops/sec) [+3.0%]\nDid 33258 BM_SpeedMLKEM1024ParseOnly/threads:1 operations (47471.2 ops/sec) [+1.0%]\nDid 28276 BM_SpeedMLKEM1024EncapOnly/threads:1 operations (40380.6 ops/sec) [+7.4%]\n\nBug: 503700354\nChange-Id: Idd4b6e8986253288e09e40b8ffbf3adf6a6a6964\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/101967\nAuto-Submit: Rudolf Polzer \u003crpolzer@google.com\u003e\nReviewed-by: David Benjamin \u003cdavidben@google.com\u003e\nCommit-Queue: David Benjamin \u003cdavidben@google.com\u003e\nPresubmit-BoringSSL-Verified: boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cboringssl-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f0ef6339a29b9badc1b79f55466a9b63af0fb676",
      "old_mode": 33188,
      "old_path": "crypto/fipsmodule/mlkem/mlkem.cc.inc",
      "new_id": "13382e3141da4b9e3a204c9d49b3a34b678c3956",
      "new_mode": 33188,
      "new_path": "crypto/fipsmodule/mlkem/mlkem.cc.inc"
    }
  ]
}
