Added early out for single undef input - we were already supporting (and testing) this in the constant folding code, we just do it quicker now
Drop undef handling from demanded elts code now that we handle it fully in InstCombiner::visitCallInst
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292913
91177308-0d34-0410-b5e6-
96231b3b80d8
ResTy->getScalarSizeInBits() == 64 && "Unexpected muldq/muludq types");
// muldq/muludq(undef, undef) -> zero (matches generic mul behavior)
- if (isa<UndefValue>(Arg0) && isa<UndefValue>(Arg1))
+ if (isa<UndefValue>(Arg0) || isa<UndefValue>(Arg1))
return ConstantAggregateZero::get(ResTy);
// Constant folding.
Depth + 1);
if (TmpV) { II->setArgOperand(1, TmpV); MadeChange = true; }
- // Output elements are undefined if both are undefined. Consider things
- // like undef*0. The result is known zero, not undef.
- for (unsigned i = 0; i != VWidth; ++i)
- if (UndefElts2[i * 2] && UndefElts3[i * 2])
- UndefElts.setBit(i);
-
break;
}