1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 02:52:53 +02:00

Pass BranchProbability/BlockMass by value instead of const& as they are small. NFC.

llvm-svn: 247357
This commit is contained in:
Cong Hou 2015-09-10 23:10:42 +00:00
parent b3a586f07f
commit 16bf52a24c
17 changed files with 64 additions and 65 deletions

View File

@ -84,7 +84,7 @@ public:
/// \brief Add another mass. /// \brief Add another mass.
/// ///
/// Adds another mass, saturating at \a isFull() rather than overflowing. /// Adds another mass, saturating at \a isFull() rather than overflowing.
BlockMass &operator+=(const BlockMass &X) { BlockMass &operator+=(BlockMass X) {
uint64_t Sum = Mass + X.Mass; uint64_t Sum = Mass + X.Mass;
Mass = Sum < Mass ? UINT64_MAX : Sum; Mass = Sum < Mass ? UINT64_MAX : Sum;
return *this; return *this;
@ -94,23 +94,23 @@ public:
/// ///
/// Subtracts another mass, saturating at \a isEmpty() rather than /// Subtracts another mass, saturating at \a isEmpty() rather than
/// undeflowing. /// undeflowing.
BlockMass &operator-=(const BlockMass &X) { BlockMass &operator-=(BlockMass X) {
uint64_t Diff = Mass - X.Mass; uint64_t Diff = Mass - X.Mass;
Mass = Diff > Mass ? 0 : Diff; Mass = Diff > Mass ? 0 : Diff;
return *this; return *this;
} }
BlockMass &operator*=(const BranchProbability &P) { BlockMass &operator*=(BranchProbability P) {
Mass = P.scale(Mass); Mass = P.scale(Mass);
return *this; return *this;
} }
bool operator==(const BlockMass &X) const { return Mass == X.Mass; } bool operator==(BlockMass X) const { return Mass == X.Mass; }
bool operator!=(const BlockMass &X) const { return Mass != X.Mass; } bool operator!=(BlockMass X) const { return Mass != X.Mass; }
bool operator<=(const BlockMass &X) const { return Mass <= X.Mass; } bool operator<=(BlockMass X) const { return Mass <= X.Mass; }
bool operator>=(const BlockMass &X) const { return Mass >= X.Mass; } bool operator>=(BlockMass X) const { return Mass >= X.Mass; }
bool operator<(const BlockMass &X) const { return Mass < X.Mass; } bool operator<(BlockMass X) const { return Mass < X.Mass; }
bool operator>(const BlockMass &X) const { return Mass > X.Mass; } bool operator>(BlockMass X) const { return Mass > X.Mass; }
/// \brief Convert to scaled number. /// \brief Convert to scaled number.
/// ///
@ -122,20 +122,20 @@ public:
raw_ostream &print(raw_ostream &OS) const; raw_ostream &print(raw_ostream &OS) const;
}; };
inline BlockMass operator+(const BlockMass &L, const BlockMass &R) { inline BlockMass operator+(BlockMass L, BlockMass R) {
return BlockMass(L) += R; return BlockMass(L) += R;
} }
inline BlockMass operator-(const BlockMass &L, const BlockMass &R) { inline BlockMass operator-(BlockMass L, BlockMass R) {
return BlockMass(L) -= R; return BlockMass(L) -= R;
} }
inline BlockMass operator*(const BlockMass &L, const BranchProbability &R) { inline BlockMass operator*(BlockMass L, BranchProbability R) {
return BlockMass(L) *= R; return BlockMass(L) *= R;
} }
inline BlockMass operator*(const BranchProbability &L, const BlockMass &R) { inline BlockMass operator*(BranchProbability L, BlockMass R) {
return BlockMass(R) *= L; return BlockMass(R) *= L;
} }
inline raw_ostream &operator<<(raw_ostream &OS, const BlockMass &X) { inline raw_ostream &operator<<(raw_ostream &OS, BlockMass X) {
return X.print(OS); return X.print(OS);
} }

