From: Simon Pilgrim Date: Sun, 17 May 2020 13:39:51 +0000 (+0100) Subject: [X86] getTargetConstantBitsFromNode - remove unnecessary X86ISD::VBROADCAST handling. X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=9aca5b68ee3fdfa90adb1bba2781b857dd56489b;p=android-x86%2Fexternal-llvm-project.git [X86] getTargetConstantBitsFromNode - remove unnecessary X86ISD::VBROADCAST handling. We create X86ISD::VBROADCAST_LOAD for constant pool folds now. --- diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 73f0755de12..26f90cca1e9 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -6445,23 +6445,6 @@ static bool getTargetConstantBitsFromNode(SDValue Op, unsigned EltSizeInBits, } // 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 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 && EltSizeInBits <= VT.getScalarSizeInBits()) { auto *MemIntr = cast(Op);