[llvm] [VectorCombine] foldShuffleOfBinops - failure to track OperandValueInfo (PR #171934)

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Thu Jan 22 02:36:39 PST 2026


================
@@ -2437,21 +2437,26 @@ bool VectorCombine::foldShuffleOfBinops(Instruction &I) {
       M -= NumSrcElts;
   };
 
+  TTI::OperandValueInfo Op0Info, Op1Info;
   SmallVector<int> NewMask0(OldMask);
   TargetTransformInfo::ShuffleKind SK0 = TargetTransformInfo::SK_PermuteTwoSrc;
   if (X == Z) {
     llvm::for_each(NewMask0, ConvertToUnary);
     SK0 = TargetTransformInfo::SK_PermuteSingleSrc;
     Z = PoisonValue::get(BinOpTy);
-  }
+    Op0Info = TTI.getOperandInfo(X);
+  } else
+    Op0Info = TTI.commonOperandInfo(X, Z);
 
   SmallVector<int> NewMask1(OldMask);
   TargetTransformInfo::ShuffleKind SK1 = TargetTransformInfo::SK_PermuteTwoSrc;
   if (Y == W) {
----------------
RKSimon wrote:

Just put `TTI::OperandValueInfo Op1Info = TTI.commonOperandInfo(Y, W);` once above the if()?

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


More information about the llvm-commits mailing list