)]}'
{
  "commit": "b7bd84ff2a30e08e7f1bd2b36db5f8ec9ba300ee",
  "tree": "1fe63c35e3f7c0e4bc961cf2e9de8170de83ec92",
  "parents": [
    "80cd6102a79c02763034fbf1b6a1473930b1d4ab"
  ],
  "author": {
    "name": "Luke Lau",
    "email": "luke@igalia.com",
    "time": "Tue Sep 29 11:37:41 2026 +0100"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Sep 29 11:37:41 2026 +0100"
  },
  "message": "[VPlan] Fix find last reductions not using frozen condition in select (#223962)\n\nA find last reduction is something like:\n\n    (select c[n], x[n], (select c[n-1], x[n-1], (select ...)))\n\nSo even if previous iterations had poison for c[x], the top-level select\nblocks it.\n\nMaskSelect uses the non-frozen Cond, and that in turn is fed into\nVPInstruction::ExtractLastActive, which in turn gets expanded to\nvector.reduce.umax, which returns poison if any of the lanes were\npoison.\n\nSo in the case e.g. c[n] \u003d 1, c[n-1] \u003d poison and VF\u003d2, the scalar loop\nreturns x[n] whilst vector loop returns poison.\n\nWe\u0027re also introducing multiple uses of Cond which isn\u0027t sound for\nundef, so for these reasons we need to use the frozen Cond.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8f462e937b00f15101dac0ae8ab49e60073f2dc4",
      "old_mode": 33188,
      "old_path": "llvm/lib/Transforms/Vectorize/VPlanConstruction.cpp",
      "new_id": "1d591ebedc33abb9250c8ebaedf7b17423ebc9e5",
      "new_mode": 33188,
      "new_path": "llvm/lib/Transforms/Vectorize/VPlanConstruction.cpp"
    },
    {
      "type": "modify",
      "old_id": "4515d331feb3c0fcaa738c3a1b2178511838f47c",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/AArch64/conditional-scalar-assignment-fold-tail.ll",
      "new_id": "4af15b5b8f006a60a47a0924773c3810a2418867",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/AArch64/conditional-scalar-assignment-fold-tail.ll"
    },
    {
      "type": "modify",
      "old_id": "d197d727eae66182b8b6cb9e9f18cd283f1b8268",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/AArch64/conditional-scalar-assignment.ll",
      "new_id": "ecb7fff77c9605912be6e73d1f15d87f1bbe4a38",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/AArch64/conditional-scalar-assignment.ll"
    },
    {
      "type": "modify",
      "old_id": "71d3eb602144e5ad679f9715d330ead18ad6732f",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/AArch64/findlast-epilogue-loop.ll",
      "new_id": "3a8f7b92e11c90492ced7fe43a63af08d38364a8",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/AArch64/findlast-epilogue-loop.ll"
    },
    {
      "type": "modify",
      "old_id": "54b0d14eb22d1eda535ad2add3c9a03f168f02b8",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/AArch64/sve-select-cmp.ll",
      "new_id": "190de22a0427435ad2ac713a2d06f23f111081f8",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/AArch64/sve-select-cmp.ll"
    },
    {
      "type": "modify",
      "old_id": "0e4e110ca1997f4911a74e8a488fc83c80a16177",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/RISCV/conditional-scalar-assignment-fold-tail.ll",
      "new_id": "db4a5fb472c30b06cfc15c6442ec514c213dcfbd",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/RISCV/conditional-scalar-assignment-fold-tail.ll"
    },
    {
      "type": "modify",
      "old_id": "d685a238e7d9bca022a10998c4db2150c5f9ba5f",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/RISCV/conditional-scalar-assignment.ll",
      "new_id": "3be8a558dec413f4b664cb9a6b8943fcc8b614c1",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/RISCV/conditional-scalar-assignment.ll"
    },
    {
      "type": "modify",
      "old_id": "afad205790594e9d5f9be66b4feccd45b0e562aa",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/RISCV/iv-select-cmp.ll",
      "new_id": "1306b9ae63807ff36fe4c8fa5366e35a9165c5fa",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/RISCV/iv-select-cmp.ll"
    },
    {
      "type": "modify",
      "old_id": "fd283e9dc783782c70eb3266c776ef250ea824d9",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/RISCV/select-cmp-reduction.ll",
      "new_id": "e809611a3d3d3120df07b176d8e7e0c7c61ab683",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/RISCV/select-cmp-reduction.ll"
    },
    {
      "type": "modify",
      "old_id": "2c304bcef02fb23200af5dddc2a65673687b014d",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/VPlan/conditional-scalar-assignment-vplan.ll",
      "new_id": "e7571659dc9c781d42773cfca1243d29777d28ae",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/VPlan/conditional-scalar-assignment-vplan.ll"
    },
    {
      "type": "modify",
      "old_id": "0ad003fc76991e6936821eafb385032651fc4906",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/VPlan/interleave-conditional-scalar-assignment-vplan.ll",
      "new_id": "3dc3557ec15ffb26b24c5d330992afa00976fe65",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/VPlan/interleave-conditional-scalar-assignment-vplan.ll"
    },
    {
      "type": "modify",
      "old_id": "f5c51e4c1b07198f252ed0f3706c7f82c6828158",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/X86/conditional-scalar-assignment.ll",
      "new_id": "4b0b5d1cdb24b796a23764180b4e5970c7a7258b",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/X86/conditional-scalar-assignment.ll"
    },
    {
      "type": "modify",
      "old_id": "47e2cd8f9f3ecacf6bc2b753646bc1b4e5a0c256",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/alias-mask.ll",
      "new_id": "09d796b0fa13d4107d3bca98a388bb0a89e318b5",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/alias-mask.ll"
    },
    {
      "type": "modify",
      "old_id": "2f2468fa98a4663fd4eec82ccbfe3d45ae132314",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/conditional-scalar-assignment-interleave-only.ll",
      "new_id": "c3ee580032d2fa8f79697849665f3e9c8729b6d5",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/conditional-scalar-assignment-interleave-only.ll"
    },
    {
      "type": "modify",
      "old_id": "0edba19738e7c7f7f853bb7f076170f63cd8a885",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/find-last-iv-sinkable-expr-tail-folding.ll",
      "new_id": "6becee93c41176681b52fd41d0a3a30d1c93f29b",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/find-last-iv-sinkable-expr-tail-folding.ll"
    },
    {
      "type": "modify",
      "old_id": "db0cbf8997c4872f9b6d553d1960c61ec86d8a99",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/find-last-iv-sinkable-expr.ll",
      "new_id": "5b8e09b18fcd42bcd33f4265b2e65cc36980b62c",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/find-last-iv-sinkable-expr.ll"
    },
    {
      "type": "modify",
      "old_id": "a689c6b1f075f97f1ed753444e63b4d50319889a",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/find-last-iv-sinkable-load.ll",
      "new_id": "5b6d0ee1f19a5e8b5280f4b04e301c8f9dad5e1a",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/find-last-iv-sinkable-load.ll"
    },
    {
      "type": "modify",
      "old_id": "815452573858b662053e7244583c72200f4140e7",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/find-last-ptr-induction.ll",
      "new_id": "6033922a4a29b9cf64ed697314a65fef85704123",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/find-last-ptr-induction.ll"
    },
    {
      "type": "modify",
      "old_id": "691980d50c2bfefb5ad2b819bba343d88563a624",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/find-last.ll",
      "new_id": "bfde15e852b9f6460134fef1ba9c1e440396703f",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/find-last.ll"
    },
    {
      "type": "modify",
      "old_id": "21b9c3f5226d218789f723c1a2b9653dbe301460",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/iv-select-cmp-fold-tail.ll",
      "new_id": "05e7df4c2cda2bfbf84f8559bc6aa54cb9871afc",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/iv-select-cmp-fold-tail.ll"
    },
    {
      "type": "modify",
      "old_id": "ad84f30810955c866991260d7ae55bad9923a423",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/iv-select-cmp-non-const-iv-start.ll",
      "new_id": "48fa114ea206b755e7b9eb593d95703b69a20684",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/iv-select-cmp-non-const-iv-start.ll"
    },
    {
      "type": "modify",
      "old_id": "c0dfbbb7ffca942bf9cb5cb097742561c6bc3c73",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/iv-select-cmp-trunc.ll",
      "new_id": "966db6bdecc924e3b0d0f4fd1b311842c0335ceb",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/iv-select-cmp-trunc.ll"
    },
    {
      "type": "modify",
      "old_id": "c9c4615c36760028617688b56f0440314d59286e",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/iv-select-cmp.ll",
      "new_id": "afceae5122a035bf35c76ce0741d07ac6b4e1218",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/iv-select-cmp.ll"
    },
    {
      "type": "modify",
      "old_id": "00bf9310e76076e306d37af221c893a280b0e42f",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/LoopVectorize/select-cmp.ll",
      "new_id": "c9bfceddc410195435d283a1472f0a7299c74892",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/LoopVectorize/select-cmp.ll"
    }
  ]
}