View File

@ -37,13 +37,13 @@ public:
/// \brief Multiplies with a branch probability. The computation will never /// \brief Multiplies with a branch probability. The computation will never
/// overflow. /// overflow.
BlockFrequency &operator*=(const BranchProbability &Prob); BlockFrequency &operator*=(BranchProbability Prob);
const BlockFrequency operator*(const BranchProbability &Prob) const; const BlockFrequency operator*(BranchProbability Prob) const;
/// \brief Divide by a non-zero branch probability using saturating /// \brief Divide by a non-zero branch probability using saturating
/// arithmetic. /// arithmetic.
BlockFrequency &operator/=(const BranchProbability &Prob); BlockFrequency &operator/=(BranchProbability Prob);
BlockFrequency operator/(const BranchProbability &Prob) const; BlockFrequency operator/(BranchProbability Prob) const;
/// \brief Adds another block frequency using saturating arithmetic. /// \brief Adds another block frequency using saturating arithmetic.
BlockFrequency &operator+=(const BlockFrequency &Freq); BlockFrequency &operator+=(const BlockFrequency &Freq);

View File

@ -30,9 +30,10 @@ class BranchProbability {
uint32_t D; uint32_t D;
public: public:
BranchProbability(uint32_t n, uint32_t d) : N(n), D(d) { BranchProbability(uint32_t Numerator, uint32_t Denominator)
assert(d > 0 && "Denominator cannot be 0!"); : N(Numerator), D(Denominator) {
assert(n <= d && "Probability cannot be bigger than 1!"); assert(D > 0 && "Denominator cannot be 0!");
assert(N <= D && "Probability cannot be bigger than 1!");
} }
static BranchProbability getZero() { return BranchProbability(0, 1); } static BranchProbability getZero() { return BranchProbability(0, 1); }
@ -80,7 +81,7 @@ public:
bool operator>=(BranchProbability RHS) const { return !(*this < RHS); } bool operator>=(BranchProbability RHS) const { return !(*this < RHS); }
}; };
inline raw_ostream &operator<<(raw_ostream &OS, const BranchProbability &Prob) { inline raw_ostream &operator<<(raw_ostream &OS, BranchProbability Prob) {
return Prob.print(OS); return Prob.print(OS);
} }

View File

@ -19,6 +19,7 @@
#include "llvm/CodeGen/MachineCombinerPattern.h" #include "llvm/CodeGen/MachineCombinerPattern.h"
#include "llvm/CodeGen/MachineFunction.h" #include "llvm/CodeGen/MachineFunction.h"
#include "llvm/MC/MCInstrInfo.h" #include "llvm/MC/MCInstrInfo.h"
#include "llvm/Support/BranchProbability.h"
#include "llvm/Target/TargetRegisterInfo.h" #include "llvm/Target/TargetRegisterInfo.h"
namespace llvm { namespace llvm {
@ -38,7 +39,6 @@ class SelectionDAG;
class ScheduleDAG; class ScheduleDAG;
class TargetRegisterClass; class TargetRegisterClass;
class TargetRegisterInfo; class TargetRegisterInfo;
class BranchProbability;
class TargetSubtargetInfo; class TargetSubtargetInfo;
class TargetSchedModel; class TargetSchedModel;
class DFAPacketizer; class DFAPacketizer;
@ -511,7 +511,7 @@ public:
virtual virtual
bool isProfitableToIfCvt(MachineBasicBlock &MBB, unsigned NumCycles, bool isProfitableToIfCvt(MachineBasicBlock &MBB, unsigned NumCycles,
unsigned ExtraPredCycles, unsigned ExtraPredCycles,
const BranchProbability &Probability) const { BranchProbability Probability) const {
return false; return false;
} }
@ -526,7 +526,7 @@ public:
unsigned NumTCycles, unsigned ExtraTCycles, unsigned NumTCycles, unsigned ExtraTCycles,
MachineBasicBlock &FMBB, MachineBasicBlock &FMBB,
unsigned NumFCycles, unsigned ExtraFCycles, unsigned NumFCycles, unsigned ExtraFCycles,
const BranchProbability &Probability) const { BranchProbability Probability) const {
return false; return false;
} }
@ -538,7 +538,7 @@ public:
/// will be properly predicted. /// will be properly predicted.
virtual bool virtual bool
isProfitableToDupForIfCvt(MachineBasicBlock &MBB, unsigned NumCycles, isProfitableToDupForIfCvt(MachineBasicBlock &MBB, unsigned NumCycles,
const BranchProbability &Probability) const { BranchProbability Probability) const {
return false; return false;
} }

