)]}'
{
  "commit": "a972758d6e10df761631daf1f33a2ef2a17cb699",
  "tree": "778ccf7467ec8fd61d94b0e4b1b61b7546a91668",
  "parents": [
    "79d0e565b0013c80c45769065c15b26058057262"
  ],
  "author": {
    "name": "Nicolas Capens",
    "email": "capn@google.com",
    "time": "Wed Nov 28 17:33:24 2018 -0500"
  },
  "committer": {
    "name": "Nicolas Capens",
    "email": "nicolascapens@google.com",
    "time": "Thu Nov 29 01:44:34 2018 +0000"
  },
  "message": "Work around Subzero constant folding limitation.\n\nThe Subzero JIT only supports constants in the second operand of\narithmetic operations, not the first. It assumes constant folding\nalready took place (true for NaCl which takes LLVM IR as input).\nReactor has constant folding as part of the static C++ compilation,\nbut the Optimizer may substitute the first operand for a constant\n(i.e. constant propagation).\n\nAddressing it in the Optimizer by not performing the substitution\nis not trivial because we\u0027d have to check each use. And it would\ncost run-time performance. Ideally we\u0027d have a pass for\nlegalization/optimization which performs constant folding.\n\nFor now, avoid hitting \u0027unreachable\u0027 code in Subzero by multiplying\nconstants at the Reactor level.\n\nFixes regression caused by https://swiftshader-review.googlesource.com/22910\n\nBug chromium:904265\nBug swiftshader:14\n\nChange-Id: Ifdc72ac997ad5d71c1f7006259f54f3d715cb613\nReviewed-on: https://swiftshader-review.googlesource.com/c/22930\nTested-by: Nicolas Capens \u003cnicolascapens@google.com\u003e\nReviewed-by: Nicolas Capens \u003cnicolascapens@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5b5df4532e28db14ded94acffdc4ea94253c38f5",
      "old_mode": 33188,
      "old_path": "src/Pipeline/PixelProgram.cpp",
      "new_id": "4ebe3e06e132151ccf13c8fd5e39ed89f6dc3770",
      "new_mode": 33188,
      "new_path": "src/Pipeline/PixelProgram.cpp"
    },
    {
      "type": "modify",
      "old_id": "3ad21565f57438572f79e1270b10308badb7ff83",
      "old_mode": 33188,
      "old_path": "src/Pipeline/VertexProgram.cpp",
      "new_id": "e5241f3cff7ea5e58a50aaa89a971da0570028e9",
      "new_mode": 33188,
      "new_path": "src/Pipeline/VertexProgram.cpp"
    },
    {
      "type": "modify",
      "old_id": "06ece40ebd6763e946364111a79b9df228aac325",
      "old_mode": 33188,
      "old_path": "src/Shader/PixelProgram.cpp",
      "new_id": "671b0ef50b185fea7cf3422a272eb983e3246c11",
      "new_mode": 33188,
      "new_path": "src/Shader/PixelProgram.cpp"
    },
    {
      "type": "modify",
      "old_id": "a74a37fe0db6019b6094f9a1af8686952e865ca8",
      "old_mode": 33188,
      "old_path": "src/Shader/VertexProgram.cpp",
      "new_id": "bde7531af4362d8b0b5ad979e0a4f32cb1bf6bfa",
      "new_mode": 33188,
      "new_path": "src/Shader/VertexProgram.cpp"
    }
  ]
}
