[llvm] [GlobalISel] Support vector G_UNMERGE_VALUES in computeKnownBits. (PR #112172)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 14 05:24:06 PDT 2024


================
@@ -514,23 +514,33 @@ void GISelKnownBits::computeKnownBitsImpl(Register R, KnownBits &Known,
     break;
   }
   case TargetOpcode::G_UNMERGE_VALUES: {
-    if (DstTy.isVector())
-      break;
     unsigned NumOps = MI.getNumOperands();
     Register SrcReg = MI.getOperand(NumOps - 1).getReg();
-    if (MRI.getType(SrcReg).isVector())
-      return; // TODO: Handle vectors.
+    LLT SrcTy = MRI.getType(SrcReg);
 
-    KnownBits SrcOpKnown;
-    computeKnownBitsImpl(SrcReg, SrcOpKnown, DemandedElts, Depth + 1);
+    if (SrcTy.isVector() && SrcTy.getScalarType() != DstTy.getScalarType())
+      return; // TODO: Handle vector->subelement unmerges?
----------------
arsenm wrote:

Yes, should 

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


More information about the llvm-commits mailing list