From 88cc092ca5bd79480205ee7b01aa39c13f3e35d7 Mon Sep 17 00:00:00 2001 From: Evan Cheng Date: Tue, 10 Jul 2007 18:05:01 +0000 Subject: [PATCH] Try committing again. Add OptionalDefOperand. Remove clobbersPred. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38498 91177308-0d34-0410-b5e6-96231b3b80d8 --- utils/TableGen/CodeGenInstruction.h | 2 +- utils/TableGen/CodeGenTarget.cpp | 7 ++++--- utils/TableGen/InstrInfoEmitter.cpp | 7 ++++++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/utils/TableGen/CodeGenInstruction.h b/utils/TableGen/CodeGenInstruction.h index 54d9b3fea7b..3f59c23a878 100644 --- a/utils/TableGen/CodeGenInstruction.h +++ b/utils/TableGen/CodeGenInstruction.h @@ -97,8 +97,8 @@ namespace llvm { bool hasVariableNumberOfOperands; bool hasCtrlDep; bool noResults; - bool clobbersPred; bool isNotDuplicable; + bool hasOptionalDef; /// ParseOperandName - Parse an operand name like "$foo" or "$foo.bar", /// where $foo is a whole operand and $foo.bar refers to a suboperand. diff --git a/utils/TableGen/CodeGenTarget.cpp b/utils/TableGen/CodeGenTarget.cpp index 18e11bdb6ff..71fc824eadf 100644 --- a/utils/TableGen/CodeGenTarget.cpp +++ b/utils/TableGen/CodeGenTarget.cpp @@ -370,8 +370,8 @@ CodeGenInstruction::CodeGenInstruction(Record *R, const std::string &AsmStr) usesCustomDAGSchedInserter = R->getValueAsBit("usesCustomDAGSchedInserter"); hasCtrlDep = R->getValueAsBit("hasCtrlDep"); noResults = R->getValueAsBit("noResults"); - clobbersPred = R->getValueAsBit("clobbersPred"); isNotDuplicable = R->getValueAsBit("isNotDuplicable"); + hasOptionalDef = false; hasVariableNumberOfOperands = false; DagInit *DI; @@ -411,9 +411,10 @@ CodeGenInstruction::CodeGenInstruction(Record *R, const std::string &AsmStr) if (unsigned NumArgs = MIOpInfo->getNumArgs()) NumOps = NumArgs; - if (Rec->isSubClassOf("PredicateOperand")) { + if (Rec->isSubClassOf("PredicateOperand")) isPredicable = true; - } + else if (Rec->isSubClassOf("OptionalDefOperand")) + hasOptionalDef = true; } else if (Rec->getName() == "variable_ops") { hasVariableNumberOfOperands = true; continue; diff --git a/utils/TableGen/InstrInfoEmitter.cpp b/utils/TableGen/InstrInfoEmitter.cpp index af01e4cd75a..da2308e9e42 100644 --- a/utils/TableGen/InstrInfoEmitter.cpp +++ b/utils/TableGen/InstrInfoEmitter.cpp @@ -110,6 +110,11 @@ InstrInfoEmitter::GetOperandInfo(const CodeGenInstruction &Inst) { if (Inst.OperandList[i].Rec->isSubClassOf("PredicateOperand")) Res += "|M_PREDICATE_OPERAND"; + // Optional def operands. Check to see if the original unexpanded operand + // was of type OptionalDefOperand. + if (Inst.OperandList[i].Rec->isSubClassOf("OptionalDefOperand")) + Res += "|M_OPTIONAL_DEF_OPERAND"; + // Fill in constraint info. Res += ", " + Inst.OperandList[i].Constraints[j]; Result.push_back(Res); @@ -241,8 +246,8 @@ void InstrInfoEmitter::emitRecord(const CodeGenInstruction &Inst, unsigned Num, if (Inst.isCommutable) OS << "|M_COMMUTABLE"; if (Inst.isTerminator) OS << "|M_TERMINATOR_FLAG"; if (Inst.isReMaterializable) OS << "|M_REMATERIALIZIBLE"; - if (Inst.clobbersPred) OS << "|M_CLOBBERS_PRED"; if (Inst.isNotDuplicable) OS << "|M_NOT_DUPLICABLE"; + if (Inst.hasOptionalDef) OS << "|M_HAS_OPTIONAL_DEF"; if (Inst.usesCustomDAGSchedInserter) OS << "|M_USES_CUSTOM_DAG_SCHED_INSERTION"; if (Inst.hasVariableNumberOfOperands) -- 2.34.1