mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-26 12:20:42 +00:00
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
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user