)]}'
{
  "commit": "149c76538ef830f5213579b77ee67bcf18f24bb2",
  "tree": "1dc19fd29c8f0136a84654aa18d5d9d2a167bb90",
  "parents": [
    "ca8c01cce22c0618a990e1ab2d7618d6f9420792"
  ],
  "author": {
    "name": "Mel Chen",
    "email": "mel.chen@sifive.com",
    "time": "Fri Jan 23 15:29:56 2026 +0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri Jan 23 07:29:56 2026 +0000"
  },
  "message": "[LV] Separate runtime check cost from total overhead in profitability check (#176754)\n\nIn isOutsideLoopWorkProfitable function, there are two places where only\nthe runtime check cost (RtC) should be used, but incorrectly included\nthe costs of middle blocks and early-exit blocks.\n1. VectorizeMemoryCheckThreshold comparison for interleaving-only\n2. Minimum trip count that bounds runtime check overhead, i.e. MinTC2\ncalculation\nThis results in an overly conservative minimum profitable trip count.\n\nThis patch separates the runtime check cost from the total overhead\ncost, and uses only RtC for VectorizeMemoryCheckThreshold comparison and\nthe MinTC2 calculation.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "28cdc57577229108a27382d23e46316e1d064b6e",
      "old_mode": 33188,
      "old_path": "llvm/lib/Transforms/Vectorize/LoopVectorize.cpp",
      "new_id": "21df45d0e647b67f8cd7caaf7429cffc11a0422e",
      "new_mode": 33188,
      "new_path": "llvm/lib/Transforms/Vectorize/LoopVectorize.cpp"
    },
    {
      "type": "modify",
      "old_id": "80d7e02478376ca7cf3e45f5845aeb9222dbf2ed",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/AArch64/conditional-scalar-assignment.ll",
      "new_id": "aa31b0ff2bb1a7ae0999d7065dc584189b0c584a",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/AArch64/conditional-scalar-assignment.ll"
    },
    {
      "type": "modify",
      "old_id": "3f9a17591a717a916676dc36539e9d20df6a15ed",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/AArch64/early_exit_costs.ll",
      "new_id": "01320424d431b439b32187cd97ceb01bc0980761",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/AArch64/early_exit_costs.ll"
    },
    {
      "type": "modify",
      "old_id": "22e37c4c8751732c38d8641fe7b26de019d146cd",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/AArch64/induction-costs.ll",
      "new_id": "0f51c21176dc91606e6052161d81f48220977994",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/AArch64/induction-costs.ll"
    },
    {
      "type": "modify",
      "old_id": "2a2fbb56c52597ecf002ec6015700ff84b75dd2d",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/AArch64/scalable-avoid-scalarization.ll",
      "new_id": "7382ce2ce789231a7592a83c2efb6196bd257c72",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/AArch64/scalable-avoid-scalarization.ll"
    },
    {
      "type": "modify",
      "old_id": "cb94cecf61d30e3b89c2a3f9d0a3697c3a3c3807",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/X86/conditional-scalar-assignment.ll",
      "new_id": "3d0905081e2a5fa762ad56d35b0dd7ce8eb44c2e",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/X86/conditional-scalar-assignment.ll"
    },
    {
      "type": "modify",
      "old_id": "c4704143b0a5159e434657ffae0f6e4b69a20ee4",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/PhaseOrdering/AArch64/std-find.ll",
      "new_id": "5941eb6fa804649a5e2ebd30d82f09413b250d62",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/PhaseOrdering/AArch64/std-find.ll"
    }
  ]
}
