forked from OSchip/llvm-project
[X86] getTargetConstantBitsFromNode - remove unnecessary X86ISD::VBROADCAST handling.
We create X86ISD::VBROADCAST_LOAD for constant pool folds now.
This commit is contained in:
parent
bfd512160f
commit
9aca5b68ee
|
@ -6445,23 +6445,6 @@ static bool getTargetConstantBitsFromNode(SDValue Op, unsigned EltSizeInBits,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extract constant bits from a broadcasted constant pool scalar.
|
// Extract constant bits from a broadcasted constant pool scalar.
|
||||||
if (Op.getOpcode() == X86ISD::VBROADCAST &&
|
|
||||||
EltSizeInBits <= VT.getScalarSizeInBits()) {
|
|
||||||
if (auto *Broadcast = getTargetConstantFromNode(Op.getOperand(0))) {
|
|
||||||
unsigned SrcEltSizeInBits = Broadcast->getType()->getScalarSizeInBits();
|
|
||||||
unsigned NumSrcElts = SizeInBits / SrcEltSizeInBits;
|
|
||||||
|
|
||||||
APInt UndefSrcElts(NumSrcElts, 0);
|
|
||||||
SmallVector<APInt, 64> SrcEltBits(1, APInt(SrcEltSizeInBits, 0));
|
|
||||||
if (CollectConstantBits(Broadcast, SrcEltBits[0], UndefSrcElts, 0)) {
|
|
||||||
if (UndefSrcElts[0])
|
|
||||||
UndefSrcElts.setBits(0, NumSrcElts);
|
|
||||||
SrcEltBits.append(NumSrcElts - 1, SrcEltBits[0]);
|
|
||||||
return CastBitData(UndefSrcElts, SrcEltBits);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Op.getOpcode() == X86ISD::VBROADCAST_LOAD &&
|
if (Op.getOpcode() == X86ISD::VBROADCAST_LOAD &&
|
||||||
EltSizeInBits <= VT.getScalarSizeInBits()) {
|
EltSizeInBits <= VT.getScalarSizeInBits()) {
|
||||||
auto *MemIntr = cast<MemIntrinsicSDNode>(Op);
|
auto *MemIntr = cast<MemIntrinsicSDNode>(Op);
|
||||||
|
|
Loading…
Reference in New Issue