[llvm-commits] [llvm] r169049 - /llvm/trunk/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
Eric Christopher
echristo at gmail.com
Fri Nov 30 14:52:05 PST 2012
Hi Pedro,
Looking much better. How about some comments now?
-eric
On Fri, Nov 30, 2012 at 2:47 PM, Pedro Artigas <partigas at apple.com> wrote:
> Author: partigas
> Date: Fri Nov 30 16:47:15 2012
> New Revision: 169049
>
> URL: http://llvm.org/viewvc/llvm-project?rev=169049&view=rev
> Log:
>
> reversed the logic of the log2 detection routine to reduce the number of
> nested ifs
>
>
> Modified:
> llvm/trunk/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
>
> Modified: llvm/trunk/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp?rev=169049&r1=169048&r2=169049&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
> (original)
> +++ llvm/trunk/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp Fri Nov
> 30 16:47:15 2012
> @@ -261,31 +261,35 @@
> //
>
> static void detectLog2OfHalf(Value *&Op, Value *&Y, IntrinsicInst *&Log2)
> {
> - if (Op->hasOneUse()) {
> - if (IntrinsicInst *II = dyn_cast<IntrinsicInst>(Op)) {
> - if (II->getIntrinsicID() == Intrinsic::log2 &&
> - II->hasUnsafeAlgebra()) {
> - Log2 = II;
> - Value *OpLog2Of = II->getArgOperand(0);
> - if (OpLog2Of->hasOneUse()) {
> - if (Instruction *I = dyn_cast<Instruction>(OpLog2Of)) {
> - if (I->getOpcode() == Instruction::FMul &&
> - I->hasUnsafeAlgebra()) {
> - ConstantFP *CFP = dyn_cast<ConstantFP>(I->getOperand(0));
> - if (CFP && CFP->isExactlyValue(0.5)) {
> - Y = I->getOperand(1);
> - } else {
> - CFP = dyn_cast<ConstantFP>(I->getOperand(1));
> - if (CFP && CFP->isExactlyValue(0.5)) {
> - Y = I->getOperand(0);
> - }
> - }
> - }
> - }
> - }
> - }
> - }
> - }
> +
> + if (!Op->hasOneUse())
> + return;
> +
> + IntrinsicInst *II = dyn_cast<IntrinsicInst>(Op);
> + if (!II)
> + return;
> + if (II->getIntrinsicID() != Intrinsic::log2 || !II->hasUnsafeAlgebra())
> + return;
> + Log2 = II;
> +
> + Value *OpLog2Of = II->getArgOperand(0);
> + if (!OpLog2Of->hasOneUse())
> + return;
> +
> + Instruction *I = dyn_cast<Instruction>(OpLog2Of);
> + if (!I)
> + return;
> + if (I->getOpcode() != Instruction::FMul || !I->hasUnsafeAlgebra())
> + return;
> +
> + ConstantFP *CFP = dyn_cast<ConstantFP>(I->getOperand(0));
> + if (CFP && CFP->isExactlyValue(0.5)) {
> + Y = I->getOperand(1);
> + return;
> + }
> + CFP = dyn_cast<ConstantFP>(I->getOperand(1));
> + if (CFP && CFP->isExactlyValue(0.5))
> + Y = I->getOperand(0);
> }
>
> Instruction *InstCombiner::visitFMul(BinaryOperator &I) {
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20121130/31085ec3/attachment.html>
More information about the llvm-commits
mailing list