[llvm] [SelectionDAG] Deal with POISON for INSERT_VECTOR_ELT/INSERT_SUBVECTOR (part 3) (PR #143105)

via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 6 03:02:36 PDT 2025


github-actions[bot] wrote:

<!--LLVM CODE FORMAT COMMENT: {clang-format}-->


:warning: C/C++ code formatter, clang-format found issues in your code. :warning:

<details>
<summary>
You can test this locally with the following command:
</summary>

``````````bash
git-clang-format --diff HEAD~1 HEAD --extensions cpp,h -- llvm/include/llvm/CodeGen/SelectionDAG.h llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp llvm/lib/Target/AArch64/AArch64ISelLowering.cpp llvm/lib/Target/RISCV/RISCVISelLowering.cpp
``````````

</details>

<details>
<summary>
View the diff from clang-format here.
</summary>

``````````diff
diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
index a52edca64..7490f288e 100644
--- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
@@ -27373,11 +27373,11 @@ SDValue DAGCombiner::visitINSERT_SUBVECTOR(SDNode *N) {
 
   // If inserting an UNDEF, just return the original vector (unless it makes the
   // result more poisonous).
-  if (N1.isUndef()){
+  if (N1.isUndef()) {
     if (VT.isFixedLengthVector()) {
       unsigned SubVecNumElts = N1.getValueType().getVectorNumElements();
-      APInt EltMask = APInt::getBitsSet(VT.getVectorNumElements(),
-                                        InsIdx, InsIdx + SubVecNumElts);
+      APInt EltMask = APInt::getBitsSet(VT.getVectorNumElements(), InsIdx,
+                                        InsIdx + SubVecNumElts);
       if (DAG.isGuaranteedNotToBePoison(N0, EltMask))
         return N0;
     } else if (DAG.isGuaranteedNotToBePoison(N0))
@@ -27398,8 +27398,8 @@ SDValue DAGCombiner::visitINSERT_SUBVECTOR(SDNode *N) {
         return N1.getOperand(0);
       if (VT.isFixedLengthVector() && N1VT.isFixedLengthVector()) {
         unsigned SubVecNumElts = N1VT.getVectorNumElements();
-        APInt EltMask = APInt::getBitsSet(VT.getVectorNumElements(),
-                                          InsIdx, InsIdx + SubVecNumElts);
+        APInt EltMask = APInt::getBitsSet(VT.getVectorNumElements(), InsIdx,
+                                          InsIdx + SubVecNumElts);
         if (DAG.isGuaranteedNotToBePoison(N1.getOperand(0), ~EltMask))
           return N1.getOperand(0);
       } else if (DAG.isGuaranteedNotToBePoison(N1.getOperand(0)))
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
index fadfd3548..5faec2f99 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
@@ -5465,13 +5465,11 @@ bool SelectionDAG::isGuaranteedNotToBeUndefOrPoison(SDValue Op,
     APInt DemandedSrcElts = DemandedElts;
     DemandedSrcElts.clearBits(Idx, Idx + NumSubElts);
 
-    if (!!DemandedSubElts &&
-        !isGuaranteedNotToBeUndefOrPoison(Sub, DemandedSubElts,
-                                          PoisonOnly, Depth + 1))
-        return false;
-    if (!!DemandedSrcElts &&
-        !isGuaranteedNotToBeUndefOrPoison(Src, DemandedSrcElts,
-                                          PoisonOnly, Depth + 1))
+    if (!!DemandedSubElts && !isGuaranteedNotToBeUndefOrPoison(
+                                 Sub, DemandedSubElts, PoisonOnly, Depth + 1))
+      return false;
+    if (!!DemandedSrcElts && !isGuaranteedNotToBeUndefOrPoison(
+                                 Src, DemandedSrcElts, PoisonOnly, Depth + 1))
       return false;
     return true;
   }
@@ -7974,8 +7972,8 @@ SDValue SelectionDAG::getNode(unsigned Opcode, const SDLoc &DL, EVT VT,
     // But not if skipping the insert could make the result more poisonous.
     if (N2.isUndef()) {
       if (N3C && VT.isFixedLengthVector()) {
-        APInt EltMask = APInt::getOneBitSet(VT.getVectorNumElements(),
-                                            N3C->getZExtValue());
+        APInt EltMask =
+            APInt::getOneBitSet(VT.getVectorNumElements(), N3C->getZExtValue());
         if (isGuaranteedNotToBePoison(N1, EltMask))
           return N1;
       } else if (isGuaranteedNotToBePoison(N1))
@@ -8028,8 +8026,8 @@ SDValue SelectionDAG::getNode(unsigned Opcode, const SDLoc &DL, EVT VT,
       if (VT.isFixedLengthVector() && N2VT.isFixedLengthVector()) {
         unsigned LoBit = N3->getAsZExtVal();
         unsigned HiBit = LoBit + N2VT.getVectorNumElements();
-        APInt EltMask = APInt::getBitsSet(VT.getVectorNumElements(),
-                                          LoBit, HiBit);
+        APInt EltMask =
+            APInt::getBitsSet(VT.getVectorNumElements(), LoBit, HiBit);
         if (isGuaranteedNotToBePoison(N2.getOperand(0), ~EltMask))
           return N2.getOperand(0);
       } else if (isGuaranteedNotToBePoison(N2.getOperand(0)))
@@ -8042,8 +8040,8 @@ SDValue SelectionDAG::getNode(unsigned Opcode, const SDLoc &DL, EVT VT,
       if (VT.isFixedLengthVector()) {
         unsigned LoBit = N3->getAsZExtVal();
         unsigned HiBit = LoBit + N2VT.getVectorNumElements();
-        APInt EltMask = APInt::getBitsSet(VT.getVectorNumElements(),
-                                          LoBit, HiBit);
+        APInt EltMask =
+            APInt::getBitsSet(VT.getVectorNumElements(), LoBit, HiBit);
         if (isGuaranteedNotToBePoison(N1, EltMask))
           return N1;
       } else if (isGuaranteedNotToBePoison(N1))
diff --git a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
index 8131a02b0..7757fa1b5 100644
--- a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+++ b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
@@ -12144,8 +12144,7 @@ SDValue RISCVTargetLowering::lowerVECTOR_REVERSE(SDValue Op,
       // FIXME: This is a CONCAT_VECTORS.
       SDValue Res = DAG.getInsertSubvector(DL, DAG.getUNDEF(VecVT), Hi, 0,
                                            /*SkipUndef=*/true);
-      return DAG.getInsertSubvector(DL, Res, Lo,
-                                    LoVT.getVectorMinNumElements(),
+      return DAG.getInsertSubvector(DL, Res, Lo, LoVT.getVectorMinNumElements(),
                                     /*SkipUndef=*/true);
     }
 

``````````

</details>


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


More information about the llvm-commits mailing list