reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

lib/Target/X86/X86ISelLowering.cpp
24676   SDValue InRegLUT = DAG.getBuildVector(CurrVT, DL, LUTVec);
24683   SDValue Op0 = DAG.getBitcast(CurrVT, Op.getOperand(0));
24684   SDValue Zero = DAG.getConstant(0, DL, CurrVT);
24686   SDValue NibbleShift = DAG.getConstant(0x4, DL, CurrVT);
24688   SDValue Hi = DAG.getNode(ISD::SRL, DL, CurrVT, Op0, NibbleShift);
24690   if (CurrVT.is512BitVector()) {
24691     MVT MaskVT = MVT::getVectorVT(MVT::i1, CurrVT.getVectorNumElements());
24693     HiZ = DAG.getNode(ISD::SIGN_EXTEND, DL, CurrVT, HiZ);
24695     HiZ = DAG.getSetCC(DL, CurrVT, Hi, Zero, ISD::SETEQ);
24698   Lo = DAG.getNode(X86ISD::PSHUFB, DL, CurrVT, InRegLUT, Lo);
24699   Hi = DAG.getNode(X86ISD::PSHUFB, DL, CurrVT, InRegLUT, Hi);
24700   Lo = DAG.getNode(ISD::AND, DL, CurrVT, Lo, HiZ);
24701   SDValue Res = DAG.getNode(ISD::ADD, DL, CurrVT, Lo, Hi);
24708   while (CurrVT != VT) {
24709     int CurrScalarSizeInBits = CurrVT.getScalarSizeInBits();
24710     int CurrNumElts = CurrVT.getVectorNumElements();
24716     if (CurrVT.is512BitVector()) {
24717       MVT MaskVT = MVT::getVectorVT(MVT::i1, CurrVT.getVectorNumElements());
24718       HiZ = DAG.getSetCC(DL, MaskVT, DAG.getBitcast(CurrVT, Op0),
24719                          DAG.getBitcast(CurrVT, Zero), ISD::SETEQ);
24720       HiZ = DAG.getNode(ISD::SIGN_EXTEND, DL, CurrVT, HiZ);
24722       HiZ = DAG.getSetCC(DL, CurrVT, DAG.getBitcast(CurrVT, Op0),
24722       HiZ = DAG.getSetCC(DL, CurrVT, DAG.getBitcast(CurrVT, Op0),
24723                          DAG.getBitcast(CurrVT, Zero), ISD::SETEQ);
24735     CurrVT = NextVT;