diff options
| author | Christopher Lamb <christopher.lamb@gmail.com> | 2008-03-10 06:12:08 +0000 |
|---|---|---|
| committer | Christopher Lamb <christopher.lamb@gmail.com> | 2008-03-10 06:12:08 +0000 |
| commit | 4ba3f0430beafc514739aa433365fa25929c45e0 (patch) | |
| tree | 133ae6b94ffccac1eb6b0359c6ca44bbe72d6560 /llvm/lib/Target/Target.td | |
| parent | 3e4683262e46fdf725989ec7c0b5646a27f5b305 (diff) | |
| download | bcm5719-llvm-4ba3f0430beafc514739aa433365fa25929c45e0.tar.gz bcm5719-llvm-4ba3f0430beafc514739aa433365fa25929c45e0.zip | |
Allow insert_subreg into implicit, target-specific values.
Change insert/extract subreg instructions to be able to be used in TableGen patterns.
Use the above features to reimplement an x86-64 pseudo instruction as a pattern.
llvm-svn: 48130
Diffstat (limited to 'llvm/lib/Target/Target.td')
| -rw-r--r-- | llvm/lib/Target/Target.td | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/llvm/lib/Target/Target.td b/llvm/lib/Target/Target.td index cebac7a2636..ea8f6ec3a15 100644 --- a/llvm/lib/Target/Target.td +++ b/llvm/lib/Target/Target.td @@ -263,6 +263,10 @@ def variable_ops; /// flags. But currently we have but one flag. def ptr_rc; +/// unknown definition - Mark this operand as being of unknown type, causing +/// it to be resolved by inference in the context it is used. +def unknown; + /// Operand Types - These provide the built-in operand types that may be used /// by a target. Targets can optionally provide their own operand types as /// needed, though this should not be needed for RISC targets. @@ -351,15 +355,15 @@ def DECLARE : Instruction { let hasCtrlDep = 1; } def EXTRACT_SUBREG : Instruction { - let OutOperandList = (ops variable_ops); - let InOperandList = (ops variable_ops); + let OutOperandList = (ops unknown:$dst); + let InOperandList = (ops unknown:$supersrc, i32imm:$subidx); let AsmString = ""; let Namespace = "TargetInstrInfo"; let neverHasSideEffects = 1; } def INSERT_SUBREG : Instruction { - let OutOperandList = (ops variable_ops); - let InOperandList = (ops variable_ops); + let OutOperandList = (ops unknown:$dst); + let InOperandList = (ops unknown:$supersrc, unknown:$subsrc, i32imm:$subidx); let AsmString = ""; let Namespace = "TargetInstrInfo"; let neverHasSideEffects = 1; |

