diff options
author | Evan Cheng <evan.cheng@apple.com> | 2007-07-05 07:09:09 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2007-07-05 07:09:09 +0000 |
commit | 2aa133ef72a739c39b830cdc4d322a9d2e1d09c2 (patch) | |
tree | c5383ab2be048af05bf29d65e79f8835b41e0c71 /lib | |
parent | 0e4a276c72e5f5e6093c2efeb15ee57eda4f471a (diff) |
- Added zero_reg def to stand for register 0.
- Added two variants of PredicateOperand: ImmutablePredicateOperand, whose predicate does not change after isel; PredicateDefOperand, which represent a predicate defintion operand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37892 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-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. |