Lines Matching refs:SDNode

10 // This file declares the SDNode class and derived classes, which are used to
44 class SDNode;
51 void checkForCycles(const SDNode *N);
67 bool isBuildVectorAllOnes(const SDNode *N);
71 bool isBuildVectorAllZeros(const SDNode *N);
76 bool isScalarToVector(const SDNode *N);
91 SDNode *Node; // The node defining the value we are using.
95 SDValue(SDNode *node, unsigned resno) : Node(node), ResNo(resno) {}
97 /// get the index which selects a specific result in the SDNode
100 /// get the SDNode which holds the desired result
101 SDNode *getNode() const { return Node; }
103 /// set the SDNode
104 void setNode(SDNode *N) { Node = N; }
106 inline SDNode *operator->() const { return Node; }
123 bool isOperandOf(SDNode *N) const;
135 // Forwarding methods - These forward to the corresponding methods in SDNode.
169 return SDValue((SDNode*)-1, -1U);
172 return SDValue((SDNode*)-1, 0);
186 /// SDValues as if they were SDNode*'s.
188 typedef SDNode* SimpleType;
194 typedef SDNode* SimpleType;
200 /// SDUse - Represents a use of a SDNode. This class holds an SDValue,
201 /// which records the SDNode being used and the result number, a
202 /// pointer to the SDNode using the value, and Next and Prev pointers,
203 /// which link together all the uses of an SDNode.
209 SDNode *User;
210 /// Prev, Next - Pointers to the uses list of the SDNode referred by
227 /// getUser - This returns the SDNode that contains this Use.
228 SDNode *getUser() { return User; }
234 SDNode *getNode() const { return Val.getNode(); }
257 friend class SDNode;
259 void setUser(SDNode *p) { User = p; }
269 inline void setNode(SDNode *N);
285 /// SDValues as if they were SDNode*'s.
287 typedef SDNode* SimpleType;
293 typedef SDNode* SimpleType;
300 /// SDNode - Represents one node in the SelectionDAG.
302 class SDNode : public FoldingSetNode, public ilist_node<SDNode> {
323 /// NodeId - Unique id per SDNode in the DAG.
330 /// ValueList - The types of the values this node defines. SDNode's may
334 /// UseList - List of uses for this SDNode.
347 friend struct ilist_traits<SDNode>;
419 /// operands that use a specific SDNode.
425 friend class SDNode;
457 SDNode *operator*() const {
462 SDNode *operator->() const { return operator*(); }
475 /// of an SDNode.
495 bool isOnlyUserOf(SDNode *N) const;
499 bool isOperandOf(SDNode *N) const;
504 bool isPredecessorOf(const SDNode *N) const { return N->hasPredecessor(this); }
510 bool hasPredecessor(const SDNode *N) const;
521 bool hasPredecessorHelper(const SDNode *N,
522 SmallPtrSet<const SDNode *, 32> &Visited,
523 SmallVector<const SDNode *, 16> &Worklist) const;
534 assert(Num < NumOperands && "Invalid child # of SDNode!");
549 SDNode *getGluedNode() const {
558 const SDNode *getGluedMachineNode() const {
559 const SDNode *FoundNode = this;
564 const SDNode *N = FoundNode->getGluedNode();
574 SDNode *getGluedUser() const {
661 static bool classof(const SDNode *) { return true; }
677 SDNode(unsigned Opc, const DebugLoc dl, SDVTList VTs, const SDValue *Ops,
694 SDNode(unsigned Opc, const DebugLoc dl, SDVTList VTs)
819 inline void SDUse::setNode(SDNode *N) {
827 class UnarySDNode : public SDNode {
831 : SDNode(Opc, dl, VTs) {
838 class BinarySDNode : public SDNode {
842 : SDNode(Opc, dl, VTs) {
849 class TernarySDNode : public SDNode {
854 : SDNode(Opc, dl, VTs) {
864 class HandleSDNode : public SDNode {
874 : SDNode(ISD::HANDLENODE, DebugLoc(), getSDVTList(MVT::Other)) {
882 class MemSDNode : public SDNode {
965 static bool classof(const SDNode *N) {
989 /// AtomicSDNode - A SDNode reprenting atomic operations.
1055 static bool classof(const SDNode *N) {
1073 /// MemIntrinsicSDNode - This SDNode is used for target intrinsics that touch
1087 static bool classof(const SDNode *N) {
1097 /// ShuffleVectorSDNode - This SDNode is used to implement the code generator
1105 class ShuffleVectorSDNode : public SDNode {
1115 : SDNode(ISD::VECTOR_SHUFFLE, dl, getSDVTList(VT)), Mask(M) {
1142 static bool classof(const SDNode *N) {
1147 class ConstantSDNode : public SDNode {
1151 : SDNode(isTarget ? ISD::TargetConstant : ISD::Constant,
1166 static bool classof(const SDNode *N) {
1172 class ConstantFPSDNode : public SDNode {
1176 : SDNode(isTarget ? ISD::TargetConstantFP : ISD::ConstantFP,
1213 static bool classof(const SDNode *N) {
1219 class GlobalAddressSDNode : public SDNode {
1235 static bool classof(const SDNode *N) {
1243 class FrameIndexSDNode : public SDNode {
1247 : SDNode(isTarg ? ISD::TargetFrameIndex : ISD::FrameIndex,
1255 static bool classof(const SDNode *N) {
1261 class JumpTableSDNode : public SDNode {
1266 : SDNode(isTarg ? ISD::TargetJumpTable : ISD::JumpTable,
1275 static bool classof(const SDNode *N) {
1281 class ConstantPoolSDNode : public SDNode {
1292 : SDNode(isTarget ? ISD::TargetConstantPool : ISD::ConstantPool,
1300 : SDNode(isTarget ? ISD::TargetConstantPool : ISD::ConstantPool,
1336 static bool classof(const SDNode *N) {
1342 class BasicBlockSDNode : public SDNode {
1349 : SDNode(ISD::BasicBlock, DebugLoc(), getSDVTList(MVT::Other)), MBB(mbb) {
1356 static bool classof(const SDNode *N) {
1363 class BuildVectorSDNode : public SDNode {
1381 static inline bool classof(const SDNode *N) {
1386 /// SrcValueSDNode - An SDNode that holds an arbitrary LLVM IR Value. This is
1390 class SrcValueSDNode : public SDNode {
1395 : SDNode(ISD::SRCVALUE, DebugLoc(), getSDVTList(MVT::Other)), V(v) {}
1402 static bool classof(const SDNode *N) {
1407 class MDNodeSDNode : public SDNode {
1411 : SDNode(ISD::MDNODE_SDNODE, DebugLoc(), getSDVTList(MVT::Other)), MD(md) {}
1417 static bool classof(const SDNode *N) {
1423 class RegisterSDNode : public SDNode {
1427 : SDNode(ISD::Register, DebugLoc(), getSDVTList(VT)), Reg(reg) {
1434 static bool classof(const SDNode *N) {
1439 class RegisterMaskSDNode : public SDNode {
1444 : SDNode(ISD::RegisterMask, DebugLoc(), getSDVTList(MVT::Untyped)),
1451 static bool classof(const SDNode *N) {
1456 class BlockAddressSDNode : public SDNode {
1462 : SDNode(NodeTy, DebugLoc(), getSDVTList(VT)),
1470 static bool classof(const SDNode *N) {
1476 class EHLabelSDNode : public SDNode {
1481 : SDNode(ISD::EH_LABEL, dl, getSDVTList(MVT::Other)), Label(L) {
1488 static bool classof(const SDNode *N) {
1493 class ExternalSymbolSDNode : public SDNode {
1499 : SDNode(isTarget ? ISD::TargetExternalSymbol : ISD::ExternalSymbol,
1508 static bool classof(const SDNode *N) {
1514 class CondCodeSDNode : public SDNode {
1518 : SDNode(ISD::CONDCODE, DebugLoc(), getSDVTList(MVT::Other)),
1526 static bool classof(const SDNode *N) {
1533 class CvtRndSatSDNode : public SDNode {
1538 : SDNode(ISD::CONVERT_RNDSAT, dl, getSDVTList(VT), Ops, NumOps),
1546 static bool classof(const SDNode *N) {
1553 class VTSDNode : public SDNode {
1557 : SDNode(ISD::VALUETYPE, DebugLoc(), getSDVTList(MVT::Other)),
1565 static bool classof(const SDNode *N) {
1609 static bool classof(const SDNode *N) {
1641 static bool classof(const SDNode *N) {
1672 static bool classof(const SDNode *N) {
1677 /// MachineSDNode - An SDNode that represents everything that will be needed
1681 class MachineSDNode : public SDNode {
1688 : SDNode(Opc, DL, VTs), MemRefs(0), MemRefsEnd(0) {}
1713 static bool classof(const SDNode *N) {
1719 SDNode, ptrdiff_t> {
1720 SDNode *Node;
1723 SDNodeIterator(SDNode *N, unsigned Op) : Node(N), Operand(Op) {}
1754 static SDNodeIterator begin(SDNode *N) { return SDNodeIterator(N, 0); }
1755 static SDNodeIterator end (SDNode *N) {
1760 const SDNode *getNode() const { return Node; }
1763 template <> struct GraphTraits<SDNode*> {
1764 typedef SDNode NodeType;
1766 static inline NodeType *getEntryNode(SDNode *N) { return N; }
1775 /// LargestSDNode - The largest SDNode class.
1779 /// MostAlignedSDNode - The SDNode class with the greatest alignment
1787 inline bool isNormalLoad(const SDNode *N) {
1795 inline bool isNON_EXTLoad(const SDNode *N) {
1802 inline bool isEXTLoad(const SDNode *N) {
1809 inline bool isSEXTLoad(const SDNode *N) {
1816 inline bool isZEXTLoad(const SDNode *N) {
1823 inline bool isUNINDEXEDLoad(const SDNode *N) {
1830 inline bool isNormalStore(const SDNode *N) {
1838 inline bool isNON_TRUNCStore(const SDNode *N) {
1844 inline bool isTRUNCStore(const SDNode *N) {
1850 inline bool isUNINDEXEDStore(const SDNode *N) {