[llvm] [RISCV][DAGCombiner] Fix potential missed combine in VL->VW extension (PR #168026)
Kai Lin via llvm-commits
llvm-commits at lists.llvm.org
Fri Nov 14 02:37:52 PST 2025
================
@@ -595,11 +383,12 @@ define <vscale x 4 x i32> @mismatched_extend_sub_add_commuted(<vscale x 4 x i16>
; FOLDING: # %bb.0:
; FOLDING-NEXT: vsetvli a0, zero, e32, m2, ta, ma
; FOLDING-NEXT: vzext.vf2 v10, v8
+; FOLDING-NEXT: vsext.vf2 v12, v9
; FOLDING-NEXT: vsetvli zero, zero, e16, m1, ta, ma
-; FOLDING-NEXT: vwsub.wv v12, v10, v9
-; FOLDING-NEXT: vwadd.wv v10, v10, v9
+; FOLDING-NEXT: vwsub.wv v10, v10, v9
+; FOLDING-NEXT: vwaddu.wv v12, v12, v8
----------------
OMG-link wrote:
The worklist inside `combineOp_VLToVWOp_VL` and the one in `DAGCombiner` are supposed to serve the same purpose. I need some time to understand why removing the worklist in `combineOp_VLToVWOp_VL` would cause your change to stop working. This should not happen.
https://github.com/llvm/llvm-project/pull/168026
More information about the llvm-commits
mailing list