reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
4128 if (match(Op0, m_Xor(m_Value(A), m_Value(B)))) { 4129 if (A == Op1 || B == Op1) { // (A^B) == A -> B == 0 4130 Value *OtherVal = A == Op1 ? B : A; 4130 Value *OtherVal = A == Op1 ? B : A; 4131 return new ICmpInst(Pred, OtherVal, Constant::getNullValue(A->getType())); 4141 return new ICmpInst(Pred, A, Xor); 4145 if (A == C) 4147 if (A == D) 4150 return new ICmpInst(Pred, A, D); 4152 return new ICmpInst(Pred, A, C); 4156 if (match(Op1, m_Xor(m_Value(A), m_Value(B))) && (A == Op0 || B == Op0)) { 4156 if (match(Op1, m_Xor(m_Value(A), m_Value(B))) && (A == Op0 || B == Op0)) { 4158 Value *OtherVal = A == Op0 ? B : A; 4158 Value *OtherVal = A == Op0 ? B : A; 4159 return new ICmpInst(Pred, OtherVal, Constant::getNullValue(A->getType())); 4163 if (match(Op0, m_OneUse(m_And(m_Value(A), m_Value(B)))) && 4167 if (A == C) { 4170 Z = A; 4171 } else if (A == D) { 4174 Z = A; 4176 X = A; 4180 X = A; 4197 if ((Op0->hasOneUse() && match(Op0, m_ZExt(m_Value(A))) && 4200 match(Op1, m_ZExt(m_Value(A))))) { 4202 if (Pow2.isPowerOf2() && isa<IntegerType>(A->getType()) && 4203 Pow2.logBase2() == cast<IntegerType>(A->getType())->getBitWidth()) 4204 return new ICmpInst(Pred, A, Builder.CreateTrunc(B, A->getType())); 4204 return new ICmpInst(Pred, A, Builder.CreateTrunc(B, A->getType())); 4209 if ((match(Op0, m_OneUse(m_LShr(m_Value(A), m_ConstantInt(Cst1)))) && 4211 (match(Op0, m_OneUse(m_AShr(m_Value(A), m_ConstantInt(Cst1)))) && 4218 Value *Xor = Builder.CreateXor(A, B, I.getName() + ".unshifted"); 4225 if (match(Op0, m_OneUse(m_Shl(m_Value(A), m_ConstantInt(Cst1)))) && 4230 Value *Xor = Builder.CreateXor(A, B, I.getName() + ".unshifted"); 4242 match(Op0, m_Trunc(m_OneUse(m_LShr(m_Value(A), m_ConstantInt(ShAmt))))) && 4246 !A->hasOneUse()) { 4247 unsigned ASize = cast<IntegerType>(A->getType())->getPrimitiveSizeInBits(); 4257 Value *Mask = Builder.CreateAnd(A, Builder.getInt(MaskV)); 4266 if ((match(Op0, m_BSwap(m_Value(A))) && match(Op1, m_BSwap(m_Value(B)))) || 4267 (match(Op0, m_BitReverse(m_Value(A))) && 4269 return new ICmpInst(Pred, A, B); 4274 if (!match(Op0, m_OneUse(m_c_And(m_Add(m_Value(A), m_AllOnes()), 4275 m_Deferred(A)))) || 4277 A = nullptr; 4282 A = Op1; 4285 A = Op0; 4287 if (A) { 4288 Type *Ty = A->getType(); 4289 CallInst *CtPop = Builder.CreateUnaryIntrinsic(Intrinsic::ctpop, A);