View File

@ -190,10 +190,10 @@ namespace {
private: private:
bool ReverseBranchCondition(BBInfo &BBI); bool ReverseBranchCondition(BBInfo &BBI);
bool ValidSimple(BBInfo &TrueBBI, unsigned &Dups, bool ValidSimple(BBInfo &TrueBBI, unsigned &Dups,
const BranchProbability &Prediction) const; BranchProbability Prediction) const;
bool ValidTriangle(BBInfo &TrueBBI, BBInfo &FalseBBI, bool ValidTriangle(BBInfo &TrueBBI, BBInfo &FalseBBI,
bool FalseBranch, unsigned &Dups, bool FalseBranch, unsigned &Dups,
const BranchProbability &Prediction) const; BranchProbability Prediction) const;
bool ValidDiamond(BBInfo &TrueBBI, BBInfo &FalseBBI, bool ValidDiamond(BBInfo &TrueBBI, BBInfo &FalseBBI,
unsigned &Dups1, unsigned &Dups2) const; unsigned &Dups1, unsigned &Dups2) const;
void ScanInstructions(BBInfo &BBI); void ScanInstructions(BBInfo &BBI);
@ -218,7 +218,7 @@ namespace {
bool MeetIfcvtSizeLimit(MachineBasicBlock &BB, bool MeetIfcvtSizeLimit(MachineBasicBlock &BB,
unsigned Cycle, unsigned Extra, unsigned Cycle, unsigned Extra,
const BranchProbability &Prediction) const { BranchProbability Prediction) const {
return Cycle > 0 && TII->isProfitableToIfCvt(BB, Cycle, Extra, return Cycle > 0 && TII->isProfitableToIfCvt(BB, Cycle, Extra,
Prediction); Prediction);
} }
@ -227,7 +227,7 @@ namespace {
unsigned TCycle, unsigned TExtra, unsigned TCycle, unsigned TExtra,
MachineBasicBlock &FBB, MachineBasicBlock &FBB,
unsigned FCycle, unsigned FExtra, unsigned FCycle, unsigned FExtra,
const BranchProbability &Prediction) const { BranchProbability Prediction) const {
return TCycle > 0 && FCycle > 0 && return TCycle > 0 && FCycle > 0 &&
TII->isProfitableToIfCvt(TBB, TCycle, TExtra, FBB, FCycle, FExtra, TII->isProfitableToIfCvt(TBB, TCycle, TExtra, FBB, FCycle, FExtra,
Prediction); Prediction);
@ -474,7 +474,7 @@ static inline MachineBasicBlock *getNextBlock(MachineBasicBlock *BB) {
/// number of instructions that the ifcvt would need to duplicate if performed /// number of instructions that the ifcvt would need to duplicate if performed
/// in Dups. /// in Dups.
bool IfConverter::ValidSimple(BBInfo &TrueBBI, unsigned &Dups, bool IfConverter::ValidSimple(BBInfo &TrueBBI, unsigned &Dups,
const BranchProbability &Prediction) const { BranchProbability Prediction) const {
Dups = 0; Dups = 0;
if (TrueBBI.IsBeingAnalyzed || TrueBBI.IsDone) if (TrueBBI.IsBeingAnalyzed || TrueBBI.IsDone)
return false; return false;
@ -501,7 +501,7 @@ bool IfConverter::ValidSimple(BBInfo &TrueBBI, unsigned &Dups,
/// if performed in 'Dups'. /// if performed in 'Dups'.
bool IfConverter::ValidTriangle(BBInfo &TrueBBI, BBInfo &FalseBBI, bool IfConverter::ValidTriangle(BBInfo &TrueBBI, BBInfo &FalseBBI,
bool FalseBranch, unsigned &Dups, bool FalseBranch, unsigned &Dups,
const BranchProbability &Prediction) const { BranchProbability Prediction) const {
Dups = 0; Dups = 0;
if (TrueBBI.IsBeingAnalyzed || TrueBBI.IsDone) if (TrueBBI.IsBeingAnalyzed || TrueBBI.IsDone)
return false; return false;

View File

@ -18,24 +18,24 @@
using namespace llvm; using namespace llvm;
BlockFrequency &BlockFrequency::operator*=(const BranchProbability &Prob) { BlockFrequency &BlockFrequency::operator*=(BranchProbability Prob) {
Frequency = Prob.scale(Frequency); Frequency = Prob.scale(Frequency);
return *this; return *this;
} }
const BlockFrequency const BlockFrequency
BlockFrequency::operator*(const BranchProbability &Prob) const { BlockFrequency::operator*(BranchProbability Prob) const {
BlockFrequency Freq(Frequency); BlockFrequency Freq(Frequency);
Freq *= Prob; Freq *= Prob;
return Freq; return Freq;
} }
BlockFrequency &BlockFrequency::operator/=(const BranchProbability &Prob) { BlockFrequency &BlockFrequency::operator/=(BranchProbability Prob) {
Frequency = Prob.scaleByInverse(Frequency); Frequency = Prob.scaleByInverse(Frequency);
return *this; return *this;
} }
BlockFrequency BlockFrequency::operator/(const BranchProbability &Prob) const { BlockFrequency BlockFrequency::operator/(BranchProbability Prob) const {
BlockFrequency Freq(Frequency); BlockFrequency Freq(Frequency);
Freq /= Prob; Freq /= Prob;
return Freq; return Freq;

View File

@ -922,7 +922,7 @@ bool
R600InstrInfo::isProfitableToIfCvt(MachineBasicBlock &MBB, R600InstrInfo::isProfitableToIfCvt(MachineBasicBlock &MBB,
unsigned NumCyles, unsigned NumCyles,
unsigned ExtraPredCycles, unsigned ExtraPredCycles,
const BranchProbability &Probability) const{ BranchProbability Probability) const{
return true; return true;
} }
@ -933,14 +933,14 @@ R600InstrInfo::isProfitableToIfCvt(MachineBasicBlock &TMBB,
MachineBasicBlock &FMBB, MachineBasicBlock &FMBB,
unsigned NumFCycles, unsigned NumFCycles,
unsigned ExtraFCycles, unsigned ExtraFCycles,
const BranchProbability &Probability) const { BranchProbability Probability) const {
return true; return true;
} }
bool bool
R600InstrInfo::isProfitableToDupForIfCvt(MachineBasicBlock &MBB, R600InstrInfo::isProfitableToDupForIfCvt(MachineBasicBlock &MBB,
unsigned NumCyles, unsigned NumCyles,
const BranchProbability &Probability) BranchProbability Probability)
const { const {
return true; return true;
} }

View File

@ -174,18 +174,18 @@ namespace llvm {
bool bool
isProfitableToDupForIfCvt(MachineBasicBlock &MBB, unsigned NumCyles, isProfitableToDupForIfCvt(MachineBasicBlock &MBB, unsigned NumCyles,
const BranchProbability &Probability) const override; BranchProbability Probability) const override;
bool isProfitableToIfCvt(MachineBasicBlock &MBB, unsigned NumCyles, bool isProfitableToIfCvt(MachineBasicBlock &MBB, unsigned NumCyles,
unsigned ExtraPredCycles, unsigned ExtraPredCycles,
const BranchProbability &Probability) const override ; BranchProbability Probability) const override ;
bool bool
isProfitableToIfCvt(MachineBasicBlock &TMBB, isProfitableToIfCvt(MachineBasicBlock &TMBB,
unsigned NumTCycles, unsigned ExtraTCycles, unsigned NumTCycles, unsigned ExtraTCycles,
MachineBasicBlock &FMBB, MachineBasicBlock &FMBB,
unsigned NumFCycles, unsigned ExtraFCycles, unsigned NumFCycles, unsigned ExtraFCycles,
const BranchProbability &Probability) const override; BranchProbability Probability) const override;
bool DefinesPredicate(MachineInstr *MI, bool DefinesPredicate(MachineInstr *MI,
std::vector<MachineOperand> &Pred) const override; std::vector<MachineOperand> &Pred) const override;

View File

@ -1640,7 +1640,7 @@ bool ARMBaseInstrInfo::isSchedulingBoundary(const MachineInstr *MI,
bool ARMBaseInstrInfo:: bool ARMBaseInstrInfo::
isProfitableToIfCvt(MachineBasicBlock &MBB, isProfitableToIfCvt(MachineBasicBlock &MBB,
unsigned NumCycles, unsigned ExtraPredCycles, unsigned NumCycles, unsigned ExtraPredCycles,
const BranchProbability &Probability) const { BranchProbability Probability) const {
if (!NumCycles) if (!NumCycles)
return false; return false;
@ -1682,7 +1682,7 @@ isProfitableToIfCvt(MachineBasicBlock &TMBB,
unsigned TCycles, unsigned TExtra, unsigned TCycles, unsigned TExtra,
MachineBasicBlock &FMBB, MachineBasicBlock &FMBB,
unsigned FCycles, unsigned FExtra, unsigned FCycles, unsigned FExtra,
const BranchProbability &Probability) const { BranchProbability Probability) const {
if (!TCycles || !FCycles) if (!TCycles || !FCycles)
return false; return false;

View File

@ -224,15 +224,15 @@ public:
bool isProfitableToIfCvt(MachineBasicBlock &MBB, bool isProfitableToIfCvt(MachineBasicBlock &MBB,
unsigned NumCycles, unsigned ExtraPredCycles, unsigned NumCycles, unsigned ExtraPredCycles,
const BranchProbability &Probability) const override; BranchProbability Probability) const override;
bool isProfitableToIfCvt(MachineBasicBlock &TMBB, unsigned NumT, bool isProfitableToIfCvt(MachineBasicBlock &TMBB, unsigned NumT,
unsigned ExtraT, MachineBasicBlock &FMBB, unsigned ExtraT, MachineBasicBlock &FMBB,
unsigned NumF, unsigned ExtraF, unsigned NumF, unsigned ExtraF,
const BranchProbability &Probability) const override; BranchProbability Probability) const override;
bool isProfitableToDupForIfCvt(MachineBasicBlock &MBB, unsigned NumCycles, bool isProfitableToDupForIfCvt(MachineBasicBlock &MBB, unsigned NumCycles,
const BranchProbability &Probability) const override { BranchProbability Probability) const override {
return NumCycles == 1; return NumCycles == 1;
} }

View File

@ -1063,7 +1063,7 @@ HexagonInstrInfo::
isProfitableToIfCvt(MachineBasicBlock &MBB, isProfitableToIfCvt(MachineBasicBlock &MBB,
unsigned NumCycles, unsigned NumCycles,
unsigned ExtraPredCycles, unsigned ExtraPredCycles,
const BranchProbability &Probability) const { BranchProbability Probability) const {
return true; return true;
} }
@ -1076,7 +1076,7 @@ isProfitableToIfCvt(MachineBasicBlock &TMBB,
MachineBasicBlock &FMBB, MachineBasicBlock &FMBB,
unsigned NumFCycles, unsigned NumFCycles,
unsigned ExtraFCycles, unsigned ExtraFCycles,
const BranchProbability &Probability) const { BranchProbability Probability) const {
return true; return true;
} }
@ -1185,7 +1185,7 @@ bool HexagonInstrInfo::ReverseBranchCondition(
bool HexagonInstrInfo:: bool HexagonInstrInfo::
isProfitableToDupForIfCvt(MachineBasicBlock &MBB,unsigned NumInstrs, isProfitableToDupForIfCvt(MachineBasicBlock &MBB,unsigned NumInstrs,
const BranchProbability &Probability) const { BranchProbability Probability) const {
return (NumInstrs <= 4); return (NumInstrs <= 4);
} }

View File

@ -132,13 +132,13 @@ public:
bool isProfitableToIfCvt(MachineBasicBlock &MBB, unsigned NumCycles, bool isProfitableToIfCvt(MachineBasicBlock &MBB, unsigned NumCycles,
unsigned ExtraPredCycles, unsigned ExtraPredCycles,
const BranchProbability &Probability) const override; BranchProbability Probability) const override;
bool isProfitableToIfCvt(MachineBasicBlock &TMBB, bool isProfitableToIfCvt(MachineBasicBlock &TMBB,
unsigned NumTCycles, unsigned ExtraTCycles, unsigned NumTCycles, unsigned ExtraTCycles,
MachineBasicBlock &FMBB, MachineBasicBlock &FMBB,
unsigned NumFCycles, unsigned ExtraFCycles, unsigned NumFCycles, unsigned ExtraFCycles,
const BranchProbability &Probability) const override; BranchProbability Probability) const override;
bool isPredicated(const MachineInstr *MI) const override; bool isPredicated(const MachineInstr *MI) const override;
bool isPredicated(unsigned Opcode) const; bool isPredicated(unsigned Opcode) const;
@ -155,7 +155,7 @@ public:
ReverseBranchCondition(SmallVectorImpl<MachineOperand> &Cond) const override; ReverseBranchCondition(SmallVectorImpl<MachineOperand> &Cond) const override;
bool isProfitableToDupForIfCvt(MachineBasicBlock &MBB, unsigned NumCycles, bool isProfitableToDupForIfCvt(MachineBasicBlock &MBB, unsigned NumCycles,
const BranchProbability &Probability) const override; BranchProbability Probability) const override;
DFAPacketizer * DFAPacketizer *
CreateTargetScheduleState(const TargetSubtargetInfo &STI) const override; CreateTargetScheduleState(const TargetSubtargetInfo &STI) const override;

View File

@ -1474,7 +1474,7 @@ bool PPCInstrInfo::isProfitableToIfCvt(MachineBasicBlock &TMBB,
unsigned NumT, unsigned ExtraT, unsigned NumT, unsigned ExtraT,
MachineBasicBlock &FMBB, MachineBasicBlock &FMBB,
unsigned NumF, unsigned ExtraF, unsigned NumF, unsigned ExtraF,
const BranchProbability &Probability) const { BranchProbability Probability) const {
return !(MBBDefinesCTR(TMBB) && MBBDefinesCTR(FMBB)); return !(MBBDefinesCTR(TMBB) && MBBDefinesCTR(FMBB));
} }

View File

@ -215,7 +215,7 @@ public:
// profitable to use the predicated branches. // profitable to use the predicated branches.
bool isProfitableToIfCvt(MachineBasicBlock &MBB, bool isProfitableToIfCvt(MachineBasicBlock &MBB,
unsigned NumCycles, unsigned ExtraPredCycles, unsigned NumCycles, unsigned ExtraPredCycles,
const BranchProbability &Probability) const override { BranchProbability Probability) const override {
return true; return true;
} }
@ -223,12 +223,10 @@ public:
unsigned NumT, unsigned ExtraT, unsigned NumT, unsigned ExtraT,
MachineBasicBlock &FMBB, MachineBasicBlock &FMBB,
unsigned NumF, unsigned ExtraF, unsigned NumF, unsigned ExtraF,
const BranchProbability &Probability) const override; BranchProbability Probability) const override;
bool isProfitableToDupForIfCvt(MachineBasicBlock &MBB, bool isProfitableToDupForIfCvt(MachineBasicBlock &MBB, unsigned NumCycles,
unsigned NumCycles, BranchProbability Probability) const override {
const BranchProbability
&Probability) const override {
return true; return true;
} }

View File

@ -514,7 +514,7 @@ bool SystemZInstrInfo::isPredicable(MachineInstr *MI) const {
bool SystemZInstrInfo:: bool SystemZInstrInfo::
isProfitableToIfCvt(MachineBasicBlock &MBB, isProfitableToIfCvt(MachineBasicBlock &MBB,
unsigned NumCycles, unsigned ExtraPredCycles, unsigned NumCycles, unsigned ExtraPredCycles,
const BranchProbability &Probability) const { BranchProbability Probability) const {
// For now only convert single instructions. // For now only convert single instructions.
return NumCycles == 1; return NumCycles == 1;
} }
@ -524,7 +524,7 @@ isProfitableToIfCvt(MachineBasicBlock &TMBB,
unsigned NumCyclesT, unsigned ExtraPredCyclesT, unsigned NumCyclesT, unsigned ExtraPredCyclesT,
MachineBasicBlock &FMBB, MachineBasicBlock &FMBB,
unsigned NumCyclesF, unsigned ExtraPredCyclesF, unsigned NumCyclesF, unsigned ExtraPredCyclesF,
const BranchProbability &Probability) const { BranchProbability Probability) const {
// For now avoid converting mutually-exclusive cases. // For now avoid converting mutually-exclusive cases.
return false; return false;
} }

View File

@ -159,12 +159,12 @@ public:
bool isPredicable(MachineInstr *MI) const override; bool isPredicable(MachineInstr *MI) const override;
bool isProfitableToIfCvt(MachineBasicBlock &MBB, unsigned NumCycles, bool isProfitableToIfCvt(MachineBasicBlock &MBB, unsigned NumCycles,
unsigned ExtraPredCycles, unsigned ExtraPredCycles,
const BranchProbability &Probability) const override; BranchProbability Probability) const override;
bool isProfitableToIfCvt(MachineBasicBlock &TMBB, bool isProfitableToIfCvt(MachineBasicBlock &TMBB,
unsigned NumCyclesT, unsigned ExtraPredCyclesT, unsigned NumCyclesT, unsigned ExtraPredCyclesT,
MachineBasicBlock &FMBB, MachineBasicBlock &FMBB,
unsigned NumCyclesF, unsigned ExtraPredCyclesF, unsigned NumCyclesF, unsigned ExtraPredCyclesF,
const BranchProbability &Probability) const override; BranchProbability Probability) const override;
bool PredicateInstruction(MachineInstr *MI, bool PredicateInstruction(MachineInstr *MI,
ArrayRef<MachineOperand> Pred) const override; ArrayRef<MachineOperand> Pred) const override;
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI,

View File

@ -14,7 +14,7 @@
using namespace llvm; using namespace llvm;
namespace llvm { namespace llvm {
void PrintTo(const BranchProbability &P, ::std::ostream *os) { void PrintTo(BranchProbability P, ::std::ostream *os) {
*os << P.getNumerator() << "/" << P.getDenominator(); *os << P.getNumerator() << "/" << P.getDenominator();
} }
} }