Add OptionalDefOperand to stand for optionally defined result.
authorEvan Cheng <evan.cheng@apple.com>
Fri, 6 Jul 2007 01:00:16 +0000 (01:00 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Fri, 6 Jul 2007 01:00:16 +0000 (01:00 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37930 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/Target.td

index 723954b2e07f694d848d2b0a368299d61e70f29a..3d6d8363e45de3ceb9282715b99f21f898b26b30 100644 (file)
@@ -263,14 +263,13 @@ def zero_reg;
 /// PredicateOperand - This can be used to define a predicate operand for an
 /// instruction.  OpTypes specifies the MIOperandInfo for the operand, and
 /// AlwaysVal specifies the value of this predicate when set to "always
-/// execute". If isOutput is true, then this is output operand. If isImmutable
-/// is true, then the operand should not change after instruction selection.
+/// execute". If isImmutable is true, then the operand should not change
+/// after instruction selection.
 class PredicateOperand<ValueType ty, dag OpTypes, dag AlwaysVal>
   : Operand<ty> {
   let MIOperandInfo = OpTypes;
-  bit isOutput = 0;
   bit isImmutable = 0;
-  dag ExecuteAlways = AlwaysVal;
+  dag DefaultOps = AlwaysVal;
 }
 
 class ImmutablePredicateOperand<ValueType ty, dag OpTypes, dag AlwaysVal>
@@ -278,9 +277,13 @@ class ImmutablePredicateOperand<ValueType ty, dag OpTypes, dag AlwaysVal>
   let isImmutable = 1;
 }
 
-class PredicateDefOperand<ValueType ty, dag OpTypes, dag AlwaysVal>
-  : PredicateOperand<ty, OpTypes, AlwaysVal> {
-  let isOutput = 1;
+/// OptionalDefOperand - This is used to define a optional definition operand
+/// for an instruction. DefaultOps is the register the operand represents if none
+/// is supplied, e.g. zero_reg.
+class OptionalDefOperand<ValueType ty, dag OpTypes, dag defaultops>
+  : Operand<ty> {
+  let MIOperandInfo = OpTypes;
+  dag DefaultOps = defaultops;
 }