summaryrefslogtreecommitdiff
path: root/include/llvm/Support/BranchProbability.h
diff options
context:
space:
mode:
authorAndrew Trick <atrick@apple.com>2011-06-11 01:05:22 +0000
committerAndrew Trick <atrick@apple.com>2011-06-11 01:05:22 +0000
commitf289df2d9544bd3a0934651daa20e589544413ba (patch)
tree7301c85f67fa32083f0ffbfd7908bc79002bd0bd /include/llvm/Support/BranchProbability.h
parentb5923db192d2aa938ff3c12aaac87d80ab649625 (diff)
downloadllvm-f289df2d9544bd3a0934651daa20e589544413ba.tar.gz
llvm-f289df2d9544bd3a0934651daa20e589544413ba.tar.bz2
llvm-f289df2d9544bd3a0934651daa20e589544413ba.tar.xz
Branch profiling: floating-point avoidance.
Patch by: Jakub Staszak! Introduces BranchProbability. Changes unsigned to uint32_t all over and uint64_t only when overflow is expected. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132867 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Support/BranchProbability.h')
-rw-r--r--include/llvm/Support/BranchProbability.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/include/llvm/Support/BranchProbability.h b/include/llvm/Support/BranchProbability.h
new file mode 100644
index 0000000000..7ba649133b
--- /dev/null
+++ b/include/llvm/Support/BranchProbability.h
@@ -0,0 +1,50 @@
+//===- BranchProbability.h - Branch Probability Analysis --------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// Definition of BranchProbability shared by IR and Machine Instructions.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_SUPPORT_BRANCHPROBABILITY_H
+#define LLVM_SUPPORT_BRANCHPROBABILITY_H
+
+#include "llvm/Support/DataTypes.h"
+
+namespace llvm {
+
+class raw_ostream;
+class BranchProbabilityInfo;
+class MachineBranchProbabilityInfo;
+class MachineBasicBlock;
+
+// This class represents Branch Probability as a non-negative fraction.
+class BranchProbability {
+ friend class BranchProbabilityInfo;
+ friend class MachineBranchProbabilityInfo;
+ friend class MachineBasicBlock;
+
+ // Numerator
+ uint32_t N;
+
+ // Denominator
+ uint32_t D;
+
+ BranchProbability(uint32_t n, uint32_t d);
+
+public:
+ raw_ostream &print(raw_ostream &OS) const;
+
+ void dump() const;
+};
+
+raw_ostream &operator<<(raw_ostream &OS, const BranchProbability &Prob);
+
+}
+
+#endif