• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/contrib/llvm-project/llvm/lib/CodeGen/SelectionDAG/

Lines Matching refs:SDValue

64   SmallDenseMap<SDValue, SDValue, 64> LegalizedNodes;
67 void AddLegalizedOperand(SDValue From, SDValue To) {
75 SDValue LegalizeOp(SDValue Op);
78 SDValue TranslateLegalizeResults(SDValue Op, SDNode *Result);
81 SDValue RecursivelyLegalizeResults(SDValue Op,
82 MutableArrayRef<SDValue> Results);
88 bool LowerOperationWrapper(SDNode *N, SmallVectorImpl<SDValue> &Results);
91 SDValue UnrollVSETCC(SDNode *Node);
97 void Expand(SDNode *Node, SmallVectorImpl<SDValue> &Results);
101 void ExpandFP_TO_UINT(SDNode *Node, SmallVectorImpl<SDValue> &Results);
105 void ExpandUINT_TO_FLOAT(SDNode *Node, SmallVectorImpl<SDValue> &Results);
108 SDValue ExpandSEXTINREG(SDNode *Node);
115 SDValue ExpandANY_EXTEND_VECTOR_INREG(SDNode *Node);
122 SDValue ExpandSIGN_EXTEND_VECTOR_INREG(SDNode *Node);
128 SDValue ExpandZERO_EXTEND_VECTOR_INREG(SDNode *Node);
131 SDValue ExpandBSWAP(SDNode *Node);
135 SDValue ExpandVSELECT(SDNode *Node);
136 SDValue ExpandSELECT(SDNode *Node);
137 std::pair<SDValue, SDValue> ExpandLoad(SDNode *N);
138 SDValue ExpandStore(SDNode *N);
139 SDValue ExpandFNEG(SDNode *Node);
140 void ExpandFSUB(SDNode *Node, SmallVectorImpl<SDValue> &Results);
141 void ExpandBITREVERSE(SDNode *Node, SmallVectorImpl<SDValue> &Results);
142 void ExpandUADDSUBO(SDNode *Node, SmallVectorImpl<SDValue> &Results);
143 void ExpandSADDSUBO(SDNode *Node, SmallVectorImpl<SDValue> &Results);
144 void ExpandMULO(SDNode *Node, SmallVectorImpl<SDValue> &Results);
145 void ExpandFixedPointDiv(SDNode *Node, SmallVectorImpl<SDValue> &Results);
146 SDValue ExpandStrictFPOp(SDNode *Node);
147 void ExpandStrictFPOp(SDNode *Node, SmallVectorImpl<SDValue> &Results);
148 void ExpandREM(SDNode *Node, SmallVectorImpl<SDValue> &Results);
150 void UnrollStrictFPOp(SDNode *Node, SmallVectorImpl<SDValue> &Results);
156 void Promote(SDNode *Node, SmallVectorImpl<SDValue> &Results);
161 void PromoteINT_TO_FP(SDNode *Node, SmallVectorImpl<SDValue> &Results);
167 void PromoteFP_TO_INT(SDNode *Node, SmallVectorImpl<SDValue> &Results);
206 LegalizeOp(SDValue(&*I, 0));
209 SDValue OldRoot = DAG.getRoot();
221 SDValue VectorLegalizer::TranslateLegalizeResults(SDValue Op, SDNode *Result) {
226 AddLegalizedOperand(Op.getValue(i), SDValue(Result, i));
227 return SDValue(Result, Op.getResNo());
230 SDValue
231 VectorLegalizer::RecursivelyLegalizeResults(SDValue Op,
232 MutableArrayRef<SDValue> Results) {
244 SDValue VectorLegalizer::LegalizeOp(SDValue Op) {
247 DenseMap<SDValue, SDValue>::iterator I = LegalizedNodes.find(Op);
251 SmallVector<SDValue, 8> Ops;
252 for (const SDValue &Oper : Op->op_values())
269 SmallVector<SDValue, 2> ResultVals;
281 std::pair<SDValue, SDValue> Tmp = ExpandLoad(Node);
300 SmallVector<SDValue, 1> ResultVals;
312 SDValue Chain = ExpandStore(Node);
323 [](SDValue O) { return O.getValueType().isVector(); });
494 SmallVector<SDValue, 8> ResultVals;
527 SmallVectorImpl<SDValue> &Results) {
528 SDValue Res = TLI.LowerOperation(SDValue(Node, 0), DAG);
533 if (Res == SDValue(Node, 0))
555 void VectorLegalizer::Promote(SDNode *Node, SmallVectorImpl<SDValue> &Results) {
590 SmallVector<SDValue, 4> Operands(Node->getNumOperands());
606 SDValue Res =
620 SmallVectorImpl<SDValue> &Results) {
630 SmallVector<SDValue, 4> Operands(Node->getNumOperands());
644 SDValue Res = DAG.getNode(Node->getOpcode(), dl,
651 SDValue Res =
661 SmallVectorImpl<SDValue> &Results) {
680 SDValue Promoted, Chain;
705 std::pair<SDValue, SDValue> VectorLegalizer::ExpandLoad(SDNode *N) {
710 SDValue VectorLegalizer::ExpandStore(SDNode *N) {
712 SDValue TF = TLI.scalarizeVectorStore(ST, DAG);
716 void VectorLegalizer::Expand(SDNode *Node, SmallVectorImpl<SDValue> &Results) {
717 SDValue Tmp;
804 if (SDValue Expanded = TLI.expandFMINNUM_FMAXNUM(Node, DAG)) {
825 if (SDValue Expanded = TLI.expandAddSubSat(Node, DAG)) {
832 if (SDValue Expanded = TLI.expandFixedPointMul(Node, DAG)) {
880 SDValue VectorLegalizer::ExpandSELECT(SDNode *Node) {
887 SDValue Mask = Node->getOperand(0);
888 SDValue Op1 = Node->getOperand(1);
889 SDValue Op2 = Node->getOperand(2);
925 SDValue AllOnes = DAG.getConstant(
927 SDValue NotMask = DAG.getNode(ISD::XOR, DL, MaskTy, Mask, AllOnes);
931 SDValue Val = DAG.getNode(ISD::OR, DL, MaskTy, Op1, Op2);
935 SDValue VectorLegalizer::ExpandSEXTINREG(SDNode *Node) {
948 SDValue ShiftSz = DAG.getConstant(BW - OrigBW, DL, VT);
950 SDValue Op = DAG.getNode(ISD::SHL, DL, VT, Node->getOperand(0), ShiftSz);
956 SDValue VectorLegalizer::ExpandANY_EXTEND_VECTOR_INREG(SDNode *Node) {
960 SDValue Src = Node->getOperand(0);
991 SDValue VectorLegalizer::ExpandSIGN_EXTEND_VECTOR_INREG(SDNode *Node) {
994 SDValue Src = Node->getOperand(0);
999 SDValue Op = DAG.getNode(ISD::ANY_EXTEND_VECTOR_INREG, DL, VT, Src);
1006 SDValue ShiftAmount = DAG.getConstant(EltWidth - SrcEltWidth, DL, VT);
1015 SDValue VectorLegalizer::ExpandZERO_EXTEND_VECTOR_INREG(SDNode *Node) {
1019 SDValue Src = Node->getOperand(0);
1036 SDValue Zero = DAG.getConstant(0, DL, SrcVT);
1061 SDValue VectorLegalizer::ExpandBSWAP(SDNode *Node) {
1074 SDValue Op = DAG.getNode(ISD::BITCAST, DL, ByteVT, Node->getOperand(0));
1080 SmallVectorImpl<SDValue> &Results) {
1085 SDValue Tmp = DAG.UnrollVectorOp(Node);
1106 SDValue Op = DAG.getNode(ISD::BITCAST, DL, ByteVT, Node->getOperand(0));
1126 SDValue Tmp = DAG.UnrollVectorOp(Node);
1130 SDValue VectorLegalizer::ExpandVSELECT(SDNode *Node) {
1135 SDValue Mask = Node->getOperand(0);
1136 SDValue Op1 = Node->getOperand(1);
1137 SDValue Op2 = Node->getOperand(2);
1167 SDValue AllOnes = DAG.getConstant(
1169 SDValue NotMask = DAG.getNode(ISD::XOR, DL, VT, Mask, AllOnes);
1173 SDValue Val = DAG.getNode(ISD::OR, DL, VT, Op1, Op2);
1178 SmallVectorImpl<SDValue> &Results) {
1180 SDValue Result, Chain;
1198 SmallVectorImpl<SDValue> &Results) {
1201 SDValue Src = Node->getOperand(OpNo);
1206 SDValue Result;
1207 SDValue Chain;
1234 SDValue HalfWord = DAG.getConstant(BW / 2, DL, VT);
1240 SDValue HalfWordMask = DAG.getConstant(HWMask, DL, VT);
1243 SDValue TWOHW =
1247 SDValue HI = DAG.getNode(ISD::SRL, DL, VT, Src, HalfWord);
1248 SDValue LO = DAG.getNode(ISD::AND, DL, VT, Src, HalfWordMask);
1254 SDValue fHI = DAG.getNode(ISD::STRICT_SINT_TO_FP, DL,
1259 SDValue fLO = DAG.getNode(ISD::STRICT_SINT_TO_FP, DL,
1263 SDValue TF = DAG.getNode(ISD::TokenFactor, DL, MVT::Other, fHI.getValue(1),
1267 SDValue Result =
1279 SDValue fHI = DAG.getNode(ISD::SINT_TO_FP, DL, Node->getValueType(0), HI);
1281 SDValue fLO = DAG.getNode(ISD::SINT_TO_FP, DL, Node->getValueType(0), LO);
1288 SDValue VectorLegalizer::ExpandFNEG(SDNode *Node) {
1291 SDValue Zero = DAG.getConstantFP(-0.0, DL, Node->getValueType(0));
1300 SmallVectorImpl<SDValue> &Results) {
1309 SDValue Tmp = DAG.UnrollVectorOp(Node);
1314 SmallVectorImpl<SDValue> &Results) {
1315 SDValue Result, Overflow;
1322 SmallVectorImpl<SDValue> &Results) {
1323 SDValue Result, Overflow;
1330 SmallVectorImpl<SDValue> &Results) {
1331 SDValue Result, Overflow;
1340 SmallVectorImpl<SDValue> &Results) {
1342 if (SDValue Expanded = TLI.expandFixedPointDiv(N->getOpcode(), SDLoc(N),
1348 SmallVectorImpl<SDValue> &Results) {
1362 SmallVectorImpl<SDValue> &Results) {
1366 SDValue Result;
1373 SmallVectorImpl<SDValue> &Results) {
1387 SDValue Chain = Node->getOperand(0);
1390 SmallVector<SDValue, 32> OpValues;
1391 SmallVector<SDValue, 32> OpChains;
1393 SmallVector<SDValue, 4> Opers;
1394 SDValue Idx = DAG.getVectorIdxConstant(i, dl);
1401 SDValue Oper = Node->getOperand(j);
1411 SDValue ScalarOp = DAG.getNode(Node->getOpcode(), dl, ValueVTs, Opers);
1412 SDValue ScalarResult = ScalarOp.getValue(0);
1413 SDValue ScalarChain = ScalarOp.getValue(1);
1426 SDValue Result = DAG.getBuildVector(VT, dl, OpValues);
1427 SDValue NewChain = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, OpChains);
1433 SDValue VectorLegalizer::UnrollVSETCC(SDNode *Node) {
1437 SDValue LHS = Node->getOperand(0);
1438 SDValue RHS = Node->getOperand(1);
1439 SDValue CC = Node->getOperand(2);
1442 SmallVector<SDValue, 8> Ops(NumElems);
1444 SDValue LHSElem = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, dl, TmpEltVT, LHS,
1446 SDValue RHSElem = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, dl, TmpEltVT, RHS,