[llvm] [SelectionDAG][RISCV] (add (vscale * C0), (vscale * C1)) to (vscale * (C0 + C1)) in getNode. (PR #144565)

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 17 10:16:30 PDT 2025


================
@@ -7377,6 +7377,12 @@ SDValue SelectionDAG::getNode(unsigned Opcode, const SDLoc &DL, EVT VT,
     if ((Opcode == ISD::ADD || Opcode == ISD::SUB) &&
         VT.getScalarType() == MVT::i1)
       return getNode(ISD::XOR, DL, VT, N1, N2);
+    if (Opcode == ISD::ADD && N1.getOpcode() == ISD::VSCALE &&
+        N2.getOpcode() == ISD::VSCALE) {
----------------
topperc wrote:

I don't think this changes the wrapping behavior. I lifted this code from visitADD in DAGCombiner.cpp.

https://github.com/llvm/llvm-project/pull/144565


More information about the llvm-commits mailing list