summaryrefslogtreecommitdiff
path: root/lib/Support/BranchProbability.cpp
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 /lib/Support/BranchProbability.cpp
parentb5923db192d2aa938ff3c12aaac87d80ab649625 (diff)
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 'lib/Support/BranchProbability.cpp')
-rw-r--r--lib/Support/BranchProbability.cpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/lib/Support/BranchProbability.cpp b/lib/Support/BranchProbability.cpp
new file mode 100644
index 00000000000..97342da3f07
--- /dev/null
+++ b/lib/Support/BranchProbability.cpp
@@ -0,0 +1,44 @@
+//===-------------- lib/Support/BranchProbability.cpp -----------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file implements Branch Probability class.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/Support/BranchProbability.h"
+#include "llvm/Support/Debug.h"
+#include "llvm/Support/raw_ostream.h"
+
+using namespace llvm;
+
+BranchProbability::BranchProbability(uint32_t n, uint32_t d) {
+ assert(d > 0 && "Denomiator cannot be 0!");
+ assert(n <= d && "Probability cannot be bigger than 1!");
+ N = n;
+ D = d;
+}
+
+raw_ostream &BranchProbability::print(raw_ostream &OS) const {
+ OS << N << " / " << D << " = " << ((double)N / D);
+ return OS;
+}
+
+void BranchProbability::dump() const {
+ print(dbgs());
+ dbgs() << "\n";
+}
+
+namespace llvm {
+
+raw_ostream &operator<<(raw_ostream &OS, const BranchProbability &Prob) {
+ Prob.print(OS);
+ return OS;
+}
+
+}