From 0f06c8216fc07d8766fa5711bb162f0482ee171c Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Tue, 18 Apr 2017 05:02:21 +0000 Subject: [PATCH] [APInt] Cleanup the reverseBits slow case a little. Use lshrInPlace. Use single bit extract and operator|=(uint64_t) to avoid a few temporary APInts. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@300527 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Support/APInt.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/Support/APInt.cpp b/lib/Support/APInt.cpp index 1094a61cf1c..5ac98e1c127 100644 --- a/lib/Support/APInt.cpp +++ b/lib/Support/APInt.cpp @@ -774,14 +774,12 @@ APInt APInt::reverseBits() const { } APInt Val(*this); - APInt Reversed(*this); - int S = BitWidth - 1; + APInt Reversed(BitWidth, 0); + unsigned S = BitWidth; - const APInt One(BitWidth, 1); - - for ((Val = Val.lshr(1)); Val != 0; (Val = Val.lshr(1))) { + for (; Val != 0; Val.lshrInPlace(1)) { Reversed <<= 1; - Reversed |= (Val & One); + Reversed |= Val[0]; --S; } -- 2.40.0