)]}'
{
  "commit": "23ed9d3852bbc738bebeaa0fe4a0782f91d7873c",
  "tree": "fbc790441cbb2a515d3ec65747bc7eba4b4d6376",
  "parents": [
    "761c3ed03c80e1dd8806bc114c26226fa5aeec62"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Thu Jun 08 16:00:32 2023 -0400"
  },
  "committer": {
    "name": "Boringssl LUCI CQ",
    "email": "boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Thu Jun 08 21:58:02 2023 +0000"
  },
  "message": "Add target attributes to curve25519_64_adx.h\n\n__builtin_ia32_addcarryx_u64 is, strictly speaking, an ADX intrinsic.\nGCC and newer Clang seem to actually implement it without ADX, but\nClang 7 and older will actually try to generate ADX code with it. But\nsince the caller is not marked target(\"adx\"), this fails to build.\n\nManually add ADX and BMI2 target attributes to all these functions. The\ncompiler should be free to use those instructions as these functions all\ncall into an ADX+BMI2 assembly function anyway. (Though it doesn\u0027t do\nmuch with this.)\n\nNote we cannot just annotate fiat_addcarryx_u64. Clang and GCC won\u0027t\ninline across incompatible targets, so if we tag fiat_addcarryx_u64, we\nneed to tag the callers up the chain until we\u0027re willing to stop\ninlining.\n\nChange-Id: I855bb88fea666d92997984836e664292d90df5be\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/60612\nReviewed-by: Adam Langley \u003cagl@google.com\u003e\nCommit-Queue: Adam Langley \u003cagl@google.com\u003e\nAuto-Submit: David Benjamin \u003cdavidben@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "33b697b9370bdb1c8da95f6b9aabab3b82ca7609",
      "old_mode": 33188,
      "old_path": "third_party/fiat/curve25519_64_adx.h",
      "new_id": "f50f5b83775f585139f6208c4480ba45fab7a915",
      "new_mode": 33188,
      "new_path": "third_party/fiat/curve25519_64_adx.h"
    }
  ]
}
