reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
35837 SDValue Match = DAG.matchBinOpReduction(Extract, BinOp, {ISD::OR, ISD::AND}); 35839 Match = DAG.matchBinOpReduction(Extract, BinOp, {ISD::XOR}); 35853 const TargetLowering &TLI = DAG.getTargetLoweringInfo(); 35861 EVT MovmskVT = EVT::getIntegerVT(*DAG.getContext(), NumElts); 35862 Movmsk = DAG.getBitcast(MovmskVT, Match); 35867 std::tie(Lo, Hi) = DAG.SplitVector(Match, DL); 35868 Match = DAG.getNode(BinOp, DL, Lo.getValueType(), Lo, Hi); 35871 EVT MovmskVT = EVT::getIntegerVT(*DAG.getContext(), NumElts); 35872 Movmsk = combineBitcastvxi1(DAG, MovmskVT, Match, DL, Subtarget); 35876 Movmsk = DAG.getZExtOrTrunc(Movmsk, DL, NumElts > 32 ? MVT::i64 : MVT::i32); 35895 if (DAG.ComputeNumSignBits(Match) != BitWidth) 35900 std::tie(Lo, Hi) = DAG.SplitVector(Match, DL); 35901 Match = DAG.getNode(BinOp, DL, Lo.getValueType(), Lo, Hi); 35913 SDValue BitcastLogicOp = DAG.getBitcast(MaskSrcVT, Match); 35914 Movmsk = getPMOVMSKB(DL, BitcastLogicOp, DAG, Subtarget); 35923 SDValue Mask = DAG.getConstant(1, DL, CmpVT); 35924 SDValue Result = DAG.getNode(ISD::CTPOP, DL, CmpVT, Movmsk); 35925 Result = DAG.getNode(ISD::AND, DL, CmpVT, Result, Mask); 35926 return DAG.getZExtOrTrunc(Result, DL, ExtractVT); 35933 CmpC = DAG.getConstant(0, DL, CmpVT); 35937 CmpC = DAG.getConstant(APInt::getLowBitsSet(CmpVT.getSizeInBits(), NumElts), 35945 TLI.getSetCCResultType(DAG.getDataLayout(), *DAG.getContext(), CmpVT); 35945 TLI.getSetCCResultType(DAG.getDataLayout(), *DAG.getContext(), CmpVT); 35946 SDValue Setcc = DAG.getSetCC(DL, SetccVT, Movmsk, CmpC, CondCode); 35947 SDValue Zext = DAG.getZExtOrTrunc(Setcc, DL, ExtractVT); 35948 SDValue Zero = DAG.getConstant(0, DL, ExtractVT); 35949 return DAG.getNode(ISD::SUB, DL, ExtractVT, Zero, Zext);