From: Simon Pilgrim Date: Fri, 14 May 2021 10:42:41 +0000 (+0100) Subject: [Local] collectBitParts - for bswap-only matches, limit shift amounts to whole bytes... X-Git-Tag: llvmorg-14-init~6680 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=079bbea2b20dbfd24e4df654bae1c4324dcde754;p=platform%2Fupstream%2Fllvm.git [Local] collectBitParts - for bswap-only matches, limit shift amounts to whole bytes to reduce compile time. --- diff --git a/llvm/lib/Transforms/Utils/Local.cpp b/llvm/lib/Transforms/Utils/Local.cpp index 1f0646d..1c1d46b 100644 --- a/llvm/lib/Transforms/Utils/Local.cpp +++ b/llvm/lib/Transforms/Utils/Local.cpp @@ -2940,6 +2940,10 @@ collectBitParts(Value *V, bool MatchBSwaps, bool MatchBitReversals, if (BitShift.uge(BitWidth)) return Result; + // For bswap-only, limit shift amounts to whole bytes, for an early exit. + if (!MatchBitReversals && (BitShift.getZExtValue() % 8) != 0) + return Result; + const auto &Res = collectBitParts(X, MatchBSwaps, MatchBitReversals, BPS, Depth + 1); if (!Res) @@ -3055,6 +3059,10 @@ collectBitParts(Value *V, bool MatchBSwaps, bool MatchBitReversals, if (cast(I)->getIntrinsicID() == Intrinsic::fshr) ModAmt = BitWidth - ModAmt; + // For bswap-only, limit shift amounts to whole bytes, for an early exit. + if (!MatchBitReversals && (ModAmt % 8) != 0) + return Result; + const auto &LHS = collectBitParts(X, MatchBSwaps, MatchBitReversals, BPS, Depth + 1); const auto &RHS =