Lines Matching refs:Node
111 void LegalizeOp(SDNode *Node);
116 void LegalizeLoadOps(SDNode *Node);
117 void LegalizeStoreOps(SDNode *Node);
139 SDValue ExpandLibCall(RTLIB::Libcall LC, SDNode *Node, bool isSigned);
144 SDNode *Node, bool isSigned);
145 SDValue ExpandFPLibCall(SDNode *Node, RTLIB::Libcall Call_F32,
149 SDValue ExpandIntLibCall(SDNode *Node, bool isSigned,
155 void ExpandDivRemLibCall(SDNode *Node, SmallVectorImpl<SDValue> &Results);
156 void ExpandSinCosLibCall(SDNode *Node, SmallVectorImpl<SDValue> &Results);
160 SDValue ExpandBUILD_VECTOR(SDNode *Node);
161 SDValue ExpandSCALAR_TO_VECTOR(SDNode *Node);
162 void ExpandDYNAMIC_STACKALLOC(SDNode *Node,
168 SDValue ExpandFCOPYSIGN(SDNode *Node) const;
169 SDValue ExpandFABS(SDNode *Node) const;
182 SDValue ExpandVectorBuildThroughStack(SDNode* Node);
188 bool ExpandNode(SDNode *Node);
189 void ConvertNodeToLibcall(SDNode *Node);
190 void PromoteNode(SDNode *Node);
467 void SelectionDAGLegalize::LegalizeStoreOps(SDNode *Node) { in LegalizeStoreOps() argument
468 StoreSDNode *ST = cast<StoreSDNode>(Node); in LegalizeStoreOps()
471 SDLoc dl(Node); in LegalizeStoreOps()
505 SDValue Res = TLI.LowerOperation(SDValue(Node, 0), DAG); in LegalizeStoreOps()
506 if (Res && Res != SDValue(Node, 0)) in LegalizeStoreOps()
507 ReplaceNode(SDValue(Node, 0), Res); in LegalizeStoreOps()
518 ReplaceNode(SDValue(Node, 0), Result); in LegalizeStoreOps()
541 ReplaceNode(SDValue(Node, 0), Result); in LegalizeStoreOps()
599 ReplaceNode(SDValue(Node, 0), Result); in LegalizeStoreOps()
616 SDValue Res = TLI.LowerOperation(SDValue(Node, 0), DAG); in LegalizeStoreOps()
617 if (Res && Res != SDValue(Node, 0)) in LegalizeStoreOps()
618 ReplaceNode(SDValue(Node, 0), Res); in LegalizeStoreOps()
642 ReplaceNode(SDValue(Node, 0), Result); in LegalizeStoreOps()
648 void SelectionDAGLegalize::LegalizeLoadOps(SDNode *Node) { in LegalizeLoadOps() argument
649 LoadSDNode *LD = cast<LoadSDNode>(Node); in LegalizeLoadOps()
653 SDLoc dl(Node); in LegalizeLoadOps()
658 MVT VT = Node->getSimpleValueType(0); in LegalizeLoadOps()
659 SDValue RVal = SDValue(Node, 0); in LegalizeLoadOps()
660 SDValue RChain = SDValue(Node, 1); in LegalizeLoadOps()
662 switch (TLI.getOperationAction(Node->getOpcode(), VT)) { in LegalizeLoadOps()
684 MVT NVT = TLI.getTypeToPromoteTo(Node->getOpcode(), VT); in LegalizeLoadOps()
694 if (RChain.getNode() != Node) { in LegalizeLoadOps()
695 assert(RVal.getNode() != Node && "Load must be completely replaced"); in LegalizeLoadOps()
696 DAG.ReplaceAllUsesOfValueWith(SDValue(Node, 0), RVal); in LegalizeLoadOps()
697 DAG.ReplaceAllUsesOfValueWith(SDValue(Node, 1), RChain); in LegalizeLoadOps()
702 ReplacedNode(Node); in LegalizeLoadOps()
723 TLI.getLoadExtAction(ExtType, Node->getValueType(0), MVT::i1) == in LegalizeLoadOps()
738 DAG.getExtLoad(NewExtType, dl, Node->getValueType(0), Chain, Ptr, in LegalizeLoadOps()
774 Lo = DAG.getExtLoad(ISD::ZEXTLOAD, dl, Node->getValueType(0), Chain, Ptr, in LegalizeLoadOps()
783 Hi = DAG.getExtLoad(ExtType, dl, Node->getValueType(0), Chain, Ptr, in LegalizeLoadOps()
800 Value = DAG.getNode(ISD::OR, dl, Node->getValueType(0), Lo, Hi); in LegalizeLoadOps()
805 Hi = DAG.getExtLoad(ExtType, dl, Node->getValueType(0), Chain, Ptr, in LegalizeLoadOps()
814 Lo = DAG.getExtLoad(ISD::ZEXTLOAD, dl, Node->getValueType(0), Chain, Ptr, in LegalizeLoadOps()
831 Value = DAG.getNode(ISD::OR, dl, Node->getValueType(0), Lo, Hi); in LegalizeLoadOps()
837 switch (TLI.getLoadExtAction(ExtType, Node->getValueType(0), in LegalizeLoadOps()
844 Value = SDValue(Node, 0); in LegalizeLoadOps()
845 Chain = SDValue(Node, 1); in LegalizeLoadOps()
848 if (SDValue Res = TLI.LowerOperation(SDValue(Node, 0), DAG)) { in LegalizeLoadOps()
866 EVT DestVT = Node->getValueType(0); in LegalizeLoadOps()
882 Value = DAG.getNode(ExtendOp, dl, Node->getValueType(0), Load); in LegalizeLoadOps()
917 Node->getValueType(0), in LegalizeLoadOps()
936 if (Chain.getNode() != Node) { in LegalizeLoadOps()
937 assert(Value.getNode() != Node && "Load must be completely replaced"); in LegalizeLoadOps()
938 DAG.ReplaceAllUsesOfValueWith(SDValue(Node, 0), Value); in LegalizeLoadOps()
939 DAG.ReplaceAllUsesOfValueWith(SDValue(Node, 1), Chain); in LegalizeLoadOps()
944 ReplacedNode(Node); in LegalizeLoadOps()
949 void SelectionDAGLegalize::LegalizeOp(SDNode *Node) { in LegalizeOp() argument
950 LLVM_DEBUG(dbgs() << "\nLegalizing: "; Node->dump(&DAG)); in LegalizeOp()
953 if (Node->getOpcode() == ISD::TargetConstant || in LegalizeOp()
954 Node->getOpcode() == ISD::Register) in LegalizeOp()
958 for (unsigned i = 0, e = Node->getNumValues(); i != e; ++i) in LegalizeOp()
959 assert((TLI.getTypeAction(*DAG.getContext(), Node->getValueType(i)) == in LegalizeOp()
961 TLI.isTypeLegal(Node->getValueType(i))) && in LegalizeOp()
964 for (const SDValue &Op : Node->op_values()) in LegalizeOp()
976 switch (Node->getOpcode()) { in LegalizeOp()
981 Action = TLI.getOperationAction(Node->getOpcode(), MVT::Other); in LegalizeOp()
984 Action = TLI.getOperationAction(Node->getOpcode(), in LegalizeOp()
985 Node->getValueType(0)); in LegalizeOp()
988 Action = TLI.getOperationAction(Node->getOpcode(), in LegalizeOp()
989 Node->getValueType(0)); in LegalizeOp()
991 Action = TLI.getOperationAction(Node->getOpcode(), MVT::Other); in LegalizeOp()
997 Action = TLI.getOperationAction(Node->getOpcode(), in LegalizeOp()
998 Node->getOperand(0).getValueType()); in LegalizeOp()
1002 EVT InnerType = cast<VTSDNode>(Node->getOperand(1))->getVT(); in LegalizeOp()
1003 Action = TLI.getOperationAction(Node->getOpcode(), InnerType); in LegalizeOp()
1007 Action = TLI.getOperationAction(Node->getOpcode(), in LegalizeOp()
1008 Node->getOperand(2).getValueType()); in LegalizeOp()
1013 unsigned CCOperand = Node->getOpcode() == ISD::SELECT_CC ? 4 : in LegalizeOp()
1014 Node->getOpcode() == ISD::SETCC ? 2 : 1; in LegalizeOp()
1015 unsigned CompareOperand = Node->getOpcode() == ISD::BR_CC ? 2 : 0; in LegalizeOp()
1016 MVT OpVT = Node->getOperand(CompareOperand).getSimpleValueType(); in LegalizeOp()
1018 cast<CondCodeSDNode>(Node->getOperand(CCOperand))->get(); in LegalizeOp()
1021 if (Node->getOpcode() == ISD::SELECT_CC) in LegalizeOp()
1022 Action = TLI.getOperationAction(Node->getOpcode(), in LegalizeOp()
1023 Node->getValueType(0)); in LegalizeOp()
1025 Action = TLI.getOperationAction(Node->getOpcode(), OpVT); in LegalizeOp()
1053 Action = TLI.getOperationAction(Node->getOpcode(), Node->getValueType(0)); in LegalizeOp()
1065 Action = TLI.getOperationAction(Node->getOpcode(), Node->getValueType(0)); in LegalizeOp()
1072 Action = TLI.getOperationAction(Node->getOpcode(), MVT::i64); in LegalizeOp()
1082 Action = TLI.getOperationAction(Node->getOpcode(), Node->getValueType(0)); in LegalizeOp()
1086 NewVal = DAG.getNode(ISD::TRAP, SDLoc(Node), Node->getVTList(), in LegalizeOp()
1087 Node->getOperand(0)); in LegalizeOp()
1088 ReplaceNode(Node, NewVal.getNode()); in LegalizeOp()
1121 Action = TLI.getStrictFPOperationAction(Node->getOpcode(), in LegalizeOp()
1122 Node->getValueType(0)); in LegalizeOp()
1128 Action = TLI.getOperationAction(Node->getOpcode(), Node->getValueType(0)); in LegalizeOp()
1132 unsigned Scale = Node->getConstantOperandVal(2); in LegalizeOp()
1133 Action = TLI.getFixedPointOperationAction(Node->getOpcode(), in LegalizeOp()
1134 Node->getValueType(0), Scale); in LegalizeOp()
1138 Action = TLI.getOperationAction(Node->getOpcode(), in LegalizeOp()
1139 cast<MaskedScatterSDNode>(Node)->getValue().getValueType()); in LegalizeOp()
1142 Action = TLI.getOperationAction(Node->getOpcode(), in LegalizeOp()
1143 cast<MaskedStoreSDNode>(Node)->getValue().getValueType()); in LegalizeOp()
1146 if (Node->getOpcode() >= ISD::BUILTIN_OP_END) { in LegalizeOp()
1149 Action = TLI.getOperationAction(Node->getOpcode(), Node->getValueType(0)); in LegalizeOp()
1155 SDNode *NewNode = Node; in LegalizeOp()
1156 switch (Node->getOpcode()) { in LegalizeOp()
1165 SDValue Op0 = Node->getOperand(0); in LegalizeOp()
1166 SDValue Op1 = Node->getOperand(1); in LegalizeOp()
1175 NewNode = DAG.UpdateNodeOperands(Node, Op0, SAO); in LegalizeOp()
1186 SDValue Op0 = Node->getOperand(0); in LegalizeOp()
1187 SDValue Op1 = Node->getOperand(1); in LegalizeOp()
1188 SDValue Op2 = Node->getOperand(2); in LegalizeOp()
1195 NewNode = DAG.UpdateNodeOperands(Node, Op0, Op1, SAO); in LegalizeOp()
1201 if (NewNode != Node) { in LegalizeOp()
1202 ReplaceNode(Node, NewNode); in LegalizeOp()
1203 Node = NewNode; in LegalizeOp()
1213 if (SDValue Res = TLI.LowerOperation(SDValue(Node, 0), DAG)) { in LegalizeOp()
1214 if (!(Res.getNode() != Node || Res.getResNo() != 0)) in LegalizeOp()
1217 if (Node->getNumValues() == 1) { in LegalizeOp()
1220 ReplaceNode(SDValue(Node, 0), Res); in LegalizeOp()
1225 for (unsigned i = 0, e = Node->getNumValues(); i != e; ++i) in LegalizeOp()
1228 ReplaceNode(Node, ResultVals.data()); in LegalizeOp()
1234 if (ExpandNode(Node)) in LegalizeOp()
1238 ConvertNodeToLibcall(Node); in LegalizeOp()
1241 PromoteNode(Node); in LegalizeOp()
1246 switch (Node->getOpcode()) { in LegalizeOp()
1250 Node->dump( &DAG); in LegalizeOp()
1259 return LegalizeLoadOps(Node); in LegalizeOp()
1261 return LegalizeStoreOps(Node); in LegalizeOp()
1373 SDValue SelectionDAGLegalize::ExpandVectorBuildThroughStack(SDNode* Node) { in ExpandVectorBuildThroughStack() argument
1378 EVT VT = Node->getValueType(0); in ExpandVectorBuildThroughStack()
1380 SDLoc dl(Node); in ExpandVectorBuildThroughStack()
1390 for (unsigned i = 0, e = Node->getNumOperands(); i != e; ++i) { in ExpandVectorBuildThroughStack()
1392 if (Node->getOperand(i).isUndef()) continue; in ExpandVectorBuildThroughStack()
1401 if (EltVT.bitsLT(Node->getOperand(i).getValueType().getScalarType())) { in ExpandVectorBuildThroughStack()
1403 Node->getOperand(i), Idx, in ExpandVectorBuildThroughStack()
1406 Stores.push_back(DAG.getStore(DAG.getEntryNode(), dl, Node->getOperand(i), in ExpandVectorBuildThroughStack()
1488 SDValue SelectionDAGLegalize::ExpandFCOPYSIGN(SDNode *Node) const { in ExpandFCOPYSIGN()
1489 SDLoc DL(Node); in ExpandFCOPYSIGN()
1490 SDValue Mag = Node->getOperand(0); in ExpandFCOPYSIGN()
1491 SDValue Sign = Node->getOperand(1); in ExpandFCOPYSIGN()
1544 SDValue SelectionDAGLegalize::ExpandFABS(SDNode *Node) const { in ExpandFABS()
1545 SDLoc DL(Node); in ExpandFABS()
1546 SDValue Value = Node->getOperand(0); in ExpandFABS()
1565 void SelectionDAGLegalize::ExpandDYNAMIC_STACKALLOC(SDNode* Node, in ExpandDYNAMIC_STACKALLOC() argument
1570 SDLoc dl(Node); in ExpandDYNAMIC_STACKALLOC()
1571 EVT VT = Node->getValueType(0); in ExpandDYNAMIC_STACKALLOC()
1572 SDValue Tmp1 = SDValue(Node, 0); in ExpandDYNAMIC_STACKALLOC()
1573 SDValue Tmp2 = SDValue(Node, 1); in ExpandDYNAMIC_STACKALLOC()
1574 SDValue Tmp3 = Node->getOperand(2); in ExpandDYNAMIC_STACKALLOC()
1764 SDValue SelectionDAGLegalize::ExpandSCALAR_TO_VECTOR(SDNode *Node) { in ExpandSCALAR_TO_VECTOR() argument
1765 SDLoc dl(Node); in ExpandSCALAR_TO_VECTOR()
1768 SDValue StackPtr = DAG.CreateStackTemporary(Node->getValueType(0)); in ExpandSCALAR_TO_VECTOR()
1774 DAG.getEntryNode(), dl, Node->getOperand(0), StackPtr, in ExpandSCALAR_TO_VECTOR()
1776 Node->getValueType(0).getVectorElementType()); in ExpandSCALAR_TO_VECTOR()
1778 Node->getValueType(0), dl, Ch, StackPtr, in ExpandSCALAR_TO_VECTOR()
1783 ExpandBVWithShuffles(SDNode *Node, SelectionDAG &DAG, in ExpandBVWithShuffles() argument
1785 unsigned NumElems = Node->getNumOperands(); in ExpandBVWithShuffles()
1786 SDLoc dl(Node); in ExpandBVWithShuffles()
1787 EVT VT = Node->getValueType(0); in ExpandBVWithShuffles()
1800 SDValue V = Node->getOperand(i); in ExpandBVWithShuffles()
1878 SDValue SelectionDAGLegalize::ExpandBUILD_VECTOR(SDNode *Node) { in ExpandBUILD_VECTOR() argument
1879 unsigned NumElems = Node->getNumOperands(); in ExpandBUILD_VECTOR()
1881 SDLoc dl(Node); in ExpandBUILD_VECTOR()
1882 EVT VT = Node->getValueType(0); in ExpandBUILD_VECTOR()
1883 EVT OpVT = Node->getOperand(0).getValueType(); in ExpandBUILD_VECTOR()
1892 SDValue V = Node->getOperand(i); in ExpandBUILD_VECTOR()
1914 return DAG.getNode(ISD::SCALAR_TO_VECTOR, dl, VT, Node->getOperand(0)); in ExpandBUILD_VECTOR()
1921 dyn_cast<ConstantFPSDNode>(Node->getOperand(i))) { in ExpandBUILD_VECTOR()
1924 dyn_cast<ConstantSDNode>(Node->getOperand(i))) { in ExpandBUILD_VECTOR()
1936 assert(Node->getOperand(i).isUndef()); in ExpandBUILD_VECTOR()
1953 if (Node->getOperand(i).isUndef()) in ExpandBUILD_VECTOR()
1955 DefinedValues.insert(Node->getOperand(i)); in ExpandBUILD_VECTOR()
1962 SDValue V = Node->getOperand(i); in ExpandBUILD_VECTOR()
1967 if (TLI.isShuffleMaskLegal(ShuffleVec, Node->getValueType(0))) { in ExpandBUILD_VECTOR()
1981 if (ExpandBVWithShuffles(Node, DAG, TLI, Res)) in ExpandBUILD_VECTOR()
1987 return ExpandVectorBuildThroughStack(Node); in ExpandBUILD_VECTOR()
1994 SDValue SelectionDAGLegalize::ExpandLibCall(RTLIB::Libcall LC, SDNode *Node, in ExpandLibCall() argument
1998 for (const SDValue &Op : Node->op_values()) { in ExpandLibCall()
2001 Entry.Node = Op; in ExpandLibCall()
2010 EVT RetVT = Node->getValueType(0); in ExpandLibCall()
2024 TLI.isInTailCallPosition(DAG, Node, TCChain) && in ExpandLibCall()
2031 CLI.setDebugLoc(SDLoc(Node)) in ExpandLibCall()
2062 Entry.Node = Ops[i]; in ExpandLibCall()
2063 Entry.Ty = Entry.Node.getValueType().getTypeForEVT(*DAG.getContext()); in ExpandLibCall()
2091 SDNode *Node, in ExpandChainLibCall() argument
2093 SDValue InChain = Node->getOperand(0); in ExpandChainLibCall()
2097 for (unsigned i = 1, e = Node->getNumOperands(); i != e; ++i) { in ExpandChainLibCall()
2098 EVT ArgVT = Node->getOperand(i).getValueType(); in ExpandChainLibCall()
2100 Entry.Node = Node->getOperand(i); in ExpandChainLibCall()
2109 Type *RetTy = Node->getValueType(0).getTypeForEVT(*DAG.getContext()); in ExpandChainLibCall()
2112 CLI.setDebugLoc(SDLoc(Node)) in ExpandChainLibCall()
2124 SDValue SelectionDAGLegalize::ExpandFPLibCall(SDNode* Node, in ExpandFPLibCall() argument
2130 if (Node->isStrictFPOpcode()) in ExpandFPLibCall()
2131 Node = DAG.mutateStrictFPToFP(Node); in ExpandFPLibCall()
2134 switch (Node->getSimpleValueType(0).SimpleTy) { in ExpandFPLibCall()
2142 return ExpandLibCall(LC, Node, false); in ExpandFPLibCall()
2145 SDValue SelectionDAGLegalize::ExpandIntLibCall(SDNode* Node, bool isSigned, in ExpandIntLibCall() argument
2152 switch (Node->getSimpleValueType(0).SimpleTy) { in ExpandIntLibCall()
2160 return ExpandLibCall(LC, Node, isSigned); in ExpandIntLibCall()
2165 SelectionDAGLegalize::ExpandDivRemLibCall(SDNode *Node, in ExpandDivRemLibCall() argument
2167 unsigned Opcode = Node->getOpcode(); in ExpandDivRemLibCall()
2171 switch (Node->getSimpleValueType(0).SimpleTy) { in ExpandDivRemLibCall()
2185 EVT RetVT = Node->getValueType(0); in ExpandDivRemLibCall()
2190 for (const SDValue &Op : Node->op_values()) { in ExpandDivRemLibCall()
2193 Entry.Node = Op; in ExpandDivRemLibCall()
2202 Entry.Node = FIPtr; in ExpandDivRemLibCall()
2211 SDLoc dl(Node); in ExpandDivRemLibCall()
2230 static bool isSinCosLibcallAvailable(SDNode *Node, const TargetLowering &TLI) { in isSinCosLibcallAvailable() argument
2232 switch (Node->getSimpleValueType(0).SimpleTy) { in isSinCosLibcallAvailable()
2244 static bool useSinCos(SDNode *Node) { in useSinCos() argument
2245 unsigned OtherOpcode = Node->getOpcode() == ISD::FSIN in useSinCos()
2248 SDValue Op0 = Node->getOperand(0); in useSinCos()
2252 if (User == Node) in useSinCos()
2263 SelectionDAGLegalize::ExpandSinCosLibCall(SDNode *Node, in ExpandSinCosLibCall() argument
2266 switch (Node->getSimpleValueType(0).SimpleTy) { in ExpandSinCosLibCall()
2280 EVT RetVT = Node->getValueType(0); in ExpandSinCosLibCall()
2287 Entry.Node = Node->getOperand(0); in ExpandSinCosLibCall()
2295 Entry.Node = SinPtr; in ExpandSinCosLibCall()
2303 Entry.Node = CosPtr; in ExpandSinCosLibCall()
2312 SDLoc dl(Node); in ExpandSinCosLibCall()
2641 bool SelectionDAGLegalize::ExpandNode(SDNode *Node) { in ExpandNode() argument
2644 SDLoc dl(Node); in ExpandNode()
2647 switch (Node->getOpcode()) { in ExpandNode()
2649 if (TLI.expandABS(Node, Tmp1, DAG)) in ExpandNode()
2653 if (TLI.expandCTPOP(Node, Tmp1, DAG)) in ExpandNode()
2658 if (TLI.expandCTLZ(Node, Tmp1, DAG)) in ExpandNode()
2663 if (TLI.expandCTTZ(Node, Tmp1, DAG)) in ExpandNode()
2667 Results.push_back(ExpandBITREVERSE(Node->getOperand(0), dl)); in ExpandNode()
2670 Results.push_back(ExpandBSWAP(Node->getOperand(0), dl)); in ExpandNode()
2675 Results.push_back(DAG.getConstant(0, dl, Node->getValueType(0))); in ExpandNode()
2678 SDValue CfaArg = DAG.getSExtOrTrunc(Node->getOperand(0), dl, in ExpandNode()
2693 Results.push_back(DAG.getConstant(1, dl, Node->getValueType(0))); in ExpandNode()
2702 Results.push_back(Node->getOperand(0)); in ExpandNode()
2707 Results.append(Node->getNumValues() - 1, in ExpandNode()
2708 DAG.getConstant(0, dl, Node->getValueType(0))); in ExpandNode()
2709 Results.push_back(Node->getOperand(0)); in ExpandNode()
2715 Results.push_back(Node->getOperand(0)); in ExpandNode()
2719 SDValue Zero = DAG.getConstant(0, dl, Node->getValueType(0)); in ExpandNode()
2720 SDVTList VTs = DAG.getVTList(Node->getValueType(0), MVT::Other); in ExpandNode()
2722 ISD::ATOMIC_CMP_SWAP, dl, cast<AtomicSDNode>(Node)->getMemoryVT(), VTs, in ExpandNode()
2723 Node->getOperand(0), Node->getOperand(1), Zero, Zero, in ExpandNode()
2724 cast<AtomicSDNode>(Node)->getMemOperand()); in ExpandNode()
2732 cast<AtomicSDNode>(Node)->getMemoryVT(), in ExpandNode()
2733 Node->getOperand(0), in ExpandNode()
2734 Node->getOperand(1), Node->getOperand(2), in ExpandNode()
2735 cast<AtomicSDNode>(Node)->getMemOperand()); in ExpandNode()
2743 SDVTList VTs = DAG.getVTList(Node->getValueType(0), MVT::Other); in ExpandNode()
2745 ISD::ATOMIC_CMP_SWAP, dl, cast<AtomicSDNode>(Node)->getMemoryVT(), VTs, in ExpandNode()
2746 Node->getOperand(0), Node->getOperand(1), Node->getOperand(2), in ExpandNode()
2747 Node->getOperand(3), cast<MemSDNode>(Node)->getMemOperand()); in ExpandNode()
2751 SDValue RHS = Node->getOperand(1); in ExpandNode()
2753 EVT AtomicType = cast<AtomicSDNode>(Node)->getMemoryVT(); in ExpandNode()
2754 EVT OuterType = Node->getValueType(0); in ExpandNode()
2760 Node->getOperand(2), DAG.getValueType(AtomicType)); in ExpandNode()
2766 RHS = DAG.getZeroExtendInReg(Node->getOperand(2), dl, AtomicType); in ExpandNode()
2771 RHS = DAG.getZeroExtendInReg(Node->getOperand(2), dl, AtomicType); in ExpandNode()
2778 DAG.getSetCC(dl, Node->getValueType(1), LHS, RHS, ISD::SETEQ); in ExpandNode()
2786 ExpandDYNAMIC_STACKALLOC(Node, Results); in ExpandNode()
2789 for (unsigned i = 0; i < Node->getNumValues(); i++) in ExpandNode()
2790 Results.push_back(Node->getOperand(i)); in ExpandNode()
2793 EVT VT = Node->getValueType(0); in ExpandNode()
2804 Tmp1 = EmitStackConvert(Node->getOperand(0), Node->getValueType(0), in ExpandNode()
2805 Node->getValueType(0), dl); in ExpandNode()
2809 Tmp1 = EmitStackConvert(Node->getOperand(0), in ExpandNode()
2810 Node->getOperand(0).getValueType(), in ExpandNode()
2811 Node->getValueType(0), dl); in ExpandNode()
2815 EVT ExtraVT = cast<VTSDNode>(Node->getOperand(1))->getVT(); in ExpandNode()
2816 EVT VT = Node->getValueType(0); in ExpandNode()
2827 SDValue And = DAG.getNode(ISD::AND, dl, VT, Node->getOperand(0), One); in ExpandNode()
2840 Tmp1 = DAG.getNode(ISD::SHL, dl, Node->getValueType(0), in ExpandNode()
2841 Node->getOperand(0), ShiftCst); in ExpandNode()
2842 Tmp1 = DAG.getNode(ISD::SRA, dl, Node->getValueType(0), Tmp1, ShiftCst); in ExpandNode()
2853 EVT ExtraVT = cast<VTSDNode>(Node->getOperand(1))->getVT(); in ExpandNode()
2854 Tmp1 = EmitStackConvert(Node->getOperand(0), ExtraVT, in ExpandNode()
2855 Node->getValueType(0), dl); in ExpandNode()
2860 if (TLI.expandUINT_TO_FP(Node, Tmp1, DAG)) { in ExpandNode()
2866 Tmp1 = ExpandLegalINT_TO_FP(Node->getOpcode() == ISD::SINT_TO_FP, in ExpandNode()
2867 Node->getOperand(0), Node->getValueType(0), dl); in ExpandNode()
2871 if (TLI.expandFP_TO_SINT(Node, Tmp1, DAG)) in ExpandNode()
2875 if (TLI.expandFP_TO_UINT(Node, Tmp1, DAG)) in ExpandNode()
2879 Results.push_back(DAG.expandVAArg(Node)); in ExpandNode()
2883 Results.push_back(DAG.expandVACopy(Node)); in ExpandNode()
2886 if (Node->getOperand(0).getValueType().getVectorNumElements() == 1) in ExpandNode()
2888 Tmp1 = DAG.getNode(ISD::BITCAST, dl, Node->getValueType(0), in ExpandNode()
2889 Node->getOperand(0)); in ExpandNode()
2891 Tmp1 = ExpandExtractFromVectorThroughStack(SDValue(Node, 0)); in ExpandNode()
2895 Results.push_back(ExpandExtractFromVectorThroughStack(SDValue(Node, 0))); in ExpandNode()
2898 Results.push_back(ExpandInsertToVectorThroughStack(SDValue(Node, 0))); in ExpandNode()
2901 Results.push_back(ExpandVectorBuildThroughStack(Node)); in ExpandNode()
2904 Results.push_back(ExpandSCALAR_TO_VECTOR(Node)); in ExpandNode()
2907 Results.push_back(ExpandINSERT_VECTOR_ELT(Node->getOperand(0), in ExpandNode()
2908 Node->getOperand(1), in ExpandNode()
2909 Node->getOperand(2), dl)); in ExpandNode()
2913 ArrayRef<int> Mask = cast<ShuffleVectorSDNode>(Node)->getMask(); in ExpandNode()
2915 EVT VT = Node->getValueType(0); in ExpandNode()
2917 SDValue Op0 = Node->getOperand(0); in ExpandNode()
2918 SDValue Op1 = Node->getOperand(1); in ExpandNode()
2983 Tmp1 = DAG.getNode(ISD::BITCAST, dl, Node->getValueType(0), Tmp1); in ExpandNode()
2988 EVT OpTy = Node->getOperand(0).getValueType(); in ExpandNode()
2989 if (cast<ConstantSDNode>(Node->getOperand(1))->getZExtValue()) { in ExpandNode()
2991 Tmp1 = DAG.getNode(ISD::SRL, dl, OpTy, Node->getOperand(0), in ExpandNode()
2994 Node->getOperand(0).getValueType(), in ExpandNode()
2996 Tmp1 = DAG.getNode(ISD::TRUNCATE, dl, Node->getValueType(0), Tmp1); in ExpandNode()
2999 Tmp1 = DAG.getNode(ISD::TRUNCATE, dl, Node->getValueType(0), in ExpandNode()
3000 Node->getOperand(0)); in ExpandNode()
3009 Results.push_back(DAG.getCopyFromReg(Node->getOperand(0), dl, SP, in ExpandNode()
3010 Node->getValueType(0))); in ExpandNode()
3013 Results.push_back(DAG.getUNDEF(Node->getValueType(0))); in ExpandNode()
3014 Results.push_back(Node->getOperand(0)); in ExpandNode()
3021 Results.push_back(DAG.getCopyToReg(Node->getOperand(0), dl, SP, in ExpandNode()
3022 Node->getOperand(1))); in ExpandNode()
3024 Results.push_back(Node->getOperand(0)); in ExpandNode()
3028 Results.push_back(DAG.getConstant(0, dl, Node->getValueType(0))); in ExpandNode()
3032 Results.push_back(ExpandFCOPYSIGN(Node)); in ExpandNode()
3036 Tmp1 = DAG.getConstantFP(-0.0, dl, Node->getValueType(0)); in ExpandNode()
3038 Tmp1 = DAG.getNode(ISD::FSUB, dl, Node->getValueType(0), Tmp1, in ExpandNode()
3039 Node->getOperand(0)); in ExpandNode()
3043 Results.push_back(ExpandFABS(Node)); in ExpandNode()
3051 switch (Node->getOpcode()) { in ExpandNode()
3058 Tmp1 = Node->getOperand(0); in ExpandNode()
3059 Tmp2 = Node->getOperand(1); in ExpandNode()
3066 if (SDValue Expanded = TLI.expandFMINNUM_FMAXNUM(Node, DAG)) in ExpandNode()
3072 EVT VT = Node->getValueType(0); in ExpandNode()
3076 isSinCosLibcallAvailable(Node, TLI)) in ExpandNode()
3077 && useSinCos(Node)) { in ExpandNode()
3079 Tmp1 = DAG.getNode(ISD::FSINCOS, dl, VTs, Node->getOperand(0)); in ExpandNode()
3080 if (Node->getOpcode() == ISD::FCOS) in ExpandNode()
3090 if (Node->getValueType(0) != MVT::f32) { in ExpandNode()
3095 DAG.getNode(ISD::FP16_TO_FP, dl, MVT::f32, Node->getOperand(0)); in ExpandNode()
3097 DAG.getNode(ISD::FP_EXTEND, dl, Node->getValueType(0), Res)); in ExpandNode()
3103 SDValue Op = Node->getOperand(0); in ExpandNode()
3112 DAG.getNode(ISD::FP_TO_FP16, dl, Node->getValueType(0), FloatVal)); in ExpandNode()
3117 ConstantFPSDNode *CFP = cast<ConstantFPSDNode>(Node); in ExpandNode()
3120 if (!TLI.isFPImmLegal(CFP->getValueAPF(), Node->getValueType(0))) in ExpandNode()
3125 ConstantSDNode *CP = cast<ConstantSDNode>(Node); in ExpandNode()
3130 EVT VT = Node->getValueType(0); in ExpandNode()
3133 const SDNodeFlags Flags = Node->getFlags(); in ExpandNode()
3134 Tmp1 = DAG.getNode(ISD::FNEG, dl, VT, Node->getOperand(1)); in ExpandNode()
3135 Tmp1 = DAG.getNode(ISD::FADD, dl, VT, Node->getOperand(0), Tmp1, Flags); in ExpandNode()
3141 EVT VT = Node->getValueType(0); in ExpandNode()
3145 Tmp1 = DAG.getNode(ISD::XOR, dl, VT, Node->getOperand(1), in ExpandNode()
3149 Results.push_back(DAG.getNode(ISD::ADD, dl, VT, Node->getOperand(0), Tmp1)); in ExpandNode()
3154 EVT VT = Node->getValueType(0); in ExpandNode()
3155 bool isSigned = Node->getOpcode() == ISD::SREM; in ExpandNode()
3158 Tmp2 = Node->getOperand(0); in ExpandNode()
3159 Tmp3 = Node->getOperand(1); in ExpandNode()
3175 bool isSigned = Node->getOpcode() == ISD::SDIV; in ExpandNode()
3177 EVT VT = Node->getValueType(0); in ExpandNode()
3180 Tmp1 = DAG.getNode(DivRemOpc, dl, VTs, Node->getOperand(0), in ExpandNode()
3181 Node->getOperand(1)); in ExpandNode()
3189 Node->getOpcode() == ISD::MULHU ? ISD::UMUL_LOHI : ISD::SMUL_LOHI; in ExpandNode()
3190 EVT VT = Node->getValueType(0); in ExpandNode()
3193 Tmp1 = DAG.getNode(ExpandOpcode, dl, VTs, Node->getOperand(0), in ExpandNode()
3194 Node->getOperand(1)); in ExpandNode()
3200 SDValue LHS = Node->getOperand(0); in ExpandNode()
3201 SDValue RHS = Node->getOperand(1); in ExpandNode()
3204 Node->getOpcode() == ISD::UMUL_LOHI ? ISD::MULHU : ISD::MULHS; in ExpandNode()
3215 if (TLI.expandMUL_LOHI(Node->getOpcode(), VT, Node, LHS, RHS, Halves, in ExpandNode()
3232 EVT VT = Node->getValueType(0); in ExpandNode()
3254 Results.push_back(DAG.getNode(OpToUse, dl, VTs, Node->getOperand(0), in ExpandNode()
3255 Node->getOperand(1))); in ExpandNode()
3265 TLI.expandMUL(Node, Lo, Hi, HalfType, DAG, in ExpandNode()
3279 if (TLI.expandFunnelShift(Node, Tmp1, DAG)) in ExpandNode()
3284 if (TLI.expandROT(Node, Tmp1, DAG)) in ExpandNode()
3291 Results.push_back(TLI.expandAddSubSat(Node, DAG)); in ExpandNode()
3294 Results.push_back(TLI.getExpandedFixedPointMultiplication(Node, DAG)); in ExpandNode()
3298 SDValue LHS = Node->getOperand(0); in ExpandNode()
3299 SDValue RHS = Node->getOperand(1); in ExpandNode()
3300 SDValue Sum = DAG.getNode(Node->getOpcode() == ISD::SADDO ? in ExpandNode()
3304 EVT ResultType = Node->getValueType(1); in ExpandNode()
3305 EVT OType = getSetCCResultType(Node->getValueType(0)); in ExpandNode()
3320 Node->getOpcode() == ISD::SADDO ? in ExpandNode()
3332 SDValue LHS = Node->getOperand(0); in ExpandNode()
3333 SDValue RHS = Node->getOperand(1); in ExpandNode()
3334 bool IsAdd = Node->getOpcode() == ISD::UADDO; in ExpandNode()
3337 if (TLI.isOperationLegalOrCustom(OpcCarry, Node->getValueType(0))) { in ExpandNode()
3338 SDValue CarryIn = DAG.getConstant(0, dl, Node->getValueType(1)); in ExpandNode()
3339 SDValue NodeCarry = DAG.getNode(OpcCarry, dl, Node->getVTList(), in ExpandNode()
3350 EVT ResultType = Node->getValueType(1); in ExpandNode()
3351 EVT SetCCType = getSetCCResultType(Node->getValueType(0)); in ExpandNode()
3360 EVT VT = Node->getValueType(0); in ExpandNode()
3362 SDValue LHS = Node->getOperand(0); in ExpandNode()
3363 SDValue RHS = Node->getOperand(1); in ExpandNode()
3369 bool isSigned = Node->getOpcode() == ISD::SMULO; in ExpandNode()
3455 EVT RType = Node->getValueType(1); in ExpandNode()
3467 EVT PairTy = Node->getValueType(0); in ExpandNode()
3468 Tmp1 = DAG.getNode(ISD::ZERO_EXTEND, dl, PairTy, Node->getOperand(0)); in ExpandNode()
3469 Tmp2 = DAG.getNode(ISD::ANY_EXTEND, dl, PairTy, Node->getOperand(1)); in ExpandNode()
3478 Tmp1 = Node->getOperand(0); in ExpandNode()
3479 Tmp2 = Node->getOperand(1); in ExpandNode()
3480 Tmp3 = Node->getOperand(2); in ExpandNode()
3493 SDValue Chain = Node->getOperand(0); in ExpandNode()
3494 SDValue Table = Node->getOperand(1); in ExpandNode()
3495 SDValue Index = Node->getOperand(2); in ExpandNode()
3537 Tmp1 = Node->getOperand(0); in ExpandNode()
3538 Tmp2 = Node->getOperand(1); in ExpandNode()
3543 Node->getOperand(2)); in ExpandNode()
3557 Node->getOperand(2)); in ExpandNode()
3562 Tmp1 = Node->getOperand(0); in ExpandNode()
3563 Tmp2 = Node->getOperand(1); in ExpandNode()
3564 Tmp3 = Node->getOperand(2); in ExpandNode()
3565 bool Legalized = LegalizeSetCCCondCode(Node->getValueType(0), Tmp1, Tmp2, in ExpandNode()
3572 Tmp1 = DAG.getNode(ISD::SETCC, dl, Node->getValueType(0), in ExpandNode()
3586 EVT VT = Node->getValueType(0); in ExpandNode()
3605 Tmp1 = Node->getOperand(0); // LHS in ExpandNode()
3606 Tmp2 = Node->getOperand(1); // RHS in ExpandNode()
3607 Tmp3 = Node->getOperand(2); // True in ExpandNode()
3608 Tmp4 = Node->getOperand(3); // False in ExpandNode()
3609 EVT VT = Node->getValueType(0); in ExpandNode()
3610 SDValue CC = Node->getOperand(4); in ExpandNode()
3665 Tmp1 = DAG.getNode(ISD::SELECT_CC, dl, Node->getValueType(0), in ExpandNode()
3670 Tmp1 = DAG.getNode(ISD::SELECT_CC, dl, Node->getValueType(0), Tmp1, in ExpandNode()
3678 Tmp1 = Node->getOperand(0); // Chain in ExpandNode()
3679 Tmp2 = Node->getOperand(2); // LHS in ExpandNode()
3680 Tmp3 = Node->getOperand(3); // RHS in ExpandNode()
3681 Tmp4 = Node->getOperand(1); // CC in ExpandNode()
3693 Tmp1 = DAG.getNode(ISD::BR_CC, dl, Node->getValueType(0), Tmp1, in ExpandNode()
3694 Tmp4, Tmp2, Tmp3, Node->getOperand(4)); in ExpandNode()
3698 Tmp1 = DAG.getNode(ISD::BR_CC, dl, Node->getValueType(0), Tmp1, Tmp4, in ExpandNode()
3699 Tmp2, Tmp3, Node->getOperand(4)); in ExpandNode()
3705 Results.push_back(ExpandBUILD_VECTOR(Node)); in ExpandNode()
3711 EVT VT = Node->getValueType(0); in ExpandNode()
3719 ISD::EXTRACT_VECTOR_ELT, dl, VT.getScalarType(), Node->getOperand(0), in ExpandNode()
3722 ISD::EXTRACT_VECTOR_ELT, dl, VT.getScalarType(), Node->getOperand(1), in ExpandNode()
3724 Scalars.push_back(DAG.getNode(Node->getOpcode(), dl, in ExpandNode()
3728 SDValue Result = DAG.getBuildVector(Node->getValueType(0), dl, Scalars); in ExpandNode()
3729 ReplaceNode(SDValue(Node, 0), Result); in ExpandNode()
3752 ReplaceNode(Node, Results.data()); in ExpandNode()
3756 void SelectionDAGLegalize::ConvertNodeToLibcall(SDNode *Node) { in ConvertNodeToLibcall() argument
3759 SDLoc dl(Node); in ConvertNodeToLibcall()
3762 unsigned Opc = Node->getOpcode(); in ConvertNodeToLibcall()
3771 .setChain(Node->getOperand(0)) in ConvertNodeToLibcall()
3799 MVT VT = cast<AtomicSDNode>(Node)->getMemoryVT().getSimpleVT(); in ConvertNodeToLibcall()
3803 std::pair<SDValue, SDValue> Tmp = ExpandChainLibCall(LC, Node, false); in ConvertNodeToLibcall()
3813 .setChain(Node->getOperand(0)) in ConvertNodeToLibcall()
3825 Results.push_back(ExpandFPLibCall(Node, RTLIB::FMIN_F32, RTLIB::FMIN_F64, in ConvertNodeToLibcall()
3831 Results.push_back(ExpandFPLibCall(Node, RTLIB::FMAX_F32, RTLIB::FMAX_F64, in ConvertNodeToLibcall()
3837 Results.push_back(ExpandFPLibCall(Node, RTLIB::SQRT_F32, RTLIB::SQRT_F64, in ConvertNodeToLibcall()
3842 Results.push_back(ExpandFPLibCall(Node, RTLIB::CBRT_F32, RTLIB::CBRT_F64, in ConvertNodeToLibcall()
3848 Results.push_back(ExpandFPLibCall(Node, RTLIB::SIN_F32, RTLIB::SIN_F64, in ConvertNodeToLibcall()
3854 Results.push_back(ExpandFPLibCall(Node, RTLIB::COS_F32, RTLIB::COS_F64, in ConvertNodeToLibcall()
3860 ExpandSinCosLibCall(Node, Results); in ConvertNodeToLibcall()
3865 Results.push_back(ExpandFPLibCall(Node, RTLIB::LOG_FINITE_F32, in ConvertNodeToLibcall()
3871 Results.push_back(ExpandFPLibCall(Node, RTLIB::LOG_F32, RTLIB::LOG_F64, in ConvertNodeToLibcall()
3878 Results.push_back(ExpandFPLibCall(Node, RTLIB::LOG2_FINITE_F32, in ConvertNodeToLibcall()
3884 Results.push_back(ExpandFPLibCall(Node, RTLIB::LOG2_F32, RTLIB::LOG2_F64, in ConvertNodeToLibcall()
3891 Results.push_back(ExpandFPLibCall(Node, RTLIB::LOG10_FINITE_F32, in ConvertNodeToLibcall()
3897 Results.push_back(ExpandFPLibCall(Node, RTLIB::LOG10_F32, RTLIB::LOG10_F64, in ConvertNodeToLibcall()
3904 Results.push_back(ExpandFPLibCall(Node, RTLIB::EXP_FINITE_F32, in ConvertNodeToLibcall()
3910 Results.push_back(ExpandFPLibCall(Node, RTLIB::EXP_F32, RTLIB::EXP_F64, in ConvertNodeToLibcall()
3917 Results.push_back(ExpandFPLibCall(Node, RTLIB::EXP2_FINITE_F32, in ConvertNodeToLibcall()
3923 Results.push_back(ExpandFPLibCall(Node, RTLIB::EXP2_F32, RTLIB::EXP2_F64, in ConvertNodeToLibcall()
3929 Results.push_back(ExpandFPLibCall(Node, RTLIB::TRUNC_F32, RTLIB::TRUNC_F64, in ConvertNodeToLibcall()
3935 Results.push_back(ExpandFPLibCall(Node, RTLIB::FLOOR_F32, RTLIB::FLOOR_F64, in ConvertNodeToLibcall()
3941 Results.push_back(ExpandFPLibCall(Node, RTLIB::CEIL_F32, RTLIB::CEIL_F64, in ConvertNodeToLibcall()
3947 Results.push_back(ExpandFPLibCall(Node, RTLIB::RINT_F32, RTLIB::RINT_F64, in ConvertNodeToLibcall()
3953 Results.push_back(ExpandFPLibCall(Node, RTLIB::NEARBYINT_F32, in ConvertNodeToLibcall()
3961 Results.push_back(ExpandFPLibCall(Node, RTLIB::ROUND_F32, in ConvertNodeToLibcall()
3969 Results.push_back(ExpandFPLibCall(Node, RTLIB::POWI_F32, RTLIB::POWI_F64, in ConvertNodeToLibcall()
3976 Results.push_back(ExpandFPLibCall(Node, RTLIB::POW_FINITE_F32, in ConvertNodeToLibcall()
3982 Results.push_back(ExpandFPLibCall(Node, RTLIB::POW_F32, RTLIB::POW_F64, in ConvertNodeToLibcall()
3987 Results.push_back(ExpandFPLibCall(Node, RTLIB::DIV_F32, RTLIB::DIV_F64, in ConvertNodeToLibcall()
3993 Results.push_back(ExpandFPLibCall(Node, RTLIB::REM_F32, RTLIB::REM_F64, in ConvertNodeToLibcall()
3999 Results.push_back(ExpandFPLibCall(Node, RTLIB::FMA_F32, RTLIB::FMA_F64, in ConvertNodeToLibcall()
4004 Results.push_back(ExpandFPLibCall(Node, RTLIB::ADD_F32, RTLIB::ADD_F64, in ConvertNodeToLibcall()
4009 Results.push_back(ExpandFPLibCall(Node, RTLIB::MUL_F32, RTLIB::MUL_F64, in ConvertNodeToLibcall()
4014 if (Node->getValueType(0) == MVT::f32) { in ConvertNodeToLibcall()
4015 Results.push_back(ExpandLibCall(RTLIB::FPEXT_F16_F32, Node, false)); in ConvertNodeToLibcall()
4020 RTLIB::getFPROUND(Node->getOperand(0).getValueType(), MVT::f16); in ConvertNodeToLibcall()
4022 Results.push_back(ExpandLibCall(LC, Node, false)); in ConvertNodeToLibcall()
4026 Results.push_back(ExpandFPLibCall(Node, RTLIB::SUB_F32, RTLIB::SUB_F64, in ConvertNodeToLibcall()
4031 Results.push_back(ExpandIntLibCall(Node, true, in ConvertNodeToLibcall()
4037 Results.push_back(ExpandIntLibCall(Node, false, in ConvertNodeToLibcall()
4043 Results.push_back(ExpandIntLibCall(Node, true, in ConvertNodeToLibcall()
4049 Results.push_back(ExpandIntLibCall(Node, false, in ConvertNodeToLibcall()
4057 ExpandDivRemLibCall(Node, Results); in ConvertNodeToLibcall()
4060 Results.push_back(ExpandIntLibCall(Node, false, in ConvertNodeToLibcall()
4066 switch (Node->getSimpleValueType(0).SimpleTy) { in ConvertNodeToLibcall()
4070 Results.push_back(ExpandLibCall(RTLIB::CTLZ_I32, Node, false)); in ConvertNodeToLibcall()
4073 Results.push_back(ExpandLibCall(RTLIB::CTLZ_I64, Node, false)); in ConvertNodeToLibcall()
4076 Results.push_back(ExpandLibCall(RTLIB::CTLZ_I128, Node, false)); in ConvertNodeToLibcall()
4085 ReplaceNode(Node, Results.data()); in ConvertNodeToLibcall()
4100 void SelectionDAGLegalize::PromoteNode(SDNode *Node) { in PromoteNode() argument
4103 MVT OVT = Node->getSimpleValueType(0); in PromoteNode()
4104 if (Node->getOpcode() == ISD::UINT_TO_FP || in PromoteNode()
4105 Node->getOpcode() == ISD::SINT_TO_FP || in PromoteNode()
4106 Node->getOpcode() == ISD::SETCC || in PromoteNode()
4107 Node->getOpcode() == ISD::EXTRACT_VECTOR_ELT || in PromoteNode()
4108 Node->getOpcode() == ISD::INSERT_VECTOR_ELT) { in PromoteNode()
4109 OVT = Node->getOperand(0).getSimpleValueType(); in PromoteNode()
4111 if (Node->getOpcode() == ISD::BR_CC) in PromoteNode()
4112 OVT = Node->getOperand(2).getSimpleValueType(); in PromoteNode()
4113 MVT NVT = TLI.getTypeToPromoteTo(Node->getOpcode(), OVT); in PromoteNode()
4114 SDLoc dl(Node); in PromoteNode()
4116 switch (Node->getOpcode()) { in PromoteNode()
4123 Tmp1 = DAG.getNode(ISD::ZERO_EXTEND, dl, NVT, Node->getOperand(0)); in PromoteNode()
4124 if (Node->getOpcode() == ISD::CTTZ) { in PromoteNode()
4135 Tmp1 = DAG.getNode(Node->getOpcode(), dl, NVT, Tmp1); in PromoteNode()
4136 if (Node->getOpcode() == ISD::CTLZ || in PromoteNode()
4137 Node->getOpcode() == ISD::CTLZ_ZERO_UNDEF) { in PromoteNode()
4148 Tmp1 = DAG.getNode(ISD::ZERO_EXTEND, dl, NVT, Node->getOperand(0)); in PromoteNode()
4149 Tmp1 = DAG.getNode(Node->getOpcode(), dl, NVT, Tmp1); in PromoteNode()
4160 Tmp1 = PromoteLegalFP_TO_INT(Node->getOperand(0), Node->getValueType(0), in PromoteNode()
4161 Node->getOpcode() == ISD::FP_TO_SINT, dl); in PromoteNode()
4166 Tmp1 = PromoteLegalINT_TO_FP(Node->getOperand(0), Node->getValueType(0), in PromoteNode()
4167 Node->getOpcode() == ISD::SINT_TO_FP, dl); in PromoteNode()
4171 SDValue Chain = Node->getOperand(0); // Get the chain. in PromoteNode()
4172 SDValue Ptr = Node->getOperand(1); // Get the pointer. in PromoteNode()
4184 Tmp1 = DAG.getVAArg(NVT, dl, Chain, Ptr, Node->getOperand(2), in PromoteNode()
4185 Node->getConstantOperandVal(3)); in PromoteNode()
4192 DAG.ReplaceAllUsesOfValueWith(SDValue(Node, 0), Tmp2); in PromoteNode()
4193 DAG.ReplaceAllUsesOfValueWith(SDValue(Node, 1), Chain); in PromoteNode()
4198 ReplacedNode(Node); in PromoteNode()
4216 switch (Node->getOpcode()) { in PromoteNode()
4232 Tmp1 = DAG.getNode(ExtOp, dl, NVT, Node->getOperand(0)); in PromoteNode()
4233 Tmp2 = DAG.getNode(ExtOp, dl, NVT, Node->getOperand(1)); in PromoteNode()
4235 Tmp1 = DAG.getNode(Node->getOpcode(), dl, NVT, Tmp1, Tmp2); in PromoteNode()
4242 unsigned ExtOp = Node->getOpcode() == ISD::UMUL_LOHI ? ISD::ZERO_EXTEND in PromoteNode()
4244 Tmp1 = DAG.getNode(ExtOp, dl, NVT, Node->getOperand(0)); in PromoteNode()
4245 Tmp2 = DAG.getNode(ExtOp, dl, NVT, Node->getOperand(1)); in PromoteNode()
4259 if (Node->getValueType(0).isVector() || in PromoteNode()
4260 Node->getValueType(0).getSizeInBits() == NVT.getSizeInBits()) { in PromoteNode()
4263 } else if (Node->getValueType(0).isInteger()) { in PromoteNode()
4270 Tmp1 = Node->getOperand(0); in PromoteNode()
4272 Tmp2 = DAG.getNode(ExtOp, dl, NVT, Node->getOperand(1)); in PromoteNode()
4273 Tmp3 = DAG.getNode(ExtOp, dl, NVT, Node->getOperand(2)); in PromoteNode()
4277 Tmp1 = DAG.getNode(TruncOp, dl, Node->getValueType(0), Tmp1); in PromoteNode()
4279 Tmp1 = DAG.getNode(TruncOp, dl, Node->getValueType(0), Tmp1, in PromoteNode()
4285 ArrayRef<int> Mask = cast<ShuffleVectorSDNode>(Node)->getMask(); in PromoteNode()
4288 Tmp1 = DAG.getNode(ISD::BITCAST, dl, NVT, Node->getOperand(0)); in PromoteNode()
4289 Tmp2 = DAG.getNode(ISD::BITCAST, dl, NVT, Node->getOperand(1)); in PromoteNode()
4301 cast<CondCodeSDNode>(Node->getOperand(2))->get(); in PromoteNode()
4304 Tmp1 = DAG.getNode(ExtOp, dl, NVT, Node->getOperand(0)); in PromoteNode()
4305 Tmp2 = DAG.getNode(ExtOp, dl, NVT, Node->getOperand(1)); in PromoteNode()
4306 Results.push_back(DAG.getNode(ISD::SETCC, dl, Node->getValueType(0), in PromoteNode()
4307 Tmp1, Tmp2, Node->getOperand(2))); in PromoteNode()
4314 cast<CondCodeSDNode>(Node->getOperand(1))->get(); in PromoteNode()
4317 Tmp1 = DAG.getNode(ExtOp, dl, NVT, Node->getOperand(2)); in PromoteNode()
4318 Tmp2 = DAG.getNode(ExtOp, dl, NVT, Node->getOperand(3)); in PromoteNode()
4319 Results.push_back(DAG.getNode(ISD::BR_CC, dl, Node->getValueType(0), in PromoteNode()
4320 Node->getOperand(0), Node->getOperand(1), in PromoteNode()
4321 Tmp1, Tmp2, Node->getOperand(4))); in PromoteNode()
4332 Tmp1 = DAG.getNode(ISD::FP_EXTEND, dl, NVT, Node->getOperand(0)); in PromoteNode()
4333 Tmp2 = DAG.getNode(ISD::FP_EXTEND, dl, NVT, Node->getOperand(1)); in PromoteNode()
4334 Tmp3 = DAG.getNode(Node->getOpcode(), dl, NVT, Tmp1, Tmp2, in PromoteNode()
4335 Node->getFlags()); in PromoteNode()
4340 Tmp1 = DAG.getNode(ISD::FP_EXTEND, dl, NVT, Node->getOperand(0)); in PromoteNode()
4341 Tmp2 = DAG.getNode(ISD::FP_EXTEND, dl, NVT, Node->getOperand(1)); in PromoteNode()
4342 Tmp3 = DAG.getNode(ISD::FP_EXTEND, dl, NVT, Node->getOperand(2)); in PromoteNode()
4345 DAG.getNode(Node->getOpcode(), dl, NVT, Tmp1, Tmp2, Tmp3), in PromoteNode()
4350 Tmp1 = DAG.getNode(ISD::FP_EXTEND, dl, NVT, Node->getOperand(0)); in PromoteNode()
4351 Tmp2 = Node->getOperand(1); in PromoteNode()
4352 Tmp3 = DAG.getNode(Node->getOpcode(), dl, NVT, Tmp1, Tmp2); in PromoteNode()
4359 const bool isTrunc = (Node->getOpcode() == ISD::FCOPYSIGN); in PromoteNode()
4380 Tmp1 = DAG.getNode(ISD::FP_EXTEND, dl, NVT, Node->getOperand(0)); in PromoteNode()
4381 Tmp2 = DAG.getNode(Node->getOpcode(), dl, NVT, Tmp1); in PromoteNode()
4402 for (unsigned I = 0, E = Node->getNumOperands(); I != E; ++I) { in PromoteNode()
4403 SDValue Op = Node->getOperand(I); in PromoteNode()
4407 SDLoc SL(Node); in PromoteNode()
4435 SDValue Idx = Node->getOperand(1); in PromoteNode()
4437 SDLoc SL(Node); in PromoteNode()
4441 SDValue CastVec = DAG.getNode(ISD::BITCAST, SL, NVT, Node->getOperand(0)); in PromoteNode()
4481 SDValue Val = Node->getOperand(1); in PromoteNode()
4482 SDValue Idx = Node->getOperand(2); in PromoteNode()
4484 SDLoc SL(Node); in PromoteNode()
4489 SDValue CastVec = DAG.getNode(ISD::BITCAST, SL, NVT, Node->getOperand(0)); in PromoteNode()
4519 SDValue Val = Node->getOperand(0); in PromoteNode()
4520 SDLoc SL(Node); in PromoteNode()
4540 ReplaceNode(Node, Results.data()); in PromoteNode()