1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 03:02:36 +01:00

[ValueTracking] computeKnownBitsFromShiftOperator - remove non-zero shift amount handling.

This no longer affects any tests after the improvements to the KnownBits shift helpers.
This commit is contained in:
Simon Pilgrim 2021-02-24 13:49:00 +00:00
parent 68e88416c9
commit b83d98e3a8

View File

@ -1018,15 +1018,10 @@ static void computeKnownBitsFromShiftOperator(
// If we know the shifter operand is nonzero, we can sometimes infer more
// known bits. However this is expensive to compute, so be lazy about it and
// only compute it when absolutely necessary.
Optional<bool> ShifterOperandIsNonZero;
// Early exit if we can't constrain any well-defined shift amount.
if (!(ShiftAmtKZ & (PowerOf2Ceil(BitWidth) - 1)) &&
!(ShiftAmtKO & (PowerOf2Ceil(BitWidth) - 1))) {
ShifterOperandIsNonZero =
isKnownNonZero(I->getOperand(1), DemandedElts, Depth + 1, Q);
if (!*ShifterOperandIsNonZero)
return;
return;
}
Known.Zero.setAllBits();
@ -1038,17 +1033,6 @@ static void computeKnownBitsFromShiftOperator(
continue;
if ((ShiftAmt | ShiftAmtKO) != ShiftAmt)
continue;
// If we know the shifter is nonzero, we may be able to infer more known
// bits. This check is sunk down as far as possible to avoid the expensive
// call to isKnownNonZero if the cheaper checks above fail.
if (ShiftAmt == 0) {
if (!ShifterOperandIsNonZero.hasValue())
ShifterOperandIsNonZero =
isKnownNonZero(I->getOperand(1), DemandedElts, Depth + 1, Q);
if (*ShifterOperandIsNonZero)
continue;
}
Known = KnownBits::commonBits(
Known, KF(Known2, KnownBits::makeConstant(APInt(32, ShiftAmt))));
}