Lines Matching refs:BinaryOperator
37 if (BinaryOperator::isNot(V))
54 if (BinaryOperator::isNot(V)) {
55 Value *Operand = BinaryOperator::getNotArgument(V);
134 BinaryOperator &TheAnd) {
146 return BinaryOperator::CreateXor(And, Together);
155 return BinaryOperator::CreateAnd(Or, AndRHS);
166 return BinaryOperator::CreateOr(And, OpRHS);
198 return BinaryOperator::CreateXor(NewAnd, AndRHS);
261 return BinaryOperator::CreateAnd(ShVal, AndRHS, TheAnd.getName());
1017 Instruction *InstCombiner::visitAnd(BinaryOperator &I) {
1037 if (BinaryOperator *Op0I = dyn_cast<BinaryOperator>(Op0)) {
1052 return BinaryOperator::Create(Op0I->getOpcode(), Op0LHS, NewRHS);
1059 return BinaryOperator::Create(Op0I->getOpcode(), NewLHS, Op0RHS);
1069 return BinaryOperator::CreateAnd(V, AndRHS);
1071 return BinaryOperator::CreateAnd(V, AndRHS); // Add commutes
1079 return BinaryOperator::CreateAnd(V, AndRHS);
1090 return BinaryOperator::CreateAnd(NewNeg, AndRHS);
1124 return BinaryOperator::CreateAnd(NewCast, C3);
1144 return BinaryOperator::CreateNot(Or);
1153 return BinaryOperator::CreateXor(A, B);
1159 return BinaryOperator::CreateXor(A, B);
1184 return BinaryOperator::CreateAnd(A, Builder->CreateNot(B));
1191 return BinaryOperator::CreateAnd(A, Op1);
1194 return BinaryOperator::CreateAnd(A, Op0);
1242 if (BinaryOperator *SI1 = dyn_cast<BinaryOperator>(Op1)) {
1243 if (BinaryOperator *SI0 = dyn_cast<BinaryOperator>(Op0))
1250 return BinaryOperator::Create(SI1->getOpcode(), NewOp,
1382 Instruction *InstCombiner::MatchBSwap(BinaryOperator &I) {
1699 Instruction *InstCombiner::FoldOrWithConstants(BinaryOperator &I, Value *Op,
1713 return BinaryOperator::CreateOr(NewOp, V1);
1719 Instruction *InstCombiner::visitOr(BinaryOperator &I) {
1744 return BinaryOperator::CreateAnd(Or,
1754 return BinaryOperator::CreateXor(Or,
1788 return BinaryOperator::CreateXor(NOr, C1);
1797 return BinaryOperator::CreateXor(NOr, C1);
1837 return BinaryOperator::CreateAnd(A,
1844 return BinaryOperator::CreateAnd(B,
1856 return BinaryOperator::CreateAnd(V2,
1880 return BinaryOperator::CreateXor(A, D);
1884 return BinaryOperator::CreateXor(C, D);
1888 return BinaryOperator::CreateXor(A, B);
1892 return BinaryOperator::CreateXor(C, B);
1909 if (BinaryOperator *SI1 = dyn_cast<BinaryOperator>(Op1)) {
1910 if (BinaryOperator *SI0 = dyn_cast<BinaryOperator>(Op0))
1916 return BinaryOperator::Create(SI1->getOpcode(), NewOp,
1927 return BinaryOperator::CreateNot(And);
1942 return BinaryOperator::CreateOr(A, B);
1946 return BinaryOperator::CreateOr(A, B);
1950 return BinaryOperator::CreateOr(Not, Op0);
1954 return BinaryOperator::CreateOr(Not, Op0);
1961 if (BinaryOperator *B = dyn_cast<BinaryOperator>(A))
1968 return BinaryOperator::CreateOr(Not, Op0);
2036 return BinaryOperator::CreateOr(Inner, C1);
2042 Instruction *InstCombiner::visitXor(BinaryOperator &I) {
2060 if (BinaryOperator *Op0I = dyn_cast<BinaryOperator>(NotOp)) {
2072 return BinaryOperator::CreateOr(Op0NotVal, NotY);
2073 return BinaryOperator::CreateAnd(Op0NotVal, NotY);
2085 return BinaryOperator::CreateOr(NotX, NotY);
2086 return BinaryOperator::CreateAnd(NotX, NotY);
2092 return BinaryOperator::CreateAShr(Op0NotVal, Op0I->getOperand(1));
2122 if (BinaryOperator *Op0I = dyn_cast<BinaryOperator>(Op0)) {
2129 return BinaryOperator::CreateAdd(Op0I->getOperand(1), ConstantRHS);
2137 return BinaryOperator::CreateSub(
2145 return BinaryOperator::CreateAdd(Op0I->getOperand(0), C);
2175 BinaryOperator *Op1I = dyn_cast<BinaryOperator>(Op1);
2200 BinaryOperator *Op0I = dyn_cast<BinaryOperator>(Op0);
2208 return BinaryOperator::CreateAnd(A, Builder->CreateNot(Op1));
2215 return BinaryOperator::CreateAnd(Builder->CreateNot(A), Op1);
2228 return BinaryOperator::Create(Op1I->getOpcode(), NewOp,
2238 return BinaryOperator::CreateXor(A, B);
2244 return BinaryOperator::CreateXor(A, B);