From: Sanjay Patel Date: Sun, 15 Jul 2018 17:06:59 +0000 (+0000) Subject: [InstCombine] Corrections in comments for division transformation (NFC) X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=597deb9284417718d5e1a3cea1f173a78b99732e;p=llvm [InstCombine] Corrections in comments for division transformation (NFC) The actual code seems to be correct, but the comments were misleading. Patch by Aaron Puchert! Differential Revision: https://reviews.llvm.org/D49276 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@337131 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp b/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp index a539f870aa2..d6adbec02ac 100644 --- a/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp +++ b/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp @@ -628,7 +628,7 @@ static bool multiplyOverflows(const APInt &C1, const APInt &C2, APInt &Product, return Overflow; } -/// True if C2 is a multiple of C1. Quotient contains C2/C1. +/// True if C1 is a multiple of C2. Quotient contains C1/C2. static bool isMultiple(const APInt &C1, const APInt &C2, APInt &Quotient, bool IsSigned) { assert(C1.getBitWidth() == C2.getBitWidth() && "Constant widths not equal"); @@ -714,7 +714,7 @@ Instruction *InstCombiner::commonIDivTransforms(BinaryOperator &I) { APInt C1Shifted = APInt::getOneBitSet( C1->getBitWidth(), static_cast(C1->getLimitedValue())); - // (X << C1) / C2 -> X / (C2 >> C1) if C2 is a multiple of C1. + // (X << C1) / C2 -> X / (C2 >> C1) if C2 is a multiple of 1 << C1. if (isMultiple(*C2, C1Shifted, Quotient, IsSigned)) { auto *BO = BinaryOperator::Create(I.getOpcode(), X, ConstantInt::get(Ty, Quotient)); @@ -722,7 +722,7 @@ Instruction *InstCombiner::commonIDivTransforms(BinaryOperator &I) { return BO; } - // (X << C1) / C2 -> X * (C2 >> C1) if C1 is a multiple of C2. + // (X << C1) / C2 -> X * ((1 << C1) / C2) if 1 << C1 is a multiple of C2. if (isMultiple(C1Shifted, *C2, Quotient, IsSigned)) { auto *Mul = BinaryOperator::Create(Instruction::Mul, X, ConstantInt::get(Ty, Quotient));