)]}'
{
  "commit": "d0c1ea928c5c4a99689ff3dcbf1ca578d56b80a3",
  "tree": "275979f5c79e0266e1867ac05c41ec8fe7bf9fec",
  "parents": [
    "f226852265e6eca9c0f0633cc25dc5e1f30b2c55"
  ],
  "author": {
    "name": "Luke Lau",
    "email": "luke@igalia.com",
    "time": "Mon Jun 30 10:40:12 2025 +0100"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Jun 30 10:40:12 2025 +0100"
  },
  "message": "[InstCombine] Pull unary shuffles through fneg/fabs (#144933)\n\nThis canonicalizes fneg/fabs (shuffle X, poison, mask) -\u003e shuffle\n(fneg/fabs X), posion, mask\n\nThis undoes part of b331a7ebc1e02f9939d1a4a1509e7eb6cdda3d38 and\na8f13dbdeb31be37ee15b5febb7cc2137bbece67, but keeps the binary shuffle\ncase i.e. shuffle fneg, fneg, mask.\n\nBy pulling out the shuffle we bring it inline with the same\ncanonicalisation we perform on binary ops and intrinsics, which the\noriginal commit acknowledges it goes in the opposite direction.\n\nHowever nowadays VectorCombine is more powerful and can do more\noptimisations when the shuffle is pulled out, so I think we should\nrevisit this. In particular we get more shuffles folded and can perform\nscalarization.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "418302d1edb3f94b2c59abe4b85682398bbcd3bc",
      "old_mode": 33188,
      "old_path": "llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp",
      "new_id": "e721f0cd5f9e3db5c780d54b6c86d7d6713a48d7",
      "new_mode": 33188,
      "new_path": "llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp"
    },
    {
      "type": "modify",
      "old_id": "b6ed1dc4331d23787c498816d37f075042243799",
      "old_mode": 33188,
      "old_path": "llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp",
      "new_id": "e33d111167c04f52409b9b9ab0e77d798bf717a1",
      "new_mode": 33188,
      "new_path": "llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp"
    },
    {
      "type": "modify",
      "old_id": "f946c3856948b0c7a388da8dbb9fa572f2742831",
      "old_mode": 33188,
      "old_path": "llvm/lib/Transforms/InstCombine/InstCombineVectorOps.cpp",
      "new_id": "a746a5229fb9a743814de4a7d8c110b9c237dcc1",
      "new_mode": 33188,
      "new_path": "llvm/lib/Transforms/InstCombine/InstCombineVectorOps.cpp"
    },
    {
      "type": "modify",
      "old_id": "331de12ddd33978311a1352a5e81347d599d395e",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/InstCombine/matrix-multiplication-negation.ll",
      "new_id": "c2663d8638932f97b322af9c018723dcd4d50d0c",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/InstCombine/matrix-multiplication-negation.ll"
    },
    {
      "type": "modify",
      "old_id": "9aa050e8cd5003bbe4ec42b00aaffc49d3a45d47",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/InstCombine/vec_shuffle-inseltpoison.ll",
      "new_id": "0a9c71dba7947d5dc6586c7fdda9e0d943e341ee",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/InstCombine/vec_shuffle-inseltpoison.ll"
    },
    {
      "type": "modify",
      "old_id": "83919e743d384b378c48d8943ed13f6cfe45983a",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/InstCombine/vec_shuffle.ll",
      "new_id": "003eddf7f121bff1e87e0b8028769cde905d290c",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/InstCombine/vec_shuffle.ll"
    },
    {
      "type": "modify",
      "old_id": "3e2c305dbed65e301cc280edd6f24ec2bb1adeb9",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/SLPVectorizer/X86/alternate-cast-inseltpoison.ll",
      "new_id": "6c73a9fdce851fc891a837e46d04f7ce2b3d68e4",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/SLPVectorizer/X86/alternate-cast-inseltpoison.ll"
    },
    {
      "type": "modify",
      "old_id": "880523d6474acf77055b803bcac65e79ea46674d",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/SLPVectorizer/X86/alternate-cast.ll",
      "new_id": "225843613165a7746790dddb383b636c824b7c02",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/SLPVectorizer/X86/alternate-cast.ll"
    }
  ]
}
