From: Sanjay Patel Date: Fri, 6 Dec 2019 19:20:44 +0000 (-0500) Subject: Revert "[InstCombine] improve readability; NFC" X-Git-Tag: llvmorg-11-init~2728 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b6d6f5470f281db4716db8b2306113924afc6887;p=platform%2Fupstream%2Fllvm.git Revert "[InstCombine] improve readability; NFC" This reverts commit 7250ef3613cc6b81145b9543bafb86d7f9466cde. At least 1 of these supposedly NFC commits wasn't - sanitizer bot is angry. --- diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp index 1ba017d..a3c1b27 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp @@ -863,15 +863,19 @@ Instruction *InstCombiner::transformZExtICmp(ICmpInst *Cmp, ZExtInst &Zext, (Pred == ICmpInst::ICMP_SGT && Op1C->isAllOnesValue())) { if (!DoTransform) return Cmp; + Value *In = Op0; Value *ShAmt = ConstantInt::get(CmpOpType, CmpOpType->getScalarSizeInBits() - 1); - Value *Sh = Builder.CreateLShr(Op0, ShAmt, Op0->getName() + ".lobit"); - Value *Cast = Builder.CreateIntCast(Sh, ZType, false /*ZExt*/); - // Invert low bit if testing for positive. - if (Pred == ICmpInst::ICMP_SGT) - Cast = Builder.CreateXor(Cast, ConstantInt::get(CmpOpType, 1)); + In = Builder.CreateLShr(In, ShAmt, In->getName() + ".lobit"); + if (CmpOpType != ZType) + In = Builder.CreateIntCast(In, ZType, false /*ZExt*/); - return replaceInstUsesWith(Zext, Cast); + if (Pred == ICmpInst::ICMP_SGT) { + Constant *One = ConstantInt::get(CmpOpType, 1); + In = Builder.CreateXor(In, One, In->getName() + ".not"); + } + + return replaceInstUsesWith(Zext, In); } // zext (X == 0) to i32 --> X^1 iff X has only the low bit set.