[llvm] [GlobalISel] Add G_EXTRACT_VECTOR_ELT to computeNumSignBits (PR #218283)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 24 00:22:57 PDT 2026


================
@@ -2669,6 +2669,21 @@ unsigned GISelValueTracking::computeNumSignBits(Register R,
     }
     break;
   }
+  case TargetOpcode::G_EXTRACT_VECTOR_ELT: {
+    GExtractVectorElement &Extract = cast<GExtractVectorElement>(MI);
+    Register InVec = Extract.getVectorReg();
+    Register EltNo = Extract.getIndexReg();
+    LLT VecVT = MRI.getType(InVec);
+    if (VecVT.isScalableVector())
+      break;
+    unsigned NumSrcElts = VecVT.getNumElements();
+    auto ConstEltNo = getIConstantVRegVal(EltNo, MRI);
+    APInt DemandedSrcElts = APInt::getAllOnes(NumSrcElts);
+    if (ConstEltNo && ConstEltNo->ult(NumSrcElts))
+      DemandedSrcElts =
+          APInt::getOneBitSet(NumSrcElts, ConstEltNo->getZExtValue());
----------------
arsenm wrote:

```suggestion
    APInt DemandedSrcElts = ConstEltNo && ConstEltNo->ult(NumSrcElts) ? APInt::getOneBitSet(NumSrcElts, ConstEltNo->getZExtValue()) : APInt::getAllOnes(NumSrcElts);
          
```

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


More information about the llvm-commits mailing list