Lines Matching refs:N

68 SUnit *ScheduleDAGSDNodes::newSUnit(SDNode *N) {  in newSUnit()  argument
74 SUnits.push_back(SUnit(N, (unsigned)SUnits.size())); in newSUnit()
80 if (!N || in newSUnit()
81 (N->isMachineOpcode() && in newSUnit()
82 N->getMachineOpcode() == TargetOpcode::IMPLICIT_DEF)) in newSUnit()
85 SU->SchedulingPref = TLI.getSchedulingPreference(N); in newSUnit()
135 static void CloneNodeWithValues(SDNode *N, SelectionDAG *DAG, in CloneNodeWithValues() argument
139 for (unsigned I = 0, E = N->getNumOperands(); I != E; ++I) in CloneNodeWithValues()
140 Ops.push_back(N->getOperand(I)); in CloneNodeWithValues()
147 MachineSDNode *MN = dyn_cast<MachineSDNode>(N); in CloneNodeWithValues()
155 DAG->MorphNodeTo(N, N->getOpcode(), VTList, &Ops[0], Ops.size()); in CloneNodeWithValues()
162 static bool AddGlue(SDNode *N, SDValue Glue, bool AddGlue, SelectionDAG *DAG) { in AddGlue() argument
167 if (GlueDestNode == N) return false; in AddGlue()
171 N->getOperand(N->getNumOperands()-1).getValueType() == MVT::Glue) { in AddGlue()
175 if (N->getValueType(N->getNumValues() - 1) == MVT::Glue) return false; in AddGlue()
177 for (unsigned I = 0, E = N->getNumValues(); I != E; ++I) in AddGlue()
178 VTs.push_back(N->getValueType(I)); in AddGlue()
183 CloneNodeWithValues(N, DAG, VTs, Glue); in AddGlue()
190 static void RemoveUnusedGlue(SDNode *N, SelectionDAG *DAG) { in RemoveUnusedGlue() argument
191 assert((N->getValueType(N->getNumValues() - 1) == MVT::Glue && in RemoveUnusedGlue()
192 !N->hasAnyUseOfValue(N->getNumValues() - 1)) && in RemoveUnusedGlue()
196 for (unsigned I = 0, E = N->getNumValues()-1; I != E; ++I) in RemoveUnusedGlue()
197 VTs.push_back(N->getValueType(I)); in RemoveUnusedGlue()
199 CloneNodeWithValues(N, DAG, VTs); in RemoveUnusedGlue()
357 SDNode *N = NI; in BuildSchedUnits() local
358 while (N->getNumOperands() && in BuildSchedUnits()
359 N->getOperand(N->getNumOperands()-1).getValueType() == MVT::Glue) { in BuildSchedUnits()
360 N = N->getOperand(N->getNumOperands()-1).getNode(); in BuildSchedUnits()
361 assert(N->getNodeId() == -1 && "Node already inserted!"); in BuildSchedUnits()
362 N->setNodeId(NodeSUnit->NodeNum); in BuildSchedUnits()
363 if (N->isMachineOpcode() && TII->get(N->getMachineOpcode()).isCall()) in BuildSchedUnits()
368 N = NI; in BuildSchedUnits()
369 while (N->getValueType(N->getNumValues()-1) == MVT::Glue) { in BuildSchedUnits()
370 SDValue GlueVal(N, N->getNumValues()-1); in BuildSchedUnits()
374 for (SDNode::use_iterator UI = N->use_begin(), E = N->use_end(); in BuildSchedUnits()
378 assert(N->getNodeId() == -1 && "Node already inserted!"); in BuildSchedUnits()
379 N->setNodeId(NodeSUnit->NodeNum); in BuildSchedUnits()
380 N = *UI; in BuildSchedUnits()
381 if (N->isMachineOpcode() && TII->get(N->getMachineOpcode()).isCall()) in BuildSchedUnits()
400 NodeSUnit->setNode(N); in BuildSchedUnits()
401 assert(N->getNodeId() == -1 && "Node already inserted!"); in BuildSchedUnits()
402 N->setNodeId(NodeSUnit->NodeNum); in BuildSchedUnits()
451 for (SDNode *N = SU->getNode(); N; N = N->getGluedNode()) { in AddSchedEdges() local
452 if (N->isMachineOpcode() && in AddSchedEdges()
453 TII->get(N->getMachineOpcode()).getImplicitDefs()) { in AddSchedEdges()
455 unsigned NumUsed = InstrEmitter::CountResults(N); in AddSchedEdges()
456 while (NumUsed != 0 && !N->hasAnyUseOfValue(NumUsed - 1)) in AddSchedEdges()
458 if (NumUsed > TII->get(N->getMachineOpcode()).getNumDefs()) in AddSchedEdges()
462 for (unsigned i = 0, e = N->getNumOperands(); i != e; ++i) { in AddSchedEdges()
463 SDNode *OpN = N->getOperand(i).getNode(); in AddSchedEdges()
469 EVT OpVT = N->getOperand(i).getValueType(); in AddSchedEdges()
476 CheckForPhysRegDependency(OpN, N, i, TRI, TII, PhysReg, Cost); in AddSchedEdges()
497 computeOperandLatency(OpN, N, i, Dep); in AddSchedEdges()
591 SDNode *N = SU->getNode(); in computeLatency() local
596 if (N && N->getOpcode() == ISD::TokenFactor) { in computeLatency()
608 if (N && N->isMachineOpcode() && in computeLatency()
609 TII->isHighLatencyDef(N->getMachineOpcode())) in computeLatency()
619 for (SDNode *N = SU->getNode(); N; N = N->getGluedNode()) in computeLatency() local
620 if (N->isMachineOpcode()) in computeLatency()
621 SU->Latency += TII->getInstrLatency(InstrItins, N); in computeLatency()
661 for (SDNode *N = SU->getNode()->getGluedNode(); N; N = N->getGluedNode()) in dumpNode() local
662 GluedNodes.push_back(N); in dumpNode()
700 ProcessSDDbgValues(SDNode *N, SelectionDAG *DAG, InstrEmitter &Emitter, in ProcessSDDbgValues() argument
703 if (!N->getHasDebugValue()) in ProcessSDDbgValues()
710 ArrayRef<SDDbgValue*> DVs = DAG->GetDbgValues(N); in ProcessSDDbgValues()
730 ProcessSourceNode(SDNode *N, SelectionDAG *DAG, InstrEmitter &Emitter, in ProcessSourceNode() argument
734 unsigned Order = N->getIROrder(); in ProcessSourceNode()
738 ProcessSDDbgValues(N, DAG, Emitter, Orders, VRBaseMap, 0); in ProcessSourceNode()
753 ProcessSDDbgValues(N, DAG, Emitter, Orders, VRBaseMap, Order); in ProcessSourceNode()
833 for (SDNode *N = SU->getNode()->getGluedNode(); N; N = N->getGluedNode()) in EmitSchedule() local
834 GluedNodes.push_back(N); in EmitSchedule()
836 SDNode *N = GluedNodes.back(); in EmitSchedule() local
841 ProcessSourceNode(N, DAG, Emitter, VRBaseMap, Orders, Seen); in EmitSchedule()