Lines Matching refs:Node

43 unsigned InstrEmitter::CountResults(SDNode *Node) {  in CountResults()  argument
44 unsigned N = Node->getNumValues(); in CountResults()
45 while (N && Node->getValueType(N - 1) == MVT::Glue) in CountResults()
47 if (N && Node->getValueType(N - 1) == MVT::Other) in CountResults()
59 static unsigned countOperands(SDNode *Node, unsigned NumExpUses, in countOperands() argument
61 unsigned N = Node->getNumOperands(); in countOperands()
62 while (N && Node->getOperand(N - 1).getValueType() == MVT::Glue) in countOperands()
64 if (N && Node->getOperand(N - 1).getValueType() == MVT::Other) in countOperands()
70 if (isa<RegisterMaskSDNode>(Node->getOperand(I - 1))) in countOperands()
72 if (RegisterSDNode *RN = dyn_cast<RegisterSDNode>(Node->getOperand(I - 1))) in countOperands()
85 EmitCopyFromReg(SDNode *Node, unsigned ResNo, bool IsClone, bool IsCloned, in EmitCopyFromReg() argument
90 SDValue Op(Node, ResNo); in EmitCopyFromReg()
103 MVT VT = Node->getSimpleValueType(ResNo); in EmitCopyFromReg()
110 for (SDNode::use_iterator UI = Node->use_begin(), E = Node->use_end(); in EmitCopyFromReg()
115 User->getOperand(2).getNode() == Node && in EmitCopyFromReg()
126 if (Op.getNode() != Node || Op.getResNo() != ResNo) in EmitCopyFromReg()
128 MVT VT = Node->getSimpleValueType(Op.getResNo()); in EmitCopyFromReg()
177 BuildMI(*MBB, InsertPos, Node->getDebugLoc(), TII->get(TargetOpcode::COPY), in EmitCopyFromReg()
181 SDValue Op(Node, ResNo); in EmitCopyFromReg()
191 unsigned InstrEmitter::getDstOfOnlyCopyToRegUse(SDNode *Node, in getDstOfOnlyCopyToRegUse() argument
193 if (!Node->hasOneUse()) in getDstOfOnlyCopyToRegUse()
196 SDNode *User = *Node->use_begin(); in getDstOfOnlyCopyToRegUse()
198 User->getOperand(2).getNode() == Node && in getDstOfOnlyCopyToRegUse()
207 void InstrEmitter::CreateVirtualRegisters(SDNode *Node, in CreateVirtualRegisters() argument
212 assert(Node->getMachineOpcode() != TargetOpcode::IMPLICIT_DEF && in CreateVirtualRegisters()
215 unsigned NumResults = CountResults(Node); in CreateVirtualRegisters()
227 if (i < NumResults && TLI->isTypeLegal(Node->getSimpleValueType(i))) { in CreateVirtualRegisters()
229 TLI->getRegClassFor(Node->getSimpleValueType(i)); in CreateVirtualRegisters()
238 unsigned NumResults = CountResults(Node); in CreateVirtualRegisters()
239 VRBase = cast<RegisterSDNode>(Node->getOperand(i-NumResults))->getReg(); in CreateVirtualRegisters()
245 for (SDNode::use_iterator UI = Node->use_begin(), E = Node->use_end(); in CreateVirtualRegisters()
249 User->getOperand(2).getNode() == Node && in CreateVirtualRegisters()
271 SDValue Op(Node, i); in CreateVirtualRegisters()
465 void InstrEmitter::EmitSubregNode(SDNode *Node, in EmitSubregNode() argument
469 unsigned Opc = Node->getMachineOpcode(); in EmitSubregNode()
473 for (SDNode::use_iterator UI = Node->use_begin(), E = Node->use_end(); in EmitSubregNode()
477 User->getOperand(2).getNode() == Node) { in EmitSubregNode()
490 unsigned SubIdx = cast<ConstantSDNode>(Node->getOperand(1))->getZExtValue(); in EmitSubregNode()
492 TLI->getRegClassFor(Node->getSimpleValueType(0)); in EmitSubregNode()
494 unsigned VReg = getVR(Node->getOperand(0), VRBaseMap); in EmitSubregNode()
507 BuildMI(*MBB, InsertPos, Node->getDebugLoc(), in EmitSubregNode()
515 Node->getOperand(0).getSimpleValueType(), in EmitSubregNode()
516 Node->getDebugLoc()); in EmitSubregNode()
523 BuildMI(*MBB, InsertPos, Node->getDebugLoc(), in EmitSubregNode()
528 SDValue N0 = Node->getOperand(0); in EmitSubregNode()
529 SDValue N1 = Node->getOperand(1); in EmitSubregNode()
530 SDValue N2 = Node->getOperand(2); in EmitSubregNode()
547 const TargetRegisterClass *SRC = TLI->getRegClassFor(Node->getSimpleValueType(0)); in EmitSubregNode()
556 BuildMI(*MF, Node->getDebugLoc(), TII->get(Opc), VRBase); in EmitSubregNode()
574 SDValue Op(Node, 0); in EmitSubregNode()
585 InstrEmitter::EmitCopyToRegClassNode(SDNode *Node, in EmitCopyToRegClassNode() argument
587 unsigned VReg = getVR(Node->getOperand(0), VRBaseMap); in EmitCopyToRegClassNode()
590 unsigned DstRCIdx = cast<ConstantSDNode>(Node->getOperand(1))->getZExtValue(); in EmitCopyToRegClassNode()
594 BuildMI(*MBB, InsertPos, Node->getDebugLoc(), TII->get(TargetOpcode::COPY), in EmitCopyToRegClassNode()
597 SDValue Op(Node, 0); in EmitCopyToRegClassNode()
605 void InstrEmitter::EmitRegSequence(SDNode *Node, in EmitRegSequence() argument
608 unsigned DstRCIdx = cast<ConstantSDNode>(Node->getOperand(0))->getZExtValue(); in EmitRegSequence()
612 MachineInstrBuilder MIB = BuildMI(*MF, Node->getDebugLoc(), II, NewVReg); in EmitRegSequence()
613 unsigned NumOps = Node->getNumOperands(); in EmitRegSequence()
617 SDValue Op = Node->getOperand(i); in EmitRegSequence()
619 RegisterSDNode *R = dyn_cast<RegisterSDNode>(Node->getOperand(i-1)); in EmitRegSequence()
624 unsigned SubReg = getVR(Node->getOperand(i-1), VRBaseMap); in EmitRegSequence()
639 SDValue Op(Node, 0); in EmitRegSequence()
664 SDNode *Node = SD->getSDNode(); in EmitDbgValue() local
665 SDValue Op = SDValue(Node, SD->getResNo()); in EmitDbgValue()
710 EmitMachineNode(SDNode *Node, bool IsClone, bool IsCloned, in EmitMachineNode() argument
712 unsigned Opc = Node->getMachineOpcode(); in EmitMachineNode()
718 EmitSubregNode(Node, VRBaseMap, IsClone, IsCloned); in EmitMachineNode()
724 EmitCopyToRegClassNode(Node, VRBaseMap); in EmitMachineNode()
730 EmitRegSequence(Node, VRBaseMap, IsClone, IsCloned); in EmitMachineNode()
739 unsigned NumResults = CountResults(Node); in EmitMachineNode()
745 unsigned CC = Node->getConstantOperandVal(PatchPointOpers::CCPos); in EmitMachineNode()
752 countOperands(Node, II.getNumOperands() - NumDefs, NumImpUses); in EmitMachineNode()
767 MachineInstrBuilder MIB = BuildMI(*MF, Node->getDebugLoc(), II); in EmitMachineNode()
772 CreateVirtualRegisters(Node, MIB, II, IsClone, IsCloned, VRBaseMap); in EmitMachineNode()
781 AddOperand(MIB, Node->getOperand(i), i-NumSkip+NumDefs, &II, in EmitMachineNode()
791 MIB.setMemRefs(cast<MachineSDNode>(Node)->memoperands_begin(), in EmitMachineNode()
792 cast<MachineSDNode>(Node)->memoperands_end()); in EmitMachineNode()
820 if (!Node->hasAnyUseOfValue(i)) in EmitMachineNode()
824 EmitCopyFromReg(Node, i, IsClone, IsCloned, Reg, VRBaseMap); in EmitMachineNode()
829 if (Node->getValueType(Node->getNumValues()-1) == MVT::Glue) { in EmitMachineNode()
830 for (SDNode *F = Node->getGluedUser(); F; F = F->getGluedUser()) { in EmitMachineNode()
861 TLI->AdjustInstrPostInstrSelection(MIB, Node); in EmitMachineNode()
867 EmitSpecialNode(SDNode *Node, bool IsClone, bool IsCloned, in EmitSpecialNode() argument
869 switch (Node->getOpcode()) { in EmitSpecialNode()
872 Node->dump(); in EmitSpecialNode()
882 SDValue SrcVal = Node->getOperand(2); in EmitSpecialNode()
888 unsigned DestReg = cast<RegisterSDNode>(Node->getOperand(1))->getReg(); in EmitSpecialNode()
892 BuildMI(*MBB, InsertPos, Node->getDebugLoc(), TII->get(TargetOpcode::COPY), in EmitSpecialNode()
897 unsigned SrcReg = cast<RegisterSDNode>(Node->getOperand(1))->getReg(); in EmitSpecialNode()
898 EmitCopyFromReg(Node, 0, IsClone, IsCloned, SrcReg, VRBaseMap); in EmitSpecialNode()
902 MCSymbol *S = cast<EHLabelSDNode>(Node)->getLabel(); in EmitSpecialNode()
903 BuildMI(*MBB, InsertPos, Node->getDebugLoc(), in EmitSpecialNode()
910 unsigned TarOp = (Node->getOpcode() == ISD::LIFETIME_START) ? in EmitSpecialNode()
913 FrameIndexSDNode *FI = dyn_cast<FrameIndexSDNode>(Node->getOperand(1)); in EmitSpecialNode()
914 BuildMI(*MBB, InsertPos, Node->getDebugLoc(), TII->get(TarOp)) in EmitSpecialNode()
920 unsigned NumOps = Node->getNumOperands(); in EmitSpecialNode()
921 if (Node->getOperand(NumOps-1).getValueType() == MVT::Glue) in EmitSpecialNode()
925 MachineInstrBuilder MIB = BuildMI(*MF, Node->getDebugLoc(), in EmitSpecialNode()
929 SDValue AsmStrV = Node->getOperand(InlineAsm::Op_AsmString); in EmitSpecialNode()
936 cast<ConstantSDNode>(Node->getOperand(InlineAsm::Op_ExtraInfo))-> in EmitSpecialNode()
946 cast<ConstantSDNode>(Node->getOperand(i))->getZExtValue(); in EmitSpecialNode()
957 unsigned Reg = cast<RegisterSDNode>(Node->getOperand(i))->getReg(); in EmitSpecialNode()
968 unsigned Reg = cast<RegisterSDNode>(Node->getOperand(i))->getReg(); in EmitSpecialNode()
979 AddOperand(MIB, Node->getOperand(i), 0, 0, VRBaseMap, in EmitSpecialNode()
997 SDValue MDV = Node->getOperand(InlineAsm::Op_MDNode); in EmitSpecialNode()