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 | 3feb0170a8d65984ce5c01a85e7dfd4005f8bb35 (patch) | |
| tree | ca6ec84f80cafe500a012b1aab9a96e34a305084 /lib/Target/Target.td | |
| parent | 7e93e16193553419a7e9907d6dbe41e6393aff4e (diff) | |
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48130 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/Target.td')
| -rw-r--r-- | lib/Target/Target.td | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/Target/Target.td b/lib/Target/Target.td index cebac7a263..ea8f6ec3a1 100644 --- a/lib/Target/Target.td +++ b/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; |
