)]}'
{
  "commit": "e90f463db5c2d28ae0d65e2ceccfaa03d4ea7c53",
  "tree": "e4037a290b2955b380210f1479b05ef14ed56bdc",
  "parents": [
    "7328b74dceed9764b9195e42f1e6f08f04727157"
  ],
  "author": {
    "name": "Alexey Bataev",
    "email": "a.bataev@outlook.com",
    "time": "Thu Apr 16 12:56:44 2026 -0400"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Apr 16 12:56:44 2026 -0400"
  },
  "message": "[SLP] Normalize copyable operand order via majority voting\n\nWhen building operands for entries with copyable elements, non-copyable\nlanes of commutative ops may have inconsistent operand order (e.g. some\nlanes have load,add while others have add,load). This prevents\nVLOperands::reorder() from grouping consecutive loads on one side,\ndegrading downstream vectorization.\nAdd majority-voting normalization during buildOperands: track the\n(ValueID, ValueID) pair frequency across non-copyable lanes and swap\nany lane whose operand types are the exact inverse of the most common\npattern. This makes operand order consistent, enabling better load\ngrouping.\nThis is part 1 of #189181.\n\nReviewers: RKSimon, hiraditya\n\nPull Request: https://github.com/llvm/llvm-project/pull/191631",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "385e1a795b05780056e85ec2c865be7af3914bc4",
      "old_mode": 33188,
      "old_path": "llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp",
      "new_id": "fd981afcaf5811890dfc46aacd8fe7833e631f76",
      "new_mode": 33188,
      "new_path": "llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp"
    },
    {
      "type": "modify",
      "old_id": "54e5405e21c49330572acc65e4832dfe80e95d9d",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/SLPVectorizer/X86/bottom-to-top-reorder.ll",
      "new_id": "f303b79778c05d4fff3b67ac71ca8969ad67db37",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/SLPVectorizer/X86/bottom-to-top-reorder.ll"
    },
    {
      "type": "modify",
      "old_id": "44588dfd8ffe47bcd4660fa59ab55c66d8c361b2",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/SLPVectorizer/X86/copyable_reorder.ll",
      "new_id": "b432627e6726c763be4e108cb5b9c66ac47fba4e",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/SLPVectorizer/X86/copyable_reorder.ll"
    },
    {
      "type": "modify",
      "old_id": "278f2c3735da234ebffe1dff1bc73a86dde0c976",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/SLPVectorizer/X86/operand-reorder-with-copyables.ll",
      "new_id": "22bca2072636a3c91932fd2d4589e3d2c2443642",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/SLPVectorizer/X86/operand-reorder-with-copyables.ll"
    },
    {
      "type": "modify",
      "old_id": "830c7755fc53a4987326e1ba106d5e478b7cfb9d",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/SLPVectorizer/X86/reused-last-instruction-in-split-node.ll",
      "new_id": "49164e59621fbce52dff26b89a8afac88b6f92a4",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/SLPVectorizer/X86/reused-last-instruction-in-split-node.ll"
    }
  ]
}
