mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-12-15 12:09:51 +00:00
[InstCombine] Move the call to isSignBitCheck into getDemandedBitsLHSMask instead of calling it outside and passing its result through a flag. NFCI
The result of the isSignBitCheck isn't used anywhere else and this allows us to share the m_APInt call in the likely case that it isn't a sign bit check. llvm-svn: 314018
This commit is contained in:
parent
5b35b68785
commit
3edda87c42
@ -3921,15 +3921,17 @@ static Instruction *processUMulZExtIdiom(ICmpInst &I, Value *MulVal,
|
||||
/// When performing a comparison against a constant, it is possible that not all
|
||||
/// the bits in the LHS are demanded. This helper method computes the mask that
|
||||
/// IS demanded.
|
||||
static APInt getDemandedBitsLHSMask(ICmpInst &I, unsigned BitWidth,
|
||||
bool isSignCheck) {
|
||||
if (isSignCheck)
|
||||
return APInt::getSignMask(BitWidth);
|
||||
|
||||
static APInt getDemandedBitsLHSMask(ICmpInst &I, unsigned BitWidth) {
|
||||
const APInt *RHS;
|
||||
if (!match(I.getOperand(1), m_APInt(RHS)))
|
||||
return APInt::getAllOnesValue(BitWidth);
|
||||
|
||||
// If this is a normal comparison, it demands all bits. If it is a sign bit
|
||||
// comparison, it only demands the sign bit.
|
||||
bool UnusedBit;
|
||||
if (isSignBitCheck(I.getPredicate(), *RHS, UnusedBit))
|
||||
return APInt::getSignMask(BitWidth);
|
||||
|
||||
switch (I.getPredicate()) {
|
||||
// For a UGT comparison, we don't care about any bits that
|
||||
// correspond to the trailing ones of the comparand. The value of these
|
||||
@ -4115,20 +4117,11 @@ Instruction *InstCombiner::foldICmpUsingKnownBits(ICmpInst &I) {
|
||||
if (!BitWidth)
|
||||
return nullptr;
|
||||
|
||||
// If this is a normal comparison, it demands all bits. If it is a sign bit
|
||||
// comparison, it only demands the sign bit.
|
||||
bool IsSignBit = false;
|
||||
const APInt *CmpC;
|
||||
if (match(Op1, m_APInt(CmpC))) {
|
||||
bool UnusedBit;
|
||||
IsSignBit = isSignBitCheck(Pred, *CmpC, UnusedBit);
|
||||
}
|
||||
|
||||
KnownBits Op0Known(BitWidth);
|
||||
KnownBits Op1Known(BitWidth);
|
||||
|
||||
if (SimplifyDemandedBits(&I, 0,
|
||||
getDemandedBitsLHSMask(I, BitWidth, IsSignBit),
|
||||
getDemandedBitsLHSMask(I, BitWidth),
|
||||
Op0Known, 0))
|
||||
return &I;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user