Lines Matching defs:SDNode

97 void SelectionDAG::DAGUpdateListener::NodeDeleted(SDNode*, SDNode*) {}
98 void SelectionDAG::DAGUpdateListener::NodeUpdated(SDNode*) {}
99 void SelectionDAG::DAGUpdateListener::NodeInserted(SDNode *) {}
153 bool ISD::isConstantSplatVector(const SDNode *N, APInt &SplatVal) {
188 bool ISD::isConstantSplatVectorAllOnes(const SDNode *N, bool BuildVectorOnly) {
237 bool ISD::isConstantSplatVectorAllZeros(const SDNode *N, bool BuildVectorOnly) {
279 bool ISD::isBuildVectorAllOnes(const SDNode *N) {
283 bool ISD::isBuildVectorAllZeros(const SDNode *N) {
287 bool ISD::isBuildVectorOfConstantSDNodes(const SDNode *N) {
300 bool ISD::isBuildVectorOfConstantFPSDNodes(const SDNode *N) {
313 bool ISD::isVectorShrinkable(const SDNode *N, unsigned NewEltSize,
350 bool ISD::allOperandsUndef(const SDNode *N) {
359 bool ISD::isFreezeUndef(const SDNode *N) {
714 // SDNode Profile Support
753 /// If this is an SDNode with special info, add this info to the NodeID data.
754 static void AddNodeIDCustom(FoldingSetNodeID &ID, const SDNode *N) {
993 static void AddNodeIDNode(FoldingSetNodeID &ID, const SDNode *N) {
1000 // Handle SDNode leafs with special info.
1009 static bool doNotCSE(SDNode *N) {
1035 SmallVector<SDNode*, 128> DeadNodes;
1038 for (SDNode &Node : allnodes())
1050 void SelectionDAG::RemoveDeadNodes(SmallVectorImpl<SDNode *> &DeadNodes) {
1055 SDNode *N = DeadNodes.pop_back_val();
1070 for (SDNode::op_iterator I = N->op_begin(), E = N->op_end(); I != E; ) {
1072 SDNode *Operand = Use.getNode();
1084 void SelectionDAG::RemoveDeadNode(SDNode *N){
1085 SmallVector<SDNode*, 16> DeadNodes(1, N);
1095 void SelectionDAG::DeleteNode(SDNode *N) {
1104 void SelectionDAG::DeleteNodeNotInCSEMaps(SDNode *N) {
1121 for (const SDNode *Node : V->getSDNodes())
1126 void SDDbgInfo::erase(const SDNode *Node) {
1135 void SelectionDAG::DeallocateNode(SDNode *N) {
1148 // If any of the SDDbgValue nodes refer to this SDNode, invalidate
1157 /// VerifySDNode - Check the given SDNode. Aborts if it is invalid.
1158 static void VerifySDNode(SDNode *N, const TargetLowering *TLI) {
1202 void SelectionDAG::InsertNode(SDNode *N) {
1216 bool SelectionDAG::RemoveNodeFromCSEMaps(SDNode *N) {
1276 SelectionDAG::AddModifiedNodeToCSEMaps(SDNode *N) {
1280 SDNode *Existing = CSEMap.GetOrInsertNode(N);
1305 SDNode *SelectionDAG::FindModifiedNodeSlot(SDNode *N, SDValue Op,
1314 SDNode *Node = FindNodeOrInsertPos(ID, SDLoc(N), InsertPos);
1324 SDNode *SelectionDAG::FindModifiedNodeSlot(SDNode *N,
1334 SDNode *Node = FindNodeOrInsertPos(ID, SDLoc(N), InsertPos);
1344 SDNode *SelectionDAG::FindModifiedNodeSlot(SDNode *N, ArrayRef<SDValue> Ops,
1352 SDNode *Node = FindNodeOrInsertPos(ID, SDLoc(N), InsertPos);
1415 SDNode *SelectionDAG::FindNodeOrInsertPos(const FoldingSetNodeID &ID,
1417 SDNode *N = CSEMap.FindNodeOrInsertPos(ID, InsertPos);
1430 SDNode *SelectionDAG::FindNodeOrInsertPos(const FoldingSetNodeID &ID,
1432 SDNode *N = CSEMap.FindNodeOrInsertPos(ID, InsertPos);
1776 SDNode *N = nullptr;
1855 SDNode *N = nullptr;
1915 if (SDNode *E = FindNodeOrInsertPos(ID, DL, IP))
1932 if (SDNode *E = FindNodeOrInsertPos(ID, IP))
1952 if (SDNode *E = FindNodeOrInsertPos(ID, IP))
1986 if (SDNode *E = FindNodeOrInsertPos(ID, IP))
2014 if (SDNode *E = FindNodeOrInsertPos(ID, IP))
2029 if (SDNode *E = FindNodeOrInsertPos(ID, IP))
2043 SDNode *&N = VT.isExtended() ?
2053 SDNode *&N = ExternalSymbols[Sym];
2061 SDNode *&N = MCSymbols[Sym];
2071 SDNode *&N =
2298 if (SDNode *E = FindNodeOrInsertPos(ID, dl, IP))
2302 // SDNode doesn't have access to it. This memory will be "leaked" when
2334 if (SDNode *E = FindNodeOrInsertPos(ID, IP))
2349 if (SDNode *E = FindNodeOrInsertPos(ID, IP))
2370 if (SDNode *E = FindNodeOrInsertPos(ID, IP))
2394 if (SDNode *E = FindNodeOrInsertPos(ID, IP))
2409 if (SDNode *E = FindNodeOrInsertPos(ID, IP))
2424 if (SDNode *E = FindNodeOrInsertPos(ID, IP))
2450 if (SDNode *E = FindNodeOrInsertPos(ID, dl, IP))
2508 SDNode *FPNode) {
2509 SmallVector<const SDNode *, 8> Worklist;
2510 SmallVector<const SDNode *, 8> DeferredNodes;
2511 SmallPtrSet<const SDNode *, 16> Visited;
2520 const SDNode *Node = Worklist.pop_back_val();
2546 return !SDNode::hasPredecessorHelper(FPNode, Visited, DeferredNodes,
2551 RTLIB::Libcall LC, SDNode *Node, SmallVectorImpl<SDValue> &Results,
2580 for (SDNode *User : Node->users()) {
2695 SDValue SelectionDAG::expandVAArg(SDNode *Node) {
2729 SDValue SelectionDAG::expandVACopy(SDNode *Node) {
5348 // If we are looking at the loaded value of the SDNode.
6186 if (SDNode *E = FindNodeOrInsertPos(ID, DL, IP))
6189 auto *N = newSDNode<SDNode>(Opcode, DL.getIROrder(), DL.getDebugLoc(), VTs);
6525 SDNode *N;
6532 if (SDNode *E = FindNodeOrInsertPos(ID, DL, IP)) {
6537 N = newSDNode<SDNode>(Opcode, DL.getIROrder(), DL.getDebugLoc(), VTs);
6542 N = newSDNode<SDNode>(Opcode, DL.getIROrder(), DL.getDebugLoc(), VTs);
6629 const SDNode *N2) {
7194 if (SDNode *E = FindNodeOrInsertPos(ID, DL, IP))
7690 SDNode *N;
7697 if (SDNode *E = FindNodeOrInsertPos(ID, DL, IP)) {
7702 N = newSDNode<SDNode>(Opcode, DL.getIROrder(), DL.getDebugLoc(), VTs);
7707 N = newSDNode<SDNode>(Opcode, DL.getIROrder(), DL.getDebugLoc(), VTs);
7888 SDNode *N;
7895 if (SDNode *E = FindNodeOrInsertPos(ID, DL, IP)) {
7900 N = newSDNode<SDNode>(Opcode, DL.getIROrder(), DL.getDebugLoc(), VTs);
7905 N = newSDNode<SDNode>(Opcode, DL.getIROrder(), DL.getDebugLoc(), VTs);
7957 for (SDNode *U : getEntryNode().getNode()->users())
8971 if (SDNode *E = FindNodeOrInsertPos(ID, dl, IP)) {
9082 if (SDNode *E = FindNodeOrInsertPos(ID, dl, IP)) {
9120 if (SDNode *E = FindNodeOrInsertPos(ID, dl, IP))
9144 if (SDNode *E = FindNodeOrInsertPos(ID, Dl, IP))
9255 if (SDNode *E = FindNodeOrInsertPos(ID, dl, IP)) {
9356 if (SDNode *E = FindNodeOrInsertPos(ID, dl, IP)) {
9423 if (SDNode *E = FindNodeOrInsertPos(ID, dl, IP)) {
9452 if (SDNode *E = FindNodeOrInsertPos(ID, dl, IP))
9510 if (SDNode *E = FindNodeOrInsertPos(ID, dl, IP)) {
9603 if (SDNode *E = FindNodeOrInsertPos(ID, dl, IP)) {
9674 if (SDNode *E = FindNodeOrInsertPos(ID, dl, IP)) {
9705 if (SDNode *E = FindNodeOrInsertPos(ID, dl, IP))
9738 if (SDNode *E = FindNodeOrInsertPos(ID, DL, IP)) {
9793 if (SDNode *E = FindNodeOrInsertPos(ID, DL, IP)) {
9842 if (SDNode *E = FindNodeOrInsertPos(ID, DL, IP)) {
9871 if (SDNode *E = FindNodeOrInsertPos(ID, dl, IP)) {
9915 if (SDNode *E = FindNodeOrInsertPos(ID, dl, IP)) {
9965 if (SDNode *E = FindNodeOrInsertPos(ID, dl, IP)) {
10013 if (SDNode *E = FindNodeOrInsertPos(ID, dl, IP)) {
10055 if (SDNode *E = FindNodeOrInsertPos(ID, dl, IP)) {
10102 if (SDNode *E = FindNodeOrInsertPos(ID, dl, IP)) {
10147 if (SDNode *E = FindNodeOrInsertPos(ID, dl, IP)) {
10184 if (SDNode *E = FindNodeOrInsertPos(ID, dl, IP))
10211 if (SDNode *E = FindNodeOrInsertPos(ID, dl, IP))
10436 SDNode *N;
10444 if (SDNode *E = FindNodeOrInsertPos(ID, DL, IP)) {
10449 N = newSDNode<SDNode>(Opcode, DL.getIROrder(), DL.getDebugLoc(), VTs);
10454 N = newSDNode<SDNode>(Opcode, DL.getIROrder(), DL.getDebugLoc(), VTs);
10647 SDNode *N;
10652 if (SDNode *E = FindNodeOrInsertPos(ID, DL, IP)) {
10657 N = newSDNode<SDNode>(Opcode, DL.getIROrder(), DL.getDebugLoc(), VTList);
10661 N = newSDNode<SDNode>(Opcode, DL.getIROrder(), DL.getDebugLoc(), VTList);
10710 return makeVTList(SDNode::getValueTypeList(VT.getSimpleVT()), 1);
10801 SDNode *SelectionDAG::UpdateNodeOperands(SDNode *N, SDValue Op) {
10809 if (SDNode *Existing = FindModifiedNodeSlot(N, Op, InsertPos))
10826 SDNode *SelectionDAG::UpdateNodeOperands(SDNode *N, SDValue Op1, SDValue Op2) {
10835 if (SDNode *Existing = FindModifiedNodeSlot(N, Op1, Op2, InsertPos))
10855 SDNode *SelectionDAG::
10856 UpdateNodeOperands(SDNode *N, SDValue Op1, SDValue Op2, SDValue Op3) {
10861 SDNode *SelectionDAG::
10862 UpdateNodeOperands(SDNode *N, SDValue Op1, SDValue Op2,
10868 SDNode *SelectionDAG::
10869 UpdateNodeOperands(SDNode *N, SDValue Op1, SDValue Op2,
10875 SDNode *SelectionDAG::
10876 UpdateNodeOperands(SDNode *N, ArrayRef<SDValue> Ops) {
10887 if (SDNode *Existing = FindModifiedNodeSlot(N, Ops, InsertPos))
10908 void SDNode::DropOperands() {
10941 SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned MachineOpc,
10947 SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned MachineOpc,
10954 SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned MachineOpc,
10962 SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned MachineOpc,
10970 SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned MachineOpc,
10976 SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned MachineOpc,
10982 SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned MachineOpc,
10988 SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned MachineOpc,
10995 SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned MachineOpc,
11003 SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned MachineOpc,
11005 SDNode *New = MorphNodeTo(N, ~MachineOpc, VTs, Ops);
11022 SDNode *SelectionDAG::UpdateSDLocOnMergeSDNode(SDNode *N, const SDLoc &OLoc) {
11048 SDNode *SelectionDAG::MorphNodeTo(SDNode *N, unsigned Opc,
11055 if (SDNode *ON = FindNodeOrInsertPos(ID, SDLoc(N), IP))
11069 SmallPtrSet<SDNode*, 16> DeadNodeSet;
11070 for (SDNode::op_iterator I = N->op_begin(), E = N->op_end(); I != E; ) {
11072 SDNode *Used = Use.getNode();
11089 SmallVector<SDNode *, 16> DeadNodes;
11090 for (SDNode *N : DeadNodeSet)
11101 SDNode* SelectionDAG::mutateStrictFPToFP(SDNode *Node) {
11126 SDNode *Res = MorphNodeTo(Node, NewOpc, VTs, Ops);
11248 if (SDNode *E = FindNodeOrInsertPos(ID, DL, IP)) {
11270 SDNode *Subreg = getMachineNode(TargetOpcode::EXTRACT_SUBREG, DL,
11280 SDNode *Result = getMachineNode(TargetOpcode::INSERT_SUBREG, DL,
11287 SDNode *SelectionDAG::getNodeIfExists(unsigned Opcode, SDVTList VTList,
11295 SDNode *SelectionDAG::getNodeIfExists(unsigned Opcode, SDVTList VTList,
11302 if (SDNode *E = FindNodeOrInsertPos(ID, SDLoc(), IP)) {
11325 /// SDNode
11327 SDNode *N, unsigned R, bool IsIndirect,
11364 ArrayRef<SDNode *> Dependencies,
11390 ArrayRef<SDNode *> Dependencies,
11403 SDNode *FromNode = From.getNode();
11404 SDNode *ToNode = To.getNode();
11477 "Transferred DbgValues should depend on the new SDNode");
11482 void SelectionDAG::salvageDebugInfo(SDNode &N) {
11486 auto GetLocationOperand = [](SDNode *Node, unsigned ResNo) {
11610 "Salvaged DbgValue should depend on a new SDNode");
11630 SDNode::use_iterator &UI;
11631 SDNode::use_iterator &UE;
11633 void NodeDeleted(SDNode *N, SDNode *E) override {
11641 SDNode::use_iterator &ui,
11642 SDNode::use_iterator &ue)
11654 SDNode *From = FromN.getNode();
11671 SDNode::use_iterator UI = From->use_begin(), UE = From->use_end();
11674 SDNode *User = UI->getUser();
11706 void SelectionDAG::ReplaceAllUsesWith(SDNode *From, SDNode *To) {
11729 SDNode::use_iterator UI = From->use_begin(), UE = From->use_end();
11732 SDNode *User = UI->getUser();
11764 void SelectionDAG::ReplaceAllUsesWith(SDNode *From, const SDValue *To) {
11777 SDNode::use_iterator UI = From->use_begin(), UE = From->use_end();
11780 SDNode *User = UI->getUser();
11830 SDNode::use_iterator UI = From.getNode()->use_begin(),
11834 SDNode *User = UI->getUser();
11882 SDNode *User;
11898 void NodeDeleted(SDNode *N, SDNode *E) override {
11912 static bool gluePropagatesDivergence(const SDNode *Node) {
11924 bool SelectionDAG::calculateDivergence(SDNode *N) {
11943 void SelectionDAG::updateDivergence(SDNode *N) {
11944 SmallVector<SDNode *, 16> Worklist(1, N);
11955 void SelectionDAG::CreateTopologicalOrder(std::vector<SDNode *> &Order) {
11956 DenseMap<SDNode *, unsigned> Degree;
11965 SDNode *N = Order[I];
11976 std::vector<SDNode *> TopoOrder;
12005 SDNode *FromNode = From[i].getNode();
12022 SDNode *User = Uses[UseIndex].User;
12069 for (SDNode &N : llvm::make_early_inc_range(allnodes())) {
12088 for (SDNode &Node : allnodes()) {
12089 SDNode *N = &Node;
12093 for (SDNode *P : N->users()) {
12112 SDNode *S = &*++I;
12138 /// AddDbgValue - Add a dbg_value SDNode. If SD is non-null that means the
12141 for (SDNode *SD : DB->getSDNodes()) {
12202 // SDNode Class
12433 : SDNode(Opc, Order, dl, VTs), MemoryVT(memvt), MMO(mmo) {
12450 void SDNode::Profile(FoldingSetNodeID &ID) const {
12470 const EVT *SDNode::getValueTypeList(MVT VT) {
12480 bool SDNode::hasNUsesOfValue(unsigned NUses, unsigned Value) const {
12498 bool SDNode::hasAnyUseOfValue(unsigned Value) const {
12509 bool SDNode::isOnlyUserOf(const SDNode *N) const {
12511 for (const SDNode *User : N->users()) {
12522 bool SDNode::areOnlyUsersOf(ArrayRef<const SDNode *> Nodes, const SDNode *N) {
12524 for (const SDNode *User : N->users()) {
12535 bool SDValue::isOperandOf(const SDNode *N) const {
12539 bool SDNode::isOperandOf(const SDNode *N) const {
12592 bool SDNode::hasPredecessor(const SDNode *N) const {
12593 SmallPtrSet<const SDNode *, 32> Visited;
12594 SmallVector<const SDNode *, 16> Worklist;
12599 void SDNode::intersectFlagsWith(const SDNodeFlags Flags) {
12604 SelectionDAG::matchBinOpReduction(SDNode *Extract, ISD::NodeType &BinOp,
12720 SDValue SelectionDAG::UnrollVectorOp(SDNode *N, unsigned ResNE) {
12833 SDNode *N, unsigned ResNE) {
13503 void SelectionDAG::createOperands(SDNode *Node, ArrayRef<SDValue> Vals) {
13505 assert(SDNode::getMaxNumOperands() >= Vals.size() &&
13506 "too many operands to fit into SDNode");
13534 size_t Limit = SDNode::getMaxNumOperands();
13629 void SelectionDAG::copyExtraInfo(SDNode *From, SDNode *To) {
13630 assert(From && To && "Invalid SDNode; empty source SDValue?");
13659 SmallVector<const SDNode *> Leafs{From}; // Leafs reachable with VisitFrom.
13660 DenseSet<const SDNode *> FromReach; // The set of nodes reachable from From.
13661 auto VisitFrom = [&](auto &&Self, const SDNode *N, int MaxDepth) {
13675 SmallPtrSet<const SDNode *, 8> Visited;
13676 auto DeepCopyTo = [&](auto &&Self, const SDNode *N) {
13702 SmallVector<const SDNode *> StartFrom;
13704 for (const SDNode *N : StartFrom)
13724 static void checkForCyclesHelper(const SDNode *N,
13725 SmallPtrSetImpl<const SDNode*> &Visited,
13726 SmallPtrSetImpl<const SDNode*> &Checked,
13749 void llvm::checkForCycles(const llvm::SDNode *N,
13758 assert(N && "Checking nonexistent SDNode");
13759 SmallPtrSet<const SDNode*, 32> visited;
13760 SmallPtrSet<const SDNode*, 32> checked;