)]}'
{
  "commit": "bc74bc22b7a59b4b7202bb29af09cafe7af79fac",
  "tree": "0a8af021d5dbc25f6de05db345e1fea5b451a28b",
  "parents": [
    "bca23447ad4667a7b79973569ab5d8d905d211ac"
  ],
  "author": {
    "name": "Nicolas Capens",
    "email": "capn@google.com",
    "time": "Wed Jan 26 10:47:00 2022 -0500"
  },
  "committer": {
    "name": "Nicolas Capens",
    "email": "nicolascapens@google.com",
    "time": "Thu Jan 27 16:02:47 2022 +0000"
  },
  "message": "Implement MulAdd() which may perform FMA\n\nrr::MulAdd(x, y, z) computes `x * y + z`, which may be fused into one\n\u0027fused\u0027 operation to produce a higher-precision result. AVX2 features\nFMA instructions which perform a Fused Multiply-Add using just one\nmicro-operation and reducing latency compared to separate multiplication\nand addition.\n\nThis corresponds directly with LLVM\u0027s fmuladd intrinsic:\nhttps://llvm.org/docs/LangRef.html#llvm-fmuladd-intrinsic\nThe backend detects whether FMA is available and more efficient.\n\nSubzero currently does not support AVX2 so it always implements MulAdd()\nas just `a * b + c`.\n\nBug: b/214591655\nChange-Id: Ia5e0d0adc0933e212a2f3f289c2cb75ecdea37cc\nReviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/61848\nKokoro-Result: kokoro \u003cnoreply+kokoro@google.com\u003e\nTested-by: Nicolas Capens \u003cnicolascapens@google.com\u003e\nReviewed-by: Alexis Hétu \u003csugoi@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9cadafc4a8e8928cbe71224452bc576771c750d0",
      "old_mode": 33188,
      "old_path": "src/Reactor/LLVMReactor.cpp",
      "new_id": "b2faab98a6cd73b38f5df724a5a2f39f0dee38eb",
      "new_mode": 33188,
      "new_path": "src/Reactor/LLVMReactor.cpp"
    },
    {
      "type": "modify",
      "old_id": "3b3d08b65aa7dcde808605512d74cd80d57b64ef",
      "old_mode": 33188,
      "old_path": "src/Reactor/Reactor.hpp",
      "new_id": "f31304c665ea4a7c0004880491c1b573553f9c14",
      "new_mode": 33188,
      "new_path": "src/Reactor/Reactor.hpp"
    },
    {
      "type": "modify",
      "old_id": "cfd3d3a3d1a2ab33cb0bbe08cca4b2cd475e056b",
      "old_mode": 33188,
      "old_path": "src/Reactor/SubzeroReactor.cpp",
      "new_id": "5c2e7e7af32f64c2408275f6c6d8d76baabee3ad",
      "new_mode": 33188,
      "new_path": "src/Reactor/SubzeroReactor.cpp"
    }
  ]
}
