)]}'
{
  "commit": "2ff8ed77e69c82ab7883369c1477bd3157c1d13c",
  "tree": "e2c27ad156facc1a6e5d32028c301cc7556da80e",
  "parents": [
    "07d5e0d550985db270e65131add93f8c5fda54dd"
  ],
  "author": {
    "name": "AbdallahRashed",
    "email": "63146988+AbdallahRashed@users.noreply.github.com",
    "time": "Thu Jul 09 18:31:34 2026 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Jul 09 17:31:34 2026 +0100"
  },
  "message": "[VectorCombine] Handle widening/narrowing bitcasts in foldShuffleToIdentity (#187870)\n\nTrack lane indices through vector bitcasts that change element count in\nfoldShuffleToIdentity. Widening bitcasts (e.g. \u003c2 x i32\u003e -\u003e \u003c4 x i16\u003e)\ncompress R consecutive destination lanes into one source lane, while\nnarrowing bitcasts (e.g. \u003c4 x i16\u003e -\u003e \u003c2 x i32\u003e) expand each destination\nlane into R source lanes.\n\nAlso fix identity check, splat mask, and destination type construction\nto use Item.size() instead of Ty-\u003egetNumElements(), since the Item\nvector changes size when passing through element-count-changing\nbitcasts.\n\nFixes #96884",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4f9412f1643982d2b94aa23f1551cdb1c6aca2eb",
      "old_mode": 33188,
      "old_path": "llvm/lib/Transforms/Vectorize/VectorCombine.cpp",
      "new_id": "8648125222e2a30a2684545d56f3c0a921eb74db",
      "new_mode": 33188,
      "new_path": "llvm/lib/Transforms/Vectorize/VectorCombine.cpp"
    },
    {
      "type": "modify",
      "old_id": "7b690341fb8055a691dbdae49008eef868d5bea8",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/PhaseOrdering/X86/pr67803.ll",
      "new_id": "ddbca9c961b1d1b6b43dd73418cb667d2d741e63",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/PhaseOrdering/X86/pr67803.ll"
    },
    {
      "type": "modify",
      "old_id": "1503a1b51d25650412a05f8bdc9103764c192dc7",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/VectorCombine/AArch64/combine-shuffle-ext.ll",
      "new_id": "455c17b60a478572d8c44c89f4670ccd9dfb1b6b",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/VectorCombine/AArch64/combine-shuffle-ext.ll"
    },
    {
      "type": "modify",
      "old_id": "50b52c2016f41babdfd7086e2a030684eedaaf4c",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/VectorCombine/AArch64/shuffletoidentity.ll",
      "new_id": "ab1cd99174399ec7517fc2f9030d0b1b820e093b",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/VectorCombine/AArch64/shuffletoidentity.ll"
    },
    {
      "type": "modify",
      "old_id": "4c70438b2d6e4e067ba6cd5fbb6c611a1ba92463",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/VectorCombine/X86/shuffle-inseltpoison.ll",
      "new_id": "6e099fe22b73505444a0621b9390712141c63951",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/VectorCombine/X86/shuffle-inseltpoison.ll"
    },
    {
      "type": "modify",
      "old_id": "83e088aaa4e27c4fa40d60d4726bb1b6ff4a793c",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/VectorCombine/X86/shuffle.ll",
      "new_id": "eccc8cdcc6d9104bbe5406c6927cc73e51ad571a",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/VectorCombine/X86/shuffle.ll"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ba145ecf02cb1f39cc3a6f4fcf293441caec5161",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/VectorCombine/X86/shuffletoidentity-bitcast.ll"
    }
  ]
}
