diff options
Diffstat (limited to 'utils/TableGen')
-rw-r--r-- | utils/TableGen/DAGISelEmitter.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/utils/TableGen/DAGISelEmitter.cpp b/utils/TableGen/DAGISelEmitter.cpp index fe429f0..ca42679 100644 --- a/utils/TableGen/DAGISelEmitter.cpp +++ b/utils/TableGen/DAGISelEmitter.cpp @@ -2023,12 +2023,24 @@ public: OS << " SDOperand Tmp" << utostr(ResNo) << " = CurDAG->getTargetConstant(Tmp" << ResNo << "C, MVT::" << getEnumName(N->getTypeNum(0)) << ");\n"; - } else if (!N->isLeaf() && N->getOperator()->getName() == "tglobaladdr") { + } else if (!N->isLeaf() && N->getOperator()->getName() == "globaladdr") { + OS << " SDOperand Tmp" << ResNo + << " = CurDAG->getTargetGlobalAddress(cast<GlobalAddressSDNode>(" + << Val << ")->getGlobal(), MVT::" << getEnumName(N->getTypeNum(0)) + << ");\n"; + } else if (!N->isLeaf() && N->getOperator()->getName() == "externalsym") { + OS << " SDOperand Tmp" << ResNo + << " = CurDAG->getTargetExternalSymbol(cast<ExternalSymbolSDNode>(" + << Val << ")->getSymbol(), MVT::" << getEnumName(N->getTypeNum(0)) + << ");\n"; + } else if (!N->isLeaf() && N->getOperator()->getName() == "texternalsym"){ OS << " SDOperand Tmp" << ResNo << " = " << Val << ";\n"; - } else if (!N->isLeaf() && N->getOperator()->getName() == "tconstpool") { + } else if (!N->isLeaf() && N->getOperator()->getName() == "tglobaladdr") { OS << " SDOperand Tmp" << ResNo << " = " << Val << ";\n"; } else if (!N->isLeaf() && N->getOperator()->getName() == "texternalsym"){ OS << " SDOperand Tmp" << ResNo << " = " << Val << ";\n"; + } else if (!N->isLeaf() && N->getOperator()->getName() == "tconstpool") { + OS << " SDOperand Tmp" << ResNo << " = " << Val << ";\n"; } else if (N->isLeaf() && (CP = NodeGetComplexPattern(N, ISE))) { std::string Fn = CP->getSelectFunc(); NumRes = CP->getNumOperands(); |