)]}'
{
  "commit": "6119d1f115625cd1b8a2b9d331609eb9e9f676ce",
  "tree": "c30b1d4f2bf5d5f097fd37b7ab7bccd20280fc22",
  "parents": [
    "24b03d3217e41536cee7c868860b5930160ad526"
  ],
  "author": {
    "name": "Craig Topper",
    "email": "craig.topper@sifive.com",
    "time": "Fri Sep 19 09:19:57 2025 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri Sep 19 09:19:57 2025 -0700"
  },
  "message": "[RISCV] Re-work how VWADD_W_VL and similar _W_VL nodes are handled in combineOp_VLToVWOp_VL. (#159205)\n\nThese instructions have one already narrow operand. Previously, we\npretended like this operand was a supported extension.\n\nThis could cause problems when we called getOrCreateExtendedOp on this\nnarrow operand when creating the the VWADD_VL. If the narrow operand\nhappened to be an extend of the opposite type, we would peek through it\nand then rebuild it with the wrong extension type. So (vwadd_w_vl (i32\n(sext X)), (i16 (zext Y))) would become (vwadd_vl (i16 (sext X)), (i16\n(sext Y))).\n\nTo prevent this, we ignore the operand instead and pass std::nullopt for\nSupportsExt to getOrCreateExtendedOp so it won\u0027t peek through any\nextends on the narrow source.\n\nFixes #159152.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "35d997f246005da1fd6a21e2d625f1222425abbf",
      "old_mode": 33188,
      "old_path": "llvm/lib/Target/RISCV/RISCVISelLowering.cpp",
      "new_id": "292a52bea94368c81ae93aad65378121e6474582",
      "new_mode": 33188,
      "new_path": "llvm/lib/Target/RISCV/RISCVISelLowering.cpp"
    },
    {
      "type": "modify",
      "old_id": "b093e9e35edadbb1a8a094e6b413744a3b1769aa",
      "old_mode": 33188,
      "old_path": "llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vw-web-simplification.ll",
      "new_id": "b9466e9f7cc15c769be720c4659f8dc96f7d083d",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vw-web-simplification.ll"
    }
  ]
}
