summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Target.td
diff options
context:
space:
mode:
authorChristopher Lamb <christopher.lamb@gmail.com>2008-03-10 06:12:08 +0000
committerChristopher Lamb <christopher.lamb@gmail.com>2008-03-10 06:12:08 +0000
commit4ba3f0430beafc514739aa433365fa25929c45e0 (patch)
tree133ae6b94ffccac1eb6b0359c6ca44bbe72d6560 /llvm/lib/Target/Target.td
parent3e4683262e46fdf725989ec7c0b5646a27f5b305 (diff)
downloadbcm5719-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.td12
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;
OpenPOWER on IntegriCloud