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; 4137 if (match(B, m_ConstantInt(C1)) && match(D, m_ConstantInt(C2)) && 4146 return new ICmpInst(Pred, B, D); 4148 return new ICmpInst(Pred, B, C); 4149 if (B == C) 4151 if (B == D) 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; 4163 if (match(Op0, m_OneUse(m_And(m_Value(A), m_Value(B)))) && 4168 X = B; 4172 X = B; 4175 } else if (B == C) { 4178 Z = B; 4179 } else if (B == D) { 4182 Z = B; 4198 match(Op1, m_And(m_Value(B), m_ConstantInt(Cst1)))) || 4199 (Op1->hasOneUse() && match(Op0, m_And(m_Value(B), m_ConstantInt(Cst1))) && 4204 return new ICmpInst(Pred, A, Builder.CreateTrunc(B, A->getType())); 4210 match(Op1, m_OneUse(m_LShr(m_Value(B), m_Specific(Cst1))))) || 4212 match(Op1, m_OneUse(m_AShr(m_Value(B), m_Specific(Cst1)))))) { 4218 Value *Xor = Builder.CreateXor(A, B, I.getName() + ".unshifted"); 4226 match(Op1, m_OneUse(m_Shl(m_Value(B), m_Specific(Cst1))))) { 4230 Value *Xor = Builder.CreateXor(A, B, I.getName() + ".unshifted"); 4266 if ((match(Op0, m_BSwap(m_Value(A))) && match(Op1, m_BSwap(m_Value(B)))) || 4268 match(Op1, m_BitReverse(m_Value(B))))) 4269 return new ICmpInst(Pred, A, B);