diff options
Diffstat (limited to 'llvm/lib/CodeGen/TargetSchedule.cpp')
-rw-r--r-- | llvm/lib/CodeGen/TargetSchedule.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/TargetSchedule.cpp b/llvm/lib/CodeGen/TargetSchedule.cpp index 5b6f72fbb35..2709df5697b 100644 --- a/llvm/lib/CodeGen/TargetSchedule.cpp +++ b/llvm/lib/CodeGen/TargetSchedule.cpp @@ -261,7 +261,13 @@ TargetSchedModel::computeInstrLatency(const MCSchedClassDesc &SCDesc) const { unsigned TargetSchedModel::computeInstrLatency(unsigned Opcode) const { assert(hasInstrSchedModel() && "Only call this function with a SchedModel"); unsigned SCIdx = TII->get(Opcode).getSchedClass(); - return SchedModel.computeInstrLatency(*STI, SCIdx); + return capLatency(SchedModel.computeInstrLatency(*STI, SCIdx)); +} + +unsigned TargetSchedModel::computeInstrLatency(const MCInst &Inst) const { + if (hasInstrSchedModel()) + return capLatency(SchedModel.computeInstrLatency(*STI, *TII, Inst)); + return computeInstrLatency(Inst.getOpcode()); } unsigned @@ -342,3 +348,11 @@ TargetSchedModel::computeReciprocalThroughput(unsigned Opcode) const { } return Optional<double>(); } + +Optional<double> +TargetSchedModel::computeReciprocalThroughput(const MCInst &MI) const { + if (hasInstrSchedModel()) + return SchedModel.getReciprocalThroughput(*STI, *TII, MI); + return computeReciprocalThroughput(MI.getOpcode()); +} + |