summaryrefslogtreecommitdiffstats
path: root/llvm/include
diff options
context:
space:
mode:
authorMatthias Braun <matze@braunis.de>2016-03-01 20:03:11 +0000
committerMatthias Braun <matze@braunis.de>2016-03-01 20:03:11 +0000
commit8e0a734fc5ee45e2dc8926c58b6ed68fd57500ea (patch)
treeb129d4b80957c403b5c2cab96f6138e36da1fa58 /llvm/include
parent8f1b1f59213fc257c5b4169855e54a7e935d0232 (diff)
downloadbcm5719-llvm-8e0a734fc5ee45e2dc8926c58b6ed68fd57500ea.tar.gz
bcm5719-llvm-8e0a734fc5ee45e2dc8926c58b6ed68fd57500ea.zip
TableGen: Add hasNoSchedulingInfo to instructions
This introduces a new flag that indicates that a specific instruction will never be present when the MachineScheduler runs and therefore needs no scheduling information. This is in preparation for an upcoming commit which checks completeness of a scheduling model when tablegen runs. Differential Revision: http://reviews.llvm.org/D17728 llvm-svn: 262383
Diffstat (limited to 'llvm/include')
-rw-r--r--llvm/include/llvm/Target/Target.td9
1 files changed, 8 insertions, 1 deletions
diff --git a/llvm/include/llvm/Target/Target.td b/llvm/include/llvm/Target/Target.td
index 562bbfb8a98..654a008f660 100644
--- a/llvm/include/llvm/Target/Target.td
+++ b/llvm/include/llvm/Target/Target.td
@@ -427,6 +427,11 @@ class Instruction {
// Is this instruction a pseudo instruction for use by the assembler parser.
bit isAsmParserOnly = 0;
+ // This instruction is not expected to be queried for scheduling latencies
+ // and therefore needs no scheduling information even for a complete
+ // scheduling model.
+ bit hasNoSchedulingInfo = 0;
+
InstrItinClass Itinerary = NoItinerary;// Execution steps used for scheduling.
// Scheduling information from TargetSchedule.td.
@@ -765,7 +770,8 @@ class InstrInfo {
// Standard Pseudo Instructions.
// This list must match TargetOpcodes.h and CodeGenTarget.cpp.
// Only these instructions are allowed in the TargetOpcode namespace.
-let isCodeGenOnly = 1, isPseudo = 1, Namespace = "TargetOpcode" in {
+let isCodeGenOnly = 1, isPseudo = 1, hasNoSchedulingInfo = 1,
+ Namespace = "TargetOpcode" in {
def PHI : Instruction {
let OutOperandList = (outs);
let InOperandList = (ins variable_ops);
@@ -857,6 +863,7 @@ def COPY : Instruction {
let AsmString = "";
let hasSideEffects = 0;
let isAsCheapAsAMove = 1;
+ let hasNoSchedulingInfo = 0;
}
def BUNDLE : Instruction {
let OutOperandList = (outs);
OpenPOWER on IntegriCloud