aboutsummaryrefslogtreecommitdiffstats
path: root/utils/TableGen
diff options
context:
space:
mode:
Diffstat (limited to 'utils/TableGen')
-rw-r--r--utils/TableGen/DAGISelEmitter.cpp16
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();