[llvm] r302262 - [KnownBits] Add wrapper methods for setting and clear all bits in the underlying APInts in KnownBits.
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Fri May 5 18:15:15 PDT 2017
Agreed. I thought the same thing when I realized we also need it
isBitUnknown. I'll change it to isCompletelyUnknown or isAllUnkown.
~Craig
On Fri, May 5, 2017 at 6:10 PM, Philip Reames <listmail at philipreames.com>
wrote:
> minor style comment: isUnknown seems a bit ambiguous when applied to a
> value which has many partially known states. Maybe isCompletelyUnknown?
> Or something along those lines?
>
> Philip
>
> On 05/05/2017 10:36 AM, Craig Topper via llvm-commits wrote:
>
>> Author: ctopper
>> Date: Fri May 5 12:36:09 2017
>> New Revision: 302262
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=302262&view=rev
>> Log:
>> [KnownBits] Add wrapper methods for setting and clear all bits in the
>> underlying APInts in KnownBits.
>>
>> This adds routines for reseting KnownBits to unknown, making the value
>> all zeros or all ones. It also adds methods for querying if the value is
>> zero, all ones or unknown.
>>
>> Differential Revision: https://reviews.llvm.org/D32637
>>
>> Modified:
>> llvm/trunk/include/llvm/CodeGen/FunctionLoweringInfo.h
>> llvm/trunk/include/llvm/Support/KnownBits.h
>> llvm/trunk/lib/Analysis/Lint.cpp
>> llvm/trunk/lib/Analysis/ValueTracking.cpp
>> llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
>> llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp
>> llvm/trunk/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
>> llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp
>> llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp
>> llvm/trunk/lib/Target/Sparc/SparcISelLowering.cpp
>> llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
>> llvm/trunk/lib/Target/XCore/XCoreISelLowering.cpp
>> llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpp
>> llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp
>> llvm/trunk/lib/Transforms/InstCombine/InstCombineSimplifyDe
>> manded.cpp
>>
>> Modified: llvm/trunk/include/llvm/CodeGen/FunctionLoweringInfo.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/
>> CodeGen/FunctionLoweringInfo.h?rev=302262&r1=302261&r2=302262&view=diff
>> ============================================================
>> ==================
>> --- llvm/trunk/include/llvm/CodeGen/FunctionLoweringInfo.h (original)
>> +++ llvm/trunk/include/llvm/CodeGen/FunctionLoweringInfo.h Fri May 5
>> 12:36:09 2017
>> @@ -249,7 +249,7 @@ public:
>> void AddLiveOutRegInfo(unsigned Reg, unsigned NumSignBits,
>> const KnownBits &Known) {
>> // Only install this information if it tells us something.
>> - if (NumSignBits == 1 && Known.Zero == 0 && Known.One == 0)
>> + if (NumSignBits == 1 && Known.isUnknown())
>> return;
>> LiveOutRegInfo.grow(Reg);
>>
>> Modified: llvm/trunk/include/llvm/Support/KnownBits.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/
>> Support/KnownBits.h?rev=302262&r1=302261&r2=302262&view=diff
>> ============================================================
>> ==================
>> --- llvm/trunk/include/llvm/Support/KnownBits.h (original)
>> +++ llvm/trunk/include/llvm/Support/KnownBits.h Fri May 5 12:36:09 2017
>> @@ -59,6 +59,39 @@ public:
>> return One;
>> }
>> + /// Returns true if we don't know any bits.
>> + bool isUnknown() const { return Zero.isNullValue() &&
>> One.isNullValue(); }
>> +
>> + /// Resets the known state of all bits.
>> + void resetAll() {
>> + Zero.clearAllBits();
>> + One.clearAllBits();
>> + }
>> +
>> + /// Returns true if value is all zero.
>> + bool isZero() const {
>> + assert(!hasConflict() && "KnownBits conflict!");
>> + return Zero.isAllOnesValue();
>> + }
>> +
>> + /// Returns true if value is all one bits.
>> + bool isAllOnes() const {
>> + assert(!hasConflict() && "KnownBits conflict!");
>> + return One.isAllOnesValue();
>> + }
>> +
>> + /// Make all bits known to be zero and discard any previous
>> information.
>> + void setAllZero() {
>> + Zero.setAllBits();
>> + One.clearAllBits();
>> + }
>> +
>> + /// Make all bits known to be one and discard any previous information.
>> + void setAllOnes() {
>> + Zero.clearAllBits();
>> + One.setAllBits();
>> + }
>> +
>> /// Returns true if this value is known to be negative.
>> bool isNegative() const { return One.isSignBitSet(); }
>>
>> Modified: llvm/trunk/lib/Analysis/Lint.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/
>> Lint.cpp?rev=302262&r1=302261&r2=302262&view=diff
>> ============================================================
>> ==================
>> --- llvm/trunk/lib/Analysis/Lint.cpp (original)
>> +++ llvm/trunk/lib/Analysis/Lint.cpp Fri May 5 12:36:09 2017
>> @@ -537,7 +537,7 @@ static bool isZero(Value *V, const DataL
>> unsigned BitWidth = V->getType()->getIntegerBitWidth();
>> KnownBits Known(BitWidth);
>> computeKnownBits(V, Known, DL, 0, AC, dyn_cast<Instruction>(V), DT);
>> - return Known.Zero.isAllOnesValue();
>> + return Known.isZero();
>> }
>> // Per-component check doesn't work with zeroinitializer
>> @@ -558,7 +558,7 @@ static bool isZero(Value *V, const DataL
>> KnownBits Known(BitWidth);
>> computeKnownBits(Elem, Known, DL);
>> - if (Known.Zero.isAllOnesValue())
>> + if (Known.isZero())
>> return true;
>> }
>>
>> Modified: llvm/trunk/lib/Analysis/ValueTracking.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/
>> ValueTracking.cpp?rev=302262&r1=302261&r2=302262&view=diff
>> ============================================================
>> ==================
>> --- llvm/trunk/lib/Analysis/ValueTracking.cpp (original)
>> +++ llvm/trunk/lib/Analysis/ValueTracking.cpp Fri May 5 12:36:09 2017
>> @@ -342,7 +342,6 @@ static void computeKnownBitsMul(const Va
>> // Also compute a conservative estimate for high known-0 bits.
>> // More trickiness is possible, but this is sufficient for the
>> // interesting case of alignment computation.
>> - Known.One.clearAllBits();
>> unsigned TrailZ = Known.Zero.countTrailingOnes() +
>> Known2.Zero.countTrailingOnes();
>> unsigned LeadZ = std::max(Known.Zero.countLeadingOnes() +
>> @@ -351,7 +350,7 @@ static void computeKnownBitsMul(const Va
>> TrailZ = std::min(TrailZ, BitWidth);
>> LeadZ = std::min(LeadZ, BitWidth);
>> - Known.Zero.clearAllBits();
>> + Known.resetAll();
>> Known.Zero.setLowBits(TrailZ);
>> Known.Zero.setHighBits(LeadZ);
>> @@ -529,15 +528,13 @@ static void computeKnownBitsFromAssume(c
>> if (Arg == V && isValidAssumeForContext(I, Q.CxtI, Q.DT)) {
>> assert(BitWidth == 1 && "assume operand is not i1?");
>> - Known.Zero.clearAllBits();
>> - Known.One.setAllBits();
>> + Known.setAllOnes();
>> return;
>> }
>> if (match(Arg, m_Not(m_Specific(V))) &&
>> isValidAssumeForContext(I, Q.CxtI, Q.DT)) {
>> assert(BitWidth == 1 && "assume operand is not i1?");
>> - Known.Zero.setAllBits();
>> - Known.One.clearAllBits();
>> + Known.setAllZero();
>> return;
>> }
>> @@ -719,7 +716,7 @@ static void computeKnownBitsFromAssume(c
>> KnownBits RHSKnown(BitWidth);
>> computeKnownBits(A, RHSKnown, Depth+1, Query(Q, I));
>> - if (RHSKnown.One.isAllOnesValue() || RHSKnown.isNonNegative()) {
>> + if (RHSKnown.isAllOnes() || RHSKnown.isNonNegative()) {
>> // We know that the sign bit is zero.
>> Known.makeNonNegative();
>> }
>> @@ -741,7 +738,7 @@ static void computeKnownBitsFromAssume(c
>> KnownBits RHSKnown(BitWidth);
>> computeKnownBits(A, RHSKnown, Depth+1, Query(Q, I));
>> - if (RHSKnown.Zero.isAllOnesValue() || RHSKnown.isNegative()) {
>> + if (RHSKnown.isZero() || RHSKnown.isNegative()) {
>> // We know that the sign bit is one.
>> Known.makeNegative();
>> }
>> @@ -776,8 +773,7 @@ static void computeKnownBitsFromAssume(c
>> // behavior, or we might have a bug in the compiler. We can't
>> assert/crash, so
>> // clear out the known bits, try to warn the user, and hope for the
>> best.
>> if (Known.Zero.intersects(Known.One)) {
>> - Known.Zero.clearAllBits();
>> - Known.One.clearAllBits();
>> + Known.resetAll();
>> if (Q.ORE) {
>> auto *CxtI = const_cast<Instruction *>(Q.CxtI);
>> @@ -813,10 +809,8 @@ static void computeKnownBitsFromShiftOpe
>> // If there is conflict between Known.Zero and Known.One, this must
>> be an
>> // overflowing left shift, so the shift result is undefined. Clear
>> Known
>> // bits so that other code could propagate this undef.
>> - if ((Known.Zero & Known.One) != 0) {
>> - Known.Zero.clearAllBits();
>> - Known.One.clearAllBits();
>> - }
>> + if ((Known.Zero & Known.One) != 0)
>> + Known.resetAll();
>> return;
>> }
>> @@ -826,8 +820,7 @@ static void computeKnownBitsFromShiftOpe
>> // If the shift amount could be greater than or equal to the
>> bit-width of the LHS, the
>> // value could be undef, so we don't know anything about it.
>> if ((~Known.Zero).uge(BitWidth)) {
>> - Known.Zero.clearAllBits();
>> - Known.One.clearAllBits();
>> + Known.resetAll();
>> return;
>> }
>> @@ -839,8 +832,7 @@ static void computeKnownBitsFromShiftOpe
>> // It would be more-clearly correct to use the two temporaries for
>> this
>> // calculation. Reusing the APInts here to prevent unnecessary
>> allocations.
>> - Known.Zero.clearAllBits();
>> - Known.One.clearAllBits();
>> + Known.resetAll();
>> // If we know the shifter operand is nonzero, we can sometimes
>> infer more
>> // known bits. However this is expensive to compute, so be lazy about
>> it and
>> @@ -886,10 +878,8 @@ static void computeKnownBitsFromShiftOpe
>> // return anything we'd like, but we need to make sure the sets of
>> known bits
>> // stay disjoint (it should be better for some other code to actually
>> // propagate the undef than to pick a value here using known bits).
>> - if (Known.Zero.intersects(Known.One)) {
>> - Known.Zero.clearAllBits();
>> - Known.One.clearAllBits();
>> - }
>> + if (Known.Zero.intersects(Known.One))
>> + Known.resetAll();
>> }
>> static void computeKnownBitsFromOperator(const Operator *I,
>> KnownBits &Known,
>> @@ -924,7 +914,7 @@ static void computeKnownBitsFromOperator
>> m_Value(Y))) ||
>> match(I->getOperand(1), m_Add(m_Specific(I->getOperand(0)),
>> m_Value(Y))))) {
>> - Known2.Zero.clearAllBits(); Known2.One.clearAllBits();
>> + Known2.resetAll();
>> computeKnownBits(Y, Known2, Depth + 1, Q);
>> if (Known2.One.countTrailingOnes() > 0)
>> Known.Zero.setBit(0);
>> @@ -965,8 +955,7 @@ static void computeKnownBitsFromOperator
>> computeKnownBits(I->getOperand(0), Known2, Depth + 1, Q);
>> unsigned LeadZ = Known2.Zero.countLeadingOnes();
>> - Known2.One.clearAllBits();
>> - Known2.Zero.clearAllBits();
>> + Known2.resetAll();
>> computeKnownBits(I->getOperand(1), Known2, Depth + 1, Q);
>> unsigned RHSUnknownLeadingOnes = Known2.One.countLeadingZeros();
>> if (RHSUnknownLeadingOnes != BitWidth)
>> @@ -1198,8 +1187,7 @@ static void computeKnownBitsFromOperator
>> unsigned Leaders = std::max(Known.Zero.countLeadingOnes(),
>> Known2.Zero.countLeadingOnes());
>> - Known.One.clearAllBits();
>> - Known.Zero.clearAllBits();
>> + Known.resetAll();
>> Known.Zero.setHighBits(Leaders);
>> break;
>> }
>> @@ -1500,8 +1488,7 @@ void computeKnownBits(const Value *V, Kn
>> }
>> // Null and aggregate-zero are all-zeros.
>> if (isa<ConstantPointerNull>(V) || isa<ConstantAggregateZero>(V)) {
>> - Known.One.clearAllBits();
>> - Known.Zero.setAllBits();
>> + Known.setAllZero();
>> return;
>> }
>> // Handle a constant vector by taking the intersection of the known
>> bits of
>> @@ -1528,8 +1515,7 @@ void computeKnownBits(const Value *V, Kn
>> Constant *Element = CV->getAggregateElement(i);
>> auto *ElementCI = dyn_cast_or_null<ConstantInt>(Element);
>> if (!ElementCI) {
>> - Known.Zero.clearAllBits();
>> - Known.One.clearAllBits();
>> + Known.resetAll();
>> return;
>> }
>> Elt = ElementCI->getValue();
>> @@ -1540,7 +1526,7 @@ void computeKnownBits(const Value *V, Kn
>> }
>> // Start out not knowing anything.
>> - Known.Zero.clearAllBits(); Known.One.clearAllBits();
>> + Known.resetAll();
>> // We can't imply anything about undefs.
>> if (isa<UndefValue>(V))
>>
>> Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/
>> SelectionDAG/SelectionDAG.cpp?rev=302262&r1=302261&r2=302262&view=diff
>> ============================================================
>> ==================
>> --- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Fri May 5
>> 12:36:09 2017
>> @@ -2044,8 +2044,7 @@ void SelectionDAG::computeKnownBits(SDVa
>> if (M < 0) {
>> // For UNDEF elements, we don't know anything about the common
>> state of
>> // the shuffle result.
>> - Known.One.clearAllBits();
>> - Known.Zero.clearAllBits();
>> + Known.resetAll();
>> DemandedLHS.clearAllBits();
>> DemandedRHS.clearAllBits();
>> break;
>> @@ -2218,14 +2217,13 @@ void SelectionDAG::computeKnownBits(SDVa
>> // Also compute a conservative estimate for high known-0 bits.
>> // More trickiness is possible, but this is sufficient for the
>> // interesting case of alignment computation.
>> - Known.One.clearAllBits();
>> unsigned TrailZ = Known.Zero.countTrailingOnes() +
>> Known2.Zero.countTrailingOnes();
>> unsigned LeadZ = std::max(Known.Zero.countLeadingOnes() +
>> Known2.Zero.countLeadingOnes(),
>> BitWidth) - BitWidth;
>> - Known.Zero.clearAllBits();
>> + Known.resetAll();
>> Known.Zero.setLowBits(std::min(TrailZ, BitWidth));
>> Known.Zero.setHighBits(std::min(LeadZ, BitWidth));
>> break;
>> @@ -2598,8 +2596,7 @@ void SelectionDAG::computeKnownBits(SDVa
>> uint32_t Leaders = std::max(Known.Zero.countLeadingOnes(),
>> Known2.Zero.countLeadingOnes());
>> - Known.One.clearAllBits();
>> - Known.Zero.clearAllBits();
>> + Known.resetAll();
>> Known.Zero.setHighBits(Leaders);
>> break;
>> }
>>
>> Modified: llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/
>> SelectionDAG/TargetLowering.cpp?rev=302262&r1=302261&r2=302262&view=diff
>> ============================================================
>> ==================
>> --- llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp Fri May 5
>> 12:36:09 2017
>> @@ -1303,7 +1303,7 @@ void TargetLowering::computeKnownBitsFor
>> Op.getOpcode() == ISD::INTRINSIC_VOID) &&
>> "Should use MaskedValueIsZero if you don't know whether Op"
>> " is a target node!");
>> - Known.Zero.clearAllBits(); Known.One.clearAllBits();
>> + Known.resetAll();
>> }
>> /// This method can be implemented by targets that want to expose
>> additional
>>
>> Modified: llvm/trunk/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AM
>> DGPU/AMDGPUISelLowering.cpp?rev=302262&r1=302261&r2=302262&view=diff
>> ============================================================
>> ==================
>> --- llvm/trunk/lib/Target/AMDGPU/AMDGPUISelLowering.cpp (original)
>> +++ llvm/trunk/lib/Target/AMDGPU/AMDGPUISelLowering.cpp Fri May 5
>> 12:36:09 2017
>> @@ -3580,7 +3580,7 @@ void AMDGPUTargetLowering::computeKnownB
>> const SDValue Op, KnownBits &Known,
>> const APInt &DemandedElts, const SelectionDAG &DAG, unsigned Depth)
>> const {
>> - Known.Zero.clearAllBits(); Known.One.clearAllBits(); // Don't know
>> anything.
>> + Known.resetAll(); // Don't know anything.
>> KnownBits Known2;
>> unsigned Opc = Op.getOpcode();
>>
>> Modified: llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AR
>> M/ARMISelLowering.cpp?rev=302262&r1=302261&r2=302262&view=diff
>> ============================================================
>> ==================
>> --- llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp (original)
>> +++ llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp Fri May 5 12:36:09
>> 2017
>> @@ -12640,7 +12640,7 @@ void ARMTargetLowering::computeKnownBits
>> const
>> SelectionDAG &DAG,
>> unsigned Depth)
>> const {
>> unsigned BitWidth = Known.getBitWidth();
>> - Known.Zero.clearAllBits(); Known.One.clearAllBits();
>> + Known.resetAll();
>> switch (Op.getOpcode()) {
>> default: break;
>> case ARMISD::ADDC:
>> @@ -12655,7 +12655,8 @@ void ARMTargetLowering::computeKnownBits
>> case ARMISD::CMOV: {
>> // Bits are known zero/one if known on the LHS and RHS.
>> DAG.computeKnownBits(Op.getOperand(0), Known, Depth+1);
>> - if (Known.Zero == 0 && Known.One == 0) return;
>> + if (Known.isUnknown())
>> + return;
>> KnownBits KnownRHS;
>> DAG.computeKnownBits(Op.getOperand(1), KnownRHS, Depth+1);
>>
>> Modified: llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Po
>> werPC/PPCISelLowering.cpp?rev=302262&r1=302261&r2=302262&view=diff
>> ============================================================
>> ==================
>> --- llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp (original)
>> +++ llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp Fri May 5
>> 12:36:09 2017
>> @@ -12031,7 +12031,7 @@ void PPCTargetLowering::computeKnownBits
>> const APInt
>> &DemandedElts,
>> const
>> SelectionDAG &DAG,
>> unsigned Depth)
>> const {
>> - Known.Zero.clearAllBits(); Known.One.clearAllBits();
>> + Known.resetAll();
>> switch (Op.getOpcode()) {
>> default: break;
>> case PPCISD::LBRX: {
>>
>> Modified: llvm/trunk/lib/Target/Sparc/SparcISelLowering.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Sp
>> arc/SparcISelLowering.cpp?rev=302262&r1=302261&r2=302262&view=diff
>> ============================================================
>> ==================
>> --- llvm/trunk/lib/Target/Sparc/SparcISelLowering.cpp (original)
>> +++ llvm/trunk/lib/Target/Sparc/SparcISelLowering.cpp Fri May 5
>> 12:36:09 2017
>> @@ -1881,7 +1881,7 @@ void SparcTargetLowering::computeKnownBi
>> const SelectionDAG &DAG,
>> unsigned Depth) const {
>> KnownBits Known2;
>> - Known.Zero.clearAllBits(); Known.One.clearAllBits();
>> + Known.resetAll();
>> switch (Op.getOpcode()) {
>> default: break;
>>
>> Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X8
>> 6/X86ISelLowering.cpp?rev=302262&r1=302261&r2=302262&view=diff
>> ============================================================
>> ==================
>> --- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)
>> +++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Fri May 5 12:36:09
>> 2017
>> @@ -26614,7 +26614,7 @@ void X86TargetLowering::computeKnownBits
>> "Should use MaskedValueIsZero if you don't know whether Op"
>> " is a target node!");
>> - Known.Zero.clearAllBits(); Known.One.clearAllBits();
>> + Known.resetAll();
>> switch (Opc) {
>> default: break;
>> case X86ISD::ADD:
>> @@ -26644,7 +26644,7 @@ void X86TargetLowering::computeKnownBits
>> case X86ISD::VSRLI: {
>> if (auto *ShiftImm = dyn_cast<ConstantSDNode>(Op.getOperand(1))) {
>> if (ShiftImm->getAPIntValue().uge(VT.getScalarSizeInBits())) {
>> - Known.Zero.setAllBits();
>> + Known.setAllZero();
>> break;
>> }
>>
>> Modified: llvm/trunk/lib/Target/XCore/XCoreISelLowering.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/XC
>> ore/XCoreISelLowering.cpp?rev=302262&r1=302261&r2=302262&view=diff
>> ============================================================
>> ==================
>> --- llvm/trunk/lib/Target/XCore/XCoreISelLowering.cpp (original)
>> +++ llvm/trunk/lib/Target/XCore/XCoreISelLowering.cpp Fri May 5
>> 12:36:09 2017
>> @@ -1825,7 +1825,7 @@ void XCoreTargetLowering::computeKnownBi
>> const APInt
>> &DemandedElts,
>> const
>> SelectionDAG &DAG,
>> unsigned Depth)
>> const {
>> - Known.Zero.clearAllBits(); Known.One.clearAllBits();
>> + Known.resetAll();
>> switch (Op.getOpcode()) {
>> default: break;
>> case XCoreISD::LADD:
>>
>> Modified: llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transform
>> s/InstCombine/InstCombineCalls.cpp?rev=302262&r1=302261&r2=
>> 302262&view=diff
>> ============================================================
>> ==================
>> --- llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpp (original)
>> +++ llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpp Fri May
>> 5 12:36:09 2017
>> @@ -3619,7 +3619,7 @@ Instruction *InstCombiner::visitCallInst
>> // then this one is redundant, and should be removed.
>> KnownBits Known(1);
>> computeKnownBits(IIOperand, Known, 0, II);
>> - if (Known.One.isAllOnesValue())
>> + if (Known.isAllOnes())
>> return eraseInstFromFunction(*II);
>> // Update the cache of affected values for this assumption (we
>> might be
>>
>> Modified: llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transform
>> s/InstCombine/InstCombineCompares.cpp?rev=302262&r1=302261&
>> r2=302262&view=diff
>> ============================================================
>> ==================
>> --- llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp
>> (original)
>> +++ llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp Fri
>> May 5 12:36:09 2017
>> @@ -4050,7 +4050,7 @@ Instruction *InstCombiner::foldICmpUsing
>> // is set. If the comparison is against zero, then this is a check
>> to see if
>> // *that* bit is set.
>> APInt Op0KnownZeroInverted = ~Op0Known.Zero;
>> - if (~Op1Known.Zero == 0) {
>> + if (Op1Known.isZero()) {
>> // If the LHS is an AND with the same constant, look through it.
>> Value *LHS = nullptr;
>> const APInt *LHSC;
>>
>> Modified: llvm/trunk/lib/Transforms/InstCombine/InstCombineSimplifyDem
>> anded.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transform
>> s/InstCombine/InstCombineSimplifyDemanded.cpp?rev=302262&r1=
>> 302261&r2=302262&view=diff
>> ============================================================
>> ==================
>> --- llvm/trunk/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
>> (original)
>> +++ llvm/trunk/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
>> Fri May 5 12:36:09 2017
>> @@ -120,8 +120,7 @@ Value *InstCombiner::SimplifyDemandedUse
>> return nullptr;
>> }
>> - Known.Zero.clearAllBits();
>> - Known.One.clearAllBits();
>> + Known.resetAll();
>> if (DemandedMask == 0) // Not demanding any bits from V.
>> return UndefValue::get(VTy);
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170505/6037ab46/attachment.html>
More information about the llvm-commits
mailing list