Lines Matching refs:Node
45 unsigned InstrEmitter::CountResults(SDNode *Node) { in CountResults() argument
46 unsigned N = Node->getNumValues(); in CountResults()
47 while (N && Node->getValueType(N - 1) == MVT::Glue) in CountResults()
49 if (N && Node->getValueType(N - 1) == MVT::Other) in CountResults()
61 static unsigned countOperands(SDNode *Node, unsigned NumExpUses, in countOperands() argument
63 unsigned N = Node->getNumOperands(); in countOperands()
64 while (N && Node->getOperand(N - 1).getValueType() == MVT::Glue) in countOperands()
66 if (N && Node->getOperand(N - 1).getValueType() == MVT::Other) in countOperands()
72 if (isa<RegisterMaskSDNode>(Node->getOperand(I - 1))) in countOperands()
74 if (RegisterSDNode *RN = dyn_cast<RegisterSDNode>(Node->getOperand(I - 1))) in countOperands()
87 EmitCopyFromReg(SDNode *Node, unsigned ResNo, bool IsClone, bool IsCloned, in EmitCopyFromReg() argument
92 SDValue Op(Node, ResNo); in EmitCopyFromReg()
105 MVT VT = Node->getSimpleValueType(ResNo); in EmitCopyFromReg()
112 for (SDNode *User : Node->uses()) { 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()
178 BuildMI(*MBB, InsertPos, Node->getDebugLoc(), TII->get(TargetOpcode::COPY), in EmitCopyFromReg()
182 SDValue Op(Node, ResNo); in EmitCopyFromReg()
192 unsigned InstrEmitter::getDstOfOnlyCopyToRegUse(SDNode *Node, in getDstOfOnlyCopyToRegUse() argument
194 if (!Node->hasOneUse()) in getDstOfOnlyCopyToRegUse()
197 SDNode *User = *Node->use_begin(); in getDstOfOnlyCopyToRegUse()
199 User->getOperand(2).getNode() == Node && in getDstOfOnlyCopyToRegUse()
208 void InstrEmitter::CreateVirtualRegisters(SDNode *Node, in CreateVirtualRegisters() argument
213 assert(Node->getMachineOpcode() != TargetOpcode::IMPLICIT_DEF && in CreateVirtualRegisters()
216 unsigned NumResults = CountResults(Node); in CreateVirtualRegisters()
228 if (i < NumResults && TLI->isTypeLegal(Node->getSimpleValueType(i))) { in CreateVirtualRegisters()
230 TLI->getRegClassFor(Node->getSimpleValueType(i)); in CreateVirtualRegisters()
239 VRBase = cast<RegisterSDNode>(Node->getOperand(i-NumResults))->getReg(); in CreateVirtualRegisters()
245 for (SDNode *User : Node->uses()) { in CreateVirtualRegisters()
247 User->getOperand(2).getNode() == Node && in CreateVirtualRegisters()
272 SDValue Op(Node, i); in CreateVirtualRegisters()
493 void InstrEmitter::EmitSubregNode(SDNode *Node, in EmitSubregNode() argument
497 unsigned Opc = Node->getMachineOpcode(); in EmitSubregNode()
501 for (SDNode *User : Node->uses()) { in EmitSubregNode()
503 User->getOperand(2).getNode() == Node) { in EmitSubregNode()
516 unsigned SubIdx = cast<ConstantSDNode>(Node->getOperand(1))->getZExtValue(); in EmitSubregNode()
518 TLI->getRegClassFor(Node->getSimpleValueType(0)); in EmitSubregNode()
522 RegisterSDNode *R = dyn_cast<RegisterSDNode>(Node->getOperand(0)); in EmitSubregNode()
527 Reg = R ? R->getReg() : getVR(Node->getOperand(0), VRBaseMap); in EmitSubregNode()
542 BuildMI(*MBB, InsertPos, Node->getDebugLoc(), in EmitSubregNode()
551 Node->getOperand(0).getSimpleValueType(), in EmitSubregNode()
552 Node->getDebugLoc()); in EmitSubregNode()
560 BuildMI(*MBB, InsertPos, Node->getDebugLoc(), in EmitSubregNode()
569 SDValue N0 = Node->getOperand(0); in EmitSubregNode()
570 SDValue N1 = Node->getOperand(1); in EmitSubregNode()
571 SDValue N2 = Node->getOperand(2); in EmitSubregNode()
588 const TargetRegisterClass *SRC = TLI->getRegClassFor(Node->getSimpleValueType(0)); in EmitSubregNode()
597 BuildMI(*MF, Node->getDebugLoc(), TII->get(Opc), VRBase); in EmitSubregNode()
615 SDValue Op(Node, 0); in EmitSubregNode()
626 InstrEmitter::EmitCopyToRegClassNode(SDNode *Node, in EmitCopyToRegClassNode() argument
628 unsigned VReg = getVR(Node->getOperand(0), VRBaseMap); in EmitCopyToRegClassNode()
631 unsigned DstRCIdx = cast<ConstantSDNode>(Node->getOperand(1))->getZExtValue(); in EmitCopyToRegClassNode()
635 BuildMI(*MBB, InsertPos, Node->getDebugLoc(), TII->get(TargetOpcode::COPY), in EmitCopyToRegClassNode()
638 SDValue Op(Node, 0); in EmitCopyToRegClassNode()
646 void InstrEmitter::EmitRegSequence(SDNode *Node, in EmitRegSequence() argument
649 unsigned DstRCIdx = cast<ConstantSDNode>(Node->getOperand(0))->getZExtValue(); in EmitRegSequence()
653 MachineInstrBuilder MIB = BuildMI(*MF, Node->getDebugLoc(), II, NewVReg); in EmitRegSequence()
654 unsigned NumOps = Node->getNumOperands(); in EmitRegSequence()
658 if (NumOps && Node->getOperand(NumOps-1).getValueType() == MVT::Other) in EmitRegSequence()
664 SDValue Op = Node->getOperand(i); in EmitRegSequence()
666 RegisterSDNode *R = dyn_cast<RegisterSDNode>(Node->getOperand(i-1)); in EmitRegSequence()
671 unsigned SubReg = getVR(Node->getOperand(i-1), VRBaseMap); in EmitRegSequence()
686 SDValue Op(Node, 0); in EmitRegSequence()
734 SDNode *Node = SD->getSDNode(); in EmitDbgValue() local
735 SDValue Op = SDValue(Node, SD->getResNo()); in EmitDbgValue()
801 EmitMachineNode(SDNode *Node, bool IsClone, bool IsCloned, in EmitMachineNode() argument
803 unsigned Opc = Node->getMachineOpcode(); in EmitMachineNode()
809 EmitSubregNode(Node, VRBaseMap, IsClone, IsCloned); in EmitMachineNode()
815 EmitCopyToRegClassNode(Node, VRBaseMap); in EmitMachineNode()
821 EmitRegSequence(Node, VRBaseMap, IsClone, IsCloned); in EmitMachineNode()
830 unsigned NumResults = CountResults(Node); in EmitMachineNode()
841 CC = Node->getConstantOperandVal(PatchPointOpers::CCPos); in EmitMachineNode()
849 countOperands(Node, II.getNumOperands() - NumDefs, NumImpUses); in EmitMachineNode()
864 MachineInstrBuilder MIB = BuildMI(*MF, Node->getDebugLoc(), II); in EmitMachineNode()
869 CreateVirtualRegisters(Node, MIB, II, IsClone, IsCloned, VRBaseMap); in EmitMachineNode()
873 const SDNodeFlags Flags = Node->getFlags(); in EmitMachineNode()
912 AddOperand(MIB, Node->getOperand(i), i-NumSkip+NumDefs, &II, in EmitMachineNode()
923 MIB.setMemRefs(cast<MachineSDNode>(Node)->memoperands()); in EmitMachineNode()
951 if (!Node->hasAnyUseOfValue(i)) in EmitMachineNode()
955 EmitCopyFromReg(Node, i, IsClone, IsCloned, Reg, VRBaseMap); in EmitMachineNode()
960 if (Node->getValueType(Node->getNumValues()-1) == MVT::Glue) { in EmitMachineNode()
961 for (SDNode *F = Node->getGluedUser(); F; F = F->getGluedUser()) { in EmitMachineNode()
990 TLI->AdjustInstrPostInstrSelection(*MIB, Node); in EmitMachineNode()
996 EmitSpecialNode(SDNode *Node, bool IsClone, bool IsCloned, in EmitSpecialNode() argument
998 switch (Node->getOpcode()) { in EmitSpecialNode()
1001 Node->dump(); in EmitSpecialNode()
1011 SDValue SrcVal = Node->getOperand(2); in EmitSpecialNode()
1017 unsigned DestReg = cast<RegisterSDNode>(Node->getOperand(1))->getReg(); in EmitSpecialNode()
1021 BuildMI(*MBB, InsertPos, Node->getDebugLoc(), TII->get(TargetOpcode::COPY), in EmitSpecialNode()
1026 unsigned SrcReg = cast<RegisterSDNode>(Node->getOperand(1))->getReg(); in EmitSpecialNode()
1027 EmitCopyFromReg(Node, 0, IsClone, IsCloned, SrcReg, VRBaseMap); in EmitSpecialNode()
1032 unsigned Opc = (Node->getOpcode() == ISD::EH_LABEL) in EmitSpecialNode()
1035 MCSymbol *S = cast<LabelSDNode>(Node)->getLabel(); in EmitSpecialNode()
1036 BuildMI(*MBB, InsertPos, Node->getDebugLoc(), in EmitSpecialNode()
1043 unsigned TarOp = (Node->getOpcode() == ISD::LIFETIME_START) ? in EmitSpecialNode()
1046 FrameIndexSDNode *FI = dyn_cast<FrameIndexSDNode>(Node->getOperand(1)); in EmitSpecialNode()
1047 BuildMI(*MBB, InsertPos, Node->getDebugLoc(), TII->get(TarOp)) in EmitSpecialNode()
1053 unsigned NumOps = Node->getNumOperands(); in EmitSpecialNode()
1054 if (Node->getOperand(NumOps-1).getValueType() == MVT::Glue) in EmitSpecialNode()
1058 MachineInstrBuilder MIB = BuildMI(*MF, Node->getDebugLoc(), in EmitSpecialNode()
1062 SDValue AsmStrV = Node->getOperand(InlineAsm::Op_AsmString); in EmitSpecialNode()
1069 cast<ConstantSDNode>(Node->getOperand(InlineAsm::Op_ExtraInfo))-> in EmitSpecialNode()
1082 cast<ConstantSDNode>(Node->getOperand(i))->getZExtValue(); in EmitSpecialNode()
1093 unsigned Reg = cast<RegisterSDNode>(Node->getOperand(i))->getReg(); in EmitSpecialNode()
1104 unsigned Reg = cast<RegisterSDNode>(Node->getOperand(i))->getReg(); in EmitSpecialNode()
1116 AddOperand(MIB, Node->getOperand(i), 0, nullptr, VRBaseMap, in EmitSpecialNode()
1147 SDValue MDV = Node->getOperand(InlineAsm::Op_MDNode); in EmitSpecialNode()