diff options
-rw-r--r-- | lib/Target/Target.td | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/lib/Target/Target.td b/lib/Target/Target.td index 43e3af8667..723954b2e0 100644 --- a/lib/Target/Target.td +++ b/lib/Target/Target.td @@ -256,16 +256,33 @@ def i16imm : Operand<i16>; def i32imm : Operand<i32>; def i64imm : Operand<i64>; +/// zero_reg definition - Special node to stand for the zero register. +/// +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". -class PredicateOperand<ValueType ty, dag OpTypes, dag AlwaysVal> : Operand<ty> { +/// execute". If isOutput is true, then this is output operand. 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; } +class ImmutablePredicateOperand<ValueType ty, dag OpTypes, dag AlwaysVal> + : PredicateOperand<ty, OpTypes, AlwaysVal> { + let isImmutable = 1; +} + +class PredicateDefOperand<ValueType ty, dag OpTypes, dag AlwaysVal> + : PredicateOperand<ty, OpTypes, AlwaysVal> { + let isOutput = 1; +} + // InstrInfo - This class should only be instantiated once to provide parameters // which are global to the the target machine. |