Skip to content

Commit 5bef886

Browse files
committed
[TargetLowering] SimplifyDemandedBits - Cleanup ANY_EXTEND handling
Match SIGN_EXTEND + ZERO_EXTEND handling - will be adding ANY_EXTEND_VECTOR_INREG support in a future patch. llvm-svn: 363716
1 parent 8dc6840 commit 5bef886

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1440,12 +1440,18 @@ bool TargetLowering::SimplifyDemandedBits(
14401440
break;
14411441
}
14421442
case ISD::ANY_EXTEND: {
1443+
// TODO: Add ISD::ANY_EXTEND_VECTOR_INREG support.
14431444
SDValue Src = Op.getOperand(0);
1444-
unsigned InBits = Src.getScalarValueSizeInBits();
1445+
EVT SrcVT = Src.getValueType();
1446+
unsigned InBits = SrcVT.getScalarSizeInBits();
1447+
unsigned InElts = SrcVT.isVector() ? SrcVT.getVectorNumElements() : 1;
14451448
APInt InDemandedBits = DemandedBits.trunc(InBits);
1446-
if (SimplifyDemandedBits(Src, InDemandedBits, Known, TLO, Depth + 1))
1449+
APInt InDemandedElts = DemandedElts.zextOrSelf(InElts);
1450+
if (SimplifyDemandedBits(Src, InDemandedBits, InDemandedElts, Known, TLO,
1451+
Depth + 1))
14471452
return true;
14481453
assert(!Known.hasConflict() && "Bits known to be one AND zero?");
1454+
assert(Known.getBitWidth() == InBits && "Src width has changed?");
14491455
Known = Known.zext(BitWidth, false /* => any extend */);
14501456
break;
14511457
}

0 commit comments

Comments
 (0)