diff options
| author | Evan Cheng <evan.cheng@apple.com> | 2007-07-10 18:05:01 +0000 |
|---|---|---|
| committer | Evan Cheng <evan.cheng@apple.com> | 2007-07-10 18:05:01 +0000 |
| commit | 6e3c705d746f104f83fc9ce899a062349f286857 (patch) | |
| tree | e5e762d87757267e22cf6069193a17a3c1f658f0 | |
| parent | 9c88457abefc3a17b2b0784979f53083e5ecd550 (diff) | |
| download | bcm5719-llvm-6e3c705d746f104f83fc9ce899a062349f286857.tar.gz bcm5719-llvm-6e3c705d746f104f83fc9ce899a062349f286857.zip | |
Try committing again. Add OptionalDefOperand. Remove clobbersPred.
llvm-svn: 38498
| -rw-r--r-- | llvm/utils/TableGen/CodeGenInstruction.h | 2 | ||||
| -rw-r--r-- | llvm/utils/TableGen/CodeGenTarget.cpp | 7 | ||||
| -rw-r--r-- | llvm/utils/TableGen/InstrInfoEmitter.cpp | 7 |
3 files changed, 11 insertions, 5 deletions
diff --git a/llvm/utils/TableGen/CodeGenInstruction.h b/llvm/utils/TableGen/CodeGenInstruction.h index 54d9b3fea7b..3f59c23a878 100644 --- a/llvm/utils/TableGen/CodeGenInstruction.h +++ b/llvm/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/llvm/utils/TableGen/CodeGenTarget.cpp b/llvm/utils/TableGen/CodeGenTarget.cpp index 18e11bdb6ff..71fc824eadf 100644 --- a/llvm/utils/TableGen/CodeGenTarget.cpp +++ b/llvm/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/llvm/utils/TableGen/InstrInfoEmitter.cpp b/llvm/utils/TableGen/InstrInfoEmitter.cpp index af01e4cd75a..da2308e9e42 100644 --- a/llvm/utils/TableGen/InstrInfoEmitter.cpp +++ b/llvm/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) |

