From 18a301e5788cbc7f0e1bcc2567d3a1d76fb4bf2a Mon Sep 17 00:00:00 2001 From: "Duncan P. N. Exon Smith" Date: Mon, 23 Jun 2014 17:47:40 +0000 Subject: Support: Extract ScaledNumbers::compare() git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211507 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Support/ScaledNumber.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'lib/Support') diff --git a/lib/Support/ScaledNumber.cpp b/lib/Support/ScaledNumber.cpp index e7531744b6..10b23273d0 100644 --- a/lib/Support/ScaledNumber.cpp +++ b/lib/Support/ScaledNumber.cpp @@ -117,3 +117,16 @@ std::pair ScaledNumbers::divide64(uint64_t Dividend, return getRounded(Quotient, Shift, Dividend >= getHalf(Divisor)); } + +int ScaledNumbers::compareImpl(uint64_t L, uint64_t R, int ScaleDiff) { + assert(ScaleDiff >= 0 && "wrong argument order"); + assert(ScaleDiff < 64 && "numbers too far apart"); + + uint64_t L_adjusted = L >> ScaleDiff; + if (L_adjusted < R) + return -1; + if (L_adjusted > R) + return 1; + + return L > L_adjusted << ScaleDiff ? 1 : 0; +} -- cgit v1.2.3